diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-05-19 08:18:50 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-05-19 08:18:50 +0000 |
commit | ae4342ca3e30f7b11732ecda3ad15821e81bc314 (patch) | |
tree | 1878104940eac4649bc8add4d0b2893ab1cb0a94 /libbb | |
parent | ee56e013cfb6304f66129afee7978b0864699419 (diff) | |
download | busybox-ae4342ca3e30f7b11732ecda3ad15821e81bc314.tar.gz |
- Rename getpty() to xgetpty() and adjust callers.
- Rewrite kbd_mode and setconsole
- Introduce and use console_make_active() and xopen_xwrite_close()
- honour buffer-reservation method as set by the user (dumpkmap, loadkmap)
- shrink rtcwake and some console-tools
Saves about 270 Bytes
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 d943628aa..0c7e25497 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 0da27b1e2..36fe20426 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 5ac9582d3..d43fb825f 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 000000000..b628b49bb --- /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); +} |