Changelog for 1.4.0 version

1.4.0 - 2015-05-22
  - General changes/additions
    * add a aug_escape_name call to sanitize strings for use in path
      expressions. There are a few characters that are special in path
      expressions. This function makes it possible to have them all escaped
      so that the resulting string can be used in a path expression and is
      guaranteed to only match a node with exactly that name
    * paths generated by Augeas are now properly escaped so that, e.g., the
      strings returned by aug_match can always be fed to aug_get, even if
      they contain special characters
    * augtool: correctly record history when reading commands from a file
      and then switching to interactive mode (Robert Drake)
    * augtool: new command 'errors' that pretty-prints /augeas//error
      messages; improve the information provided with 'short iteration'
    * fix segfault when saving to a file that was not writable (Issue #178)
    * augtool: on interrupt (Ctrl-C), cancel current line instead of
      exiting (jeremy Lin)
    * updated parser.y to work with Bison 3.0.2
    * fix put-symlink-augsave test to run on Solaris (Geoffrey Gardella,
      issue #242)
  - Lens changes/additions
    * AFS_Cellalias: new lens (Pat Riehecky)
    * Authorized_keys: allow double quotes in option values (Issue #135)
    * Chrony: fix typo in log flag 'measurements' (Pat Riehecky)
    * Clamav: new lens  (Andrew Colin Kissa)
    * Dns_Zone: New lens to parse DNS zone files (Kaarle Ritvanen)
    * Dnsmasq: Parse the structure of the 'address' and 'server' options
               (incompatible change) (Kaarle Ritvanen)
    * Erlang: parse kernel app config, handle empty lists (RHBZ#1175546)
    * Exports: support brackets in machine names (Vincent Desjardins)
    * Grub: support password stanza inside boot/title section (Issue #229)
    * Httpd: handle eol after opening tag (Issue #220); fix type checking
      issue (Issue #223)
    * Iscsid: new lens (Joey Boggs and Pat Riehecky) (Issue #174)
    * Jaas: several improvements to cover more valid syntax (Steve Shipway)
    * Known_Hosts: handle aliases for the host name
    * Krb5: support keyword krb524_server; allow realm names starting
            with lower-case characters (Jurjen Bokma)
    * Limits: allow comments at end of line (timdeluxe)
    * Logrotate: support 'dateformat' directive (Issue #217)
                 support 'maxsize' directive (RHBZ#1213292)
                 do not require a space before an opening '{' (Issue #123)
    * Mailscanner: new lens (Andrew Colin Kissa)
    * Mailscanner_Rules: new lens for MailScanner rules (Andrew Colin Kissa)
    * NagiosCfg: default to no spaces around equal (Issue #177)
    * Nginx: significantly reworked, now parses entire Nginx stock
             config successfully (Issue #179)
    * Pagekite: more fine-grained control of service_on entries; instead of
                'source' and 'destination', parse into protocol, kitename,
                backend_host, backend_port, and secret (Michael Pimmer)
                (incompatible change)
    * Passwd: support nis [+-]username syntax (Borislav Stoichkov); fix
      @nisdefault on OpenBSD (Matt Dainty)
    * Pgbouncer: new lense for the pgbouncer connection pooler (Andrew
      Colin Kissa)
    * Postfix_sasl_smtpd: new lens contributed by larsen0815 (Issue #182)
    * Postgresql: look for postgresql.conf in paths used on Red Hat based
                  distros (Haotian Liu)
    * Puppetfile: new lens to parse librarian-puppet's Puppetfile
    * Pylonspaste: new lense for Pylon's paste init configuration files
                   (Andrew Colin Kissa)
    * PythonPaste: parse "set" keyword for default overrides (RHBZ#1175545)
    * Shadow: allow NIS entries (Borislav Stoichkov)
    * Shellvars: case: support ;; on same line with multiple commands
                 (Kaarle Ritvanen); make insertion at the beginning of a
                 file that starts with blank lines work; the new lens will
                 remove blank lines from the beginning of a file as soon as
                 lines are added to or removed from it (GH issue #202);
                 handle associative arrays; add /etc/periodic.conf for
                 FreeBSD (Michael Moll)
    * Shellvars_list: support double-quoted continued lines
    * Sudoers: allow '+' in user/groupnames (Andreas Grüninger)
    * Sysctl: add /boot/loader.conf for FreeBSD (Michael Moll)
    * Sysconfig: handle leading whitespace at beginning of a line,

1.3.0 - 2014-11-07
  - General changes/additions
    * Add missing cp entry in manpage (GH issue #78)
    * Add seq to vim syntax highlight (Robert Drake)
    * Update augtool.1 man page with new commands and --span, RHBZ#1100077
    * augtool autocomplete includes command aliases, RHBZ#1100184
    * Remove unused "filename" argument from dump-xml command, RHBZ#1100106
    * aug_save returns non-zero result when unable to delete files,
  - Lens changes/additions
    * Aliases: permit missing whitespace between colon and recipients
    * AptPreferences: Support spaces in origin fields
    * Cgconfig: handle additional valid controllers (Andy Grimm)
    * Chrony: New lens to parse /etc/chrony.conf (Pat Riehecky)
    * CPanel: New lens to parse cpanel.config files
    * Desktop: Allow @ in keys (GH issue #92)
    * Device_map: Parse all device.map files under /boot (Mike Latimer)
    * Dhclient: Add support for option modifiers (Robert Drake,
                GH issue #95)
                Parse hash statements with dhcp-eval strings
    * Dhcpd: stmt_string quoted blocks no longer store quote marks
             (incompatible change),
             many changes to support more record types (Robert Drake)
    * Group: NIS support (KaMichael)
    * Grub: handle "foreground" option, RHBZ#1059383 (Miguel Armas)
    * Gshadow: New lens (Lorenzo Catucci)
    * Httpd: Allow eol comments after section tags
             Allow continued lines inside quoted value (GH issue #104)
             Allow comparison operators in tags (GH issue #154)
    * IPRoute2: handle "/" in protocol name, swap ID and name fields
                (incompatible change), RHBZ#1063968,
                handle hex IDs and hyphens, as present in
                rt_dsfield, RHBZ#1063961
    * Iptables: parse /etc/sysconfig/iptables.save, RHBZ#1144651
    * Kdump: parse new options, permit EOL comments, refactor, RHBZ#1139298
    * Keepalived: Add more virtual/real server settings and checks, RHBZ#1064388
    * Known_Hosts: New lens for SSH known hosts files
    * Krb5: permit braces in values when not in sub-section, RHBZ#1066419
    * Ldso: handle "hwcap" lines (GH issue #100)
    * Lvm: support negative numbers, parse /etc/lvm/lvm.conf (Pino Toscano)
    * Multipath: add support for rr_min_io_rq (Joel Loudermilk)
    * NagiosConfig and NagiosObjects: Fix documentation (Simon Sehier)
    * NetworkManager: Use the Quote module, support # in values (no eol comments)
    * OpenVPN: Add support for fragment, mssfix, and script-security
               (Frank Grötzner)
    * Pagekite: New lens (Michael Pimmer)
    * Pam: Add partial support for arguments enclosed in [] (Vincent Brillault)
    * Passwd: Refactor lens (Lorenzo Catucci)
    * Redis: Allow empty quoted values (GH issue #115)
    * Rmt: New lens to parse /etc/default/rmt, RHBZ#1100549
    * Rsyslog: support complex $template lines, property filters and file
               actions with templates, RHBZ#1083016
    * Services: permit colons in service name, RHBZ#1121263
    * Shadow: New lens (Lorenzo Catucci)
    * Shellvars: Handle case statements with same-line ';;', RHBZ#1033799
                 Allow any kind of quoted values in block
                 conditions (GH issue #118)
                 Support $(( .. )) arithmetic expansion in variable
                 assignment, RHBZ#1100550
    * Simplevars: Support flags and empty values
    * Sshd: Allow all types of entries in Match groups (GH issue #75)
    * Sssd: Allow ; for comments
    * Squid: Support configuration files for squid 3 (Mykola Nikishov)
    * Sudoers: Allow wuoted string in default str/bool params (Nick Piacentine)
    * Syslog: Support "# !" style comments (Robert Drake, GH issue #65)
              Permit IPv6 loghost addresses, RHBZ#1129388
    * Systemd: Allow quoted Environment key=value pairs, RHBZ#1100547
               Parse /etc/sysconfig/*.systemd, RHBZ#1083022
               Parse semicolons inside entry values, RHBZ#1139498
    * Tuned: New lens for /etc/tuned/tuned-main.conf (Pat Riehecky)
    * UpdateDB: New lens to parse /etc/updatedb.conf
                (incompatible change as this file used to be processed with
    * Xml: Allow backslash in #attribute values (GH issue #145)
           Parse CDATA elements (GH issue #80)
    * Xymon_Alerting: refactor lens (GH issue #89)

1.2.0 - 2014-01-27
  - API changes
    * Add aug_cp and the cp and copy commands
    * aug_to_xml now includes span information in the XML dump
  - General changes/additions
    * Fix documentation link in c_api NaturalDocs menu
    * Fix NaturalDocs documentation for various lenses
    * src/transform.c (filter_matches): wrap fnmatch to ensure that an incl
      pattern containing "//" matches file paths, RHBZ#1031084
    * Correct locations table for transform_save() (Tomas Hoger)
    * Corrections for CVE-2012-0786 tests (Tomas Hoger)
    * Fix umask handling when creating new files, RHBZ#1034261
  - Lens changes/additions
    * Access: support DOMAIN\user syntax for users and groups, bug #353
    * Authorized_Keys: Allow 'ssh-ed25519' as a valid authorized_key
      type (Jasper Lievisse Adriaanse)
    * Automounter: Handle hostnames with dashes in them, GH issue #27
    * Build: Add combinatorics group
    * Cyrus_Imapd: Create new entries without space before separator,
      RHBZ#1014974 (Dietmar Kling)
    * Desktop: Support square brackets in keys
    * Dhclient: Add dhclient.conf path for Debian/Ubuntu (Esteve Fernandez)
    * Dhcpd: Support conditionals, GH issue #34
             Support a wider variety of allow/deny statement, including
             booting and bootp (Yanis Guenane)
             Support a wider variety of DHCP allow/deny/ignore statements
             (Yanis Guenane)
    * Dovecot: Various enhancements and bug fixes (Michael Haslgrübler):
               add mailbox to block_names, fix for block_args in quotes,
               fix for block's brackets upon write,
               fixes broken tests for mailbox,
               fixes indention,
               test case for block_args with ""
               fixes broken indention
               Use Quote module
    * Exports: Permit colons for IPv6 client addresses, bug #366
    * Grub: Support the 'setkey' and 'lock' directives
            NFC fix whitespace errors
            Handle makeactive menu command, bug #340
            Add 'verbose' option, GH issue #73
    * Interfaces: Add in support for the source stanza in
                  /etc/network/interfaces files
                  Map bond-slaves and bridge-ports to arrays (incompatible
                  change) (Kaarle Ritvanen)
                  Add /etc/network/interfaces.d/* support
                  Allow numeric characters in stanza options (Pascal Lalonde)
    * Koji: New lens to parse Koji configs (Pat Riehecky)
    * MongoDBServer: Accept quoted values (Tomas Klouda)
    * NagiosCfg: Do not try to parse /etc/nagios/nrpe.cfg anymore, GH issue #43
                 /etc/nagios/nrpe.cfg is parsed by Nrpe (Yanis Guenane)
    * Nagiosobjects: Add support for optional spaces and indents
                     and whole-line comments (Sean Millichamp)
    * OpenVPN: Support daemon, client-config-dir, route, and management
               directives (Freakin https://github.com/Freakin)
    * PHP: allow php-fpm syntax in keys, GH issue #35
    * Postfix_Main: Handle stray whitespace at end of multiline lines, bug #348
    * Postfix_virtual: allow '+' and '=' in email addresses (Tom Hendrikx)
    * Properties: support multiline starting with an empty string, GH issue #19
    * Samba: Permit asterisk in key name, bug #354
    * Shellvars: Read /etc/firewalld/firewalld.conf, bug #363
                 Support all types of quoted strings in arrays, bug #357
                 Exclude /etc/sysconfig/ip*tables.save files
    * Shellvars, Sysconfig: map "bare" export and unset lines to seq numbered
      nodes to handle multiple variables (incompatible change), RHBZ#1033795
    * Shellvars_list: Handle backtick variable assignments, bug #368
                      Allow end-of-line comments, bug #342
    * Simplevars: Add /etc/selinux/semanage.conf
    * Slapd: use smart quotes for database entries; rename by/what to by/access;
      allow access to be absent as per official docs (incompatible change)
    * Sshd: Indent Match entries by 2 spaces by default
            Support Ciphers and KexAlgorithms groups, GH issue #69
            Let all special keys be case-insensitive
    * Sudoers: Permit underscores in group names, bug #370 (Matteo Cerutti)
               Allow uppercase characters in user names, bug #376
    * Sysconfig: Permit empty comments after comment lines, RHBZ#1043636
    * Sysconfig_Route: New lens for RedHat's route configs
    * Syslog: Accept UDP(@) and TCP(@@) protocol, bug #364 (Yanis Guenane)
    * Xymon_Alerting: New lens for Xymon alerting files (François Maillard)
    * Yum: Add yum-cron*.conf files (Pat Riehecky)
           Include only *.repo files from yum.repos.d (Andrew N Golovkov)
           Permit spaces after equals sign in list options, GH issue #45
           Split excludes as lists, bug #275

1.1.0 - 2013-06-14
  - General changes/additions
    * Handle files with special characters in their name, bug #343
    * Fix type error in composition ('f; g') of functions, bug #328
    * Improve detection of version script; make build work on Illumos with
      GBU ld (Igor Pashev)
    * augparse: add --trace option to print filenames of all modules being
    * Various lens documentation improvements (Jasper Lievisse Adriaanse)
  - Lens changes/additions
    * ActiveMQ_*: new lens for ActiveMQ/JBoss A-MQ (Brian Harrington)
    * AptCacherNGSecurity: new lens for /etc/apt-cacher-ng/security.conf
      (Erik Anderson)
    * Automaster: accept spaces between options
    * BBHosts: support more flags and downtime feature (Mathieu Alorent)
    * Bootconf: new lens for OpenBSD's /etc/boot.conf (Jasper Lievisse Adriaanse)
    * Desktop: Support dos eol
    * Dhclient: read /etc/dhclient.conf used in OpenBSD (Jasper Lievisse Adriaanse)
    * Dovecot: New lens for dovecot configurations (Serge Smetana)
    * Fai_Diskconfig: Optimize some regexps
    * Fonts: exclude all README files (Jasper Lievisse Adriaanse)
    * Inetd: support IPv6 addresses, bug #320
    * IniFile: Add lns_loose and lns_loose_multiline definitions
               Support smart quotes
      Warning: Smart quotes support means users should not add
               escaped double quotes themselves. Tests need to be fixed
               Use standard Util.comment_generic and Util.empty_generic
      Warning: Existing lens tests must be adapted to use standard
               comments and empty lines
               Allow spaces in entry_multiline* values
               Add entry_generic and entry_multiline_generic
               Add empty_generic and empty_noindent
               Let multiline values begin with a single newline
               Support dos eol
      Warning: Support for dos eol means existing lenses usually
               need to be adapted to exclude \r as well as \n.
    * IPRoute2: Support for iproute2 files (Davide Guerri)
    * JaaS: lens for the Java Authentication and Authorization Service
            (Simon Vocella)
    * JettyRealm: new lens for jetty-realm.properties (Brian Harrington)
    * JMXAccess, JMXPassword: new lenses for ActiveMQ's JMX files
      (Brian Harrington)
    * Krb5: Use standard comments and empty lines
            Support dos eol
            Improve performance
            Accept pkinit_anchors (Andrew Anderson)
    * Lightdm: Use standard comments and empty lines
    * LVM: New lens for LVM metadata (Gabriel)
    * Mdadm_conf: optimize some regexps
    * MongoDBServer: new lens (Brian Harrington)
    * Monit: also load /etc/monitrc (Jasper Lievisse Adriaanse)
    * MySQL: Use standard comments and empty lines
             Support dos eol
    * NagiosCfg: handle Icinga and resources.cfg (Jasper Lievisse Adriaanse)
    * Nrpe: accept any config option rather than predefined list (Gonzalo
            Servat); optimize some regexps
    * Ntpd: new lense for OpenNTPD config (Jasper Lievisse Adriaanse)
    * Odbc: Use standard comments and empty lines
    * Openshift_*: new lenses for Openshift support (Brian Harrington)
    * Quote: allow multiple spaces in quote_spaces; improve docs
    * Passwd: allow period in user names in spec, bug #337; allow overrides
              in nisentry
    * PHP: Support smart quotes
           Use standard comments and empty lines
           Load /etc/php*/fpm/pool.d/*.conf (Enrico Stahn)
    * Postfix_master: allow [] in words, bug #345
    * Resolv: support 'lookup' and 'family' key words, bug #320
              (Jasper Lievisse Adriaanse))
    * Rsyslog: support :omusrmsg: list of users in actions
    * RX: add CR to RX.space_in
    * Samba: Use standard comments and empty lines
             Support dos eol
    * Schroot: Support smart quotes
    * Services: support port ranges (Branan Purvine-Riley)
    * Shellvars: optimize some regexps; reinstate /etc/sysconfig/network,
      fixes bug #330, RHBZ#904222, RHBZ#920609; parse /etc/rc.conf.local
      from OpenBSD
    * Sip_Conf: New lens for sip.conf configurations (Rob Tucker)
    * Splunk: new lens (Tim Brigham)
    * Subversion: Support smart quotes
                  Use standard comments and empty lines
                  Use IniFile.entry_multiline_generic
                  Use IniFile.empty_noindent
                  Support dos eol
    * Sudoers: allow user aliases in specs
    * Sysctl: exclude README file
    * Systemd: Support smart quotes; allow backslashes in values
    * Xinetd: handle missing values in list, bug #307
    * Xorg: allow 'Screen' in Device section, bug #344
    * Yum: Support dos eol, optimize some regexps

1.0.0 - 2012-12-21
  - General changes/additions
    * fix missing requirement on libxml2 in pkg-config
    * do not replace pathin with '/*' unless the length is 0
      or pathin is '/', bug #239
    * create context path if it doesn't exist
    * add missing argument to escape() to fix build on solaris, bug #242
    * fix fatest linking with libfa
    * don't use variables uninitialized upon error (Jim Meyering)
    * bootstrap: add strchrnul gnulib module (for Solaris)
    * remove Linux-isms so tests can run on Solaris
    * re-open rl_outstream/stdout only when stdout isn't a tty
      (fixes -e -i); use /dev/tty instead of /dev/stdout when re-opening
      to prevent permission errors, bug #241
    * take root into account for excludes, bug #252
    * fix different errors for parse and put failure
    * fix various memory leaks
    * add leak test
    * allocate exception instead of static const value
    * improve aug_srun quoting to permit concatenation and better detect
      bad quoting
    * rename echo to echo_commands to fix differing types reported
      with Solaris linker (Tim Mooney), bug #262
    * fix excl filters that only specify a filename or wildcard
    * make sure reloading discards changes after save with mode 'newfile'
    * remove loop that added a second iteration around children of /files,
      causing multiple saves in newfile and noop modes when editing under
      /files/boot, bug #264
    * support \t and \n in aug_srun tokens, bug #265
    * compile_exp: don't return an uninitialized pointer upon failure
      (Jim Meyering)
    * include 'extern "C"' wrapper for C++, bug #272 (Igor Pashev)
    * src/try: don't overwrite gdbcmds.txt if it exists
    * fix behavior of set with empty strings
    * allow running individual tests with test-run
    * test-augtool.sh: escape all possible regular expressions before
      they are sent to sed (Micah Anderson)
    * add new print_tree primitive
    * fix bad memory access in regexp.c
    * case-insensitive regexps: fix a problem with number of groups
    * prevent symlink attacks via .augnew during saving,
      RedHat bug #772257, CVE-2012-0786
    * prevent cross-mountpoint attacks via .augsave during saving,
      RedHat bug #772261, CVE-2012-0787
    * add bundled (gnulib) provides in augeas.spec.in, RedHat bug #821745
    * make Travis CI builds
    * src/transform.c (xread_file): catch failed fopen, e.g. EACCES
    * src/augrun.c (cmd_retrieve_help): tidy line wrapping
    * make get_square case insensitive on the ending key
    * escape double quotes when dumping regexp
    * use constants for "lens", "incl" and "excl"
    * src/transform.c (filter_generate): remove duplicate variable assignment
    * src/jmt.c (parse_add_item): ensure return is defined on goto error
    * src/transform.c (transform_save): chmod after creating new files to
      permissions implied by the umask
    * ignore eclipse settings directory
    * fix memory leak in dbg_visit
    * build AST while visiting the parse v2
    * rewrite square lens to be more generic, allowing e.g. square quoting
    * tests/modules/fail_shadow_union.aug: fix unintended test failure
    * src/syntax.c (compile_test): print which test failed when missing
    * libfa (fa_enumerate): new function
    * use precise ctype of a square lens if it is indeed regula
    * square: properly handle first lens matching empty string
    * square lens: correctly process skeletons during put
    * src/pathx.c: disallow ',' in names in path expressions
    * src/pathx.c: match functions by name and arity
    * src/pathx.c: pass the number of actual arguments to the func
    * correctly parse escaped string literals in vim syntax file (Domen Ko¿ar)
  - API changes/additions
    * add aug_text_store to write string to tree
    * add aug_text_retrieve to turn tree into text
    * add aug_rename to rename node labels without moving them in the tree
    * add aug_transform to allow specifying transforms
    * add aug_label to retrieve the label from a path
  - Augtool/aug_srun changes/additions
    * add "touch" command to create node if it doesn't exist, bug #276
    * make <VALUE> argument to "set" and "setm" optional, bug #276
    * add "text_store" and "text_retrieve" commands
    * add "rename" command
    * add "transform" command and "-t|--transform" option
    * add "label" command
    * arrange commands in groups for better help
    * man/augtool.pod: update mentions of default load path
    * fix exit code when using autosave
    * output errors when sending a command as argument
    * honor --echo when sending a command as argument
  - XPath changes/additions
    * add support for an 'i' flag in regexp builtin function
  - Lens changes/additions
    * Aliases: commands can be fully enclosed in quotes, bug #229
    * Anacron: new lens for /etc/anacrontab
    * Apt_Update_Manager: new lens for /etc/update-manager
    * AptPreferences: #comments are accepted within entries
    * AuthorizedKeys: new lens for SSH's authorized_keys
    * AutoMaster: new lens for auto.master files
    * AutoMounter: new lens for automounter maps (/etc/auto.*)
    * Avahi: new lens for /etc/avahi/avahi-daemon.conf (Athir Nuaimi)
    * Build: add blocks
    * Cachefilesd: new lens for /etc/cachefilesd.conf (Pat Riehecky)
    * Carbon: new lens for /etc/carbon files (Marc Fournier)
    * Cgconfig: add space between group and id (Filip Andres)
    * Channels: new lens for channels.conf
    * Collectd: new lens for /etc/collectd.conf
    * Cron: exclude cron allow/deny files;
            optimize typechecking;
            records can be prefixed by '-' (Michal Filka)
    * CronAllow: new lens for cron/at allow/deny files
    * Cups: new lens for Cups files
    * Cyrus_Imapd: new lens for /etc/imapd.conf, bug #296 (Jeroen van Meeuwen)
    * Debctrl: fixed package paragraph keywords, allow variables
               for version numbers in dependency lists,
               allow DM-Upload-Allowed keyword, Debian bug #650887;
               allow control extensions for Python packages, bug #267
    * Dhcpd: fix primary statement arguments, bug #293;
             use the Quote module to manage quoted values;
             force double quotes for filename attribute, bug #311
    * Dput: use Sys.getenv("HOME")
    * Erlang: new generic lens to build Erlang config lenses
    * Fonts: new lens for /etc/fonts files
    * Fstab: handle o