OSDN Git Service

add and use xopen_nonblocking (-18b)
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Mon, 26 Oct 2009 22:27:08 +0000 (23:27 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 27 Oct 2009 16:17:34 +0000 (17:17 +0100)
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
console-tools/kbd_mode.c
console-tools/loadfont.c
console-tools/loadkmap.c
coreutils/stty.c
include/libbb.h
libbb/xfuncs_printf.c
miscutils/eject.c
miscutils/hdparm.c

index 544bbb7..e1d8523 100644 (file)
@@ -25,7 +25,7 @@ int kbd_mode_main(int argc UNUSED_PARAM, char **argv)
        const char *tty_name = CURRENT_TTY;
 
        opt = getopt32(argv, "sakuC:", &tty_name);
-       fd = xopen(tty_name, O_NONBLOCK);
+       fd = xopen_nonblocking(tty_name);
        opt &= 0xf; /* clear -C bit, see (*) */
 
        if (!opt) { /* print current setting */
index 3364180..e833474 100644 (file)
@@ -277,7 +277,7 @@ int setfont_main(int argc UNUSED_PARAM, char **argv)
        opts = getopt32(argv, "m:C:", &mapfilename, &tty_name);
        argv += optind;
 
-       fd = xopen(tty_name, O_NONBLOCK);
+       fd = xopen_nonblocking(tty_name);
 
        if (sizeof(CONFIG_DEFAULT_SETFONT_DIR) > 1) { // if not ""
                if (*argv[0] != '/') {
index ac2c0a6..a6b9a86 100644 (file)
@@ -36,7 +36,7 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
        fd = get_console_fd_or_die();
 /* or maybe:
        opt = getopt32(argv, "C:", &tty_name);
-       fd = xopen(tty_name, O_NONBLOCK);
+       fd = xopen_nonblocking(tty_name);
 */
 
        xread(STDIN_FILENO, flags, 7);
index baa1ec2..cb9b183 100644 (file)
@@ -1295,7 +1295,7 @@ int stty_main(int argc, char **argv)
        if (file_name) {
                int fd, fdflags;
                G.device_name = file_name;
-               fd = xopen(G.device_name, O_RDONLY | O_NONBLOCK);
+               fd = xopen_nonblocking(G.device_name);
                if (fd != STDIN_FILENO) {
                        dup2(fd, STDIN_FILENO);
                        close(fd);
index 9865121..d2b7437 100644 (file)
@@ -400,6 +400,7 @@ void bb_unsetenv(const char *key) FAST_FUNC;
 void xunlink(const char *pathname) FAST_FUNC;
 void xstat(const char *pathname, struct stat *buf) FAST_FUNC;
 int xopen(const char *pathname, int flags) FAST_FUNC;
+int xopen_nonblocking(const char *pathname) FAST_FUNC;
 int xopen3(const char *pathname, int flags, int mode) FAST_FUNC;
 int open_or_warn(const char *pathname, int flags) FAST_FUNC;
 int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC;
index 345c842..241887a 100644 (file)
@@ -140,6 +140,15 @@ int FAST_FUNC xopen(const char *pathname, int flags)
        return xopen3(pathname, flags, 0666);
 }
 
+/* Die if we can't open an existing file readonly with O_NONBLOCK
+ * and return the fd.
+ * Note that for ioctl O_RDONLY is sufficient.
+ */
+int FAST_FUNC xopen_nonblocking(const char *pathname)
+{
+       return xopen(pathname, O_RDONLY | O_NONBLOCK);
+}
+
 // Warn if we can't open a file and return a fd.
 int FAST_FUNC open3_or_warn(const char *pathname, int flags, int mode)
 {
index 75618be..adff9e0 100644 (file)
@@ -103,7 +103,7 @@ int eject_main(int argc UNUSED_PARAM, char **argv)
           eject /dev/cdrom
        */
 
-       xmove_fd(xopen(device, O_RDONLY|O_NONBLOCK), dev_fd);
+       xmove_fd(xopen_nonblocking(device), dev_fd);
 
        if (ENABLE_FEATURE_EJECT_SCSI && (flags & FLAG_SCSI))
                eject_scsi(device);
index 65c11ec..c4d2f3b 100644 (file)
@@ -1552,8 +1552,8 @@ static void process_dev(char *devname)
        unsigned char args[4] = { WIN_SETFEATURES, 0, 0, 0 };
        const char *fmt = " %s\t= %2ld";
 
-       /*fd = xopen(devname, O_RDONLY | O_NONBLOCK);*/
-       xmove_fd(xopen(devname, O_RDONLY | O_NONBLOCK), fd);
+       /*fd = xopen_nonblocking(devname);*/
+       xmove_fd(xopen_nonblocking(devname), fd);
        printf("\n%s:\n", devname);
 
        if (getset_readahead == IS_SET) {