|
From: | Matthew Woehlke |
Subject: | Re: source(builtin) and read(2) |
Date: | Fri, 23 Mar 2007 15:40:21 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.4.0 |
Eric Blake wrote:
According to Matthew Woehlke on 3/23/2007 1:38 PM:Huh? I never said anything about ssize_t, I said SSIZE_MAX which appears to be guaranteed by POSIX to be at least 32 *kilobytes*,SSIZE_MAX is guaranteed to be the maximum value that fits in ssize_t. Again, if your ssize_t is smaller than 32 bits, your platform has other issues. Just because POSIX allows ssize_t to be as small as 16 bits doesn't mean many modern platforms do that.
Hmm... well then I guess this is broken:/usr/include/limits.h:#define SSIZE_MAX 53248 /* max single I/O size, 52K */
The man page here says: If the value of nbytes is greater than SSIZE_MAX, the read() function returns -1 and sets errno to [EINVAL]....and trust me, it ain't lying. This broke at least gawk and gzip, and even the Linux man page seems to strongly indicate that you should pay attention to SSIZE_MAX when calling read().
-- Matthew Excessive obscurity: -5
[Prev in Thread] | Current Thread | [Next in Thread] |