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. */
|
/* 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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user