error_msg_and_die("unterminated match expression");
my_str[idx] = '\0';
*regex = (regex_t *)xmalloc(sizeof(regex_t));
- xregcomp(*regex, my_str+1, 0);
+ xregcomp(*regex, my_str+1, REG_NEWLINE);
idx++; /* so it points to the next character after the last '/' */
}
else {
break;
}
- /* if there's anything left of the line, print it */
- if (*hackline)
- fputs(hackline, stdout);
+ puts(hackline);
/* cleanup */
free(regmatch);
switch (sed_cmd->cmd) {
case 'p':
- fputs(line, stdout);
+ puts(line);
break;
case 'd':
* flag exists in the first place.
*/
- /* if the user specified that they didn't want anything printed (i.e. a -n
+ /* if the user specified that they didn't want anything printed (i.e., a -n
* flag and no 'p' flag after the s///), then there's really no point doing
* anything here. */
if (be_quiet && !sed_cmd->sub_p)
break;
case 'a':
- fputs(line, stdout);
+ puts(line);
fputs(sed_cmd->editline, stdout);
altered++;
break;
case 'r': {
FILE *file;
- fputs(line, stdout);
+ puts(line);
file = fopen(sed_cmd->filename, "r");
if (file)
print_file(file);
/* go through every line in the file */
while ((line = get_line_from_file(file)) != NULL) {
+ chomp(line);
linenum++;
line_altered = 0;
* line was altered (via a 'd'elete or 's'ubstitution), in which case
* the altered line was already printed */
if (!be_quiet && !line_altered)
- fputs(line, stdout);
+ puts(line);
free(line);
}