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