[augeas-devel] Augeas config help

Adam Stokes ajs at redhat.com
Wed Jan 6 18:40:38 UTC 2010


> 
> You'll therefore need to make sure that comment does not match
> commented-out settings by changing it to something (untested) like
> 
>         let comment     = 
>           let settings = /MOUNTD_PORT|LOCKD_TCPPORT|.../ in
>           let line_re = /([^ \t\n][^\n]*)?/ - (settings . /[ \t]*=[
> \t]*.*/) in
>           [ label "#comment" . del /#[ \t]*/ "# " .  store line_re .
> del /\n/ "\n" ]
> 
> The important bit is the line_re which will match anything on a
> comment

I've altered the lenses, however, when running through augtool all i see is :

#comment[30] = Port rpc.mountd should listen on.
#comment[31] = MOUNTD_PORT=892
#comment[32] = Optional arguments passed to rpc.statd. See rpc.statd(8)
#comment[33] = STATDARG=""
#comment[34] = Port rpc.statd should listen on.
#comment[35] = STATD_PORT=662

The settings within the comment are not matched and the node after the commented settings does not seem to be showing up.

I attempted to change int_entry regex to something like

   let marker = [ del /#.*/ "# " . label "commented" ] in

however, it is still causing an error of duplicate matched entries.

any thoughts?

(* /etc/sysconfig/nfs - nfs server settings *)

module NFSserver =
    autoload xfm
   
    let eol             = del /[ \t]*\n/ "\n"
    let value_sep       = del /[ \t]*=[ \t]*/  " = "
    let indent          = del /[ \t]*/ ""
    let empty           = [ label "#empty" . eol ]
    
    let comment         =
        let settings    = /RQUOTAD_PORT|LOCKD_TCPPORT|LOCKD_UDPPORT|MOUNTD_PORT|STATD_PORT/ in
        let line_re     = /([^ \t\n][^\n]*)?/ - (settings . /[ \t]*=[ \t]*.*/) in
        [ label "#comment" . del /#[ \t]*/ "#" . store line_re . del /\n/ "\n" ]

    let int_val         = store /[0-9]+/
    
    let int_entry (kw:string) = 
        let marker = [ del /#[ \t]*/ "# " . label "commented" ] in
        [ marker? . key kw . value_sep . int_val ]
    
    let mountd_entry    = int_entry "MOUNTD_PORT"
    let lockd_entry     = int_entry "LOCKD_TCPPORT"
                        | int_entry "LOCKD_UDPPORT"
    let statd_entry     = int_entry "STATD_PORT"
    let rquotad_entry   = int_entry "RQUOTAD_PORT"
    
    let entry           = mountd_entry
                        | lockd_entry
                        | statd_entry
                        | rquotad_entry
    
    let record          = indent . entry . eol
    
    let lns             = ( record | comment | empty ) *

    let filter          = incl "/etc/sysconfig/nfs"
                        . Util.stdexcl
              
    let xfm             = transform lns filter

-- 
        __          __                
.-----.|  |_.-----.|  |--.-----.-----.
|__ --||   _|  _  ||    <|  -__|__ --|
|_____||____|_____||__|__|_____|_____|
 .----------------------------------.
(   ajs at redhat.com || 919.754.4187   )
 `----------------------------------'




More information about the augeas-devel mailing list