Imported Upstream version 1.8.1
[platform/upstream/augeas.git] / NEWS
1 1.8.1 - 2017-08-17
2   - General changes/addition
3     * Fix error in handling escaped whitespace at the end of path expressions
4       (addresses CVE-2017-7555)
5
6 1.8.0 - 2017-03-20
7   - General changes/additions
8     * augtool: add a 'source' command exposing the aug_source API call
9     * augtool: add a 'context' command to make changing into a node more
10       discoverable
11     * augtool: add an 'info' command to print important information
12     * augtool: dramatically reduce memory consumption when all lenses are
13       loaded by more aggressively releasing temporary data structures.  On
14       my machine, maximum memory usage of 'augtool -L' drops from roughly
15       90MB to about 20MB. This will not change the amount of memory used
16       when only specific lenses are used, only the default behavior of
17       loading all lenses, i.e., when -A is not passed.
18     * make building augtool statically possible (Jörg Krause)
19     * split aug_to_xml into its own source file, so that statically linking
20       against libaugeas.a doesn't require also linking against libXml2 and
21       its dependencies, provided aug_to_xml is not needed.
22   - API changes
23     * add aug_source to find the source file for a particular node
24     * reduce memory consumption when AUG_NO_MODL_AUTOLOAD is _not_ passed;
25       exact same details as described above for augtool
26   - Lens changes/additions
27     * Chrony: allow floating point numbers (Miroslav Lichvar)
28               add new directives from chrony 3.0 and 3.1 (Miroslav Lichvar)
29     * Krb5: support include/includedir directives (Jason Smith) (Issue #430)
30             support realms that start with numbers (Dustin Wheeler) (Issue #437)
31     * Multipath: update to multipath-0.4.9-99.el7 (Xavier Mol)
32     * Php: also look for FPM files in /etc/php/*/fpm/pool.d (Daniel Dico)
33     * Postfix_virtual: allow underscores in e-mail addresses (Jason Lingohr)
34                        (Issue #439)
35     * Radicale: new lens for config of http://radicale.org/ (James Valleroy)
36     * Rsyslog: support multiple options in module statements (Craig Miskell)
37     * Ssh: also look for files in in /etc/ssh/ssh_config.d (Ian Mortimer)
38     * Tmpfiles: parse 'q'/'Q' modes, parse two-character arguments,
39                 parse three-digit file modes
40     * Xml: support external entity declarations in the doctype (Issue #142)
41     * Yum: also read DNF files from /etc/dnf (Pat Riehecky) (Issue #434)
42
43 1.7.0 - 2016-11-08
44   - General changes/additions
45     * allow multiple transforms handling the same file as long as they
46       also use the same lens (reported by Rich Jones)
47     * fix a use-after-free in recursive lenses when spans are
48       enabled (Issue #397)
49     * fix an illegal memory access during put that can be triggered by a
50       lens of the form 'del ... | l1 . l2' when the put has to jump
51       branches in the union (Issue #398)
52     * a large number of fixes based on Coverity scanning and running with
53       gcc's address sanitizer. None of the issues uncovered would have lead
54       to particularly significant leaks (they were all on the order 100-200
55       bytes) and often hard to trigger, but we now have proof that at least
56       while running tests there are no leaks at all.
57       See https://github.com/hercules-team/augeas/pull/405 for details.
58     * The type checker now checks regexes that are involved in
59       expressions. For example, it used to be possible to write 'let rx =
60       /a/ | /b)/' and not get an error from the syntax checker, even though
61       'let rx = /b)/' would result in an error. Such constructs are now
62       checked properly. This new check might lead to errors in existing
63       lenses, requiring that they be fixed.
64   - Lens changes/additions
65     * Cron_User: New lens to handle user crontab files in /var/spool/cron
66     * Csv: fix failure to load lens on OpenBSD (Issue #396)
67     * Grub: also look for UEFI grub files in /boot/efi/EFI/*/grub.conf
68             (Rich Jones)
69     * Opendkim: new lens for /etc/opendkim.conf (Craig Miskell)
70     * Php: look for php.ini where Ubunto 16.04 puts it, too (Michael Wodniok)
71     * Splunk: support Splunk Universal Forwarder and underscore-prefixed
72               keys for 6.x (Jason Antman)
73
74 1.6.0 - 2016-08-05
75   - General changes/additions
76     * augtool: add --load-file option, and corresponding load-file command
77       to load individual files based on the autoload information in lenses
78     * path expressions: numbers in path expressions are now 64 bit integers
79       rather than whatever the C compiler decided 'int' would be
80   - API changes
81     * add aug_load_file to load individual files, bug #135
82   - Lens changes/additions
83     * Httpd: follow line continuations in comments
84     * Nginx: look for nginx.conf in /usr/local/etc, too (Omer Katz)
85     * Ntp: allow 'pool' (Craig Miskell) (Issue #378);
86            fix restrict to allow also -4 and also fix
87            save/store ability (Josef Reidinger) (Issue #386)
88     * Pam: use spaces instead of tabs as the separator in new entries
89            (Loren Gordon) (Issue #236)
90     * Postfix_Passwordmap: New lens to parse Postfix password maps
91            (Anton Baranov) (Issue #380)
92     * Rsyslog: Support for rsyslog RainerScript syntax
93            (Craig Miskell) (Issue #379)
94     * Shellvars: Load /etc/lbu/lbu.conf, the config for Alpine's Local
95            Backup Utility (Kaarle Ritvanen)
96            Load /etc/profile, /etc/profile.d/*, and /etc/byobu
97     * Vsftpd: Add allow_writeable_chroot boolead option
98            (Robert Moucha) (Issue #376)
99
100 1.5.0 - 2016-05-11
101   - General changes/additions
102     * augtool: new --timing option that prints after each operation how long
103       it took
104     * augtool: print brief help message when incorrect options are given rather
105       than dumping all help text
106     * Path expressions: optimize performance of evaluating certain
107       expressions
108     * lots of safety improvements in libfa to avoid using uninitialized
109       values and the like (Daniel Trebbien)
110     * tolerate building against OSX' libedit (Issue #256)
111   - API changes
112     * aug_match: fix a bug where expressions like /foo/*[2] would match a
113       hidden node and pretend there was no match at all. We now make sure
114       we never match a hidden node. Thanks to Xavier Mol for reporting the
115       problem.
116     * aug_get: make sure we set *value to NULL, even if the provided path is
117       invalid (Issue #372)
118     * aug_rm: fix segfault when deleting a tree and one of its ancestors
119       (Issue #319)
120     * aug_save: fix segfault when trying to save an invalid subtree. A
121       routine that was generating details for the error message overflowed
122       a buffer it had created (Issue #349)
123   - Lens changes/additions
124     * AptConf: support hash comments
125     * AptSources: support options (Issue #295),
126                   support brackets with spaces in URI (GH #296)
127                   rename test file to test_aptsources.aug
128     * Chrony: allow signed numbers and indentation, fix stray EOL entry,
129               disallow comment on EOL, add many missing directives and
130               options (Miroslav Lichvar, RHBZ#1213281)
131               add new directives and options that were added in
132               chrony-2.2 and chrony-2.3 and improve parsing of
133               access configuration (Miroslav Lichvar, Issue #348)
134               add new options for chrony-2.4 (Miroslav Lichvar)
135     * Dhclient: avoid put ambiguity for node without value (Issue #294)
136     * Group: support NIS map, support an overridden and disabled password,
137              i.e. `+:*::` (Matt Dainty) (Issue #258)
138     * Host_Conf: support spaces between list items (Cedric Bosdonnat, Issue #358)
139     * Httpd: add paths to SLES vhosts
140              (Jan Doleschal) (Issue #268)
141              parse backslashes in directive arguments (Issue #307)
142              parse mismatching case of opening/closing tags
143              parse multiple ending section tags on one line
144              parse wordlists in braces in SSLRequire directives
145              parse directive args starting with double quote (Issue #330)
146              parse directive args containing quotes
147              support perl directives (Issue #327)
148              parse line breaks/continuations in section arguments
149              parse escaped spaces in directive/section arguments
150              parse backslashes at the start of directive args (Issue #324)
151     * Inputrc: support $else (Cedric Bosdonnat, Issue #359)
152     * Interfaces: add support for source-directory (Issue #306)
153     * Json: add comments support, refactor,
154             allow escaped quotes and blackslashes
155     * Keepalived: fix space/tag alignments and hanging spaces,
156                   add vrrp_mcast_group4 and vrrp_mcast_group6,
157                   add more vrrp_instance flags,
158                   add mcast/unicast_src_ip and unicast_peer,
159                   add missing garp options,
160                   add vrrp_script options,
161                   expand vrrp_sync_group block,
162                   allow notify option
163                   (Joe Topjian) (Issue #266)
164     * Known_Hosts: refactoring and description fixed
165     * Logrotate: support dateyesterday option (Chris Reeves) (GH #367, #368)
166     * MasterPasswd: new lens to parse /etc/master.passwd
167                     (Matt Dainty) (Issue #258)
168     * Multipath: add various missing keywoards (Olivier Mangold) (Issue #289)
169     * MySQL: include /etc/my.cnf.d/*.cnf (Issue #353)
170     * Nginx: improve typechecking of lens,
171              allow masks in IP keys and IPv6 (Issue #260)
172              add @server simple nodes (Issue #335)
173     * Ntp: add support for basic interface syntax
174     * OpenShift_Quickstarts: Use Json.lns
175     * OpenVPN: add all options available in OpenVPN 2.3o
176                (Justin Akers) (Issue #278)
177     * Puppetfile: name separator is not mandatory
178                   add support for moduledir (Christoph Maser)
179     * Rabbitmq: remove space in option name,
180                 add support for cluster_partitioning_handling,
181                 add missing simple options (Joe Topjian) (Issue #264)
182     * Reprepro_Uploaders: add support for distribution field
183                           (Mathieu Alorent) (Issue #277),
184                           add support for groups (Issue #283)
185     * Rhsm: new lens to parse subscription-manager's /etc/rhsm/rhsm.conf
186     * Rsyslog: improve property filter parsing,
187                treat whitespace after commas as optional.
188                recognize '~' as a valid syslog action (discard)
189                (Gregory Smith) (Issue #282),
190                add support for redirecting output to named pipes
191                (Gerlof Fokkema) (Issue #366)
192     * Shellvars: allow partial quoting, mixing multiple styles
193                  (Kaarle Ritvanen) (Issue #183);
194                  allow wrapping builtin argument to multiple lines
195                  (Kaarle Ritvanen) (Issue #184);
196                  support ;; on same line with multiple commands
197                  (Kaarle Ritvanen) (Issue #185);
198                  allow line wrapping and improve quoting support
199                  (Kaarle Ritvanen) (Issue #187);
200                  accept [] and [[]] builtins (Issue #188);
201                  allow && and || constructs after condition
202                  (Kaarle Ritvanen) (Issue #265);
203                  add pattern nodes in case entries
204                  (BREAKING CHANGE: case entry values are now in a
205                  @pattern subnode) (Kaarle Ritvanen) (Issue #265)
206                  add eval builtin support;
207                  add alias builtin support;
208                  allow (almost) any command;
209                  allow && and || after commands (Issue #215);
210                  allow wrapping command sequences
211                  (Kaarle Ritvanen) (Issue #333);
212                  allow command-specific environment variable
213                  (Kaarle Ritvanen) (Issue #332);
214                  support subshells (Issue #339)
215                  newlines in start of functions
216                  allow newlines after actions
217                  support comments after function name (Issue #339)
218                  exclude SuSEfirewall2 (Cedric Bosdonnat, Issue #357)
219     * Simplelines: parse OpenBSD's hostname.if(5)
220                    files (Jasper Lievisse Adriaanse) (Issue #252)
221     * Smbusers: add support for ; comments
222     * Spacevars: support flags (Issue #279)
223     * Ssh: add support for HostKeyAlgorithms, KexAlgorithms
224            and PubkeyAcceptedKeyTypes (Oliver Mangold) (Issue #290),
225            add support for GlobalKnownHostsFile (Issue #316)
226     * Star: New lens to parse /etc/default/star
227     * Sudoers: support for negated command alias
228                (Geoff Williams) (Issue #262)
229     * Syslog: recognize '~' as a valid syslog action (discard)
230               (Gregory Smith) (Issue #282)
231     * Tmpfiles: new lens to parse systemd's tempfiles.d configuration
232                 files (Julien Pivotto) (Issue #269)
233     * Trapperkeeper: new lens for Puppet server configuration files
234     * Util: add comment_c_style_or_hash lens
235             add empty_any lens
236     * Vsftpd: add isolate and isolate_network options
237               (Florian Chazal) (Issue #334)
238     * Xml: allow empty document (Issue #255)
239     * YAML: new lens (subset) (Dimitar Dimitrov) (Issue #338)
240
241 1.4.0 - 2015-05-22
242   - General changes/additions
243     * add a aug_escape_name call to sanitize strings for use in path
244       expressions. There are a few characters that are special in path
245       expressions. This function makes it possible to have them all escaped
246       so that the resulting string can be used in a path expression and is
247       guaranteed to only match a node with exactly that name
248     * paths generated by Augeas are now properly escaped so that, e.g., the
249       strings returned by aug_match can always be fed to aug_get, even if
250       they contain special characters
251     * augtool: correctly record history when reading commands from a file
252       and then switching to interactive mode (Robert Drake)
253     * augtool: new command 'errors' that pretty-prints /augeas//error
254       messages; improve the information provided with 'short iteration'
255       errors
256     * fix segfault when saving to a file that was not writable (Issue #178)
257     * augtool: on interrupt (Ctrl-C), cancel current line instead of
258       exiting (jeremy Lin)
259     * updated parser.y to work with Bison 3.0.2
260     * fix put-symlink-augsave test to run on Solaris (Geoffrey Gardella,
261       issue #242)
262   - Lens changes/additions
263     * AFS_Cellalias: new lens (Pat Riehecky)
264     * Authorized_keys: allow double quotes in option values (Issue #135)
265     * Chrony: fix typo in log flag 'measurements' (Pat Riehecky)
266     * Clamav: new lens  (Andrew Colin Kissa)
267     * Dns_Zone: New lens to parse DNS zone files (Kaarle Ritvanen)
268     * Dnsmasq: Parse the structure of the 'address' and 'server' options
269                (incompatible change) (Kaarle Ritvanen)
270     * Erlang: parse kernel app config, handle empty lists (RHBZ#1175546)
271     * Exports: support brackets in machine names (Vincent Desjardins)
272     * Grub: support password stanza inside boot/title section (Issue #229)
273     * Httpd: handle eol after opening tag (Issue #220); fix type checking
274       issue (Issue #223)
275     * Iscsid: new lens (Joey Boggs and Pat Riehecky) (Issue #174)
276     * Jaas: several improvements to cover more valid syntax (Steve Shipway)
277     * Known_Hosts: handle aliases for the host name
278     * Krb5: support keyword krb524_server; allow realm names starting
279             with lower-case characters (Jurjen Bokma)
280     * Limits: allow comments at end of line (timdeluxe)
281     * Logrotate: support 'dateformat' directive (Issue #217)
282                  support 'maxsize' directive (RHBZ#1213292)
283                  do not require a space before an opening '{' (Issue #123)
284     * Mailscanner: new lens (Andrew Colin Kissa)
285     * Mailscanner_Rules: new lens for MailScanner rules (Andrew Colin Kissa)
286     * NagiosCfg: default to no spaces around equal (Issue #177)
287     * Nginx: significantly reworked, now parses entire Nginx stock
288              config successfully (Issue #179)
289     * Pagekite: more fine-grained control of service_on entries; instead of
290                 'source' and 'destination', parse into protocol, kitename,
291                 backend_host, backend_port, and secret (Michael Pimmer)
292                 (incompatible change)
293     * Passwd: support nis [+-]username syntax (Borislav Stoichkov); fix
294       @nisdefault on OpenBSD (Matt Dainty)
295     * Pgbouncer: new lense for the pgbouncer connection pooler (Andrew
296       Colin Kissa)
297     * Postfix_sasl_smtpd: new lens contributed by larsen0815 (Issue #182)
298     * Postgresql: look for postgresql.conf in paths used on Red Hat based
299                   distros (Haotian Liu)
300     * Puppetfile: new lens to parse librarian-puppet's Puppetfile
301     * Pylonspaste: new lense for Pylon's paste init configuration files
302                    (Andrew Colin Kissa)
303     * PythonPaste: parse "set" keyword for default overrides (RHBZ#1175545)
304     * Shadow: allow NIS entries (Borislav Stoichkov)
305     * Shellvars: case: support ;; on same line with multiple commands
306                  (Kaarle Ritvanen); make insertion at the beginning of a
307                  file that starts with blank lines work; the new lens will
308                  remove blank lines from the beginning of a file as soon as
309                  lines are added to or removed from it (GH issue #202);
310                  handle associative arrays; add /etc/periodic.conf for
311                  FreeBSD (Michael Moll)
312     * Shellvars_list: support double-quoted continued lines
313     * Sudoers: allow '+' in user/groupnames (Andreas Grüninger)
314     * Sysctl: add /boot/loader.conf for FreeBSD (Michael Moll)
315     * Sysconfig: handle leading whitespace at beginning of a line,
316                  RHBZ#761246
317
318 1.3.0 - 2014-11-07
319   - General changes/additions
320     * Add missing cp entry in manpage (GH issue #78)
321     * Add seq to vim syntax highlight (Robert Drake)
322     * Update augtool.1 man page with new commands and --span, RHBZ#1100077
323     * augtool autocomplete includes command aliases, RHBZ#1100184
324     * Remove unused "filename" argument from dump-xml command, RHBZ#1100106
325     * aug_save returns non-zero result when unable to delete files,
326       RHBZ#1091143
327   - Lens changes/additions
328     * Aliases: permit missing whitespace between colon and recipients
329     * AptPreferences: Support spaces in origin fields
330     * Cgconfig: handle additional valid controllers (Andy Grimm)
331     * Chrony: New lens to parse /etc/chrony.conf (Pat Riehecky)
332     * CPanel: New lens to parse cpanel.config files
333     * Desktop: Allow @ in keys (GH issue #92)
334     * Device_map: Parse all device.map files under /boot (Mike Latimer)
335     * Dhclient: Add support for option modifiers (Robert Drake,
336                 GH issue #95)
337                 Parse hash statements with dhcp-eval strings
338     * Dhcpd: stmt_string quoted blocks no longer store quote marks
339              (incompatible change),
340              many changes to support more record types (Robert Drake)
341     * Group: NIS support (KaMichael)
342     * Grub: handle "foreground" option, RHBZ#1059383 (Miguel Armas)
343     * Gshadow: New lens (Lorenzo Catucci)
344     * Httpd: Allow eol comments after section tags
345              Allow continued lines inside quoted value (GH issue #104)
346              Allow comparison operators in tags (GH issue #154)
347     * IPRoute2: handle "/" in protocol name, swap ID and name fields
348                 (incompatible change), RHBZ#1063968,
349                 handle hex IDs and hyphens, as present in
350                 rt_dsfield, RHBZ#1063961
351     * Iptables: parse /etc/sysconfig/iptables.save, RHBZ#1144651
352     * Kdump: parse new options, permit EOL comments, refactor, RHBZ#1139298
353     * Keepalived: Add more virtual/real server settings and checks, RHBZ#1064388
354     * Known_Hosts: New lens for SSH known hosts files
355     * Krb5: permit braces in values when not in sub-section, RHBZ#1066419
356     * Ldso: handle "hwcap" lines (GH issue #100)
357     * Lvm: support negative numbers, parse /etc/lvm/lvm.conf (Pino Toscano)
358     * Multipath: add support for rr_min_io_rq (Joel Loudermilk)
359     * NagiosConfig and NagiosObjects: Fix documentation (Simon Sehier)
360     * NetworkManager: Use the Quote module, support # in values (no eol comments)
361     * OpenVPN: Add support for fragment, mssfix, and script-security
362                (Frank Grötzner)
363     * Pagekite: New lens (Michael Pimmer)
364     * Pam: Add partial support for arguments enclosed in [] (Vincent Brillault)
365     * Passwd: Refactor lens (Lorenzo Catucci)
366     * Redis: Allow empty quoted values (GH issue #115)
367     * Rmt: New lens to parse /etc/default/rmt, RHBZ#1100549
368     * Rsyslog: support complex $template lines, property filters and file
369                actions with templates, RHBZ#1083016
370     * Services: permit colons in service name, RHBZ#1121263
371     * Shadow: New lens (Lorenzo Catucci)
372     * Shellvars: Handle case statements with same-line ';;', RHBZ#1033799
373                  Allow any kind of quoted values in block
374                  conditions (GH issue #118)
375                  Support $(( .. )) arithmetic expansion in variable
376                  assignment, RHBZ#1100550
377     * Simplevars: Support flags and empty values
378     * Sshd: Allow all types of entries in Match groups (GH issue #75)
379     * Sssd: Allow ; for comments
380     * Squid: Support configuration files for squid 3 (Mykola Nikishov)
381     * Sudoers: Allow wuoted string in default str/bool params (Nick Piacentine)
382     * Syslog: Support "# !" style comments (Robert Drake, GH issue #65)
383               Permit IPv6 loghost addresses, RHBZ#1129388
384     * Systemd: Allow quoted Environment key=value pairs, RHBZ#1100547
385                Parse /etc/sysconfig/*.systemd, RHBZ#1083022
386                Parse semicolons inside entry values, RHBZ#1139498
387     * Tuned: New lens for /etc/tuned/tuned-main.conf (Pat Riehecky)
388     * UpdateDB: New lens to parse /etc/updatedb.conf
389                 (incompatible change as this file used to be processed with
390                  Simplevars)
391     * Xml: Allow backslash in #attribute values (GH issue #145)
392            Parse CDATA elements (GH issue #80)
393     * Xymon_Alerting: refactor lens (GH issue #89)
394
395 1.2.0 - 2014-01-27
396   - API changes
397     * Add aug_cp and the cp and copy commands
398     * aug_to_xml now includes span information in the XML dump
399   - General changes/additions
400     * Fix documentation link in c_api NaturalDocs menu
401     * Fix NaturalDocs documentation for various lenses
402     * src/transform.c (filter_matches): wrap fnmatch to ensure that an incl
403       pattern containing "//" matches file paths, RHBZ#1031084
404     * Correct locations table for transform_save() (Tomas Hoger)
405     * Corrections for CVE-2012-0786 tests (Tomas Hoger)
406     * Fix umask handling when creating new files, RHBZ#1034261
407   - Lens changes/additions
408     * Access: support DOMAIN\user syntax for users and groups, bug #353
409     * Authorized_Keys: Allow 'ssh-ed25519' as a valid authorized_key
410       type (Jasper Lievisse Adriaanse)
411     * Automounter: Handle hostnames with dashes in them, GH issue #27
412     * Build: Add combinatorics group
413     * Cyrus_Imapd: Create new entries without space before separator,
414       RHBZ#1014974 (Dietmar Kling)
415     * Desktop: Support square brackets in keys
416     * Dhclient: Add dhclient.conf path for Debian/Ubuntu (Esteve Fernandez)
417     * Dhcpd: Support conditionals, GH issue #34
418              Support a wider variety of allow/deny statement, including
419              booting and bootp (Yanis Guenane)
420              Support a wider variety of DHCP allow/deny/ignore statements
421              (Yanis Guenane)
422     * Dovecot: Various enhancements and bug fixes (Michael Haslgrübler):
423                add mailbox to block_names, fix for block_args in quotes,
424                fix for block's brackets upon write,
425                fixes broken tests for mailbox,
426                fixes indention,
427                test case for block_args with ""
428                fixes broken indention
429                Use Quote module
430     * Exports: Permit colons for IPv6 client addresses, bug #366
431     * Grub: Support the 'setkey' and 'lock' directives
432             NFC fix whitespace errors
433             Handle makeactive menu command, bug #340
434             Add 'verbose' option, GH issue #73
435     * Interfaces: Add in support for the source stanza in
436                   /etc/network/interfaces files
437                   Map bond-slaves and bridge-ports to arrays (incompatible
438                   change) (Kaarle Ritvanen)
439                   Add /etc/network/interfaces.d/* support
440                   Allow numeric characters in stanza options (Pascal Lalonde)
441     * Koji: New lens to parse Koji configs (Pat Riehecky)
442     * MongoDBServer: Accept quoted values (Tomas Klouda)
443     * NagiosCfg: Do not try to parse /etc/nagios/nrpe.cfg anymore, GH issue #43
444                  /etc/nagios/nrpe.cfg is parsed by Nrpe (Yanis Guenane)
445     * Nagiosobjects: Add support for optional spaces and indents
446                      and whole-line comments (Sean Millichamp)
447     * OpenVPN: Support daemon, client-config-dir, route, and management
448                directives (Freakin https://github.com/Freakin)
449     * PHP: allow php-fpm syntax in keys, GH issue #35
450     * Postfix_Main: Handle stray whitespace at end of multiline lines, bug #348
451     * Postfix_virtual: allow '+' and '=' in email addresses (Tom Hendrikx)
452     * Properties: support multiline starting with an empty string, GH issue #19
453     * Samba: Permit asterisk in key name, bug #354
454     * Shellvars: Read /etc/firewalld/firewalld.conf, bug #363
455                  Support all types of quoted strings in arrays, bug #357
456                  Exclude /etc/sysconfig/ip*tables.save files
457     * Shellvars, Sysconfig: map "bare" export and unset lines to seq numbered
458       nodes to handle multiple variables (incompatible change), RHBZ#1033795
459     * Shellvars_list: Handle backtick variable assignments, bug #368
460                       Allow end-of-line comments, bug #342
461     * Simplevars: Add /etc/selinux/semanage.conf
462     * Slapd: use smart quotes for database entries; rename by/what to by/access;
463       allow access to be absent as per official docs (incompatible change)
464     * Sshd: Indent Match entries by 2 spaces by default
465             Support Ciphers and KexAlgorithms groups, GH issue #69
466             Let all special keys be case-insensitive
467     * Sudoers: Permit underscores in group names, bug #370 (Matteo Cerutti)
468                Allow uppercase characters in user names, bug #376
469     * Sysconfig: Permit empty comments after comment lines, RHBZ#1043636
470     * Sysconfig_Route: New lens for RedHat's route configs
471     * Syslog: Accept UDP(@) and TCP(@@) protocol, bug #364 (Yanis Guenane)
472     * Xymon_Alerting: New lens for Xymon alerting files (François Maillard)
473     * Yum: Add yum-cron*.conf files (Pat Riehecky)
474            Include only *.repo files from yum.repos.d (Andrew N Golovkov)
475            Permit spaces after equals sign in list options, GH issue #45
476            Split excludes as lists, bug #275
477
478 1.1.0 - 2013-06-14
479   - General changes/additions
480     * Handle files with special characters in their name, bug #343
481     * Fix type error in composition ('f; g') of functions, bug #328
482     * Improve detection of version script; make build work on Illumos with
483       GBU ld (Igor Pashev)
484     * augparse: add --trace option to print filenames of all modules being
485       loaded
486     * Various lens documentation improvements (Jasper Lievisse Adriaanse)
487   - Lens changes/additions
488     * ActiveMQ_*: new lens for ActiveMQ/JBoss A-MQ (Brian Harrington)
489     * AptCacherNGSecurity: new lens for /etc/apt-cacher-ng/security.conf
490       (Erik Anderson)
491     * Automaster: accept spaces between options
492     * BBHosts: support more flags and downtime feature (Mathieu Alorent)
493     * Bootconf: new lens for OpenBSD's /etc/boot.conf (Jasper Lievisse Adriaanse)
494     * Desktop: Support dos eol
495     * Dhclient: read /etc/dhclient.conf used in OpenBSD (Jasper Lievisse Adriaanse)
496     * Dovecot: New lens for dovecot configurations (Serge Smetana)
497     * Fai_Diskconfig: Optimize some regexps
498     * Fonts: exclude all README files (Jasper Lievisse Adriaanse)
499     * Inetd: support IPv6 addresses, bug #320
500     * IniFile: Add lns_loose and lns_loose_multiline definitions
501                Support smart quotes
502       Warning: Smart quotes support means users should not add
503                escaped double quotes themselves. Tests need to be fixed
504                also.
505                Use standard Util.comment_generic and Util.empty_generic
506       Warning: Existing lens tests must be adapted to use standard
507                comments and empty lines
508                Allow spaces in entry_multiline* values
509                Add entry_generic and entry_multiline_generic
510                Add empty_generic and empty_noindent
511                Let multiline values begin with a single newline
512                Support dos eol
513       Warning: Support for dos eol means existing lenses usually
514                need to be adapted to exclude \r as well as \n.
515     * IPRoute2: Support for iproute2 files (Davide Guerri)
516     * JaaS: lens for the Java Authentication and Authorization Service
517             (Simon Vocella)
518     * JettyRealm: new lens for jetty-realm.properties (Brian Harrington)
519     * JMXAccess, JMXPassword: new lenses for ActiveMQ's JMX files
520       (Brian Harrington)
521     * Krb5: Use standard comments and empty lines
522             Support dos eol
523             Improve performance
524             Accept pkinit_anchors (Andrew Anderson)
525     * Lightdm: Use standard comments and empty lines
526     * LVM: New lens for LVM metadata (Gabriel)
527     * Mdadm_conf: optimize some regexps
528     * MongoDBServer: new lens (Brian Harrington)
529     * Monit: also load /etc/monitrc (Jasper Lievisse Adriaanse)
530     * MySQL: Use standard comments and empty lines
531              Support dos eol
532     * NagiosCfg: handle Icinga and resources.cfg (Jasper Lievisse Adriaanse)
533     * Nrpe: accept any config option rather than predefined list (Gonzalo
534             Servat); optimize some regexps
535     * Ntpd: new lense for OpenNTPD config (Jasper Lievisse Adriaanse)
536     * Odbc: Use standard comments and empty lines
537     * Openshift_*: new lenses for Openshift support (Brian Harrington)
538     * Quote: allow multiple spaces in quote_spaces; improve docs
539     * Passwd: allow period in user names in spec, bug #337; allow overrides
540               in nisentry
541     * PHP: Support smart quotes
542            Use standard comments and empty lines
543            Load /etc/php*/fpm/pool.d/*.conf (Enrico Stahn)
544     * Postfix_master: allow [] in words, bug #345
545     * Resolv: support 'lookup' and 'family' key words, bug #320
546               (Jasper Lievisse Adriaanse))
547     * Rsyslog: support :omusrmsg: list of users in actions
548     * RX: add CR to RX.space_in
549     * Samba: Use standard comments and empty lines
550              Support dos eol
551     * Schroot: Support smart quotes
552     * Services: support port ranges (Branan Purvine-Riley)
553     * Shellvars: optimize some regexps; reinstate /etc/sysconfig/network,
554       fixes bug #330, RHBZ#904222, RHBZ#920609; parse /etc/rc.conf.local
555       from OpenBSD
556     * Sip_Conf: New lens for sip.conf configurations (Rob Tucker)
557     * Splunk: new lens (Tim Brigham)
558     * Subversion: Support smart quotes
559                   Use standard comments and empty lines
560                   Use IniFile.entry_multiline_generic
561                   Use IniFile.empty_noindent
562                   Support dos eol
563     * Sudoers: allow user aliases in specs
564     * Sysctl: exclude README file
565     * Systemd: Support smart quotes; allow backslashes in values
566     * Xinetd: handle missing values in list, bug #307
567     * Xorg: allow 'Screen' in Device section, bug #344
568     * Yum: Support dos eol, optimize some regexps
569
570 1.0.0 - 2012-12-21
571   - General changes/additions
572     * fix missing requirement on libxml2 in pkg-config
573     * do not replace pathin with '/*' unless the length is 0
574       or pathin is '/', bug #239
575     * create context path if it doesn't exist
576     * add missing argument to escape() to fix build on solaris, bug #242
577     * fix fatest linking with libfa
578     * don't use variables uninitialized upon error (Jim Meyering)
579     * bootstrap: add strchrnul gnulib module (for Solaris)
580     * remove Linux-isms so tests can run on Solaris
581     * re-open rl_outstream/stdout only when stdout isn't a tty
582       (fixes -e -i); use /dev/tty instead of /dev/stdout when re-opening
583       to prevent permission errors, bug #241
584     * take root into account for excludes, bug #252
585     * fix different errors for parse and put failure
586     * fix various memory leaks
587     * add leak test
588     * allocate exception instead of static const value
589     * improve aug_srun quoting to permit concatenation and better detect
590       bad quoting
591     * rename echo to echo_commands to fix differing types reported
592       with Solaris linker (Tim Mooney), bug #262
593     * fix excl filters that only specify a filename or wildcard
594     * make sure reloading discards changes after save with mode 'newfile'
595     * remove loop that added a second iteration around children of /files,
596       causing multiple saves in newfile and noop modes when editing under
597       /files/boot, bug #264
598     * support \t and \n in aug_srun tokens, bug #265
599     * compile_exp: don't return an uninitialized pointer upon failure
600       (Jim Meyering)
601     * include 'extern "C"' wrapper for C++, bug #272 (Igor Pashev)
602     * src/try: don't overwrite gdbcmds.txt if it exists
603     * fix behavior of set with empty strings
604     * allow running individual tests with test-run
605     * test-augtool.sh: escape all possible regular expressions before
606       they are sent to sed (Micah Anderson)
607     * add new print_tree primitive
608     * fix bad memory access in regexp.c
609     * case-insensitive regexps: fix a problem with number of groups
610     * prevent symlink attacks via .augnew during saving,
611       RedHat bug #772257, CVE-2012-0786
612     * prevent cross-mountpoint attacks via .augsave during saving,
613       RedHat bug #772261, CVE-2012-0787
614     * add bundled (gnulib) provides in augeas.spec.in, RedHat bug #821745
615     * make Travis CI builds
616     * src/transform.c (xread_file): catch failed fopen, e.g. EACCES
617     * src/augrun.c (cmd_retrieve_help): tidy line wrapping
618     * make get_square case insensitive on the ending key
619     * escape double quotes when dumping regexp
620     * use constants for "lens", "incl" and "excl"
621     * src/transform.c (filter_generate): remove duplicate variable assignment
622     * src/jmt.c (parse_add_item): ensure return is defined on goto error
623     * src/transform.c (transform_save): chmod after creating new files to
624       permissions implied by the umask
625     * ignore eclipse settings directory
626     * fix memory leak in dbg_visit
627     * build AST while visiting the parse v2
628     * rewrite square lens to be more generic, allowing e.g. square quoting
629     * tests/modules/fail_shadow_union.aug: fix unintended test failure
630     * src/syntax.c (compile_test): print which test failed when missing
631       exception
632     * libfa (fa_enumerate): new function
633     * use precise ctype of a square lens if it is indeed regula
634     * square: properly handle first lens matching empty string
635     * square lens: correctly process skeletons during put
636     * src/pathx.c: disallow ',' in names in path expressions
637     * src/pathx.c: match functions by name and arity
638     * src/pathx.c: pass the number of actual arguments to the func
639       implementation
640     * correctly parse escaped string literals in vim syntax file (Domen Ko¿ar)
641   - API changes/additions
642     * add aug_text_store to write string to tree
643     * add aug_text_retrieve to turn tree into text
644     * add aug_rename to rename node labels without moving them in the tree
645     * add aug_transform to allow specifying transforms
646     * add aug_label to retrieve the label from a path
647   - Augtool/aug_srun changes/additions
648     * add "touch" command to create node if it doesn't exist, bug #276
649     * make <VALUE> argument to "set" and "setm" optional, bug #276
650     * add "text_store" and "text_retrieve" commands
651     * add "rename" command
652     * add "transform" command and "-t|--transform" option
653     * add "label" command
654     * arrange commands in groups for better help
655     * man/augtool.pod: update mentions of default load path
656     * fix exit code when using autosave
657     * output errors when sending a command as argument
658     * honor --echo when sending a command as argument
659   - XPath changes/additions
660     * add support for an 'i' flag in regexp builtin function
661   - Lens changes/additions
662     * Aliases: commands can be fully enclosed in quotes, bug #229
663     * Anacron: new lens for /etc/anacrontab
664     * Apt_Update_Manager: new lens for /etc/update-manager
665     * AptPreferences: #comments are accepted within entries
666     * AuthorizedKeys: new lens for SSH's authorized_keys
667     * AutoMaster: new lens for auto.master files
668     * AutoMounter: new lens for automounter maps (/etc/auto.*)
669     * Avahi: new lens for /etc/avahi/avahi-daemon.conf (Athir Nuaimi)
670     * Build: add blocks
671     * Cachefilesd: new lens for /etc/cachefilesd.conf (Pat Riehecky)
672     * Carbon: new lens for /etc/carbon files (Marc Fournier)
673     * Cgconfig: add space between group and id (Filip Andres)
674     * Channels: new lens for channels.conf
675     * Collectd: new lens for /etc/collectd.conf
676     * Cron: exclude cron allow/deny files;
677             optimize typechecking;
678             records can be prefixed by '-' (Michal Filka)
679     * CronAllow: new lens for cron/at allow/deny files
680     * Cups: new lens for Cups files
681     * Cyrus_Imapd: new lens for /etc/imapd.conf, bug #296 (Jeroen van Meeuwen)
682     * Debctrl: fixed package paragraph keywords, allow variables
683                for version numbers in dependency lists,
684                allow DM-Upload-Allowed keyword, Debian bug #650887;
685                allow control extensions for Python packages, bug #267
686     * Dhcpd: fix primary statement arguments, bug #293;
687              use the Quote module to manage quoted values;
688              force double quotes for filename attribute, bug #311
689     * Dput: use Sys.getenv("HOME")
690     * Erlang: new generic lens to build Erlang config lenses
691     * Fonts: new lens for /etc/fonts files
692     * Fstab: handle options with empty values ("password=");
693              make options field optional;
694              allow end-of-line comment
695     * Fuse: new lens for fuse.conf
696     * Gdm: include /etc/gdm/custom.conf
697     * Grub: parse "password --encrypted" properly, bug #250;
698             optimize typechecking;
699             add /boot/grub/grub.conf to transform (Josh Kayse)
700     * GtkBookmarks: new lens for $HOME/.gtk-bookmarks
701     * Hosts_Access: add netmask;
702                     permit more client list formats
703                     (whitespace separated lists, @netgroups,
704                     IPv6 hosts, inc. zone indices,
705                     paths to lists of clients, wildcards,
706                     hosts_options), bug #256
707     * Htpasswd: new lens for htpasswd/rsyncd.secret files (Marc Fournier)
708     * Httpd: support DOS eol
709     * IniFile: allow # and ; in quoted values, bug #243;
710                add entry_list and entry_list_nocomment
711     * Inputrc: new lens for /etc/inputrc
712     * Iptables: test that blank lines are accepted (Terence Haddock)
713     * Json: allow JSON number literals to be followed by whitespace;
714             correctly parse empty object and arrays (Lubomir Rintel)
715     * Keepalived: various improvements, optimize typechecking
716     * Krb5: handle host{} sections in v4_name_convert;
717             support ticket_lifetime;
718             handle multiple arguments to *_enctypes (Pat Riehecky);
719             better whitespace and semicolon comment support
720     * Ldif: new lens to read LDIF files per RFC2849
721     * Ldso: new lens for ld.so.conf files
722     * Lightdm: new lens for /etc/lightdm/*.conf, bug #302 (David Salmen)
723     * Logrotate: rewrite with Build, Rx, and Sep;
724                  add su logrotate.conf option (Luc Didry);
725                  accept integers prefixed by a sign (Michal Filka)
726     * Logwatch: new lens for /etc/logwatch/conf/logwatch.conf (Francois Lebel)
727     * Mcollective: new lens for Mcollective files (Marc Fournier)
728     * Memcached: new lens for /etc/memcached.conf (Marc Fournier)
729     * Mdadm_conf: include /etc/mdadm/mdadm.conf
730     * Mke2fs: add support for default_mntopts, enable_periodic_fsck,
731               and auto_64-bit_support
732     * Modprobe: support softdep command, Debian bug #641813;
733                 allow spaces around '=' in option, RedHat bug #826752;
734                 support multiline split commands, Ubuntu bug #1054306;
735                 revert inner lens name change, fixes Modules_conf
736     * Modules: define own entry regexp as referenced Modprobe inner lens
737                doesn't match file format
738     * Multipath: allow devices to override defaults, bug #278 (Jacob M. McCann)
739     * NagiosCfg: support syntax for commands.cfg and resource.cfg
740     * Netmask: new lens for /etc/inet/netmasks on Solaris
741     * NetworkManager: new lens for NetworkManager files
742     * Networks: handle multiple missing network octets,
743                 fix sequencing of aliases
744     * Nginx: new lens for /etc/nginx/nginx.conf (Ian Berry)
745     * Nsswitch: add passwd_compat, group_compat and shadow_compat
746                 GNU extensions (Travis Groth);
747                 remove long list of databases, match by regexp
748     * Ntp: allow deprecated 'authenticate' setting;
749            add tos directive, bug #297 (Jacob M. McCann)
750     * OpenVPN: use the Quote module to manage quoted values
751     * Pam: allow uppercase chars in 'types', remove /etc/pam.conf from filter;
752            ignore allow.pamlist;
753            exclude /etc/pam.d/README, bug #255
754     * PamConf: new lens for /etc/pam.conf
755     * Passwd: allow asterisk in password field, bug #255
756     * Pg_Hba: support multiple options, bug #313;
757               add a path to pg_hba.aug, bug #281 (Marc Fournier)
758     * Php: support include() statements
759     * Phpvars: map arrays with @arraykey subnodes to make working paths;
760                support classes and public/var values, bug #299 (aheahe)
761     * Postfix_Transport: new lens for Postfix transport files;
762                allow host:port and [host]:port syntaxes, bug #303
763     * Postfix_Virtual: new lens for Postfix virtual files
764     * Postgresql: new lens for postgresql.conf;
765                   properly support quotes, bug #317
766     * Properties: improve handling of whitespace, empty props, and underscores
767                   in keys (Brett Porter, Carlos Sanchez)
768     * Protocols: new lens for /etc/protocols
769     * Puppet: add /usr/local/etc/puppet paths (Tim Bishop)
770     * Puppet_Auth: new lens for /etc/puppet/auth.conf
771     * PuppetFileserver: add /usr/local/etc/puppet paths (Tim Bishop)
772     * PythonPaste: new lens for Python Paste configs (Dan Prince)
773     * Qpid: new lens to read Apache Qpid daemon/client configs (Andrew Replogle)
774     * Quote: new generic lens to manage quoted values using square lenses
775     * Rabbitmq: new lens for /etc/rabbitmq/rabbitmq.config
776     * Redis: new lens for /etc/redis/redis.conf (Marc Fournier)
777     * Resolv: add in single-request-reopen (Erinn Looney-Triggs)
778     * Rsyslog: new lens for rsyslog files
779     * Rx: add continous lines (cl, cl_or_space, cl_or_opt_space)
780     * Sep: add space_equal;
781            add continous lines (cl_or_space, cl_or_opt_space)
782     * Shellvars: support @return;
783                  allow multiple elif statements;
784                  parse functions;
785                  add more includes;
786                  autoload some SuSe and RHN specific files (Duncan Mac-Vicar P);
787                  add BSD's /etc/rc.conf, bug #255;
788                  remove non-shell files, up2date now has a lens,
789                  move updatedb.conf to Simplevars;
790                  include /etc/{default,sysconfig}/* and /etc/selinux/config;
791                  add systemd's /etc/os-release file;
792                  exclude bootloader from shellvars (Duncan Mac-Vicar P);
793                  handle bash's implicit concatenation of quoted strings
794                  (Michal Filka);
795                  exclude /etc/default/whoopsie;
796                  fix ambiguity by making semi-colons illegal in bquot
797                  and arrays;
798                  add lns_norec to check for ambiguities;
799                  allow newlines in quoted values;
800                  allow semi-colons in bquot and dollar_assign;
801                  make end-of-line comments begin with a space;
802                  allow double backquoted values;
803                  support matching keys in var_action, bug #290;
804                  fix empty lines after comments;
805                  add shift and exit builtins, with optional args;
806                  allow double quotes around variables in case statements;
807                  fix empty comments;
808                  add locale.conf, vconsole.conf systemd configs,
809                  RedHat bug #881841
810     * Shells: permit same-line comments
811     * Simplelines: new lens for simple lines files
812     * Simplevars: new lens for simple key/value, non shellvars files
813     * Smbusers: new lens for Samba's smbusers
814     * Sssd: new lens for sssd.conf (Erinn Looney-Triggs)
815     * Ssh: use Sys.getenv('HOME') in filter instead of ~ since it's not
816            expanded (Luc Didry)
817     * Sshd: permit hyphens in subsystem names
818     * Subversion: new lens for /etc/subversion files
819     * Sudoers: optimize typechecking;
820                allow = in commands (but force ! or / as first character
821                if not an alias);
822                allow commands without full path if they begin with a lowcase
823                letter;
824                allow "!" as a type of Defaults entry, Debian bug #650079;
825                allow quoted strings in Defaults parameters, bug #263
826     * Sysconfig: handle end of line comments and semicolons; strip quotes,
827                  RedHat bug #761246
828     * Sysctl: include /etc/sysctl.d files
829     * Syslog: allow capital letters in tokens
830     * Systemd: new lens to parse systemd unit files
831     * Thttpd: new lens for /etc/thttpd/thttpd.conf (Marc Fournier)
832     * Up2date: new lens for /etc/sysconfig/rhn/up2date
833     * Util: add comment_noindent; add delim; add doseol;
834             support DOS eols in various places;
835             add *.bak and *.old to stdexcl, to match files in /etc/sysconfig
836     * Vfstab: new lens for /etc/vfstab config on Solaris
837     * Vmware_Config: new lens for /etc/vmware/config
838     * Vsftpd: add require_ssl_reuse option (Danny Yates)
839     * Xinetd: rewrite with Build, Sep, and Rx;
840               make attribute names case-insensitive (Michal Filka)
841     * Xml: support single _and_ double quoted attribute values,
842            RedHat bug #799885, bug #258
843     * Xymon: new lens for Xymon config files, bug #266 (Jason Kincl)
844     * Yum: rebase on IniFile, support for comments, bug #217
845
846 0.10.0 - 2011-12-02
847   - support relative paths by taking them relative to the value
848     of /augeas/context in all API functions where paths are used
849   - add aug_to_xml to API: transform tree(s) into XML, exposed as dump-xml
850     in aug_srun and augtool. Introduces dependency on libxml2
851   - fix regular expression escaping. Previously, /[\/]/ match either a
852     backslash or a slash. Now it only matches a slash
853   - path expressions: add function 'int' to convert a node value (string)
854     to an integer
855   - path expressions: make sure the regexp produced by empty nodesets from
856     regexp() and glob() matches nothing, rather than the empty word
857   - fix --autosave when running single command from command line, BZ 743023
858   - aug_srun: support 'insert' and 'move' as aliases for 'ins' and 'mv'
859   - aug_srun: allow escaping of spaces, quotes and brackets with \
860   - aug_init: accept AUG_NO_ERR_CLOSE flag; return augeas handle even when
861     intialization fails so that caller gets some details about why
862     initialization failed
863   - aug_srun: tolerate trailing white space in commands
864   - much improved, expanded documentation of many lenses
865   - always interpret lens filter paths as absolute, bug #238
866   - fix bug in libfa that would incorrectly calculate the difference of a
867     case sensistive and case insensitive regexp (/[a-zA-Z]+/ - /word/i
868     would match 'worD')
869   - new builtin 'regexp_match' for .aug files to make testing regexp
870     matching easier during development
871   - fix 'span' command, bug #220
872   - Lens changes/additions
873     * Access: parse user@host and (group) in users field; field separator
874       need not be surrounded by spaces
875     * Aliases: allow spaces before colons
876     * Aptconf: new lens for /etc/apt/apt.conf
877     * Aptpreferences: support origin entries
878     * Backuppchosts: new lens for /etc/backuppc/hosts, bug 233 (Adam Helms)
879     * Bbhosts: various fixes
880     * Cgconfig: id allowed too many characters
881     * Cron: variables aren't set like shellvars, semicolons are allowed in
882       email addresses; fix parsing of numeric fields, previously upper case
883       chars were allowed; support ranges in time specs
884     * Desktop: new lens for .desktop files
885     * Dhcpd: slashes must be double-quoted; add Red Hat's dhcpd.conf
886       locations
887     * Exports: allow empty options
888     * Fai_diskconfig: new lens for FAI disk_config files
889     * Fstab: allow ',' in file names, BZ 751342
890     * Host_access: new lens for /etc/hosts.{allow,deny}
891     * Host_conf: new lens for /etc/host.conf
892     * Hostname: new lens for /etc/hostname
893     * Hosts: also load /etc/mailname by default
894     * Iptables: allow digits in ipt_match keys, bug #224
895     * Json: fix whitespace handling, removing some cf ambiguities
896     * Kdump: new lens for /etc/kdump.conf (Roman Rakus)
897     * Keepalived: support many more flags, fields and blocks
898     * Krb5: support [pam] section, bug #225
899     * Logrotate: be more tolerant of whitespace in odd places
900     * Mdadm_conf: new lens for /etc/mdadm.conf
901     * Modprobe: Parse commands in install/remove stanzas (this introduces a
902       backwards incompatibility); Drop support for include as it is not
903       documented in manpages and no unit tests are shipped.
904     * Modules: new lens for /etc/modules
905     * Multipath: add support for seveal options in defaults section, bug #207
906     * Mysql: includedir statements are not part of sections; support
907       \!include; allow indentation of entries and flags
908     * Networks: new lens for /etc/networks
909     * Nrpe: allow '=' in commands, bug #218 (Marc Fournier)
910     * Php: allow indented entries
911     * Phpvars: allow double quotes in variable names; accept case
912       insensitive PHP tags; accept 'include_once'; allow empty lines at
913       EOF; support define() and bash-style and end-of-line comments
914     * Postfix_master: allow a lot more chars in words/commands, including
915       commas
916     * PuppetFileserver: support same-line comments and trailing whitespace,
917       bug #214
918     * Reprepo_uploaders: new lens for reprepro's uploaders files
919     * Resolv: permit end-of-line comments
920     * Schroot: new lens for /etc/schroot/schroot.conf
921     * Shellvars: greatly expand shell syntax understood; support various
922       syntactic constructs like if/then/elif/else, for, while, until, case,
923       and select; load /etc/blkid.conf by default
924     * Spacevars: add toplevel lens 'lns' for consistency
925     * Ssh: new lens for ssh_config (Jiri Suchomel)
926     * Stunnel: new lens for /etc/stunnel/stunnel.conf (Oliver Beattie)
927     * Sudoers: support more parameter flags/options, bug #143
928     * Xendconfsxp: lens for Xen configuration (Tom Limoncelli)
929     * Xinetd: allow spaces after '{'
930
931 0.9.0 - 2011-07-25
932   - augtool: keep history in ~/.augeas/history
933   - add aug_srun API function; this makes it possible to run a sequence of
934     commands through the API
935   - aug_mv: report error AUG_EMVDESC on attempts to move a node into one of
936     its descendants
937   - path expressions: allow whitespace inside names, making '/files/etc/foo
938     bar/baz' a legal path, but parse [expr1 or expr2] and [expr1 and expr2]
939     as the logical and/or of expr1 and expr2
940   - path expressions: interpret escape sequences in regexps; since '.' does
941     not match newlines, it has to be possible to write '.|\n' to match any
942     character
943   - path expressions: allow concatenating strings and regexps; add
944     comparison operator '!~'; add function 'glob'; allow passing a nodeset
945     to function 'regexp'
946   - store the names of the functions available in path expressions under
947     /augeas/version
948   - fix several smaller memory leaks
949   - Lens changes/additions
950     * Aliases: allow spaces and commas in aliases (Mathieu Arnold)
951     * Grub: allow "bootfs" Solaris/ZFS extension for dataset name, bug #201
952       (Dominic Cleal); allow kernel path starting with a BIOS device,
953       bug #199
954     * Inifile: allow multiline values
955     * Php: include files from Zend community edition, bug #210
956     * Properties: new lens for Java properties files, bug #194 (Craig Dunn)
957     * Spacevars: autoload two ldap files, bug #202 (John Morrissey)
958     * Sudoers: support users:groups format in a Runas_Spec line, bug #211;
959       add CSW paths (Dominic Cleal)
960     * Util: allow comment_or_eol to match whitespace-only comments,
961       bug #205 (Dominic Cleal)
962     * Xorg: accept InputClass section; autoload from /etc/X11/xorg.conf.d,
963       bug #197
964
965 0.8.1 - 2011-04-15
966   - augtool: respect autosave flag in oneshot mode, bug #193; fix segfault
967     caused by unmatched bracket in path expression, bug #186
968   - eliminate a global variable in the lexer, fixes BZ 690286
969   - replace an erroneous assert(0) with a proper error message when none of
970     the alternatives in a union match during saving, bug #183
971   - improve AIX support
972   - Lens changes/additions
973     * Access: support the format @netgroup@@nisdomain, bug #190
974     * Fstab: fix parsing of SELinux labels in the fscontext option (Matt Booth)
975     * Grub: support 'device' directive for UEFI boot, bug #189; support
976       'configfile' and 'background' (Onur Küçük)
977     * Httpd: handle continuation lines (Bill Pemberton); autoload
978       httpd.conf on Fedora/RHEL, BZ 688149; fix support for single-quoted
979       strings
980     * Iptables: support --tcp-flags, bug #157; allow blank and comment
981       lines anywhere
982     * Mysql: include /etc/my.cnf used on Fedora/RHEL, BZ 688053
983     * NagiosCfg: parse setting multiple values on one line (Sebastien Aperghis)
984     * NagiosObjects: process /etc/nagios3/objects/*.cfg (Sebastien Aperghis)
985     * Nsswitch: support 'sudoers' as a database, bug #187
986     * Shellvars: autoload /etc/rc.conf used in FreeBSD (Rich Jones)
987     * Sudoers: support '#include' and '#includedir', bug #188
988     * Yum: exclude /etc/yum/pluginconf.d/versionlock.list (Bill Pemberton)
989
990 0.8.0 - 2011-02-22
991   - add new 'square' lens combinator
992   - add new aug_span API function
993   - augtool: short options for --nostdinc, --noload, and --noautoload
994   - augtool: read commands from tty after executing file with --interactive
995   - augtool: add --autosave option
996   - augtool: add --span option to load nodes' span
997   - augtool: add span command to get the node's span according to the input
998     file
999   - augtool: really be quiet when we shouldn't be echoing
1000   - fix segfault in get.c with L_MAYBE lens; bug #180
1001   - fix segfault when a path expression called regexp() with an invalid
1002     regexp; bug #168
1003   - improved vim syntax file
1004   - replace augtest by test-augtool.sh to obviate the need for Ruby to run
1005     tests
1006   - use sys_wait module from gnulib; bug #164
1007   - Lens changes/additions
1008     * Access: new lens for /etc/security/access.conf (Lorenzo Dalrio)
1009     * Crypttab: new lens for /etc/crypttab (Frederic Lespez)
1010     * Dhcpd: new lens
1011     * Exports: accept hostnames with dashes; bug #169 (Sergio Ballestrero)
1012     * Grub: add various Solaris extensions (Dominic Cleal); support "map"
1013       entries, bug #148
1014     * Httpd: new lens for Apache config
1015     * Inifile: new lens indented_title_label
1016     * Interfaces: allow indentation for "iface" entries; bug #182
1017     * Mysql: change default comment delimiter from ';' to '#'; bug #181
1018     * Nsswitch: accept various add'l databases; bug #171
1019     * PuppetFileserver: new lens for Puppet's fileserver.conf (Frederic Lespez)
1020     * REsolv: allow comments starting with ';'; bug #173 (erinn)
1021     * Shellvars: autoload various snmpd config files; bug #170 (erinn)
1022     * Solaris_system: new lens for /etc/system on Solaris (Dominic Cleal)
1023     * Util (comment_c_style, empty_generic, empty_c_style): new lenses
1024     * Xml: generic lens to process XML files
1025     * Xorg: make "position" in "screen" optional; allow "Extensions"
1026       section; bug #175 (omzkk)
1027
1028 0.7.4 - 2010-11-19
1029   - augtool: new clearm command to parallel setm
1030   - augtool: add --file option
1031   - Fix SEGV under gcc 4.5, caused by difficulties of the gcc optimizer
1032     handling bitfields (bug #149; rhbz #651992)
1033   - Preserve parse errors under /augeas//error: commit 5ee81630, released
1034     in 0.7.3, introduced a regression that would cause the loss of parse
1035     errors; bug #138
1036   - Avoid losing already parsed nodes under certain circumstances; bug #144
1037   - Properly record the new mtime of a saved file; previously the mtime in
1038     the tree was reset to 0 when a file was saved, causing unnecessary file
1039     reloads
1040   - fix a SEGV when using L_MAYBE in recursive lens; bug #136
1041   - Incompatible lens changes
1042     * Fstab: parse option values
1043     * Squid: various improvements, see bug #46;
1044     * Xinetd: map service names differently
1045   - Lens changes/additions
1046     * Aptsources: map comments properly, allow indented lines; bug #151
1047     * Grub: add indomU setting for Debian. Allow '=' as separator in title;
1048       bug #150
1049     * Fstab: also process /etc/mtab
1050     * Inetd: support rpc services
1051     * Iptables: allow underscore in chain names
1052     * Keepalived: new lens for /etc/keepalived/keepalived.conf
1053     * Krb5: allow digits in realm names; bug #139
1054     * Login_defs: new lens for /etc/login.defs (Erinn Looney-Triggs)
1055     * Mke2fs: new lens for /etc/mke2fs.conf
1056     * Nrpe: new lens for Nagios nrpe (Marc Fournier)
1057     * Nsswitch: new lens for /etc/nsswitch.conf
1058     * Odbc: new lens for /etc/odbc.ini (Marc Fournier)
1059     * Pg_hba: New lens; bug #140 (Aurelien Bompard). Add system path on
1060       Debian; bug #154 (Marc Fournier)
1061     * Postfix_master: parse arguments in double quotes; bug #69
1062     * Resolv: new lens for /etc/resolv.conf
1063     * Shells: new lens for /etc/shells
1064     * Shellvars: parse ulimit builtin
1065     * Sudoers: load file from /usr/local/etc (Mathieu Arnold) Allow
1066       'visiblepw' parameter flag; bug #143. Read files from /etc/sudoers.d
1067     * Syslog: new lens for /etc/syslog.conf (Mathieu Arnold)
1068     * Util: exclude dpkg backup files; bug #153 (Marc Fournier)
1069     * Yum: accept continuation lines for gpgkey; bug #132
1070
1071 0.7.3 - 2010-08-06
1072   - aug_load: only reparse files that have actually changed; greatly speeds
1073     up reloading
1074   - record all variables in /augeas/variables, regardless of whether they
1075     were defined with aug_defvar or aug_defnode; make sure
1076     /augeas/variables always exists
1077   - redefine all variables (by reevaluating their corresponding
1078     expressions) after a aug_load. This makes variables 'sticky' across
1079     loads
1080   - fix behavior of aug_defnode to not fail when the expression evaluates
1081     to a nonempty node set
1082   - make gnulib a git submodule so that we record the gnulib commit off
1083     which we are based
1084   - allow 'let rec' with non-recursive RHS
1085   - fix memory corruption when reloading a tree into which a variable
1086     defined by defnode points (BZ 613967)
1087   - plug a few small memory leaks, and some segfaults
1088   - Lens changes/additions
1089     * Device_map: new lens for grub's device.map (Matt Booth)
1090     * Limits: also look for files in /etc/security/limits.d
1091     * Mysql: new lens (Tim Stoop)
1092     * Shellvars: read /etc/sysconfig/suseconfig (Frederik Wagner)
1093     * Sudoers: allow escaped spaces in user/group names (Raphael Pinson)
1094     * Sysconfig: lens for the shell subdialect used in /etc/sysconfig; lens
1095       strips quotes automatically
1096
1097 0.7.2 - 2010-06-22
1098   - new API call aug_setm to set/create multiple nodes simultaneously
1099   - record expression used in a defvar underneath /augeas/variables
1100   - Lens changes/additions
1101     * Group: add test for disabled account (Raphael Pinson)
1102     * Grub: handle comments within a boot stanza
1103     * Iptables: also look for /etc/iptables-save (Nicolas Valcarcel)
1104     * Modules_conf: new lens for /etc/modules.conf (Matt Booth)
1105     * Securetty: added handling of emtpy lines/comments (Frederik Wagner)
1106     * Shellvars: added SuSE sysconfig puppet files (Frederik Wagner),
1107       process /etc/environment (seph)
1108     * Shellvars_list: Shellvars-like lens that treats strings of
1109       space-separated words as lists (Frederik Wagner)
1110
1111 0.7.1 - 2010-04-21
1112   - new primitive lens 'value' to set value of a node to a constant,
1113     similar to 'label' for the key (see http://augeas.net/docs/lenses.html)
1114   - new builtins for printing and getting the types of a lens (see
1115     http://augeas.net/docs/builtins.html)
1116   - add unit type to lens language; allow '_' as an identifier in let's to
1117     force evaluation for side effect only
1118   - Various fixes for Solaris. Augeas now builds cleanly on Solaris 5.10,
1119     and most of the tests pass. The three tests that fail all fail because
1120     the test scripts have Linux idiosyncrasies. This needs to be addressed
1121     in a future release. Much thanks to Dagobert Michelsen and the OpenCSW
1122     project (http://www.opencsw.org/) for providing me with access to their
1123     build farm.
1124   - fix crash when recursive lens was used in a nonrecursive lens (bug #100)
1125   - context free parser/recursive lenses: handle 'l?' properly (bug #119);
1126     distinguish between successful parse and parse with an error at end of
1127     input; do caller filtering to avoid spurious ambiguous parses with
1128     grammars containing epsilon productions
1129   - aug_get: return -1 when multiple nodes match (bug #121)
1130   - much better error message when iteration stops prematurely during
1131     put/create than the dreaded 'Short iteration'
1132   - augtool: ignore empty lines from stdin; report error when get fails
1133   - fix memory leak in file_info (transform.c); this was leaking a file
1134     name every time we loaded a file (Laine Stump)
1135   - nicer error message when typechecker spots ambiguity in atype
1136   - libfa: handle '(a|)' and 'r{min,}' properly
1137   - locale independence: handle a literal '|' properly on systems that lack
1138     use_locale
1139   - bootstrap: pull in isblank explicitly (needed on Solaris)
1140   - src/lens.c (lns_check_rec): fix refcounting mistake on error path (bug #120)
1141   - fix SEGV when loading empty files
1142   - improvements in handling some OOM's
1143   - Lens changes/additions
1144     * Approx: lens and test for the approx proxy server (Tim Stoop)
1145     * Cgconfig: lens and tests for libcgroup config (Ivana Hutarova Varekova)
1146     * Cgrules: new lens and test (Ivana Hutarova Varekova)
1147     * Cobblermodules: lens + tests for cobbler's modules.conf (Shannon Hughes)
1148     * Debctrl: new lens and test (Dominique Dumont)
1149     * Dput: add 'allow_dcut' parameter (bug #105) (Raphael Pinson)
1150     * Dhclient: add rfc code parsing (bug #107) (Raphael Pinson)
1151     * Group: handle disabled passwords
1152     * Grub: support empty kernel parameters, Suse incl.s (Frederik Wagner)
1153     * Inittab: allow ':' in the process field (bug #109)
1154     * Logrotate: tolerate whitespace at the end of a line (bug #101); files
1155       can be separated by newlines (bug #104) (Raphael Pinson)
1156     * Modprobe: Suse includes (Frederik Wagner)
1157     * Nagisocfg: lens and test for /etc/nagios3/nagios.cfg (Tim Stoop)
1158     * Ntp: add 'tinker' directive (bug #103)
1159     * Passwd: parse NIS entries on Solaris
1160     * Securetty: new lens and test for /etc/securetty (Simon Josi)
1161     * Shellvars: handle a bare 'export VAR'; Suse includes (Frederik
1162       Wagner); allow spaces after/before opening/closing parens for array
1163     * Sshd: allow optional arguments in subsystem commands (Matt Palmer)
1164     * Sudoers: allow del_negate even if no negate_node is found (bug #106)
1165                (Raphael Pinson); accept 'secure_path' (BZ 566134) (Stuart
1166                Sears)
1167
1168 0.7.0 - 2010-01-14
1169   - Support for context-free lenses via the 'let rec' keyword. The syntax
1170     is experimental, though the feature is here to stay. See
1171     lenses/json.aug for an example of what's possible with that.
1172   - Support for case-insensitive regular expressions. Simply append 'i' to
1173     a regexp literal to make it case-insensitive, e.g. /hello/i will match
1174     all variations of hello, regardless of case.
1175   - Major revamp of augtool. In particular, path expressions don't need to
1176     be quoted anymore. The online help has been greatly improved.
1177   - Check during load/save that each file is only matched by one transform
1178     under /augeas/load. If there are multiple transforms for a file, the
1179     file is skipped.
1180   - New error codes AUG_ENOLENS and AUG_EMXFM
1181   - Do not choke on non-existing lens during save
1182   - Change the metadata for files under /augeas/files slightly: the node
1183     /augeas/files/$PATH/lens now has the name of the lens used to load the
1184     file; the source location of that lens has moved to
1185     /augeas/files/$PATH/lens/info
1186   - New public functions fa_nocase, fa_is_nocase, and fa_expand_nocase in
1187     libfa
1188   - Various smaller bug fixes, performance improvements and improved error
1189     messages
1190   - Lens changes/additions
1191     * Cobblersettings: new lens and test (Bryan Kearney)
1192     * Iptables: allow quoted strings as arguments; handle both negation
1193       syntaxes
1194     * Json: lens and tests for generic Json files
1195     * Lokkit: allow '-' in arguments
1196     * Samba: accept entry keys with ':' (Partha Aji)
1197     * Shellvars: allow arrays that span multiple lines
1198     * Xinetd (name): fix bad '-' in character class
1199
1200 0.6.0 - 2009-11-30
1201   - Add error reporting API (aug_error and related calls); use to report
1202     error details in a variety of places
1203   - Path expressions: add regexp matching; add operator '|' to form union
1204     of nodesets (ticket #89)
1205   - Tolerate non-C locales from the environment (ticket #35); it is no
1206     longer necessary to set the locale to C from the outside
1207   - use stpcpy/stpncpy from gnulib (needed for building on Solaris)
1208   - Properly check regexp literals for syntax errors (ticket #93)
1209   - Distribute and install vim syntax files (ticket #97)
1210   - many more bugfixes
1211   - Lens changes/additions
1212     * Apt_preferences: support version pin; filter out empty lines (Matt
1213       Palmer)
1214     * Cron: variables can contain '_' etc. (ticket #94)
1215     * Ethers: new lens for /etc/ethers (Satoru SATOH)
1216     * Fstab: allow '#' in spec (ticket #95)
1217     * Group: allow empty password field (ticket #95)
1218     * Inittab: parse end-of-line comments into a #comment
1219     * Krb5: support kdc section; add v4_name_convert subsection to
1220       libdefaults (ticket #95)
1221     * Lokkit: add mising eol to forward_port; make argument for --trust
1222       more permissive
1223     * Pam: allow '-' before type
1224     * Postfix_access: new lens for /etc/postfix/access (Partha Aji)
1225     * Rx: allow '!' in device_name
1226     * Sudoers: allow certain backslash-quoted characters in a command (Matt
1227       Palmer)
1228     * Wine: new lens to read Windows registry files
1229
1230 0.5.3 - 2009-09-14
1231   - Match trees on label + value, not just label; see
1232     tests/modules/pass_strip_quotes.aug for how that enables stripping
1233     quotes
1234   - Do not trip over symlinks to files on a different device during save;
1235     fixes problems with writing to /etc/grub.conf on Fedora/RHEL
1236   - API (defnode): always add the newly created node into the resulting
1237     nodeset
1238   - Add preceding-sibling and following-sibling axes to path expressions
1239   - augtool, augparse: add --version option (bug #88)
1240   - Change file info recorded under /augeas/files/FILE/*: remove lens/id
1241     and move lens/info to lens
1242   - Properly record new files under /augeas/files (bug #78)
1243   - aug_load: clean up variables to avoid dangling references (bug #79)
1244   - Make Augeas work on AIX
1245   - Ignore anything but regular files when globbing
1246   - Add 'clear' function to language for use in unit tests
1247   - typechecker: print example trees in tree format
1248   - libfa: properly support regexps with embedded NUL's
1249   - Lens changes/additions
1250     * Xorg: revamped, fixes various parse failures (Matt Booth)
1251     * Inetd: new lens and test (Matt Palmer)
1252     * Multipath: new lens and test
1253     * Slapd: also read /etc/openldap.slapd.conf (bug #85)
1254
1255 0.5.2 - 2009-07-13
1256   - Make Augeas work on Mac OS/X (bug #66) (Anders Bjoerklund)
1257   - reduce symbols exported from libfa with linker script
1258   - add --echo option to augtool
1259   - require Automake 1.11 (Jim Meyering)
1260   - avoid spurious save attempts for freshly read files
1261   - Lens changes/additions
1262     * Inittab: schema change: use 'id' field as name of subtree for a line,
1263       instead of a generated number. Map comments as '#comment' (Matt Palmer)
1264     * Logrotate: make owner/group in create statement optional, allow
1265       filenames to be indented
1266     * Ntp: allow additional options for server etc. (bug #72)
1267     * Shellvars: allow backticks as quote characters (bug #74)
1268     * Yum: also read files in /etc/yum/pluginconf.d (Marc Fournier)
1269
1270 0.5.1 - 2009-06-09
1271   - augeas.h: flag AUG_NO_MODL_AUTOLOAD suppresses initial loading
1272               of modules; exposed as --noautoload in augtool
1273   - augtool: don't prompt when input is not from tty (Raphael Pinson)
1274   - augparse: add --notypecheck option
1275   - path expressions: allow things like '/foo and /bar[3]' in predicates
1276   - Lens changes/additions
1277     * Aliases: map comments as #comment (Raphael Pinson)
1278     * Build, Rx, Sep: new utility modules (Raphael Pinson)
1279     * Cron: new lens (Raphael Pinson)
1280     * Dnsmasq: process files in /etc/dnsmasq.d/* (ticket #65)
1281     * Grub: parse kernel and module args into separate nodes; parse
1282             arguments for 'serial', 'terminal', and 'chainloader'; allow
1283             optional argument for 'savedefault'
1284     * Interfaces: make compliant with actual Debian spec (Matt Palmer)
1285     * Iptables: relax regexp for chain names; allow comment lines mixed
1286                 in with chains and rules (ticket #51)
1287     * Logrotate: allow '=' as separator (ticket #61); make newline at end
1288                  of scriptlet optional
1289     * Modprobe: handle comments at end of line
1290     * Ntp: parse fudge record (Raphael Pinson); parse all directives in
1291            default Fedora ntp.conf; process 'broadcastdelay', 'leapfile',
1292            and enable/disable flags (ticket #62)
1293     * Pbuilder: new lens for Debian's personal builder (Raphael Pinson)
1294     * Php: add default path on Fedora/RHEL (Marc Fournier)
1295     * Squid: handle indented entries (Raphael Pinson)
1296     * Shellvars: map 'export' and 'unset'; map comments as #comment
1297                  (Raphael Pinson)
1298     * Sudoers: allow backslashes inside values (ticket #60) (Raphael Pinson)
1299     * Vsftpd: map comments as #comment; handle empty lines; find
1300               vsftpd.conf on Fedora/RHEL
1301     * Xinetd: map comments as #comment (Raphael Pinson)
1302
1303 0.5.0 - 2009-03-27
1304   - Clean up interface for libfa; the interface is now considered stable
1305   - New aug_load API call; allows controlling which files to load by
1306     modifying /augeas/load and then calling aug_load; on startup, the
1307     transforms marked with autoload are reported under /augeas/load
1308   - New flag AUG_NO_LOAD for aug_init to keep it from loading files on
1309     startup; add --noload option to augtool
1310   - New API calls aug_defvar and aug_defnode to define variables for
1311     path expressions; exposed as 'defvar' and 'defnode' in augtool
1312   - Lenses distributed with Augeas are now installed in
1313     /usr/share/augeas/lenses/dist, which is searched after
1314     /usr/share/augeas/lenses, so that lenses installed by other packages
1315     take precedence
1316   - New program examples/fadot to draw various finite automata (Francis
1317     Giraldeau)
1318   - Report line number and character offset in the tree when parsing a
1319     file with a lens fails
1320   - Fix error in propagation of dirty flag, which could lead to only
1321     parts of a tree being saved when multiple files were modified
1322   - Flush files to disk before moving them
1323   - Fix a number of memory corruptions in the XPath evaluator
1324   - Several performance improvements in libfa
1325   - Lens changes/additions
1326     * Grub: process embedded comments for update-grub (Raphael Pinson)
1327     * Iptables: new lens for /etc/sysconfig/iptables
1328     * Krb5: new lens for /etc/krb5.conf
1329     * Limits: map dpmain as value of 'domain' node, not as label
1330               (Raphael Pinson)
1331     * Lokkit: new lens for /etc/sysconfig/system-config-firewall
1332     * Modprobe: new lens for /etc/modprobe.d/*
1333     * Sudoers: more finegrained parsing (ticket #48) (Raphael Pinson)
1334
1335 0.4.2 - 2009-03-09
1336   - Do not delete files that had an error upon parsing
1337   - For Fedora/EPEL RPM's, BuildRequire libselinux-devel (bug #26)
1338   - Bug fixes in path expressions
1339     * for numbers, the meaning of '<' and '<=' was reversed
1340   - Always create an entry /files in aug_init
1341   - New builtin 'Sys' module with functions 'getenv' and 'read_file',
1342     the latter reads a the contents of a file into a string
1343   - Lens changes/additions
1344     * Postfix_main: handle continuation lines
1345     * Bbhosts, Hosts, Logrotate, Sudoers: label comment nodes as '#comment'
1346     * Sshd: map comments as '#comment' nodes
1347     * Squid: add all keywords from squid 2.7 and 3 (Francois Deppierraz)
1348     * Logrotate: process unit suffixes for 'size' and 'minsize'
1349
1350 0.4.1 - 2009-03-02
1351   - Remove files when their entire subtree under /files is deleted
1352   - Various bug fixes and syntax enhancements for path expressions
1353     (see tests/xpath.tests for details)
1354   - Evaluate path expressions with multiple predicates correctly
1355   - Fix incorrect setting of /augeas/events/saved
1356   - Major cleanup of matching during get; drastically improves
1357     performance for very large (on the order of 10k lines) config files
1358   - Small performance improvement in the typechecker
1359   - Reject invalid character sets like [x-u] during typecheck
1360   - Build with compile warnings set to 'maximum' instead of 'error', so
1361     that builds on platforms with broken headers will work out of the box
1362   - Lens changes/additions
1363     * Util.stdexcl now excludes .augsave and .augnew files
1364     * Logrotate: allow 'yearly' schedule, spaces around braces
1365     * Ntp: fix so that it processes ntp.conf on Fedora 10
1366     * Services: lens for /etc/services (Raphael Pinson)
1367     * Xorg: new lens and tests (Raphael Pinson)
1368
1369 0.4.0 - 2009-02-06
1370   - Much improved and expanded support for path expressions in the public
1371     API. See doc/xpath.txt and tests/xpath.tests for details.
1372   - Solaris support: builds at least on OpenSolaris 2008.11
1373   - Lens changes/additions
1374     * Grub: support color and savedefault
1375     * DarkIce: new lens for http://darkice.tyrell.hu/ (Free Ekanayaka)
1376
1377 0.3.6 - 2009-01-26
1378   - report version in /augeas/version, report legal save modes in
1379     /augeas/version/save/mode for feature tests/version checking
1380   - dynamically change behavior of aug_save; add noop save mode
1381     (Bryan Kearney)
1382   - plug memory leak, more portable SELinux test (Jim Meyering)
1383   - fix bz #478619 - do not use abspath (Arnaud Gomes-do-Vale)
1384   - fix segfault when branch in a union does not have a ktype
1385   - Lens changes/additions
1386     * Dpkg: new lens for Debian's dpkg.cfg (Robin Lee Powell)
1387     * Limits: new lens for /etc/security/limits.conf (Free Ekanayaka)
1388     * Soma: new lens for http://www.somasuite.org/ config
1389       (Free Ekanayaka)
1390     * Php, Gdm: fix minor regexp error (Marc Fournier)
1391       expand filter for Php config files (Robin Lee Powell)
1392     * Phpvars: whitspace fixes (Free Ekanayaka)
1393     * Puppet: accept indented puppet.conf (ticket #25)
1394
1395 0.3.5 - 2008-12-23
1396   - add an option to rewrite files by overwriting their contents instead of
1397     putting the new file in place atomically with rename(2); file contents
1398     are only copied after rename fails with EXDEV or EBUSY, and only if the
1399     node /augeas/save/copy_if_rename_fails (fix #32)
1400   - saving of backup (.augsave) files now works even if the original and
1401     backup files are on different devices
1402   - major refactoring of how path expressions are handled internally. Fixes
1403     a number of bugs and oddities (e.g. tickets #7 and #23)
1404   - fix a bug in fa_as_regexp: a '.' wasn't escaped, ultimately leading to
1405     spurious errors from the typechecker
1406   - Lens changes/additions
1407     * Group: process /etc/group (Free Ekanayaka)
1408     * Passwd: process /etc/passwd (Free Ekanayaka)
1409     * Phpvars: process files that set PHP variables, in particular
1410       /etc/squirrelmail/config.php (Free Ekanayaka)
1411     * Rsyncd: process /etc/rsyncd.conf (Marc Fournier)
1412     * Shellvars: process /etc/arno-iptables-firewall/debconf.cfg and
1413       /etc/cron-apt/config (Free Ekanayaka), load /etc/sysconfig/sendmail
1414     * Postfix: process postfix's main.cf and master.cf (Free Ekanayaka)
1415     * Squid: new lens for squid.conf (Free Ekanayaka)
1416     * Webmin: new lens (Free Ekanayaka)
1417     * Xinetd: make sure equal sign is surrounded by spaces (#30)
1418     * Sshd: change the structure of Condition subtrees (Dominique Dumont)
1419
1420 0.3.4 - 2008-11-05
1421   - fix saving of backup files; in 0.3.3, when AUG_SAVE_BACKUP was passed
1422     to aug_init, aug_save would always fail
1423
1424 0.3.3 - 2008-10-24
1425   - restore the behavior of aug_save; in 0.3.2, aug_save broke API by
1426     returning the number of files changed on success instead of 0
1427
1428 0.3.2 - 2008-10-21
1429   - saving now reports which files were actually changed in
1430     /augeas/events/saved; aug_save also returns the number of files
1431     that were changed
1432   - preserve file owner, permissions and SELinux context when changing a file.
1433   - make saving idempotent, i.e. when a change to the tree does not result
1434     in changes to the actual file's content, do not touch the original file
1435   - report an error if there are nodes in the tree with a label that
1436     is not allowed by the lens
1437   - quietly append a newline to files that do not have one
1438   - generate lens documentation using NaturalDocs and publish those
1439     on the Auegas website (Raphael Pinson)
1440   - Lens changes/additions
1441     * Grub: support the 'password' directive (Joel Nimety)
1442     * Grub: support 'serial' and 'terminal' directives (Sean E. Millichamp)
1443     * Samba: change default indentation and separators (Free Ekanayaka)
1444     * Logrotate: process tabooext, add dateext flag (Sean E. Millichamp)
1445     * Sshd: Cleaner handling of 'Match' blocks (Dominique Dumont)
1446     * Monit: new lens (Free Ekanayaka)
1447     * Ldap: merge with Spacevars (Free Ekanayaka)
1448     * Shellvars: support /etc/default (Free Ekanayaka)
1449     * Shellvars: handle space at the end of a line
1450
1451 0.3.1 - 2008-09-04
1452   - Major performance improvement when processing huge files, reducing some
1453     O(n^2) behavior to O(n) behavior. It's now entirely feasible to
1454     manipulate for example /etc/hosts files with 65k lines
1455   - Handle character escapes '\x' in regular expressions in compliance with
1456     Posix ERE
1457   - aug_mv: fix bug when moving at the root level
1458   - Fix endless loop when using a mixed-case module name like MyMod.lns
1459   - Typecheck del lens: for 'del RE STR', STR must match RE
1460   - Properly typecheck the '?' operator, especially the atype; also allow
1461     '?' to be applied to lenses that contain only 'store', and do not
1462     produce tree nodes.
1463   - Many new/improved lenses
1464     * many lenses now map comments as '#comment' nodes instead of just
1465       deleting them
1466     * Sudoers: added (Raphael Pinson)
1467     * Hosts: map comments into tree, handle whitespace and comments
1468              at the end of a line (Kjetil Homme)
1469     * Xinetd: allow indented comments and spaces around "}" (Raphael Pinson)
1470     * Pam: allow comments at the end of lines and leading spaces
1471            (Raphael Pinson)
1472     * Fstab: map comments and support empty lines (Raphael Pinson)
1473     * Inifile: major revamp (Raphael Pinson)
1474     * Puppet: new lens for /etc/puppet.conf (Raphael Pinson)
1475     * Shellvars: handle quoted strings and arrays (Nahum Shalman)
1476     * Php: map entries outside of sections to a '.anon' section
1477            (Raphael Pinson)
1478     * Ldap: new lens for /etc/ldap.conf (Free Ekanayaka)
1479     * Dput: add allowed_distributions entry (Free Ekanayaka)
1480     * OpenVPN: new lens for /etc/openvpn/{client,server}.conf (Raphael Pinson)
1481     * Dhclient: new lens for /etc/dhcp3/dhclient.conf (Free Ekanayaka)
1482     * Samba: new lens for /etc/samba/smb.conf (Free Ekanayaka)
1483     * Slapd: new lens for /etc/ldap/slapd.conf (Free Ekanayaka)
1484     * Dnsmasq: new lens for /etc/dnsmasq.conf (Free Ekanayaka)
1485     * Sysctl: new lens for /etc/sysctl.conf (Sean Millichamp)
1486
1487 0.3.0 - 2008-08-07
1488   - Add aug_mv call to public API
1489   - Do not clobber symlinks, instead write new files to target of symlink
1490   - Fail 'put' when tree has invalid entries
1491   - Set exit status of augtool
1492   - Avoid picking special characters, in particular '\0', in examples (libfa)
1493   - Store system errors, using strerror, in the tree during writing of files
1494   - New lenses
1495     * Generic inifile module (Raphael Pinson)
1496     * logrotate (Raphael Pinson)
1497     * /etc/ntp.conf (Raphael Pinson)
1498     * /etc/apt/preferences (Raphael Pinson)
1499     * bbhosts for Big Brother [http://www.bb4.org/] (Raphael Pinson)
1500     * php.ini (Raphael Pinson)
1501
1502 0.2.2 - 2008-07-18
1503   - Fix segfault in store.put on NULL values
1504   - Properly move default lens dir with DATADIR (Jim Meyering)
1505   - Fix 'short iteration' error on get/parse of empty string; this bug
1506     made it impossible to save into a new file
1507   - Add 'insa' and 'insb' primitives to allow insertion from
1508     put unit tests
1509   - aug_insert: handle insertion before first child properly
1510   - New lenses
1511     * /etc/exports: NFS exports
1512     * /etc/dput.cf: Debian's dput (Raphael Pinson)
1513     * /etc/aliases: don't require whitespace after comma (Greg Swift)
1514
1515 0.2.1 - 2008-07-01
1516   - Address some compilation issues found on Ubuntu/Debian unstable
1517   - Fix segfault when aug_init/close are called multiple times
1518   - Man page for augparse
1519   - New lenses
1520     * /etc/sysconfig/selinux
1521     * Bugfixes for grub.conf
1522
1523 0.2.0 - 2008-06-05
1524   - Augeas is now much more portable
1525     * Pull in gnulib on non-glibc systems
1526     * Augeas now builds and runs on FreeBSD (possibly others, too)
1527   - Various fixes for memory corruption and the like
1528     (Jim Meyering, James Antill)
1529   - New lenses
1530     * vsftpd.conf
1531     * various bugfixes in existing lenses
1532
1533 0.1.1 - 2008-05-16
1534   - Add subtraction of regexps to the language, for example
1535       let re = /[a-z]+/ - /(Allow|Deny)Users/
1536   - Report errors during get/put in the tree; added subnodes to
1537     /augeas/files/PATH/error for that purpose
1538   - Many many bugfixes:
1539     * plugged all known memory leaks
1540     * fixed typecheck for lens union (l1 | l2) which was plain wrong
1541     * reduce overall memory usage by releasing unused compiled regexps
1542     * further performance improvements in libfa
1543     * check that values match the regexps in STORE when saving
1544   - libfa can now convert an automaton back to a regular expression
1545     (FA_AS_REGEXP)
1546   - New lenses
1547     * /etc/fstab
1548     * /etc/xinetd.conf and /etc/xinetd.d/*
1549
1550 0.1.0 - 2008-05-01
1551   - Various changes to public API:
1552     * Remove aug_exists from public API, and merge functionality into aug_get
1553     * Do not hide pointer behind typedef; instead Augeas 'handle' type is now
1554       struct augeas, typedef'd to augeas (Jim Meyering)
1555     * Const-correctness of public API, return error indication
1556       from aug_print (Jim Meyering)
1557     * Make buildable on Debian Etch (remove -fstack-protector from compiler
1558       switches)
1559   - Public API is now stable, and existing calls will be supported without
1560     further changes
1561   - New schema:
1562     * /etc/sysconfig/network-scripts/ifcfg-* (Alan Pevec)
1563     * Assorted other files from /etc/sysconfig (the ones that just set
1564       shell variables)
1565     * /etc/apt/sources.list and /etc/apt/sources.list.d/* (Dean Wilson)
1566   - Man page for augtool (Dean Wilson)
1567
1568 0.0.8 - 2008-04-16
1569   - Complete rewrite of the language for schema descriptions
1570
1571 0.0.7 - 2008-03-14
1572   - Typecheck lenses; in particular, discover and complain about ambiguous
1573     concatenation and iteration
1574   - Enable typechecking for augparse by default, and for augtool via the
1575     '-c' flag
1576   - Fixed lens definitions in spec/ to pass typechecking. They contained
1577     quite a few stupid and subtle problems
1578   - Greatly improved libfa performance to make typechecking reasonably
1579     fast. Typechecking cmfm.aug went from more than two hours to under two
1580     seconds
1581
1582 0.0.6 - 2008-03-05
1583   - Make it possible to overwrite files when saving with and without
1584     backups
1585   - Take the filesystem root as an optional argument to aug_init
1586   - Expose these two things as command line options in augtool
1587
1588 0.0.5 - 2008-03-05
1589   - Changed public API to contain explicit reference to augeas_t
1590     structure. This makes it easier to write threadsafe code using Augeas
1591   - Added libfa, finite automata library, though it's not yet used by
1592     Augeas
1593
1594 0.0.4 - 2008-02-25
1595   - package as RPM and make sure Augeas can be build on Fedora/RHEL
1596
1597 0.0.3 - 2008-02-25
1598   - further rework; file processing now resembles Boomerang lenses much
1599     more closely
1600   - major revamp of the internal tree representation (ordered tree where
1601     multiple children can have the same label, including NULL labels)
1602   - move away from LL(1) parsing in favor of regular languages, since they
1603     enable much better ahead-of-time checks (which are not implemented yet)
1604
1605 0.0.2 - 2008-01-29:
1606   - completely reworked
1607   - processing of files is now based on a textual description of the
1608     structure of the files (basically a LL(1) grammar)
1609
1610 0.0.1 - 2007-12-01:
1611   - First release.
1612   - Public API and basic tree data structure.
1613   - Record scanning works.
1614   - Providers for pam.d, inittab and /etc/hosts
1615   - Simple tests and test driver