0.5.3 - 2009-09-14 - Match trees on label + value, not just label; see tests/modules/pass_strip_quotes.aug for how that enables stripping quotes - Do not trip over symlinks to files on a different device during save; fixes problems with writing to /etc/grub.conf on Fedora/RHEL - API (defnode): always add the newly created node into the resulting nodeset - Add preceding-sibling and following-sibling axes to path expressions - augtool, augparse: add --version option (bug #88) - Change file info recorded under /augeas/files/FILE/*: remove lens/id and move lens/info to lens - Properly record new files under /augeas/files (bug #78) - aug_load: clean up variables to avoid dangling references (bug #79) - Make Augeas work on AIX - Ignore anything but regular files when globbing - Add 'clear' function to language for use in unit tests - typechecker: print example trees in tree format - libfa: properly support regexps with embedded NUL's - Lens changes/additions * Xorg: revamped, fixes various parse failures (Matt Booth) * Inetd: new lens and test (Matt Palmer) * Multipath: new lens and test * Slapd: also read /etc/openldap.slapd.conf (bug #85) 0.5.2 - 2009-07-13 - Make Augeas work on Mac OS/X (bug #66) (Anders Bjoerklund) - reduce symbols exported from libfa with linker script - add --echo option to augtool - require Automake 1.11 (Jim Meyering) - avoid spurious save attempts for freshly read files - Lens changes/additions * Inittab: schema change: use 'id' field as name of subtree for a line, instead of a generated number. Map comments as '#comment' (Matt Palmer) * Logrotate: make owner/group in create statement optional, allow filenames to be indented * Ntp: allow additional options for server etc. (bug #72) * Shellvars: allow backticks as quote characters (bug #74) * Yum: also read files in /etc/yum/pluginconf.d (Marc Fournier) 0.5.1 - 2009-06-09 - augeas.h: flag AUG_NO_MODL_AUTOLOAD suppresses initial loading of modules; exposed as --noautoload in augtool - augtool: don't prompt when input is not from tty (Raphael Pinson) - augparse: add --notypecheck option - path expressions: allow things like '/foo and /bar[3]' in predicates - Lens changes/additions * Aliases: map comments as #comment (Raphael Pinson) * Build, Rx, Sep: new utility modules (Raphael Pinson) * Cron: new lens (Raphael Pinson) * Dnsmasq: process files in /etc/dnsmasq.d/* (ticket #65) * Grub: parse kernel and module args into separate nodes; parse arguments for 'serial', 'terminal', and 'chainloader'; allow optional argument for 'savedefault' * Interfaces: make compliant with actual Debian spec (Matt Palmer) * Iptables: relax regexp for chain names; allow comment lines mixed in with chains and rules (ticket #51) * Logrotate: allow '=' as separator (ticket #61); make newline at end of scriptlet optional * Modprobe: handle comments at end of line * Ntp: parse fudge record (Raphael Pinson); parse all directives in default Fedora ntp.conf; process 'broadcastdelay', 'leapfile', and enable/disable flags (ticket #62) * Pbuilder: new lens for Debian's personal builder (Raphael Pinson) * Php: add default path on Fedora/RHEL (Marc Fournier) * Squid: handle indented entries (Raphael Pinson) * Shellvars: map 'export' and 'unset'; map comments as #comment (Raphael Pinson) * Sudoers: allow backslashes inside values (ticket #60) (Raphael Pinson) * Vsftpd: map comments as #comment; handle empty lines; find vsftpd.conf on Fedora/RHEL * Xinetd: map comments as #comment (Raphael Pinson) 0.5.0 - 2009-03-27 - Clean up interface for libfa; the interface is now considered stable - New aug_load API call; allows controlling which files to load by modifying /augeas/load and then calling aug_load; on startup, the transforms marked with autoload are reported under /augeas/load - New flag AUG_NO_LOAD for aug_init to keep it from loading files on startup; add --noload option to augtool - New API calls aug_defvar and aug_defnode to define variables for path expressions; exposed as 'defvar' and 'defnode' in augtool - Lenses distributed with Augeas are now installed in /usr/share/augeas/lenses/dist, which is searched after /usr/share/augeas/lenses, so that lenses installed by other packages take precedence - New program examples/fadot to draw various finite automata (Francis Giraldeau) - Report line number and character offset in the tree when parsing a file with a lens fails - Fix error in propagation of dirty flag, which could lead to only parts of a tree being saved when multiple files were modified - Flush files to disk before moving them - Fix a number of memory corruptions in the XPath evaluator - Several performance improvements in libfa - Lens changes/additions * Grub: process embedded comments for update-grub (Raphael Pinson) * Iptables: new lens for /etc/sysconfig/iptables * Krb5: new lens for /etc/krb5.conf * Limits: map dpmain as value of 'domain' node, not as label (Raphael Pinson) * Lokkit: new lens for /etc/sysconfig/system-config-firewall * Modprobe: new lens for /etc/modprobe.d/* * Sudoers: more finegrained parsing (ticket #48) (Raphael Pinson) 0.4.2 - 2009-03-09 - Do not delete files that had an error upon parsing - For Fedora/EPEL RPM's, BuildRequire libselinux-devel (bug #26) - Bug fixes in path expressions * for numbers, the meaning of '<' and '<=' was reversed - Always create an entry /files in aug_init - New builtin 'Sys' module with functions 'getenv' and 'read_file', the latter reads a the contents of a file into a string - Lens changes/additions * Postfix_main: handle continuation lines * Bbhosts, Hosts, Logrotate, Sudoers: label comment nodes as '#comment' * Sshd: map comments as '#comment' nodes * Squid: add all keywords from squid 2.7 and 3 (Francois Deppierraz) * Logrotate: process unit suffixes for 'size' and 'minsize' 0.4.1 - 2009-03-02 - Remove files when their entire subtree under /files is deleted - Various bug fixes and syntax enhancements for path expressions (see tests/xpath.tests for details) - Evaluate path expressions with multiple predicates correctly - Fix incorrect setting of /augeas/events/saved - Major cleanup of matching during get; drastically improves performance for very large (on the order of 10k lines) config files - Small performance improvement in the typechecker - Reject invalid character sets like [x-u] during typecheck - Build with compile warnings set to 'maximum' instead of 'error', so that builds on platforms with broken headers will work out of the box - Lens changes/additions * Util.stdexcl now excludes .augsave and .augnew files * Logrotate: allow 'yearly' schedule, spaces around braces * Ntp: fix so that it processes ntp.conf on Fedora 10 * Services: lens for /etc/services (Raphael Pinson) * Xorg: new lens and tests (Raphael Pinson) 0.4.0 - 2009-02-06 - Much improved and expanded support for path expressions in the public API. See doc/xpath.txt and tests/xpath.tests for details. - Solaris support: builds at least on OpenSolaris 2008.11 - Lens changes/additions * Grub: support color and savedefault * DarkIce: new lens for http://darkice.tyrell.hu/ (Free Ekanayaka) 0.3.6 - 2009-01-26 - report version in /augeas/version, report legal save modes in /augeas/version/save/mode for feature tests/version checking - dynamically change behavior of aug_save; add noop save mode (Bryan Kearney) - plug memory leak, more portable SELinux test (Jim Meyering) - fix bz #478619 - do not use abspath (Arnaud Gomes-do-Vale) - fix segfault when branch in a union does not have a ktype - Lens changes/additions * Dpkg: new lens for Debian's dpkg.cfg (Robin Lee Powell) * Limits: new lens for /etc/security/limits.conf (Free Ekanayaka) * Soma: new lens for http://www.somasuite.org/ config (Free Ekanayaka) * Php, Gdm: fix minor regexp error (Marc Fournier) expand filter for Php config files (Robin Lee Powell) * Phpvars: whitspace fixes (Free Ekanayaka) * Puppet: accept indented puppet.conf (ticket #25) 0.3.5 - 2008-12-23 - add an option to rewrite files by overwriting their contents instead of putting the new file in place atomically with rename(2); file contents are only copied after rename fails with EXDEV or EBUSY, and only if the node /augeas/save/copy_if_rename_fails (fix #32) - saving of backup (.augsave) files now works even if the original and backup files are on different devices - major refactoring of how path expressions are handled internally. Fixes a number of bugs and oddities (e.g. tickets #7 and #23) - fix a bug in fa_as_regexp: a '.' wasn't escaped, ultimately leading to spurious errors from the typechecker - Lens changes/additions * Group: process /etc/group (Free Ekanayaka) * Passwd: process /etc/passwd (Free Ekanayaka) * Phpvars: process files that set PHP variables, in particular /etc/squirrelmail/config.php (Free Ekanayaka) * Rsyncd: process /etc/rsyncd.conf (Marc Fournier) * Shellvars: process /etc/arno-iptables-firewall/debconf.cfg and /etc/cron-apt/config (Free Ekanayaka), load /etc/sysconfig/sendmail * Postfix: process postfix's main.cf and master.cf (Free Ekanayaka) * Squid: new lens for squid.conf (Free Ekanayaka) * Webmin: new lens (Free Ekanayaka) * Xinetd: make sure equal sign is surrounded by spaces (#30) * Sshd: change the structure of Condition subtrees (Dominique Dumont) 0.3.4 - 2008-11-05 - fix saving of backup files; in 0.3.3, when AUG_SAVE_BACKUP was passed to aug_init, aug_save would always fail 0.3.3 - 2008-10-24 - restore the behavior of aug_save; in 0.3.2, aug_save broke API by returning the number of files changed on success instead of 0 0.3.2 - 2008-10-21 - saving now reports which files were actually changed in /augeas/events/saved; aug_save also returns the number of files that were changed - preserve file owner, permissions and SELinux context when changing a file. - make saving idempotent, i.e. when a change to the tree does not result in changes to the actual file's content, do not touch the original file - report an error if there are nodes in the tree with a label that is not allowed by the lens - quietly append a newline to files that do not have one - generate lens documentation using NaturalDocs and publish those on the Auegas website (Raphael Pinson) - Lens changes/additions * Grub: support the 'password' directive (Joel Nimety) * Grub: support 'serial' and 'terminal' directives (Sean E. Millichamp) * Samba: change default indentation and separators (Free Ekanayaka) * Logrotate: process tabooext, add dateext flag (Sean E. Millichamp) * Sshd: Cleaner handling of 'Match' blocks (Dominique Dumont) * Monit: new lens (Free Ekanayaka) * Ldap: merge with Spacevars (Free Ekanayaka) * Shellvars: support /etc/default (Free Ekanayaka) * Shellvars: handle space at the end of a line 0.3.1 - 2008-09-04 - Major performance improvement when processing huge files, reducing some O(n^2) behavior to O(n) behavior. It's now entirely feasible to manipulate for example /etc/hosts files with 65k lines - Handle character escapes '\x' in regular expressions in compliance with Posix ERE - aug_mv: fix bug when moving at the root level - Fix endless loop when using a mixed-case module name like MyMod.lns - Typecheck del lens: for 'del RE STR', STR must match RE - Properly typecheck the '?' operator, especially the atype; also allow '?' to be applied to lenses that contain only 'store', and do not produce tree nodes. - Many new/improved lenses * many lenses now map comments as '#comment' nodes instead of just deleting them * Sudoers: added (Raphael Pinson) * Hosts: map comments into tree, handle whitespace and comments at the end of a line (Kjetil Homme) * Xinetd: allow indented comments and spaces around "}" (Raphael Pinson) * Pam: allow comments at the end of lines and leading spaces (Raphael Pinson) * Fstab: map comments and support empty lines (Raphael Pinson) * Inifile: major revamp (Raphael Pinson) * Puppet: new lens for /etc/puppet.conf (Raphael Pinson) * Shellvars: handle quoted strings and arrays (Nahum Shalman) * Php: map entries outside of sections to a '.anon' section (Raphael Pinson) * Ldap: new lens for /etc/ldap.conf (Free Ekanayaka) * Dput: add allowed_distributions entry (Free Ekanayaka) * OpenVPN: new lens for /etc/openvpn/{client,server}.conf (Raphael Pinson) * Dhclient: new lens for /etc/dhcp3/dhclient.conf (Free Ekanayaka) * Samba: new lens for /etc/samba/smb.conf (Free Ekanayaka) * Slapd: new lens for /etc/ldap/slapd.conf (Free Ekanayaka) * Dnsmasq: new lens for /etc/dnsmasq.conf (Free Ekanayaka) * Sysctl: new lens for /etc/sysctl.conf (Sean Millichamp) 0.3.0 - 2008-08-07 - Add aug_mv call to public API - Do not clobber symlinks, instead write new files to target of symlink - Fail 'put' when tree has invalid entries - Set exit status of augtool - Avoid picking special characters, in particular '\0', in examples (libfa) - Store system errors, using strerror, in the tree during writing of files - New lenses * Generic inifile module (Raphael Pinson) * logrotate (Raphael Pinson) * /etc/ntp.conf (Raphael Pinson) * /etc/apt/preferences (Raphael Pinson) * bbhosts for Big Brother [http://www.bb4.org/] (Raphael Pinson) * php.ini (Raphael Pinson) 0.2.2 - 2008-07-18 - Fix segfault in store.put on NULL values - Properly move default lens dir with DATADIR (Jim Meyering) - Fix 'short iteration' error on get/parse of empty string; this bug made it impossible to save into a new file - Add 'insa' and 'insb' primitives to allow insertion from put unit tests - aug_insert: handle insertion before first child properly - New lenses * /etc/exports: NFS exports * /etc/dput.cf: Debian's dput (Raphael Pinson) * /etc/aliases: don't require whitespace after comma (Greg Swift) 0.2.1 - 2008-07-01 - Address some compilation issues found on Ubuntu/Debian unstable - Fix segfault when aug_init/close are called multiple times - Man page for augparse - New lenses * /etc/sysconfig/selinux * Bugfixes for grub.conf 0.2.0 - 2008-06-05 - Augeas is now much more portable * Pull in gnulib on non-glibc systems * Augeas now builds and runs on FreeBSD (possibly others, too) - Various fixes for memory corruption and the like (Jim Meyering, James Antill) - New lenses * vsftpd.conf * various bugfixes in existing lenses 0.1.1 - 2008-05-16 - Add subtraction of regexps to the language, for example let re = /[a-z]+/ - /(Allow|Deny)Users/ - Report errors during get/put in the tree; added subnodes to /augeas/files/PATH/error for that purpose - Many many bugfixes: * plugged all known memory leaks * fixed typecheck for lens union (l1 | l2) which was plain wrong * reduce overall memory usage by releasing unused compiled regexps * further performance improvements in libfa * check that values match the regexps in STORE when saving - libfa can now convert an automaton back to a regular expression (FA_AS_REGEXP) - New lenses * /etc/fstab * /etc/xinetd.conf and /etc/xinetd.d/* 0.1.0 - 2008-05-01 - Various changes to public API: * Remove aug_exists from public API, and merge functionality into aug_get * Do not hide pointer behind typedef; instead Augeas 'handle' type is now struct augeas, typedef'd to augeas (Jim Meyering) * Const-correctness of public API, return error indication from aug_print (Jim Meyering) * Make buildable on Debian Etch (remove -fstack-protector from compiler switches) - Public API is now stable, and existing calls will be supported without further changes - New schema: * /etc/sysconfig/network-scripts/ifcfg-* (Alan Pevec) * Assorted other files from /etc/sysconfig (the ones that just set shell variables) * /etc/apt/sources.list and /etc/apt/sources.list.d/* (Dean Wilson) - Man page for augtool (Dean Wilson) 0.0.8 - 2008-04-16 - Complete rewrite of the language for schema descriptions 0.0.7 - 2008-03-14 - Typecheck lenses; in particular, discover and complain about ambiguous concatenation and iteration - Enable typechecking for augparse by default, and for augtool via the '-c' flag - Fixed lens definitions in spec/ to pass typechecking. They contained quite a few stupid and subtle problems - Greatly improved libfa performance to make typechecking reasonably fast. Typechecking cmfm.aug went from more than two hours to under two seconds 0.0.6 - 2008-03-05 - Make it possible to overwrite files when saving with and without backups - Take the filesystem root as an optional argument to aug_init - Expose these two things as command line options in augtool 0.0.5 - 2008-03-05 - Changed public API to contain explicit reference to augeas_t structure. This makes it easier to write threadsafe code using Augeas - Added libfa, finite automata library, though it's not yet used by Augeas 0.0.4 - 2008-02-25 - package as RPM and make sure Augeas can be build on Fedora/RHEL 0.0.3 - 2008-02-25 - further rework; file processing now resembles Boomerang lenses much more closely - major revamp of the internal tree representation (ordered tree where multiple children can have the same label, including NULL labels) - move away from LL(1) parsing in favor of regular languages, since they enable much better ahead-of-time checks (which are not implemented yet) 0.0.2 - 2008-01-29: - completely reworked - processing of files is now based on a textual description of the structure of the files (basically a LL(1) grammar) 0.0.1 - 2007-12-01: - First release. - Public API and basic tree data structure. - Record scanning works. - Providers for pam.d, inittab and /etc/hosts - Simple tests and test driver