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