sed: code shrink

function                                             old     new   delta
parse_file_cmd                                       115      94     -21

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2019-01-21 13:49:28 +01:00
parent b7928e18b1
commit 4906faafab

View File

@ -371,25 +371,25 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex)
/* Grab a filename. Whitespace at start is skipped, then goes to EOL. */ /* Grab a filename. Whitespace at start is skipped, then goes to EOL. */
static int parse_file_cmd(/*sed_cmd_t *sed_cmd,*/ const char *filecmdstr, char **retval) static int parse_file_cmd(/*sed_cmd_t *sed_cmd,*/ const char *filecmdstr, char **retval)
{ {
int start = 0, idx, hack = 0; const char *start;
const char *eol;
/* Skip whitespace, then grab filename to end of line */ /* Skip whitespace, then grab filename to end of line */
while (isspace(filecmdstr[start])) start = skip_whitespace(filecmdstr);
start++; eol = strchrnul(start, '\n');
idx = start; if (eol == start)
while (filecmdstr[idx] && filecmdstr[idx] != '\n')
idx++;
/* If lines glued together, put backslash back. */
if (filecmdstr[idx] == '\n')
hack = 1;
if (idx == start)
bb_error_msg_and_die("empty filename"); bb_error_msg_and_die("empty filename");
*retval = xstrndup(filecmdstr+start, idx-start+hack+1);
if (hack)
(*retval)[idx-start] = '\\';
return idx; if (*eol) {
/* If lines glued together, put backslash back. */
*retval = xstrndup(start, eol-start + 1);
(*retval)[eol-start] = '\\';
} else {
/* eol is NUL */
*retval = xstrdup(start);
}
return eol - filecmdstr;
} }
static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr) static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr)