diff options
author | Denys Vlasenko | 2019-04-01 15:41:05 +0200 |
---|---|---|
committer | Denys Vlasenko | 2019-04-01 15:41:05 +0200 |
commit | 6ce60b9cca55c908de3747f1224b2e8aabb557bf (patch) | |
tree | 85fa5d63b43920bf7d046b2074a366ea7653eb7e /editors/vi.c | |
parent | d4f2e7ff71f253ee993e11cf7ce6a1244dec52e0 (diff) | |
download | busybox-6ce60b9cca55c908de3747f1224b2e8aabb557bf.zip busybox-6ce60b9cca55c908de3747f1224b2e8aabb557bf.tar.gz |
vi: use vsnprintf to format status line
This is the last use of "vsprintf" in busybox:
function old new delta
status_line_bold 72 77 +5
status_line 40 45 +5
vsprintf 23 - -23
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 2/0 up/down: 10/-23) Total: -13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors/vi.c')
-rw-r--r-- | editors/vi.c | 49 |
1 files changed, 22 insertions, 27 deletions
diff --git a/editors/vi.c b/editors/vi.c index a0a2b7a..5c585a3 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -482,16 +482,13 @@ struct globals { IF_FEATURE_VI_SEARCH(last_search_pattern = xzalloc(2);) \ } while (0) - -static void show_status_line(void); // put a message on the bottom line -static void status_line_bold(const char *, ...); - #if ENABLE_FEATURE_VI_CRASHME -static void crash_dummy(); -static void crash_test(); static int crashme = 0; #endif +static void show_status_line(void); // put a message on the bottom line +static void status_line_bold(const char *, ...); + static void show_help(void) { puts("These features are available:" @@ -1218,35 +1215,34 @@ static void show_status_line(void) } //----- format the status buffer, the bottom line of screen ------ -// format status buffer, with STANDOUT mode -static void status_line_bold(const char *format, ...) +static void status_line(const char *format, ...) { va_list args; va_start(args, format); - strcpy(status_buffer, ESC_BOLD_TEXT); - vsprintf(status_buffer + sizeof(ESC_BOLD_TEXT)-1, format, args); - strcat(status_buffer, ESC_NORM_TEXT); + vsnprintf(status_buffer, STATUS_BUFFER_LEN, format, args); va_end(args); - have_status_msg = 1 + sizeof(ESC_BOLD_TEXT) + sizeof(ESC_NORM_TEXT) - 2; -} - -static void status_line_bold_errno(const char *fn) -{ - status_line_bold("'%s' "STRERROR_FMT, fn STRERROR_ERRNO); + have_status_msg = 1; } - -// format status buffer -static void status_line(const char *format, ...) +static void status_line_bold(const char *format, ...) { va_list args; va_start(args, format); - vsprintf(status_buffer, format, args); + strcpy(status_buffer, ESC_BOLD_TEXT); + vsnprintf(status_buffer + (sizeof(ESC_BOLD_TEXT)-1), + STATUS_BUFFER_LEN - sizeof(ESC_BOLD_TEXT) - sizeof(ESC_NORM_TEXT), + format, args + ); + strcat(status_buffer, ESC_NORM_TEXT); va_end(args); - have_status_msg = 1; + have_status_msg = 1 + (sizeof(ESC_BOLD_TEXT)-1) + (sizeof(ESC_NORM_TEXT)-1); +} +static void status_line_bold_errno(const char *fn) +{ + status_line_bold("'%s' "STRERROR_FMT, fn STRERROR_ERRNO); } // copy s to buf, convert unprintable @@ -1290,15 +1286,14 @@ static void print_literal(char *buf, const char *s) break; } } - static void not_implemented(const char *s) { char buf[MAX_INPUT_LEN]; - print_literal(buf, s); - status_line_bold("\'%s\' is not implemented", buf); + status_line_bold("'%s' is not implemented", buf); } +//----- Block insert/delete, undo ops -------------------------- #if ENABLE_FEATURE_VI_YANKMARK static char *text_yank(char *p, char *q, int dest) // copy text into a register { @@ -4318,10 +4313,10 @@ int vi_main(int argc, char **argv) #if ENABLE_FEATURE_VI_UNDO /* undo_stack_tail = NULL; - already is */ -#if ENABLE_FEATURE_VI_UNDO_QUEUE +# if ENABLE_FEATURE_VI_UNDO_QUEUE undo_queue_state = UNDO_EMPTY; /* undo_q = 0; - already is */ -#endif +# endif #endif #if ENABLE_FEATURE_VI_CRASHME |