[augeas-devel] Extra spaces in lens output

Raphaël Pinson raphink at gmail.com
Fri Mar 9 06:16:20 UTC 2012


Hi,

On Fri, Mar 9, 2012 at 4:28 AM, Joe Nall <joe at nall.com> wrote:
> I've written a short lens for /etc/selinux/config:
>
> module SelinuxConfig =
>  autoload xfm
>
> let equals = del /[ \t]*=[ \t]*/ "="
>
> let state = Build.key_value_line "SELINUX" equals (store /(enforcing|permissive|disabled)/)
> let type  = Build.key_value_line "SELINUXTYPE" equals (store Rx.word)
>
> let lns = (Util.empty|Util.comment|state|type)*
> let filter = incl "/etc/selinux/config"
> let xfm = transform lns filter


A few comments first:
 * It is strongly recommended to write a unit test file (see the
tests/ directory under /usr/share/augeas/lenses/dist) to avoid
regressions in your lens ;
 * You coud now use Sep.space_equal to declare equals.


>
> When I set SELINUX to enforcing in augtool
> augtool> set /files/etc/selinux/config/SELINUX enforcing
>
> I get this
> SELINUX = enforcing
>       ^ ^         ^ extra spaces
> when I would prefer
> SELINUX=enforcing
>
> Is there a way to control when spaces are emitted?


My best bet here is that there is already a SELINUX entry in your
file, and you're merely modifying it, not creating it. When Augeas
modifies existing entries, it keeps the existing syntax (spaces,
indentations, etc.) the way it was. If you were to create a new
SELINUX entry, then Augeas would use the default value for equals,
which doesn't include spaces.


Raphaël




More information about the augeas-devel mailing list