{
char *my_str = strdup(str);
int idx = 0;
+ char olddelimiter;
+ olddelimiter = sed_cmd->delimiter;
+ sed_cmd->delimiter = '/';
if (isdigit(my_str[idx])) {
do {
}
free(my_str);
+ sed_cmd->delimiter = olddelimiter;
return idx;
}
}
/* eat trailing newline (if any) --if I don't do this, edit commands
* (aic) will print an extra newline */
- if (line[strlen(line)-1] == '\n')
- line[strlen(line)-1] = 0;
+ chomp(line);
add_cmd_str(line);
free(line);
}
if (sed_cmds[i].beg_match && sed_cmds[i].end_match) {
if (still_in_range || regexec(sed_cmds[i].beg_match, line, 0, NULL, 0) == 0) {
line_altered += do_sed_command(&sed_cmds[i], line);
- still_in_range = 1;
- if (regexec(sed_cmds[i].end_match, line, 0, NULL, 0) == 0)
+ if (still_in_range && regexec(sed_cmds[i].end_match, line, 0, NULL, 0) == 0)
still_in_range = 0;
+ else
+ still_in_range = 1;
}
}
#endif
/* do normal option parsing */
- while ((opt = getopt(argc, argv, "hne:f:")) > 0) {
+ while ((opt = getopt(argc, argv, "ne:f:")) > 0) {
switch (opt) {
- case 'h':
- usage(sed_usage);
- break;
case 'n':
be_quiet++;
break;
case 'f':
load_cmd_file(optarg);
break;
+ default:
+ show_usage();
}
}
* argv[optind] should be the pattern. no pattern, no worky */
if (ncmds == 0) {
if (argv[optind] == NULL)
- usage(sed_usage);
+ show_usage();
else {
add_cmd_str(argv[optind]);
optind++;