summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/Kbuild1
-rw-r--r--libbb/get_console.c14
-rw-r--r--libbb/getpty.c8
-rw-r--r--libbb/write.c20
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);
+}