diff options
Diffstat (limited to 'util-linux/more.c')
| -rw-r--r-- | util-linux/more.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/util-linux/more.c b/util-linux/more.c index bffe6ee5e..0be8e0b9b 100644 --- a/util-linux/more.c +++ b/util-linux/more.c | |||
| @@ -35,6 +35,9 @@ | |||
| 35 | //usage:#define more_example_usage | 35 | //usage:#define more_example_usage |
| 36 | //usage: "$ dmesg | more\n" | 36 | //usage: "$ dmesg | more\n" |
| 37 | 37 | ||
| 38 | #if ENABLE_PLATFORM_MINGW32 | ||
| 39 | #include <conio.h> | ||
| 40 | #endif | ||
| 38 | #include "libbb.h" | 41 | #include "libbb.h" |
| 39 | #include "common_bufsiz.h" | 42 | #include "common_bufsiz.h" |
| 40 | 43 | ||
| @@ -59,6 +62,7 @@ static void tcsetattr_tty_TCSANOW(struct termios *settings) | |||
| 59 | tcsetattr(G.tty_fileno, TCSANOW, settings); | 62 | tcsetattr(G.tty_fileno, TCSANOW, settings); |
| 60 | } | 63 | } |
| 61 | 64 | ||
| 65 | #if !ENABLE_PLATFORM_MINGW32 | ||
| 62 | static void gotsig(int sig UNUSED_PARAM) | 66 | static void gotsig(int sig UNUSED_PARAM) |
| 63 | { | 67 | { |
| 64 | /* bb_putchar_stderr doesn't use stdio buffering, | 68 | /* bb_putchar_stderr doesn't use stdio buffering, |
| @@ -67,6 +71,7 @@ static void gotsig(int sig UNUSED_PARAM) | |||
| 67 | tcsetattr_tty_TCSANOW(&G.initial_settings); | 71 | tcsetattr_tty_TCSANOW(&G.initial_settings); |
| 68 | _exit_FAILURE(); | 72 | _exit_FAILURE(); |
| 69 | } | 73 | } |
| 74 | #endif | ||
| 70 | 75 | ||
| 71 | #define CONVERTED_TAB_SIZE 8 | 76 | #define CONVERTED_TAB_SIZE 8 |
| 72 | 77 | ||
| @@ -96,9 +101,13 @@ int more_main(int argc UNUSED_PARAM, char **argv) | |||
| 96 | * is not a tty and turns into cat. This makes sense. */ | 101 | * is not a tty and turns into cat. This makes sense. */ |
| 97 | if (!isatty(STDOUT_FILENO)) | 102 | if (!isatty(STDOUT_FILENO)) |
| 98 | return bb_cat(argv); | 103 | return bb_cat(argv); |
| 104 | #if !ENABLE_PLATFORM_MINGW32 | ||
| 99 | tty = fopen_for_read(CURRENT_TTY); | 105 | tty = fopen_for_read(CURRENT_TTY); |
| 100 | if (!tty) | 106 | if (!tty) |
| 101 | return bb_cat(argv); | 107 | return bb_cat(argv); |
| 108 | #else | ||
| 109 | tty = stdin; | ||
| 110 | #endif | ||
| 102 | 111 | ||
| 103 | G.tty_fileno = fileno(tty); | 112 | G.tty_fileno = fileno(tty); |
| 104 | 113 | ||
| @@ -153,6 +162,11 @@ int more_main(int argc UNUSED_PARAM, char **argv) | |||
| 153 | */ | 162 | */ |
| 154 | for (;;) { | 163 | for (;;) { |
| 155 | fflush_all(); | 164 | fflush_all(); |
| 165 | #if ENABLE_PLATFORM_MINGW32 | ||
| 166 | if (!(terminal_mode(FALSE) & VT_INPUT)) | ||
| 167 | input = _getch(); | ||
| 168 | else | ||
| 169 | #endif | ||
| 156 | input = getc(tty); | 170 | input = getc(tty); |
| 157 | input = tolower(input); | 171 | input = tolower(input); |
| 158 | /* Erase the last message */ | 172 | /* Erase the last message */ |
| @@ -167,6 +181,10 @@ int more_main(int argc UNUSED_PARAM, char **argv) | |||
| 167 | * commands, else we show help msg. */ | 181 | * commands, else we show help msg. */ |
| 168 | if (input == ' ' || input == '\n' || input == 'r') | 182 | if (input == ' ' || input == '\n' || input == 'r') |
| 169 | break; | 183 | break; |
| 184 | #if ENABLE_PLATFORM_MINGW32 | ||
| 185 | if (input == '\r') | ||
| 186 | break; | ||
| 187 | #endif | ||
| 170 | len = printf("(Enter:next line Space:next page Q:quit R:show the rest)"); | 188 | len = printf("(Enter:next line Space:next page Q:quit R:show the rest)"); |
| 171 | } | 189 | } |
| 172 | len = 0; | 190 | len = 0; |
| @@ -201,6 +219,10 @@ int more_main(int argc UNUSED_PARAM, char **argv) | |||
| 201 | * will move us to a new line. */ | 219 | * will move us to a new line. */ |
| 202 | if (++lines >= G.terminal_height || input == '\n') | 220 | if (++lines >= G.terminal_height || input == '\n') |
| 203 | please_display_more_prompt = 1; | 221 | please_display_more_prompt = 1; |
| 222 | #if ENABLE_PLATFORM_MINGW32 | ||
| 223 | if (input == '\r') | ||
| 224 | please_display_more_prompt = 1; | ||
| 225 | #endif | ||
| 204 | len = 0; | 226 | len = 0; |
| 205 | } | 227 | } |
| 206 | if (c != '\n' && wrap) { | 228 | if (c != '\n' && wrap) { |
