hush: use ash's read builtin
function old new delta shell_builtin_read - 1000 +1000 set_local_var_from_halves - 24 +24 setvar2 - 7 +7 ... popstring 140 134 -6 ash_main 1375 1368 -7 setvar 184 174 -10 arith_set_local_var 36 - -36 builtin_read 1096 185 -911 ------------------------------------------------------------------------------ (add/remove: 3/1 grow/shrink: 5/23 up/down: 1038/-1007) Total: 31 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -21,7 +21,7 @@
|
||||
#include "builtin_read.h"
|
||||
|
||||
const char* FAST_FUNC
|
||||
builtin_read(void (*setvar)(const char *name, const char *val, int flags),
|
||||
shell_builtin_read(void FAST_FUNC (*setvar)(const char *name, const char *val),
|
||||
char **argv,
|
||||
const char *ifs,
|
||||
int read_flags,
|
||||
@ -178,7 +178,7 @@ builtin_read(void (*setvar)(const char *name, const char *val, int flags),
|
||||
if (argv[1] != NULL && is_ifs) {
|
||||
buffer[bufpos] = '\0';
|
||||
bufpos = 0;
|
||||
setvar(*argv, buffer, 0);
|
||||
setvar(*argv, buffer);
|
||||
argv++;
|
||||
/* can we skip one non-space ifs char? (2: yes) */
|
||||
startword = isspace(c) ? 2 : 1;
|
||||
@ -195,14 +195,14 @@ builtin_read(void (*setvar)(const char *name, const char *val, int flags),
|
||||
continue;
|
||||
buffer[bufpos + 1] = '\0';
|
||||
/* Use the remainder as a value for the next variable */
|
||||
setvar(*argv, buffer, 0);
|
||||
setvar(*argv, buffer);
|
||||
/* Set the rest to "" */
|
||||
while (*++argv)
|
||||
setvar(*argv, "", 0);
|
||||
setvar(*argv, "");
|
||||
} else {
|
||||
/* Note: no $IFS removal */
|
||||
buffer[bufpos] = '\0';
|
||||
setvar("REPLY", buffer, 0);
|
||||
setvar("REPLY", buffer);
|
||||
}
|
||||
|
||||
ret:
|
||||
|
Reference in New Issue
Block a user