summaryrefslogtreecommitdiffstats
path: root/meta/packages/busybox/busybox-1.01/add-getkey-applet.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/busybox/busybox-1.01/add-getkey-applet.patch')
-rw-r--r--meta/packages/busybox/busybox-1.01/add-getkey-applet.patch157
1 files changed, 157 insertions, 0 deletions
diff --git a/meta/packages/busybox/busybox-1.01/add-getkey-applet.patch b/meta/packages/busybox/busybox-1.01/add-getkey-applet.patch
new file mode 100644
index 0000000000..6ce0df21bd
--- /dev/null
+++ b/meta/packages/busybox/busybox-1.01/add-getkey-applet.patch
@@ -0,0 +1,157 @@
1
2#
3# Patch managed by http://www.holgerschurig.de/patcher.html
4#
5
6--- /dev/null
7+++ busybox-1.00/console-tools/getkey.c
8@@ -0,0 +1,94 @@
9+/* vi: set sw=4 ts=4: */
10+/*
11+ * getkey.c - Michael 'Mickey' Lauer
12+ *
13+ * Version 0.1
14+ *
15+ * A simple keygrapper. Displays a configurable message and waits a dedicated number
16+ * of seconds for a keypress. Sets the exit code accordingly (SUCCESS on keypress).
17+ */
18+#include <stdio.h>
19+#include <fcntl.h>
20+#include <memory.h>
21+#include <stdlib.h>
22+#include <unistd.h>
23+#include <sys/types.h>
24+#include <errno.h>
25+#include <sys/ioctl.h>
26+#include <sys/kd.h>
27+#include "busybox.h"
28+
29+extern int getkey_main(int argc, char **argv)
30+{
31+ int status = EXIT_FAILURE;
32+
33+ if ( argc < 2 )
34+ {
35+ bb_show_usage();
36+ }
37+
38+ /*
39+ * If no terminal is attached it is quite useless
40+ * to treat it like one.
41+ */
42+ if( !isatty(STDIN_FILENO) )
43+ {
44+ goto error_hard;
45+ }
46+
47+ //bb_printf( "DEBUG: time = '%s'\n", argv[1] );
48+ //bb_printf( "DEBUG: mesg = '%s'\n", argv[2] );
49+
50+ struct termios orig;
51+ struct termios attr;
52+
53+ if ( tcgetattr(STDIN_FILENO, &orig) == -1 )
54+ {
55+ goto error_hard;
56+ }
57+
58+ attr = orig;
59+ attr.c_cc[VMIN] = 0;
60+ attr.c_cc[VTIME] = 0;
61+ attr.c_iflag |= INLCR;
62+ attr.c_oflag |= OPOST|ONLCR;
63+ attr.c_cflag &= ~PARENB;
64+ attr.c_lflag &= ~(ICANON/*|ECHO*/);
65+ if ( tcsetattr(STDIN_FILENO,TCSANOW,&attr) == -1 )
66+ {
67+ goto error_hard;
68+ }
69+
70+ fd_set rfds;
71+ struct timeval tv;
72+ int retval;
73+
74+ FD_ZERO(&rfds);
75+ FD_SET(0, &rfds);
76+
77+ tv.tv_sec = atoi( argv[1] );
78+ tv.tv_usec = 0;
79+
80+ if ( argc == 3 )
81+ {
82+ bb_printf( argv[2], tv.tv_sec );
83+ bb_printf( "\n" );
84+ fflush(stdout);
85+ }
86+ retval = select(1, &rfds, NULL, NULL, &tv);
87+ if (retval > 0)
88+ {
89+ status = EXIT_SUCCESS;
90+ }
91+
92+ if (tcsetattr(STDIN_FILENO,TCSANOW,&orig) == -1 )
93+ {
94+ goto error_hard;
95+ }
96+
97+ return status;
98+
99+error_hard :
100+ return EXIT_FAILURE;
101+};
102+
103--- busybox-1.00/console-tools/Makefile.in~add-getkey-applet.patch
104+++ busybox-1.00/console-tools/Makefile.in
105@@ -28,6 +28,7 @@
106 CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o
107 CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o
108 CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o
109+CONSOLETOOLS_DIR-$(CONFIG_GETKEY) += getkey.o
110 CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o
111 CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o
112 CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o
113--- busybox-1.00/console-tools/Config.in~add-getkey-applet.patch
114+++ busybox-1.00/console-tools/Config.in
115@@ -31,6 +31,14 @@
116 This program dumps the kernel's keyboard translation table to
117 stdout, in binary format. You can then use loadkmap to load it.
118
119+config CONFIG_GETKEY
120+ bool "getkey"
121+ default n
122+ help
123+ This program displays a configurable message and waits
124+ a dedicated number of seconds for a keypress. It sets
125+ the exit code accordingly, i.e. SUCCESS if there was a keypress.
126+
127 config CONFIG_LOADFONT
128 bool "loadfont"
129 default n
130--- busybox-1.00/include/applets.h~add-getkey-applet.patch
131+++ busybox-1.00/include/applets.h
132@@ -223,6 +223,9 @@
133 #ifdef CONFIG_FTPPUT
134 APPLET(ftpput, ftpgetput_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
135 #endif
136+#ifdef CONFIG_GETKEY
137+ APPLET(getkey, getkey_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
138+#endif
139 #ifdef CONFIG_GETOPT
140 APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
141 #endif
142--- busybox-1.00/include/usage.h~add-getkey-applet.patch
143+++ busybox-1.00/include/usage.h
144@@ -734,6 +734,13 @@
145 "\t-p, --password Password to be used\n" \
146 "\t-P, --port Port number to be used"
147
148+#define getkey_trivial_usage \
149+ "time [message]"
150+#define getkey_full_usage \
151+ "Display a message and wait for a keypress."
152+#define getkey_example_usage \
153+ "$ getkey 5 'Press a key within %d seconds to interrupt autoboot.'"
154+
155 #define getopt_trivial_usage \
156 "[OPTIONS]..."
157 #define getopt_full_usage \