aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-04-15 23:17:01 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2021-04-15 23:18:40 +0200
commitb65e7f629ef3cd655eb9a2a6f47530e5fd098ae3 (patch)
treecc13932bf37240ae3c28859b01e46163cc50c2ae
parentf2277268384d47fbcaba081f19cebc68de819836 (diff)
downloadbusybox-w32-b65e7f629ef3cd655eb9a2a6f47530e5fd098ae3.tar.gz
busybox-w32-b65e7f629ef3cd655eb9a2a6f47530e5fd098ae3.tar.bz2
busybox-w32-b65e7f629ef3cd655eb9a2a6f47530e5fd098ae3.zip
vi: move undo_queue_state in globals to other byte-sized members
function old new delta vi_main 278 275 -3 undo_queue_commit 62 56 -6 undo_push 374 362 -12 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-21) Total: -21 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/vi.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/editors/vi.c b/editors/vi.c
index 6dd951421..09f6eca6d 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -352,6 +352,9 @@ struct globals {
352#if ENABLE_FEATURE_VI_CRASHME 352#if ENABLE_FEATURE_VI_CRASHME
353 char last_input_char; // last char read from user 353 char last_input_char; // last char read from user
354#endif 354#endif
355#if ENABLE_FEATURE_VI_UNDO_QUEUE
356 char undo_queue_state; // One of UNDO_INS, UNDO_DEL, UNDO_EMPTY
357#endif
355 358
356#if ENABLE_FEATURE_VI_DOT_CMD 359#if ENABLE_FEATURE_VI_DOT_CMD
357 smallint adding2q; // are we currently adding user input to q 360 smallint adding2q; // are we currently adding user input to q
@@ -425,15 +428,6 @@ struct globals {
425#define ALLOW_UNDO_QUEUED ALLOW_UNDO 428#define ALLOW_UNDO_QUEUED ALLOW_UNDO
426# endif 429# endif
427 430
428# if ENABLE_FEATURE_VI_UNDO_QUEUE
429#define UNDO_USE_SPOS 32
430#define UNDO_EMPTY 64
431 char undo_queue_state; // One of UNDO_INS, UNDO_DEL, UNDO_EMPTY
432 int undo_q;
433 char *undo_queue_spos; // Start position of queued operation
434 char undo_queue[CONFIG_FEATURE_VI_UNDO_QUEUE_MAX];
435# endif
436
437 struct undo_object { 431 struct undo_object {
438 struct undo_object *prev; // Linking back avoids list traversal (LIFO) 432 struct undo_object *prev; // Linking back avoids list traversal (LIFO)
439 int start; // Offset where the data should be restored/deleted 433 int start; // Offset where the data should be restored/deleted
@@ -441,6 +435,13 @@ struct globals {
441 uint8_t u_type; // 0=deleted, 1=inserted, 2=swapped 435 uint8_t u_type; // 0=deleted, 1=inserted, 2=swapped
442 char undo_text[1]; // text that was deleted (if deletion) 436 char undo_text[1]; // text that was deleted (if deletion)
443 } *undo_stack_tail; 437 } *undo_stack_tail;
438# if ENABLE_FEATURE_VI_UNDO_QUEUE
439#define UNDO_USE_SPOS 32
440#define UNDO_EMPTY 64
441 char *undo_queue_spos; // Start position of queued operation
442 int undo_q;
443 char undo_queue[CONFIG_FEATURE_VI_UNDO_QUEUE_MAX];
444# endif
444#endif /* ENABLE_FEATURE_VI_UNDO */ 445#endif /* ENABLE_FEATURE_VI_UNDO */
445}; 446};
446#define G (*ptr_to_globals) 447#define G (*ptr_to_globals)
@@ -2071,8 +2072,8 @@ static uintptr_t stupid_insert(char *p, char c) // stupidly insert the char c at
2071static char *char_insert(char *p, char c, int undo) // insert the char c at 'p' 2072static char *char_insert(char *p, char c, int undo) // insert the char c at 'p'
2072{ 2073{
2073#if ENABLE_FEATURE_VI_SETOPTS 2074#if ENABLE_FEATURE_VI_SETOPTS
2074 char *q; 2075 char *q;
2075 size_t len; 2076 size_t len;
2076#endif 2077#endif
2077 2078
2078 if (c == 22) { // Is this an ctrl-V? 2079 if (c == 22) { // Is this an ctrl-V?
@@ -2140,9 +2141,9 @@ static char *char_insert(char *p, char c, int undo) // insert the char c at 'p'
2140 bias = text_hole_make(p, len); 2141 bias = text_hole_make(p, len);
2141 p += bias; 2142 p += bias;
2142 q += bias; 2143 q += bias;
2143#if ENABLE_FEATURE_VI_UNDO 2144# if ENABLE_FEATURE_VI_UNDO
2144 undo_push_insert(p, len, undo); 2145 undo_push_insert(p, len, undo);
2145#endif 2146# endif
2146 memcpy(p, q, len); 2147 memcpy(p, q, len);
2147 p += len; 2148 p += len;
2148 } 2149 }