2011/10/10 Raphaël Pinson <raph...@gmail.com> > This patch actually breaks a lot of things. Quite a few unit tests don't > pass after it is applied. > > It might be OK to remove the backslashes inside character sets, but not > outside I think. > >
Got it, you have to rebuild Augeas with patch 5 applied. Sorry for my misunderstanding. I will let David review patches 5 and 6. Raphaël On Sat, Oct 8, 2011 at 1:08 PM, Michael Chapman <m...@very.puzzling.org>wrote: > This patch removes \\ from the list of escapes used when handling > regexps. > > The effect is that where previously we had to use: > > /\\\\./ > > to mean "backslash followed by any character", now the more logical: > > /\\./ > > must be used. > > Signed-off-by: Michael Chapman <m...@very.puzzling.org> > --- > lenses/dhcpd.aug | 2 +- > lenses/httpd.aug | 10 +++++----- > lenses/interfaces.aug | 2 +- > lenses/iptables.aug | 2 +- > lenses/modprobe.aug | 6 +++--- > lenses/shellvars.aug | 4 ++-- > lenses/shellvars_list.aug | 4 ++-- > lenses/sudoers.aug | 8 ++++---- > lenses/sysconfig.aug | 2 +- > lenses/syslog.aug | 4 ++-- > lenses/wine.aug | 10 +++++----- > src/internal.h | 2 +- > tests/modules/pass_cont_line.aug | 2 +- > 13 files changed, 29 insertions(+), 29 deletions(-) > > diff --git a/lenses/dhcpd.aug b/lenses/dhcpd.aug > index 8cbc3db..a6bff16 100644 > --- a/lenses/dhcpd.aug > +++ b/lenses/dhcpd.aug > @@ -81,7 +81,7 @@ let ip = Rx.ipv4 > > (* borrowed from sysconfig.aug *) > (* Chars allowed in a bare string *) > - let bchar = /[^ \t\n"'\\{}#,()]|\\\\./ > + let bchar = /[^ \t\n"'\\{}#,()]|\\./ > let qchar = /["']/ (* " *) > > (* We split the handling of right hand sides into a few cases: > diff --git a/lenses/httpd.aug b/lenses/httpd.aug > index 958324f..3389798 100644 > --- a/lenses/httpd.aug > +++ b/lenses/httpd.aug > @@ -45,7 +45,7 @@ autoload xfm > let dels (s:string) = del s s > > (* deal with continuation lines *) > -let sep_spc = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ " " > +let sep_spc = del /([ \t]+|[ \t]*\\\n[ \t]*)/ " " > > let sep_osp = Sep.opt_space > let sep_eq = del /[ \t]*=[ \t]*/ "=" > @@ -59,10 +59,10 @@ let empty = Util.empty > let indent = Util.indent > > (* borrowed from shellvars.aug *) > -let char_arg_dir = /[^ '"\t\n]|\\\\"|\\\\'/ > -let char_arg_sec = /[^ '"\t\n>]|\\\\"|\\\\'/ > -let dquot = /"([^"\\\n]|\\\\.)*"/ > -let squot = /'([^'\\\n]|\\\\.)*'/ > +let char_arg_dir = /[^ '"\t\n]|\\"|\\'/ > +let char_arg_sec = /[^ '"\t\n>]|\\"|\\'/ > +let dquot = /"([^"\\\n]|\\.)*"/ > +let squot = /'([^'\\\n]|\\.)*'/ > > (****************************************************************** > * Attributes > diff --git a/lenses/interfaces.aug b/lenses/interfaces.aug > index 4dc280f..66c2da0 100644 > --- a/lenses/interfaces.aug > +++ b/lenses/interfaces.aug > @@ -18,7 +18,7 @@ let eol = Util.eol > > (* a line can be extended across multiple lines by making the last *) > (* character a backslash *) > -let sep_spc = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ " " > +let sep_spc = del /([ \t]+|[ \t]*\\\n[ \t]*)/ " " > > (* Define fields *) > let sto_to_eol = store /([^\\ \t\n].*[^\\ \t\n]|[^\\ \t\n])/ . eol > diff --git a/lenses/iptables.aug b/lenses/iptables.aug > index 28e6bfe..f794091 100644 > --- a/lenses/iptables.aug > +++ b/lenses/iptables.aug > @@ -51,7 +51,7 @@ let tcp_flags = > let ipt_match = > let any_key = /[a-zA-Z-][a-zA-Z-]+/ - > > /protocol|source|destination|jump|goto|in-interface|out-interface|fragment|match|tcp-flags/ > in > - let any_val = /([^" \t\n!-][^ \t\n]*)|"([^"\\\n]|\\\\.)*"/ in > + let any_val = /([^" \t\n!-][^ \t\n]*)|"([^"\\\n]|\\.)*"/ in > let any_param = > [ [ spc . dels "!" . label "not" ]? . > spc . dels "--" . key any_key . (spc . store any_val)? ] in > diff --git a/lenses/modprobe.aug b/lenses/modprobe.aug > index bdecafb..5f5be89 100644 > --- a/lenses/modprobe.aug > +++ b/lenses/modprobe.aug > @@ -16,9 +16,9 @@ let eol = Util.eol | Util.comment > *) > > (* A separator is either whitespace or \ followed by newline *) > -let sep_ch = /[ \t]|\\\\\n/ > +let sep_ch = /[ \t]|\\\n/ > (* Anything that's not a separator is part of a token *) > -let tok_ch = /[^ \t\n#\\]|\\\\[^ \t\n]/ > +let tok_ch = /[^ \t\n#\\]|\\[^ \t\n]/ > > let spc = del sep_ch+ " " > let token = store tok_ch+ > @@ -26,7 +26,7 @@ let indent = Util.del_opt_ws "" > > let cmd (n:regexp) = key n . spc > let arg (n:string) = [ label n . token ] > -let token_to_eol = store (tok_ch . /([^#\n\\]|\\\\\n)*/ . tok_ch | tok_ch) > +let token_to_eol = store (tok_ch . /([^#\n\\]|\\\n)*/ . tok_ch | tok_ch) > > let options = > let opt_ch = /[A-Za-z0-9_]/ in > diff --git a/lenses/shellvars.aug b/lenses/shellvars.aug > index d419a4b..9c9173d 100644 > --- a/lenses/shellvars.aug > +++ b/lenses/shellvars.aug > @@ -13,8 +13,8 @@ module Shellvars = > let xchgs = Build.xchgs > let semicol = del /;?/ "" > > - let char = /[^;#() '"\t\n]|\\\\"/ > - let dquot = /"([^"\\\n]|\\\\.)*"/ (* " Emacs, relax > *) > + let char = /[^;#() '"\t\n]|\\"/ > + let dquot = /"([^"\\\n]|\\.)*"/ (* " Emacs, relax *) > let squot = /'[^'\n]*'/ > (* For some reason, `` conflicts with comment_or_eol *) > let bquot = /`[^#`\n]*`/ > diff --git a/lenses/shellvars_list.aug b/lenses/shellvars_list.aug > index 7f5fa2c..f585853 100644 > --- a/lenses/shellvars_list.aug > +++ b/lenses/shellvars_list.aug > @@ -13,8 +13,8 @@ module Shellvars_list = > let indent = Util.indent > > let sqword = /[^ '\t\n]+/ > - let dqword = /([^ "\\\t\n]|\\\\.)+/ > - let uqword = /([^ "'\\\t\n]|\\\\.)+/ > + let dqword = /([^ "\\\t\n]|\\.)+/ > + let uqword = /([^ "'\\\t\n]|\\.)+/ > > (* lists values of the form ... val1 val2 val3 ... *) > let list(word:regexp) = > diff --git a/lenses/sudoers.aug b/lenses/sudoers.aug > index 376e590..dea0b3e 100644 > --- a/lenses/sudoers.aug > +++ b/lenses/sudoers.aug > @@ -61,10 +61,10 @@ let indent = del /[ \t]*/ "" > let sep_spc = del /[ \t]+/ " " > > (* Variable: sep_cont *) > -let sep_cont = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ " " > +let sep_cont = del /([ \t]+|[ \t]*\\\n[ \t]*)/ " " > > (* Variable: sep_cont_opt *) > -let sep_cont_opt = del /([ \t]*|[ \t]*\\\\\n[ \t]*)/ " " > +let sep_cont_opt = del /([ \t]*|[ \t]*\\\n[ \t]*)/ " " > > (* Variable: sep_com *) > let sep_com = sep_cont_opt . Util.del_str "," . sep_cont_opt > @@ -83,7 +83,7 @@ let sep_dquote = Util.del_str "\"" > > (* Variable: sto_to_com_cmnd > sto_to_com_cmnd does not begin or end with a space *) > -let sto_to_com_cmnd = store /([^,=:#() > \t\n\\]([^,=:#()\n\\]|\\\\[=:,\\])*[^,=:#() \t\n\\])|[^,=:#() \t\n\\]/ > +let sto_to_com_cmnd = store /([^,=:#() > \t\n\\]([^,=:#()\n\\]|\\[=:,\\])*[^,=:#() \t\n\\])|[^,=:#() \t\n\\]/ > > (* Variable: sto_to_com > > @@ -96,7 +96,7 @@ let sto_to_com_host = store /[^,=:#() \t\n\\]+/ > > (* Variable: sto_to_com_user > Escaped spaces are allowed *) > -let sto_to_com_user = store ( /([^,=:#() \t\n]([^,=:#() \t\n]|(\\\\[ > \t]))*[^,=:#() \t\n])|[^,=:#() \t\n]/ > +let sto_to_com_user = store ( /([^,=:#() \t\n]([^,=:#() \t\n]|(\\[ > \t]))*[^,=:#() \t\n])|[^,=:#() \t\n]/ > - /(User|Runas|Host|Cmnd)_Alias|Defaults.*/ ) > > (* Variable: sto_to_com_col *) > diff --git a/lenses/sysconfig.aug b/lenses/sysconfig.aug > index 2c7efaa..b1b7517 100644 > --- a/lenses/sysconfig.aug > +++ b/lenses/sysconfig.aug > @@ -16,7 +16,7 @@ module Sysconfig = > let nothing = del /(""|'')?/ "" . value "" > > (* Chars allowed in a bare string *) > - let bchar = /[^ \t\n"'\\]|\\\\./ > + let bchar = /[^ \t\n"'\\]|\\./ > let qchar = /["']/ (* " *) > > (* We split the handling of right hand sides into a few cases: > diff --git a/lenses/syslog.aug b/lenses/syslog.aug > index cda17bb..fe5df3e 100644 > --- a/lenses/syslog.aug > +++ b/lenses/syslog.aug > @@ -33,10 +33,10 @@ module Syslog = > (* Variable: eol *) > let eol = Util.eol > (* Variable: sep_tab *) > - let sep_tab = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ "\t" > + let sep_tab = del /([ \t]+|[ \t]*\\\n[ \t]*)/ "\t" > > (* Variable: sep_tab_opt *) > - let sep_tab_opt = del /([ \t]*|[ \t]*\\\\\n[ \t]*)/ "" > + let sep_tab_opt = del /([ \t]*|[ \t]*\\\n[ \t]*)/ "" > > (* View: comment > Map comments into "#comment" nodes > diff --git a/lenses/wine.aug b/lenses/wine.aug > index bd43a17..21a68f8 100644 > --- a/lenses/wine.aug > +++ b/lenses/wine.aug > @@ -21,13 +21,13 @@ let header = > [ label "version" . store /[0-9.]+/ ] . eol > > let qstr = > - let re = /([^"\n]|\\\\.)*/ - /@|"@"/ in (* " Relax, emacs *) > + let re = /([^"\n]|\\.)*/ - /@|"@"/ in (* " Relax, emacs *) > dels "\"" . store re . dels "\"" > > let typed_val = > - ([ label "type" . store /dword|hex(\\([0-9]+\\))?/ ] . dels ":" . > - [ label "value" . store /[a-zA-Z0-9,()]+(\\\\\r?\n[ > \t]*[a-zA-Z0-9,]+)*/]) > - |([ label "type" . store /str\\([0-9]+\\)/ ] . dels ":" . > + ([ label "type" . store /dword|hex(\([0-9]+\))?/ ] . dels ":" . > + [ label "value" . store /[a-zA-Z0-9,()]+(\\\r?\n[ > \t]*[a-zA-Z0-9,]+)*/]) > + |([ label "type" . store /str\([0-9]+\)/ ] . dels ":" . > dels "\"" . [ label "value" . store /[^"\n]*/ ] . dels "\"") (* " > Relax, emacs *) > > let entry = > @@ -39,7 +39,7 @@ let entry = > > let section = > let ts = [ label "timestamp" . store Rx.integer ] in > - [ label "section" . del /[ \t]*\\[/ "[" . > + [ label "section" . del /[ \t]*\[/ "[" . > store /[^]\n]+/ . dels "]" . (del_ws . ts)? . eol . > (entry|empty|comment)* ] > > diff --git a/src/internal.h b/src/internal.h > index 8c58d37..9cc38ac 100644 > --- a/src/internal.h > +++ b/src/internal.h > @@ -260,7 +260,7 @@ char *unescape(const char *s, int len, const char > *extra); > > /* Extra characters to be escaped in strings and regexps respectively */ > #define STR_ESCAPES "\"\\" > -#define RX_ESCAPES "/\\" > +#define RX_ESCAPES "/" > > /* Function: print_chars */ > int print_chars(FILE *out, const char *text, int cnt); > diff --git a/tests/modules/pass_cont_line.aug > b/tests/modules/pass_cont_line.aug > index a914cc9..9633c09 100644 > --- a/tests/modules/pass_cont_line.aug > +++ b/tests/modules/pass_cont_line.aug > @@ -5,7 +5,7 @@ module Pass_cont_line = > > let list_elt = [ label "element" . store /[a-z]+/ ] > > -let ws_cont = /([ \t]+|[ \t]*\\\\\n[ \t]*)/ > +let ws_cont = /([ \t]+|[ \t]*\\\n[ \t]*)/ > > let sep = del ws_cont " " > let eol = del /[ \t]*\n/ "\n" > -- > 1.7.6.4 > > _______________________________________________ > augeas-devel mailing list > augeas-devel@redhat.com > https://www.redhat.com/mailman/listinfo/augeas-devel >
_______________________________________________ augeas-devel mailing list augeas-devel@redhat.com https://www.redhat.com/mailman/listinfo/augeas-devel