diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/Kbuild | 1 | ||||
-rw-r--r-- | libbb/get_console.c | 14 | ||||
-rw-r--r-- | libbb/getpty.c | 8 | ||||
-rw-r--r-- | libbb/write.c | 20 |
4 files changed, 38 insertions, 5 deletions
diff --git a/libbb/Kbuild b/libbb/Kbuild index d943628..0c7e254 100644 --- a/libbb/Kbuild +++ b/libbb/Kbuild @@ -98,6 +98,7 @@ lib-y += vfork_daemon_rexec.o lib-y += warn_ignoring_args.o lib-y += wfopen.o lib-y += wfopen_input.o +lib-y += write.o lib-y += xatonum.o lib-y += xconnect.o lib-y += xfuncs.o diff --git a/libbb/get_console.c b/libbb/get_console.c index 0da27b1..36fe204 100644 --- a/libbb/get_console.c +++ b/libbb/get_console.c @@ -8,10 +8,8 @@ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ -//#include <sys/ioctl.h> #include "libbb.h" - /* From <linux/kd.h> */ enum { KDGKBTYPE = 0x4B33 }; /* get keyboard type */ @@ -70,3 +68,15 @@ int get_console_fd(void) bb_error_msg("can't open console"); return fd; /* total failure */ } + +/* From <linux/vt.h> */ +enum { + VT_ACTIVATE = 0x5606, /* make vt active */ + VT_WAITACTIVE = 0x5607 /* wait for vt active */ +}; + +void console_make_active(int fd, const int vt_num) +{ + xioctl(fd, VT_ACTIVATE, (void *)(ptrdiff_t)vt_num); + xioctl(fd, VT_WAITACTIVE, (void *)(ptrdiff_t)vt_num); +} diff --git a/libbb/getpty.c b/libbb/getpty.c index 5ac9582..d43fb82 100644 --- a/libbb/getpty.c +++ b/libbb/getpty.c @@ -10,7 +10,7 @@ #define DEBUG 0 -int getpty(char *line) +int xgetpty(char *line) { int p; #if ENABLE_FEATURE_DEVPTS @@ -22,7 +22,7 @@ int getpty(char *line) name = ptsname(p); if (!name) { bb_perror_msg("ptsname error (is /dev/pts mounted?)"); - return -1; + goto fail; } safe_strncpy(line, name, GETPTY_BUFSIZE); return p; @@ -52,7 +52,9 @@ int getpty(char *line) } } #endif /* FEATURE_DEVPTS */ - return -1; +USE_FEATURE_DEVPTS( fail:) + bb_error_msg_and_die("open pty"); + return -1; /* never get here */ } diff --git a/libbb/write.c b/libbb/write.c new file mode 100644 index 0000000..b628b49 --- /dev/null +++ b/libbb/write.c @@ -0,0 +1,20 @@ +/* vi: set sw=4 ts=4: */ +/* + * Utility routines. + * + * Copyright (C) 2008 Bernhard Fischer + * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + */ + +#include "libbb.h" + +/* Open file and write string str to it, close file. + * Die on any open or write-error. */ +void xopen_xwrite_close(const char* file, const char* str) +{ + int fd = xopen(file, O_WRONLY); + + xwrite(fd, str, strlen(str)); + close(fd); +} |