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