add and use xopen_nonblocking (-18b)

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Bernhard Reutner-Fischer 2009-10-26 23:27:08 +01:00 committed by Denys Vlasenko
parent ca254490d7
commit a48308701a
8 changed files with 17 additions and 7 deletions

View 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 */

View 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] != '/') {

View 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);

View 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);

View 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;

View 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)
{

View 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);

View 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) {