libbb,crond,lash: fix getopt32 (don't know how it managed to slip through)
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 13:42:08 +0000 (13:42 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 13:42:08 +0000 (13:42 -0000)
*: fcntl(fd, F_GETFL) doesn't require third parameter at all.

include/libbb.h
libbb/xfuncs.c
loginutils/getty.c
miscutils/crond.c
networking/isrv.c
networking/isrv_identd.c
runit/svlogd.c
shell/ash.c
shell/lash.c

index 2519aeb98c6c5f6160581d5c58c195c68acf9f35..e514fe2f2deb5a44cf01322a5d2672815dacb8da 100644 (file)
@@ -611,8 +611,7 @@ extern const char *opt_complementary;
 extern const char *applet_long_options;
 #endif
 extern uint32_t option_mask32;
-/* TODO: don't pass argc, determine it by looking at argv */
-extern uint32_t getopt32(int argc, char **argv, const char *applet_opts, ...);
+extern uint32_t getopt32(char **argv, const char *applet_opts, ...);
 
 
 typedef struct llist_t {
index 5a1090eaf5d577036470e882396bdf93f2f238f1..fa9fc10d659b083662a9f442c0cb77330500bc9f 100644 (file)
@@ -161,12 +161,12 @@ void xunlink(const char *pathname)
 // Turn on nonblocking I/O on a fd
 int ndelay_on(int fd)
 {
-       return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL,0) | O_NONBLOCK);
+       return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL) | O_NONBLOCK);
 }
 
 int ndelay_off(int fd)
 {
-       return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL,0) & ~O_NONBLOCK);
+       return fcntl(fd, F_SETFL, fcntl(fd,F_GETFL) & ~O_NONBLOCK);
 }
 
 void xdup2(int from, int to)
index 0c000666eac2deacdd295ea07ad45ac405a9aea3..db8d7cef5c671f04a30664a672441b9cfa4b098c 100644 (file)
@@ -232,13 +232,11 @@ static void open_tty(const char *tty, struct termios *tp, int local)
        int chdir_to_root = 0;
 
        /* Set up new standard input, unless we are given an already opened port. */
-
        if (NOT_LONE_DASH(tty)) {
                struct stat st;
                int fd;
 
                /* Sanity checks... */
-
                xchdir("/dev");
                chdir_to_root = 1;
                xstat(tty, &st);
@@ -246,18 +244,17 @@ static void open_tty(const char *tty, struct termios *tp, int local)
                        bb_error_msg_and_die("%s: not a character device", tty);
 
                /* Open the tty as standard input. */
-
                debug("open(2)\n");
                fd = xopen(tty, O_RDWR | O_NONBLOCK);
                xdup2(fd, 0);
-               while (fd > 2) close(fd--);
+               while (fd > 2)
+                       close(fd--);
        } else {
                /*
                 * Standard input should already be connected to an open port. Make
                 * sure it is open for read/write.
                 */
-
-               if ((fcntl(0, F_GETFL, 0) & O_RDWR) != O_RDWR)
+               if ((fcntl(0, F_GETFL) & O_RDWR) != O_RDWR)
                        bb_error_msg_and_die("stdin is not open for read/write");
        }
 
@@ -274,7 +271,6 @@ static void open_tty(const char *tty, struct termios *tp, int local)
         * by patching the SunOS kernel variable "zsadtrlow" to a larger value;
         * 5 seconds seems to be a good value.
         */
-
        ioctl_or_perror_and_die(0, TCGETS, tp, "%s: TCGETS", tty);
 
        /*
@@ -362,7 +358,7 @@ static void termios_init(struct termios *tp, int speed, struct options *op)
        ioctl(0, TCSETS, tp);
 
        /* go to blocking input even in local mode */
-       fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) & ~O_NONBLOCK);
+       ndelay_off(0);
 
        debug("term_io 2\n");
 }
@@ -791,7 +787,7 @@ int getty_main(int argc, char **argv)
 
        if (!(options.flags & F_LOCAL)) {
                /* go to blocking write mode unless -L is specified */
-               fcntl(1, F_SETFL, fcntl(1, F_GETFL, 0) & ~O_NONBLOCK);
+               ndelay_off(1);
        }
 
        /* Optionally detect the baud rate from the modem status message. */
index 117a8b17571134bda35b92e7a342963c7e0664a6..3c73c733729af3f405e5a51e19720e466103f2c0 100644 (file)
@@ -137,7 +137,7 @@ int crond_main(int ac, char **av)
 
        opt_complementary = "f-b:b-f:S-L:L-S" USE_DEBUG_CROND_OPTION(":d-l");
        opterr = 0;                     /* disable getopt 'errors' message. */
-       opt = getopt32(ac, av, "l:L:fbSc:" USE_DEBUG_CROND_OPTION("d:"),
+       opt = getopt32(av, "l:L:fbSc:" USE_DEBUG_CROND_OPTION("d:"),
                        &lopt, &Lopt, &copt USE_DEBUG_CROND_OPTION(, &dopt));
        if (opt & 1) /* -l */
                LogLevel = xatou(lopt);
index a51618af10ad2b676cd7229d64bd6f15917e3a4d..1a41dd4fbcf2db5d81c94794d77b954d6a5bcd99 100644 (file)
@@ -301,7 +301,7 @@ void isrv_run(
        isrv_want_rd(state, listen_fd);
        /* remember flags to make blocking<->nonblocking switch faster */
        /* (suppress gcc warning "cast from ptr to int of different size") */
-       PARAM_TBL[0] = (void*)(ptrdiff_t)(fcntl(listen_fd, F_GETFL, 0));
+       PARAM_TBL[0] = (void*)(ptrdiff_t)(fcntl(listen_fd, F_GETFL));
 
        while (1) {
                struct timeval tv;
index 23f6758a033a9bbb64d80daf02efb1ee8b5d858c..9bc3b607d15e15ad8f17654de51cf13e318fc847 100644 (file)
@@ -32,7 +32,7 @@ static int new_peer(isrv_state_t *state, int fd)
        if (isrv_register_fd(state, peer, fd) < 0)
                return peer; /* failure, unregister peer */
 
-       buf->fd_flag = fcntl(fd, F_GETFL, 0) | O_NONBLOCK;
+       buf->fd_flag = fcntl(fd, F_GETFL) | O_NONBLOCK;
        isrv_want_rd(state, fd);
        return 0;
 }
index 467845122babe12f188e2802074cce13b8f0327e..8632ba6a5a7e9248f1c8b362b29fbb46b008182b 100644 (file)
@@ -800,7 +800,7 @@ int svlogd_main(int argc, char **argv)
        /* We cannot set NONBLOCK on fd #0 permanently - this setting
         * _isn't_ per-process! It is shared among all other processes
         * with the same stdin */
-       fl_flag_0 = fcntl(0, F_GETFL, 0);
+       fl_flag_0 = fcntl(0, F_GETFL);
 
        blocked_sigset = &ss;
        sigemptyset(&ss);
index 9aec8ee0a4a763a8201719821d37bca6aaa7e13d..46f00dd3d3e1f9f7b78539e500a30e45297de938 100644 (file)
@@ -726,7 +726,7 @@ opentrace(void)
                }
        }
 #ifdef O_APPEND
-       flags = fcntl(fileno(tracefile), F_GETFL, 0);
+       flags = fcntl(fileno(tracefile), F_GETFL);
        if (flags >= 0)
                fcntl(fileno(tracefile), F_SETFL, flags | O_APPEND);
 #endif
@@ -8565,7 +8565,7 @@ preadfd(void)
 
        if (nr < 0) {
                if (parsefile->fd == 0 && errno == EWOULDBLOCK) {
-                       int flags = fcntl(0, F_GETFL, 0);
+                       int flags = fcntl(0, F_GETFL);
                        if (flags >= 0 && flags & O_NONBLOCK) {
                                flags &=~ O_NONBLOCK;
                                if (fcntl(0, F_SETFL, flags) >= 0) {
index c28a1034a2603ce3735c26647c9294f0be6da715..d4dba8e63e6d5164b6e042a196e98610dc863a3c 100644 (file)
@@ -1524,7 +1524,7 @@ int lash_main(int argc_l, char **argv_l)
                }
        }
 
-       opt = getopt32(argc_l, argv_l, "+ic:", &local_pending_command);
+       opt = getopt32(argv_l, "+ic:", &local_pending_command);
 #define LASH_OPT_i (1<<0)
 #define LASH_OPT_c (1<<1)
        if (opt & LASH_OPT_c) {