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