fix n, add N, P
This commit is contained in:
parent
ff724fb076
commit
4157a8a71e
@ -382,7 +382,7 @@ static char *parse_cmd_str(sed_cmd_t * const sed_cmd, char *cmdstr)
|
||||
{
|
||||
/* if it was a single-letter command that takes no arguments (such as 'p'
|
||||
* or 'd') all we need to do is increment the index past that command */
|
||||
if (strchr("npqd=", sed_cmd->cmd)) {
|
||||
if (strchr("nNpPqd=", sed_cmd->cmd)) {
|
||||
cmdstr++;
|
||||
}
|
||||
/* handle (s)ubstitution command */
|
||||
@ -680,6 +680,7 @@ static void process_file(FILE *file)
|
||||
if (line == NULL) {
|
||||
return;
|
||||
}
|
||||
chomp(line);
|
||||
|
||||
/* go through every line in the file */
|
||||
do {
|
||||
@ -688,7 +689,7 @@ static void process_file(FILE *file)
|
||||
/* Read one line in advance so we can act on the last line, the '$' address */
|
||||
next_line = get_line_from_file(file);
|
||||
|
||||
chomp(line);
|
||||
chomp(next_line);
|
||||
linenum++;
|
||||
altered = 0;
|
||||
|
||||
@ -722,10 +723,15 @@ static void process_file(FILE *file)
|
||||
case '=':
|
||||
printf("%d\n", linenum);
|
||||
break;
|
||||
case 'p':
|
||||
case 'P': { /* Write the current pattern space upto the first newline */
|
||||
char *tmp = strchr(line, '\n');
|
||||
if (tmp) {
|
||||
*tmp = '\0';
|
||||
}
|
||||
}
|
||||
case 'p': /* Write the current pattern space to output */
|
||||
puts(line);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
altered++;
|
||||
deleted = 1;
|
||||
@ -808,8 +814,19 @@ static void process_file(FILE *file)
|
||||
free(line);
|
||||
return;
|
||||
case 'n': /* Read next line from input */
|
||||
i = ncmds;
|
||||
free(line);
|
||||
line = next_line;
|
||||
next_line = get_line_from_file(file);
|
||||
chomp(next_line);
|
||||
linenum++;
|
||||
break;
|
||||
case 'N': /* Append the next line to the current line */
|
||||
line = realloc(line, strlen(line) + strlen(next_line) + 2);
|
||||
strcat(line, "\n");
|
||||
strcat(line, next_line);
|
||||
next_line = get_line_from_file(file);
|
||||
chomp(next_line);
|
||||
linenum++;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user