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:
parent
b7928e18b1
commit
4906faafab
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user