aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2004-05-26 10:03:33 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2004-05-26 10:03:33 +0000
commit260176ef3b6762089deb20d740a036563bbfbf49 (patch)
tree0c4122fbd85c76c5bc244653a4eb82156c19f07f
parent03c55e18d540d56cb5892d6a375a59947b41d2b5 (diff)
downloadbusybox-w32-260176ef3b6762089deb20d740a036563bbfbf49.tar.gz
busybox-w32-260176ef3b6762089deb20d740a036563bbfbf49.tar.bz2
busybox-w32-260176ef3b6762089deb20d740a036563bbfbf49.zip
Rob Landley writes:
add sed -r support. I bumped into a couple of things that want to use extended regular expressions in sed, and it really isn't that hard to add. Can't say I've extensively tested it, but it's small and isn't going to break anything that doesn't use it, so... Rob git-svn-id: svn://busybox.net/trunk/busybox@8870 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--editors/sed.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/editors/sed.c b/editors/sed.c
index 45574e81d..3d6871621 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -112,7 +112,7 @@ typedef struct sed_cmd_s {
112 112
113/* globals */ 113/* globals */
114/* options */ 114/* options */
115static int be_quiet = 0, in_place=0; 115static int be_quiet = 0, in_place=0, regex_type=0;
116FILE *nonstdout; 116FILE *nonstdout;
117char *outname; 117char *outname;
118 118
@@ -298,7 +298,7 @@ static int get_address(char *my_str, int *linenum, regex_t ** regex)
298 298
299 temp=copy_parsing_slashn(pos,next); 299 temp=copy_parsing_slashn(pos,next);
300 *regex = (regex_t *) xmalloc(sizeof(regex_t)); 300 *regex = (regex_t *) xmalloc(sizeof(regex_t));
301 xregcomp(*regex, temp, REG_NEWLINE); 301 xregcomp(*regex, temp, regex_type|REG_NEWLINE);
302 free(temp); 302 free(temp);
303 /* Move position to next character after last delimiter */ 303 /* Move position to next character after last delimiter */
304 pos+=(next+1); 304 pos+=(next+1);
@@ -326,7 +326,7 @@ static int parse_file_cmd(sed_cmd_t * sed_cmd, const char *filecmdstr, char **re
326 326
327static int parse_subst_cmd(sed_cmd_t * const sed_cmd, char *substr) 327static int parse_subst_cmd(sed_cmd_t * const sed_cmd, char *substr)
328{ 328{
329 int cflags = 0; 329 int cflags = regex_type;
330 char *match; 330 char *match;
331 int idx = 0; 331 int idx = 0;
332 332
@@ -1115,12 +1115,15 @@ extern int sed_main(int argc, char **argv)
1115#endif 1115#endif
1116 1116
1117 /* do normal option parsing */ 1117 /* do normal option parsing */
1118 while ((opt = getopt(argc, argv, "ine:f:")) > 0) { 1118 while ((opt = getopt(argc, argv, "irne:f:")) > 0) {
1119 switch (opt) { 1119 switch (opt) {
1120 case 'i': 1120 case 'i':
1121 in_place++; 1121 in_place++;
1122 atexit(cleanup_outname); 1122 atexit(cleanup_outname);
1123 break; 1123 break;
1124 case 'r':
1125 regex_type|=REG_EXTENDED;
1126 break;
1124 case 'n': 1127 case 'n':
1125 be_quiet++; 1128 be_quiet++;
1126 break; 1129 break;