From: Matthieu CASTET <matthieu.castet@parrot.com>
To: Ketil Froyn <ketil@froyn.name>
Cc: "linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>
Subject: Re: Suggested patch: reset errno after isatty()
Date: Wed, 3 Nov 2010 09:23:31 +0100 [thread overview]
Message-ID: <4CD11C03.3090207@parrot.com> (raw)
In-Reply-To: <AANLkTimwumfui-_T1ScDYwMLKbNh1ia-SDMUg56wTfN5@mail.gmail.com>
Ketil Froyn a écrit :
> isatty() uses an ioctl and the resulting error code to determine if an
> fd is a tty or not. If it isn't, errno is set to ENOTTY. Later in the
> code, pread() fails, or rather returns 0 immediately. When this
> happens, the following perror("pread") tells me:
>
> pread: Not a typewriter
>
> which is the wrong error. Here's strace showing the issue:
>
> open("/sdcard/mtd5.dump", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0644) = 4
> ioctl(4, TCGETS or SNDCTL_TMR_TIMEBASE, 0xbee43ab0) = -1 ENOTTY (Not a
> typewriter)
> write(2, "Block size 131072, page size 204"..., 47) = 47
> write(2, "Dumping data starting at 0x00000"..., 64) = 64
> ioctl(3, 0x40084d0b, 0xbee43c30) = 0
> pread(3, "", 2048, 0) = 0
> write(2, "pread", 5) = 5
> write(2, ": ", 2) = 2
> write(2, "Not a typewriter", 16) = 16
> write(2, "\n", 1) = 1
>
> And the included patch (below, against v1.4.1, but simple enough)
> should take care of it.
>
> Though if someone knows what could be causing the pread() to keep
> failing, I'd be interested in hearing it! And the mtd device is
> reported as having a page size of 2048 and oob size 56, so to get even
> this far I added that as a valid page size. Isn't it?
Why errno is checked when pread return 0 ?
Errno should be checked only when return is -1.
man pread :
RETURN VALUE
On success, the number of bytes read or written is returned
(zero indi-
cates that nothing was written, in the case of pwrite(), or
end of
file, in the case of pread()), or -1 on error, in which case
errno is
set to indicate the error.
next prev parent reply other threads:[~2010-11-03 8:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-02 14:37 Suggested patch: reset errno after isatty() Ketil Froyn
2010-11-03 8:23 ` Matthieu CASTET [this message]
2010-11-03 13:16 ` Ketil Froyn
2010-11-06 8:54 ` Mike Frysinger
2010-11-07 22:36 ` Ketil Froyn
2010-11-09 9:40 ` Mike Frysinger
2010-11-13 11:07 ` Artem Bityutskiy
2010-11-13 11:55 ` Artem Bityutskiy
2010-11-17 15:50 ` Ketil Froyn
2010-11-18 11:13 ` Ketil Froyn
2010-11-24 7:50 ` Mike Frysinger
2010-11-24 9:59 ` Ketil Froyn
2010-11-24 14:12 ` Artem Bityutskiy
2010-11-24 14:30 ` Ketil Froyn
2010-11-24 21:36 ` Mike Frysinger
2010-11-25 8:58 ` Ketil Froyn
2010-11-29 15:07 ` Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CD11C03.3090207@parrot.com \
--to=matthieu.castet@parrot.com \
--cc=ketil@froyn.name \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).