diff options
author | Marek Polacek <mmpolacek@gmail.com> | 2010-10-28 21:34:56 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-10-28 21:34:56 +0200 |
commit | 7b18107384d950358e146d42bf02b391fab5ffd6 (patch) | |
tree | 9994e2bcaa038c3128ed8b3bca99486e22f660fb /miscutils | |
parent | 02788ac7e2a44eee889aa1005e89076f928e964a (diff) | |
download | busybox-w32-7b18107384d950358e146d42bf02b391fab5ffd6.tar.gz busybox-w32-7b18107384d950358e146d42bf02b391fab5ffd6.tar.bz2 busybox-w32-7b18107384d950358e146d42bf02b391fab5ffd6.zip |
*: use _exit() in sighandlers; showkey: do not use exit-thru-sighandler
While at it, make ESC sequences more readable; and removed check for
isatty(stdin) in reset. Code shrink:
text data bss dec hex filename
884771 936 17216 902923 dc70b busybox_old
884723 936 17216 902875 dc6db busybox_unstripped
Signed-off-by: Marek Polacek <mmpolacek@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/conspy.c | 13 | ||||
-rw-r--r-- | miscutils/less.c | 14 | ||||
-rw-r--r-- | miscutils/watchdog.c | 2 |
3 files changed, 17 insertions, 12 deletions
diff --git a/miscutils/conspy.c b/miscutils/conspy.c index 01928b35f..040fa86f3 100644 --- a/miscutils/conspy.c +++ b/miscutils/conspy.c | |||
@@ -43,6 +43,9 @@ | |||
43 | #include "libbb.h" | 43 | #include "libbb.h" |
44 | #include <sys/kd.h> | 44 | #include <sys/kd.h> |
45 | 45 | ||
46 | |||
47 | #define ESC "\033" | ||
48 | |||
46 | struct screen_info { | 49 | struct screen_info { |
47 | unsigned char lines, cols, cursor_x, cursor_y; | 50 | unsigned char lines, cols, cursor_x, cursor_y; |
48 | }; | 51 | }; |
@@ -70,7 +73,7 @@ struct globals { | |||
70 | unsigned col; | 73 | unsigned col; |
71 | unsigned line; | 74 | unsigned line; |
72 | smallint curoff; // unknown:0 cursor on:-1 cursor off:1 | 75 | smallint curoff; // unknown:0 cursor on:-1 cursor off:1 |
73 | char attrbuf[sizeof("\033[0;1;5;30;40m")]; | 76 | char attrbuf[sizeof(ESC"[0;1;5;30;40m")]; |
74 | // remote console | 77 | // remote console |
75 | struct screen_info remote; | 78 | struct screen_info remote; |
76 | // saved local tty terminfo | 79 | // saved local tty terminfo |
@@ -101,7 +104,7 @@ enum { | |||
101 | static void clrscr(void) | 104 | static void clrscr(void) |
102 | { | 105 | { |
103 | // Home, clear till end of screen | 106 | // Home, clear till end of screen |
104 | fputs("\033[1;1H" "\033[J", stdout); | 107 | fputs(ESC"[1;1H" ESC"[J", stdout); |
105 | G.col = G.line = 0; | 108 | G.col = G.line = 0; |
106 | } | 109 | } |
107 | 110 | ||
@@ -109,7 +112,7 @@ static void set_cursor(int state) | |||
109 | { | 112 | { |
110 | if (G.curoff != state) { | 113 | if (G.curoff != state) { |
111 | G.curoff = state; | 114 | G.curoff = state; |
112 | fputs("\033[?25", stdout); | 115 | fputs(ESC"[?25", stdout); |
113 | bb_putchar("h?l"[1 + state]); | 116 | bb_putchar("h?l"[1 + state]); |
114 | } | 117 | } |
115 | } | 118 | } |
@@ -119,7 +122,7 @@ static void gotoxy(int col, int line) | |||
119 | if (G.col != col || G.line != line) { | 122 | if (G.col != col || G.line != line) { |
120 | G.col = col; | 123 | G.col = col; |
121 | G.line = line; | 124 | G.line = line; |
122 | printf("\033[%u;%uH", line + 1, col + 1); | 125 | printf(ESC"[%u;%uH", line + 1, col + 1); |
123 | } | 126 | } |
124 | } | 127 | } |
125 | 128 | ||
@@ -132,7 +135,7 @@ static void cleanup(int code) | |||
132 | } | 135 | } |
133 | // Reset attributes | 136 | // Reset attributes |
134 | if (!BW) | 137 | if (!BW) |
135 | fputs("\033[0m", stdout); | 138 | fputs(ESC"[0m", stdout); |
136 | bb_putchar('\n'); | 139 | bb_putchar('\n'); |
137 | if (code > 1) | 140 | if (code > 1) |
138 | kill_myself_with_sig(code); | 141 | kill_myself_with_sig(code); |
diff --git a/miscutils/less.c b/miscutils/less.c index 500059d2a..9e12c11a7 100644 --- a/miscutils/less.c +++ b/miscutils/less.c | |||
@@ -28,13 +28,15 @@ | |||
28 | #include "xregex.h" | 28 | #include "xregex.h" |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | |||
32 | #define ESC "\033" | ||
31 | /* The escape codes for highlighted and normal text */ | 33 | /* The escape codes for highlighted and normal text */ |
32 | #define HIGHLIGHT "\033[7m" | 34 | #define HIGHLIGHT ESC"[7m" |
33 | #define NORMAL "\033[0m" | 35 | #define NORMAL ESC"[0m" |
34 | /* The escape code to home and clear to the end of screen */ | 36 | /* The escape code to home and clear to the end of screen */ |
35 | #define CLEAR "\033[H\033[J" | 37 | #define CLEAR ESC"[H\033[J" |
36 | /* The escape code to clear to the end of line */ | 38 | /* The escape code to clear to the end of line */ |
37 | #define CLEAR_2_EOL "\033[K" | 39 | #define CLEAR_2_EOL ESC"[K" |
38 | 40 | ||
39 | enum { | 41 | enum { |
40 | /* Absolute max of lines eaten */ | 42 | /* Absolute max of lines eaten */ |
@@ -165,12 +167,12 @@ static void set_tty_cooked(void) | |||
165 | top-left corner of the console */ | 167 | top-left corner of the console */ |
166 | static void move_cursor(int line, int row) | 168 | static void move_cursor(int line, int row) |
167 | { | 169 | { |
168 | printf("\033[%u;%uH", line, row); | 170 | printf(ESC"[%u;%uH", line, row); |
169 | } | 171 | } |
170 | 172 | ||
171 | static void clear_line(void) | 173 | static void clear_line(void) |
172 | { | 174 | { |
173 | printf("\033[%u;0H" CLEAR_2_EOL, max_displayed_line + 2); | 175 | printf(ESC"[%u;0H" CLEAR_2_EOL, max_displayed_line + 2); |
174 | } | 176 | } |
175 | 177 | ||
176 | static void print_hilite(const char *str) | 178 | static void print_hilite(const char *str) |
diff --git a/miscutils/watchdog.c b/miscutils/watchdog.c index 36902a214..630782660 100644 --- a/miscutils/watchdog.c +++ b/miscutils/watchdog.c | |||
@@ -24,7 +24,7 @@ static void watchdog_shutdown(int sig UNUSED_PARAM) | |||
24 | write(3, &V, 1); /* Magic, see watchdog-api.txt in kernel */ | 24 | write(3, &V, 1); /* Magic, see watchdog-api.txt in kernel */ |
25 | if (ENABLE_FEATURE_CLEAN_UP) | 25 | if (ENABLE_FEATURE_CLEAN_UP) |
26 | close(3); | 26 | close(3); |
27 | exit(EXIT_SUCCESS); | 27 | _exit(EXIT_SUCCESS); |
28 | } | 28 | } |
29 | 29 | ||
30 | int watchdog_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 30 | int watchdog_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |