Gitweb:
http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=f6568ba916e08707e6bb6050eb7c643958fb1c4b
Commit: f6568ba916e08707e6bb6050eb7c643958fb1c4b
Parent: adfc3c0082139324d458b1f5ebbb46b1c5492049
Author: David Lutterkort <[email protected]>
AuthorDate: Wed Nov 11 16:05:12 2009 -0800
Committer: David Lutterkort <[email protected]>
CommitterDate: Fri Nov 13 10:45:05 2009 -0800
* src/regexp.c (regexp_escape): fix stripping of enclosing parens
Only strip them if they belong together, and not for something like /(a)(b)/
---
src/regexp.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/regexp.c b/src/regexp.c
index 795e6f0..15a73af 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -68,9 +68,21 @@ char *regexp_escape(const struct regexp *r) {
}
}
- if (pat[0] == '(' && pat[strlen(pat)-1] == ')')
- memmove(pat, pat+1, strlen(pat+1)+1);
- pat[strlen(pat)] = '\0';
+ if (pat[0] == '(' && pat[strlen(pat)-1] == ')') {
+ int level = 1;
+ for (int i=1; i < strlen(pat)-1; i++) {
+ if (pat[i] == '(')
+ level += 1;
+ if (pat[i] == ')')
+ level -= 1;
+ if (level == 0)
+ break;
+ }
+ if (level == 1) {
+ memmove(pat, pat+1, strlen(pat+1)+1);
+ pat[strlen(pat)-1] = '\0';
+ }
+ }
return pat;
}
_______________________________________________
augeas-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/augeas-devel