lineedit: get terminal width before printing prompt
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 8 Nov 2017 12:38:12 +0000 (13:38 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 8 Nov 2017 12:38:12 +0000 (13:38 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/lineedit.c

index 56e81404e0e032b1e53852dc4ddaacd622ec410a..5624a7fc30da98fbb906282093be3a0133202db3 100644 (file)
@@ -2401,6 +2401,8 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman
        bb_error_msg("cur_history:%d cnt_history:%d", state->cur_history, state->cnt_history);
 #endif
 
+       /* Get width (before printing prompt) */
+       cmdedit_termw = get_terminal_width(STDIN_FILENO);
        /* Print out the command prompt, optionally ask where cursor is */
        parse_and_put_prompt(prompt);
        ask_terminal();
@@ -2410,8 +2412,6 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman
        S.SIGWINCH_handler.sa_flags = SA_RESTART;
        sigaction(SIGWINCH, &S.SIGWINCH_handler, &S.SIGWINCH_handler);
 
-       cmdedit_termw = get_terminal_width(STDIN_FILENO);
-
        read_key_buffer[0] = 0;
        while (1) {
                /*