From ae4342ca3e30f7b11732ecda3ad15821e81bc314 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Mon, 19 May 2008 08:18:50 +0000 Subject: - 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 --- libbb/Kbuild | 1 + libbb/get_console.c | 14 ++++++++++++-- libbb/getpty.c | 8 +++++--- libbb/write.c | 20 ++++++++++++++++++++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 libbb/write.c (limited to 'libbb') 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 #include "libbb.h" - /* From */ 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 */ +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); +} -- cgit v1.2.3