[augeas-devel] Less-stuffed interfaces lens
David Lutterkort
lutter at redhat.com
Thu May 14 16:40:16 UTC 2009
On Mon, 2009-05-11 at 14:05 +1000, Matt Palmer wrote:
> Solved my earlier problem of not being able to write a simple
> /etc/network/interfaces file, by fixing the lens.
As you've discovered, the interfaces lens needs a bit of work.
> I also went and fixed the
> lens for several incompatibilities with the file format specification, made
> generic allow-* work, and wrote a test to make sure that the lens can
> actually write something.
Cool .. thanks for doing that.
> I've attached both the lens and it's test spec, since it's a bit much to
> paste.
A couple of questions:
> diff --git a/lenses/interfaces.aug b/lenses/interfaces.aug
> index 98389e8..c437fe2 100644
> --- a/lenses/interfaces.aug
> +++ b/lenses/interfaces.aug
> @@ -17,12 +17,12 @@ let eol = Util.eol
> (* Define separators *)
>
> (* a line can be extended across multiple lines by making the last *)
> -(* character a backslash, unless the line is a comment (see below)
> *)
> +(* character a backslash *)
> let sep_spc = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ " "
>
> (* Define fields *)
> -let sto_to_eol = store /([^\\# \t\n].*[^\\ \t\n]|[^\\ \t\n])/
> -let sto_to_spc = store /[^\\# \t\n]+/
> +let sto_to_eol = store /([^\\ \t\n].*[^\\ \t\n]|[^\\ \t\n])/ . eol
> +let sto_to_spc = store /[^\\ \t\n]+/
The '#' character was not allowed there because it starts a comment; is
that not true in all cases ?
> let mapping = [ stanza_id "mapping"
> - . (comment|empty)+
> - . stanza_option
> - . (stanza_option|comment|empty)* ]
> + . eol
> + . (stanza_option|comment|empty)+ ]
Doesn't this disallow 'mapping # my favorite mapping\n...' ? I am far
from an expert on interfaces syntax, but isn't that a legal line ?
> (************************************************************************
> * IFACE
> @@ -76,8 +77,8 @@ let mapping = [ stanza_id "mapping"
> let iface = [ stanza_id "iface"
> . stanza_param "family"
> . stanza_param "method"
> - . (comment|empty)+
> - . ( stanza_option . (stanza_option|comment|empty)* )? ]
> + . eol
> + . (stanza_option|comment|empty)* ]
This seems to disallow end-of-line comments here, too.
> diff --git a/lenses/tests/test_interfaces.aug
> b/lenses/tests/test_interfaces.aug
> index 62bbd20..9495b4a 100644
> --- a/lenses/tests/test_interfaces.aug
> +++ b/lenses/tests/test_interfaces.aug
> @@ -4,13 +4,13 @@ module Test_interfaces =
> # and how to activate them. For more information, see interfaces(5).
> # The loopback network interface
>
> -auto lo eth0 # Take me to the net
> +auto lo eth0 #foo
I am now getting very confused with what are comments in the interfaces
file vs. valid entries ... /me goes to read the man page.
David
More information about the augeas-devel
mailing list