[augeas-devel] Comments after lines

Jonas Eriksson jonas.j.eriksson at ericsson.com
Thu May 7 07:46:05 UTC 2009


Hello

I have been having some trouble with comments when parsing
modprobe.d-files. To exemplify, ordinary comments work as
intended, but end-of-line-comments breaks the lens, so to speak:
===== modprobe.d/blacklist:
# this works fine
blacklist brokenmodule # this does not work
=====

I propose that either the definition of eol in util.aug is
changed thusly:
=====
diff --git a/lenses/util.aug b/lenses/util.aug
index 0dced14..ee2845c 100644
--- a/lenses/util.aug
+++ b/lenses/util.aug
@@ -51,7 +51,7 @@ Variable: del_opt_ws
 Variable: eol
   Delete end of line, including optional trailing whitespace
 *)
-  let eol = del /[ \t]*\n/ "\n"
+  let eol = del /[ \t]*(#[^\n]*\n|\n)/ "\n"
 
 (*
 Variable: indent
=====

..or that a ceol is defined as the redefined eol, and that this
is used instead of eol in modprobe.aug and shellvars.aug (it is
probably fitting for more .aug-files, such as hosts, grub, cron,
exports, fstab, interfaces, etc. Someone who is more certain at
this will have to acknowledge):
=====
diff --git a/lenses/modprobe.aug b/lenses/modprobe.aug
index d61b7a0..5fb3de6 100644
--- a/lenses/modprobe.aug
+++ b/lenses/modprobe.aug
@@ -7,7 +7,7 @@ autoload xfm
 
 let comment = Util.comment
 let empty = Util.empty
-let eol = Util.eol
+let eol = Util.ceol
 
 (* modprobe.conf allows continuing a line by ending it with backslash +
    newline; the backslash + newline token is suppressed We handle an
diff --git a/lenses/shellvars.aug b/lenses/shellvars.aug
index d3e4bbe..663e581 100644
--- a/lenses/shellvars.aug
+++ b/lenses/shellvars.aug
@@ -3,7 +3,7 @@
 module Shellvars =
   autoload xfm
 
-  let eol = Util.eol
+  let eol = Util.ceol
 
   let key_re = /[A-Za-z0-9_]+(\[[0-9]+\])?/ - "unset" - "export"
   let eq = Util.del_str "="
diff --git a/lenses/util.aug b/lenses/util.aug
index 0dced14..20f4919 100644
--- a/lenses/util.aug
+++ b/lenses/util.aug
@@ -54,6 +54,12 @@ Variable: eol
   let eol = del /[ \t]*\n/ "\n"
 
 (*
+Variable: ceol
+  Delete end of line, including optional trailing whitespace and comment
+*)
+  let ceol = del /[ \t]*(#[^\n]*\n|\n)/ "\n"
+
+(*
 Variable: indent
   Delete indentation, including leading whitespace
 *)
=====

Best regards,
Jonas Eriksson

--
Jonas Eriksson
Consultant at AS/EAB/FLJ/IL
Phone: +46 8 58086281
Combitech AB
Älvsjö, Sweden




More information about the augeas-devel mailing list