libbb: make ndelay_no/off a bit more clever. +14 bytes
No binary (build failed)
—
(log yok)
| @@ -348,9 +348,9 @@ extern char *bb_get_last_path_component_strip(char *path) FAST_FUNC; | |
| /* "abc/def/" -> "" and it never modifies 'path' */ | |
| extern char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC; | |
| - | int ndelay_on(int fd) FAST_FUNC; |
| - | int ndelay_off(int fd) FAST_FUNC; |
| - | int close_on_exec_on(int fd) FAST_FUNC; |
| + | void ndelay_on(int fd) FAST_FUNC; |
| + | void ndelay_off(int fd) FAST_FUNC; |
| + | void close_on_exec_on(int fd) FAST_FUNC; |
| void xdup2(int, int) FAST_FUNC; | |
| void xmove_fd(int, int) FAST_FUNC; | |
| @@ -25,19 +25,25 @@ | |
| #include "libbb.h" | |
| /* Turn on nonblocking I/O on a fd */ | |
| - | int FAST_FUNC ndelay_on(int fd) |
| + | void FAST_FUNC ndelay_on(int fd) |
| { | |
| - | return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); |
| + | int flags = fcntl(fd, F_GETFL); |
| + | if (flags & O_NONBLOCK) |
| + | return; |
| + | fcntl(fd, F_SETFL, flags | O_NONBLOCK); |
| } | |
| - | int FAST_FUNC ndelay_off(int fd) |
| + | void FAST_FUNC ndelay_off(int fd) |
| { | |
| - | return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK); |
| + | int flags = fcntl(fd, F_GETFL); |
| + | if (!(flags & O_NONBLOCK)) |
| + | return; |
| + | fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); |
| } | |
| - | int FAST_FUNC close_on_exec_on(int fd) |
| + | void FAST_FUNC close_on_exec_on(int fd) |
| { | |
| - | return fcntl(fd, F_SETFD, FD_CLOEXEC); |
| + | fcntl(fd, F_SETFD, FD_CLOEXEC); |
| } | |
| char* FAST_FUNC strncpy_IFNAMSIZ(char *dst, const char *src) | |