aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-07-24 02:17:05 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-07-24 02:17:05 +0200
commit0675b03de44b75f5f5fc7a54c164628e9ee01e9c (patch)
tree462d77c8a4e44b349c4d1ebd454a3aeb6fcee3a6
parent94af83eb8d92252339098b37826768b610e3e34b (diff)
downloadbusybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.tar.gz
busybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.tar.bz2
busybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.zip
hush: use mempcpy where useful
function old new delta o_addblock 58 42 -16 expand_one_var 1618 1555 -63 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-79) Total: -79 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 170d5f33b..309ed2139 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -2662,9 +2662,8 @@ static void o_delchr(o_string *o)
2662static void o_addblock(o_string *o, const char *str, int len) 2662static void o_addblock(o_string *o, const char *str, int len)
2663{ 2663{
2664 o_grow_by(o, len); 2664 o_grow_by(o, len);
2665 memcpy(&o->data[o->length], str, len); 2665 ((char*)mempcpy(&o->data[o->length], str, len))[0] = '\0';
2666 o->length += len; 2666 o->length += len;
2667 o->data[o->length] = '\0';
2668} 2667}
2669 2668
2670static void o_addstr(o_string *o, const char *str) 2669static void o_addstr(o_string *o, const char *str)
@@ -5519,17 +5518,15 @@ static char *replace_pattern(char *val, const char *pattern, const char *repl, c
5519 break; 5518 break;
5520 5519
5521 result = xrealloc(result, res_len + (s - val) + repl_len + 1); 5520 result = xrealloc(result, res_len + (s - val) + repl_len + 1);
5522 memcpy(result + res_len, val, s - val); 5521 strcpy(mempcpy(result + res_len, val, s - val), repl);
5523 res_len += s - val; 5522 res_len += (s - val) + repl_len;
5524 strcpy(result + res_len, repl);
5525 res_len += repl_len;
5526 debug_printf_varexp("val:'%s' s:'%s' result:'%s'\n", val, s, result); 5523 debug_printf_varexp("val:'%s' s:'%s' result:'%s'\n", val, s, result);
5527 5524
5528 val = s + size; 5525 val = s + size;
5529 if (exp_op == '/') 5526 if (exp_op == '/')
5530 break; 5527 break;
5531 } 5528 }
5532 if (val[0] && result) { 5529 if (*val && result) {
5533 result = xrealloc(result, res_len + strlen(val) + 1); 5530 result = xrealloc(result, res_len + strlen(val) + 1);
5534 strcpy(result + res_len, val); 5531 strcpy(result + res_len, val);
5535 debug_printf_varexp("val:'%s' result:'%s'\n", val, result); 5532 debug_printf_varexp("val:'%s' result:'%s'\n", val, result);