[git commit] vi: use vsnprintf to format status line

Denys Vlasenko vda.linux at googlemail.com
Mon Apr 1 13:41:05 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=6ce60b9cca55c908de3747f1224b2e8aabb557bf
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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 at googlemail.com>
---
 editors/vi.c | 49 ++++++++++++++++++++++---------------------------
 1 file changed, 22 insertions(+), 27 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index a0a2b7a82..5c585a390 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


More information about the busybox-cvs mailing list