diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/read.c | 6 | ||||
-rw-r--r-- | libbb/xfuncs.c | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/libbb/read.c b/libbb/read.c index b93a695b5..06ce29718 100644 --- a/libbb/read.c +++ b/libbb/read.c | |||
@@ -39,18 +39,18 @@ ssize_t FAST_FUNC safe_read(int fd, void *buf, size_t count) | |||
39 | * *** BIG SURPRISE! It stays even after child exits! *** | 39 | * *** BIG SURPRISE! It stays even after child exits! *** |
40 | * | 40 | * |
41 | * This is a design bug in UNIX API. | 41 | * This is a design bug in UNIX API. |
42 | * fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) | O_NONBLOCK); | 42 | * fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK); |
43 | * will set nonblocking mode not only on _your_ stdin, but | 43 | * will set nonblocking mode not only on _your_ stdin, but |
44 | * also on stdin of your parent, etc. | 44 | * also on stdin of your parent, etc. |
45 | * | 45 | * |
46 | * In general, | 46 | * In general, |
47 | * fd2 = dup(fd1); | 47 | * fd2 = dup(fd1); |
48 | * fcntl(fd2, F_SETFL, fcntl(fd2, F_GETFL, 0) | O_NONBLOCK); | 48 | * fcntl(fd2, F_SETFL, fcntl(fd2, F_GETFL) | O_NONBLOCK); |
49 | * sets both fd1 and fd2 to O_NONBLOCK. This includes cases | 49 | * sets both fd1 and fd2 to O_NONBLOCK. This includes cases |
50 | * where duping is done implicitly by fork() etc. | 50 | * where duping is done implicitly by fork() etc. |
51 | * | 51 | * |
52 | * We need | 52 | * We need |
53 | * fcntl(fd2, F_SETFD, fcntl(fd2, F_GETFD, 0) | O_NONBLOCK); | 53 | * fcntl(fd2, F_SETFD, fcntl(fd2, F_GETFD) | O_NONBLOCK); |
54 | * (note SETFD, not SETFL!) but such thing doesn't exist. | 54 | * (note SETFD, not SETFL!) but such thing doesn't exist. |
55 | * | 55 | * |
56 | * Alternatively, we need nonblocking_read(fd, ...) which doesn't | 56 | * Alternatively, we need nonblocking_read(fd, ...) which doesn't |
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index e47b01dc1..aac46f414 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c | |||
@@ -27,12 +27,12 @@ | |||
27 | /* Turn on nonblocking I/O on a fd */ | 27 | /* Turn on nonblocking I/O on a fd */ |
28 | int FAST_FUNC ndelay_on(int fd) | 28 | int FAST_FUNC ndelay_on(int fd) |
29 | { | 29 | { |
30 | return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL) | O_NONBLOCK); | 30 | return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); |
31 | } | 31 | } |
32 | 32 | ||
33 | int FAST_FUNC ndelay_off(int fd) | 33 | int FAST_FUNC ndelay_off(int fd) |
34 | { | 34 | { |
35 | return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL) & ~O_NONBLOCK); | 35 | return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK); |
36 | } | 36 | } |
37 | 37 | ||
38 | int FAST_FUNC close_on_exec_on(int fd) | 38 | int FAST_FUNC close_on_exec_on(int fd) |