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. */
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 */
while (isspace(filecmdstr[start]))
start++;
idx = start;
while (filecmdstr[idx] && filecmdstr[idx] != '\n')
idx++;
/* If lines glued together, put backslash back. */
if (filecmdstr[idx] == '\n')
hack = 1;
if (idx == start)
start = skip_whitespace(filecmdstr);
eol = strchrnul(start, '\n');
if (eol == start)
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)