2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.6.

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Initialize CLEANUP_* stack variables with NULL in various places.
	Code like:

	  CLEANUP_FREE char *buf;
	  /* some code which might return early */
	  buf = malloc (10);

	is a potential bug because the free (*buf) might be called when buf is
	an uninitialized pointer.  Initialize buf = NULL to avoid this.

	Several of these are bugs, most are not bugs (because there is no
	early return statement before the variable gets initialized).

	However the compiler can elide the initialization, and even if it does
	not the performance "penalty" is miniscule, and correctness is better.

	(cherry picked from commit b1919066ca3d83f11b72d38d64f25739bd0ff67e)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: sh: Fix missing initializer which caused segfault (RHBZ#1000121).
	Thanks: Olaf Hering.
	(cherry picked from commit fc2947b1125aa34b5f04efd2d39cb82b2ebba586)

	daemon: hivex: Define empty hivex_finalize function in case !HAVE_HIVEX.
	Thanks: Olaf Hering (see previous commit).
	(cherry picked from commit d188594b11f2a16fe72b963a55edf41d4aa2e3aa)

2013-08-24  Olaf Hering  <olaf@aepfle.de>

	tests: change noinst to check
	This change avoids the hard requirement for qemu-tools during package
	build.

	(cherry picked from commit cb7b1c56b7cf447dd9f2ea4dde5cf65e9f9f8cf8)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: Document that guestfish --remote --add won't work as expected (RHBZ#998513).
	(cherry picked from commit 7e396954611d827dc236a114ed22a781687c002d)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: direct: Don't try to wait for qemu if parent process forked (RHBZ#998482).
	When using guestfish --remote, libguestfs is not the parent of qemu,
	so waitpid is expected to return -ECHILD.  And indeed guestfish --remote
	would print a bogus error message in this case:

	  libguestfs: error: waitpid (qemu): No child processes

	If the parent process forked into the background, then it should have
	called 'set_recovery_proc 0' so we can use this to determine if we
	need to wait for qemu.

	Thanks: Kazuya Saito for reporting and identifying the issue.

	(cherry picked from commit a843b5e5e32c151e7b0c74bb4f7be1030f9ac85b)

2013-08-24  Or Goshen  <oberonc@gmail.com>

	Fix to src/proto.c in libguestfs so it will compile with portablexdr under mingw.
	(cherry picked from commit 18b40a88925df737d3552fa646d35a185feb6c62)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Replace the debugging section (again) with a checklist of information we need to start to fix bugs.
	(cherry picked from commit abc59d776a12fb96de6ff927054f3db2a9ed4fc4)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Move #debug anchor back to the right place.
	This was accidentally moved by this commit:

	  commit b8b5ed65c26dd19a0bc9f8282a50c6dff90c456a
	  Author: Richard W.M. Jones <rjones@redhat.com>
	  Date:   Wed May 23 11:46:23 2012 +0100

	    FAQ: Add section about using libguestfs in closed source programs.

	(cherry picked from commit 0a484e868f5f0b7f6245a80f67e09c8210721dac)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Delete section about Ubuntu 10.04.
	The link was broken, and we don't support Ubuntu 10.04 (maybe the
	'oldlinux' branch does).

	(cherry picked from commit 937a9a35320edb781721de5537d750c004872c98)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	cleanups: Use correct types for some cleanup functions.
	(cherry picked from commit f68d5ee16c88df4a3fe2233ba948fb4780fa2a09)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	lib: Use stringsbuf at various places in the library to simplify the code.
	This is just code refactoring.

	(cherry picked from commit d2ae632d3bc0a4fcdbf4150a33406d7646f8cdf9)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add stringsbuf mini-library for constructing lists of strings.
	This is modelled on similar code in the daemon that we have used
	successfully for a long time.

	(cherry picked from commit 35278e4c186badb9e243628771da4cbd068ffaa0)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	list-filesystems: Don't fail if there are no filesystems found (RHBZ#995711).
	list-filesystems was returning NULL (but not setting an error) if no
	filesystems were found.  Instead return an empty list.

	(cherry picked from commit f1d2934216d3fca0501946c8ae0e5c7cd370e6b6)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	cmd: Better type checking in CLEANUP_CMD_CLOSE macro.
	(cherry picked from commit d0a205778698ea3b70623ad73302e739cf631d3c)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	utils: Move guestfs___drive_name function to the utilities library.
	For some historical reason, it was stuck in src/launch-direct.c and
	the comment referred to launch-appliance.c!

	(cherry picked from commit 00cbb5c1854a52a5b4742aa7ca9601a9aaaab529)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: guestunmount is a libguestfs page, don't link it to he.net.
	(cherry picked from commit bd30d3a61ce9d14f2f744870a5d4ed8167d609e2)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Remove contrib file from EXTRA_DIST.
	This fixes commit 36d29700dcef01d681d41f0b593a16e7814e3ee1.

	(cherry picked from commit b1a8733511836591bcf8931f25f0fb5cec7924ff)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Remove contrib/guestfsd-in-wine.sh.
	Added in 2009, unlikely it still works since I doubt it has been
	compiled since then.

	(cherry picked from commit 36d29700dcef01d681d41f0b593a16e7814e3ee1)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	virt-list-filesystems: Fix to use $g->canonical_device_name instead of homebrew function.
	The homebrew function didn't recognize /dev/ubd* device names, and in
	any case using the API function is shorter and clearer.

	(cherry picked from commit 42754046269806a6b6385fee0b72115c73461221)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: md: Whitespace fixes.
	(cherry picked from commit 52188f1ea308225ab948141b1f23e0b47f7dcf4f)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: If /proc/modules doesn't exist, linuxmodules optgroup is disabled.
	It likely means the kernel was compiled without modules support.

	(cherry picked from commit 8ad634877cf315288497a8580fb4afc7658deae9)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	tests/regressions: Allow regression test for bug 914931 to be skipped.
	(cherry picked from commit 071d7fb6d703a1184af93ff2e9ee1812606bd16e)

	tests/md: Fix error path to display the correct output.
	(cherry picked from commit 42abbf096932bd1e6c9c1bef64f602a67107d088)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	docs: The old make check-with-appliance/etc rules were renamed.
	This fixes commit 68990840b64491b39ab8da5f1e46367ae5f01594.

	(cherry picked from commit 4cc99ea2e99c90263aaeeefc8ed952596865abfc)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: direct: Print \n after printing qemu command line.
	This makes it easier to see error messages printed by qemu.

	(cherry picked from commit 19ee64303e65766b4a1b1ac55adbbb646a1c3500)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	conn: Make sure we display all log messages when qemu goes away.
	If qemu goes away it is (more in theory than in reality) possible for
	log messages to be lost in the kernel's socket buffer.

	This turns out to matter more for User-Mode Linux.

	(cherry picked from commit 236415e33939803565ae88a9222d3bae56ea16f9)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	lib: Turn 'random_chars' function used by libvirt backend into utility function.
	(cherry picked from commit e5285cc4210683887a5a4a853fe4e6a72c23e74d)

	utils: Remove duplicate inclusion of <string.h>.
	(cherry picked from commit 467fd96e7e7537a5aa706dd5ca2edb513aa833e9)

	daemon: ldm: Don't return an error if /dev/mapper doesn't exist.
	(cherry picked from commit 2089f7a21a307402c3efa43e5d10ee8d5ff554fb)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Move all RESOLVE macros to daemon/stubs.c.
	These macros are pretty horrible to use, with unexpected side-effects.
	Move them exclusively into the generated code and rewrite the one
	place in the general C code which used them.

	There's no functional change in this code.

	(cherry picked from commit 89cf1c1163f5c01f2335b7c030bb884be3310394)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	tests/mountable: Better error messages.
	Better error messages (for diagnosis) when this test fails.  Also this
	fixes the line endings which were broken before.

	(cherry picked from commit d9694362059e869da67c1333d62adb66f7d0aa1e)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Fix --enable-valgrind-daemon so it doesn't break valgrind of the library.
	Using ./configure --enable-valgrind-daemon breaks valgrinding of the
	library because guestfs_close wouldn't call guestfs_shutdown in that
	case, resulting in some resources owned by the backend being leaked.

	After this commit, --enable-valgrind-daemon will shut down the handle
	normally.

	This updates commit 55e3b8711f340a2f8bdb8ee8ff99deb40b4e9108.

	(cherry picked from commit 94872348e852a9bdfa4d170b0f238d796789c73a)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Print an error message if valgrind failure is detected in the daemon.
	This updates commit 55e3b8711f340a2f8bdb8ee8ff99deb40b4e9108.

	(cherry picked from commit e7b06f7cf84d0a87d0c80d56b06e7e0017e55adc)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Remove unnecessary sysroot_path (selinux).
	This fixes commit 72afcf450a78b7e58f65b4a7aaf94d71cd25fca5.

	(cherry picked from commit 7367729ec7a5d016878dd00b32cce45cec372931)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Fix --enable-valgrind-daemon option.
	Don't add the "valgrind channel" to the appliance.

	Just dump out the valgrind.log to stderr while the daemon is running.

	Ensure that if valgrind tests fail in the appliance, that we don't
	exit with success in the library by checking for a canary message in
	the verbose daemon logs.

	This allows the option to be used routinely by developers.

	(cherry picked from commit 55e3b8711f340a2f8bdb8ee8ff99deb40b4e9108)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	proto: Fix --enable-packet-dump mode.
	This was broken when we rearranged the socket code.

	(cherry picked from commit 26309a1c3a4a8ae4c79cc72ed83dfea4bde5c1a0)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	appliance/init: Display uname -a in debug output.
	Useful for debugging kernel / architecture issues.  Note this
	has no effect if debugging is disabled.

	(cherry picked from commit 6c2fad11ac9a68dcfd42ee18681dc9a552625be9)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Close augeas, hivex handles in unmount_all.
	This is also called implicitly from internal_autosync, ensuring that
	exit won't fail because of an open handle.

	libguestfs: error: internal_autosync: umount: /sysroot: umount: /sysroot: target is busy.
	        (In some cases useful info about processes that use
	         the device is found by lsof(8) or fuser(1))

	Cherry picked from commit ce6e5738fc4ca9533e73cfe6b5fe3db872b7ec9d
	and modified to remove references to the journal.

2013-08-24  Paul Mackerras  <paulus@samba.org>

	Fix parsing of boot flag in do_part_get_bootable()
	The code in do_part_get_bootable() assumes that if a partition has the
	bootable flag set, then that is the only flag.  It compares the entire
	flags field with the string "boot".  However, the boot flag isn't
	always the only flag.  For instance, POWER systems typically have a
	bootable partition of type 0x41 (PPC PReP boot), which parted -m
	displays as:

	# parted -m -- f18.img unit b print
	BYT;
	/root/f18.img:16106127360B:file:512:512:msdos::;
	1:1048576B:5242879B:4194304B:::boot, prep;

	That is, the flags field contains "boot, prep", and thus libguestfs
	fails to see that this partition is bootable.  Ultimately this causes
	virt-resize to fail to set the bootable flag on the boot partition of
	the destination image, resulting in an image that won't boot.

	This patch fixes the problem by searching for the string "boot" within
	the flags field, instead of comparing the whole flags field.

	(cherry picked from commit 7c535c501b1ce131ae98dd948b22fc260d659d1b)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	Update Transifex domain name from .net -> .com.
	(cherry picked from commit 56f613b13003b2ef44b25da360c5dac6eb5b0c71)

	Update gnulib to latest version.
	(cherry picked from commit 3197a2687c0b1d9ba5b9b3d32b5f0200e630628f)

	Update TODO file.
	(cherry picked from commit f6b2efcdffe8688fc415b3f1cd9d608dd396f253)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	augeas: Improve error reporting.
	Display all the information from the handle about errors.

	(cherry picked from commit f26a0407d2a61ed334b4a9d42b1269feb3cab76e)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: direct: Add drives after machine parameters.
	This is just code motion.  It should affect the semantics of the code,
	nor how the appliance VM is created.

	(cherry picked from commit 568368cdf524d3ef96fb3905e39cc859c4bb4258)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	./run: Omit timeout -k option on RHEL 6.
	If timeout doesn't have the -k option, don't use it.

	(cherry picked from commit 8d68f1c5ceb5ac613393654bde58127e50c0f7bf)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Add "notes" field for notes on shortcomings, bugs, etc.
	Instead of keeping this information as comments in the source, put it
	into the virt-sysprep(1) man page.

	(cherry picked from commit 93f8baeb9a07cbbf9bdaa5d10c98c1c9d6af96f7)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Various code refactorings of the operations.
	 - Use 'op' instead of 'xxx_op' for operation table.
	 - Add a 'defaults' for the operation table and remove any default
	   values.

	This is just code motion and there is no functional change.

	(cherry picked from commit 4cdbae926bb336c8d0dea8e7b6e0dcc3fb219c2d)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	resize: Mark progress bar functions as "noalloc".
	Avoids GC overhead and turns these into simple C calls.  See:
	http://camltastic.blogspot.co.uk/2008/08/tip-calling-c-functions-directly-with.html

	(cherry picked from commit 67fd809ca3ec711d80e69ab32646899e7ca047eb)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	resize: Mark isatty function as "noalloc".
	This turns it into an ordinary C call without the unnecessary [in this
	case] GC frame overhead.  See:
	http://camltastic.blogspot.co.uk/2008/08/tip-calling-c-functions-directly-with.html

	(cherry picked from commit 3d39549ded3e05df929547bb65ce620e6487a81b)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Tips about using direct backend and fixed appliance on Fedora/RHEL.
	(cherry picked from commit 0c512a52bdc2a88296d04900625822b34d567112)

	FAQ: Common problem with Debian is not running update-guestfs-appliance.
	(cherry picked from commit 9268f1487970eb9884ba674ab75dc99f91adc0a7)

	fish: Add a test for -a URI options.
	(cherry picked from commit 23d429ff845f29b345ff76efab669daf92b5ab42)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix guestfish so it can recognize sheepdog://... as a valid URI.
	Because "sheepdog" is 8 characters, it wasn't recognized before.

	(cherry picked from commit e3df223a5aed82b7e502bef327d57dd54d98587b)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Allow -a URI options to be used (RHBZ#968875).
	This allows you to sysprep a remote guest by doing eg:

	  virt-sysprep -a ssh://remote.example.com/disk.img

	(cherry picked from commit b65c1c667b26313abf312a7ab51f8bf947243d07)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	resize: Add bindings for the guestfish -a URI parsing mini-library.
	This allows -a options to be parsed from OCaml programs, reusing
	the same code that is being used by C.

	(cherry picked from commit 406522d1d2c9108c52f1356cbbb9bb4039d9ce84)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: Split off URI handling (for -a argument) from general options parsing.
	This is so we will be able to reuse the same code in the OCaml tools.

	This is just code motion.

	(cherry picked from commit 4d7c14fdbb372d6ad5ef729b6969078b5fdb68da)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: options: Fix optarg -> arg.
	Don't read the global variable optarg.  Read arg instead.
	(In all cases they are the same, so this bug made no difference).

	(cherry picked from commit 671be806ae79df5d0a9e864d2f9b3461d08c7733)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: Don't store xmlURIPtr directly in the drive struct.
	Original drv_uri fields:

	      xmlURIPtr uri;        /* URI */
	      char *socket;         /* ?socket parameter from URI. */
	      const char *format;   /* format (NULL == autodetect) */

	New drv_uri fields:

	      char *path;           /* disk path */
	      char *protocol;       /* protocol (eg. "nbd") */
	      char **server;        /* server(s) - can be NULL */
	      char *username;       /* username - can be NULL */
	      const char *format;   /* format (NULL == autodetect) */
	      const char *orig_uri; /* original URI (for error messages etc.) */

	This is just code motion.

	(cherry picked from commit a3891430bc9fe408505277701962acaa664fc96a)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	internal: Add CLEANUP_XMLFREEURI (cleanup function for xmlURIPtr).
	(cherry picked from commit 0e1ba00059b5ebbca2e137f2685b2eb65ed33b13)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	resize: Move isatty_stdout function to separate module (TTY.isatty_stdout).
	It was jammed into the Progress module just for convenience.

	(cherry picked from commit b56990ddf8aa4dc4db3da592783acfe055c05534)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: cap-get-file: Return empty string if no capability on file (RHBZ#989356).
	Return an empty string (instead of an error) if no capabilities are
	set on a file, and document that in the API.

	(cherry picked from commit c663ab3bb9ab02fb3ca6209333c2d5402081c4de)

2013-08-24  Richard W.M. Jones  <rjones@redhat.com>

	resize: Link to information about dracut-modules-growroot.
	(cherry picked from commit fb282e677c015de65627790a02aceb6ed264ed80)

2013-07-29  Richard W.M. Jones  <rjones@redhat.com>

	src/file.c: Be sure to call guestfs___lazy_make_tmpdir before using g->tmpdir.
	Although g->tmpdir is always set after launch, and none of these calls
	should be used before launch, it's always possible that a caller would
	use one of these APIs before launching the handle.

	If guestfs___lazy_make_tmpdir is not called, then g->tmpdir is NULL,
	and the constructed filename would look like "(null)/...".

	In fact it's possible to observe this error (although it seems to have
	no especially bad effects):

	  $ strace guestfish ls / |& fgrep '(null)'
	  unlink("(null)/ls1")     = -1 ENOENT (No such file or directory)

	(cherry picked from commit 1937108a4a6070750f0d636f7dcc8725441cc4eb)

2013-07-29  Richard W.M. Jones  <rjones@redhat.com>

	generator: Fix the case where a daemon function has one FileIn/FileOut parameter and no other parameters.
	The FileIn/FileOut parameters are not passed through to the daemon.
	Previously we generated incorrect RPC code (an empty 'struct
	guestfs_<fn>_args') because we didn't account for these FileIn/FileOut
	parameters correctly.

	(cherry picked from commit e31c32ce1bc87d164103e79288effc64bb41181f)

2013-07-29  Richard W.M. Jones  <rjones@redhat.com>

	generator: Fix whitespace.
	(cherry picked from commit 559bd48960f795dc59d889e5776f545f2e0d494a)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.5.

	sysprep: On RHEL, firstboot script should be called S99... not 99.
	Thanks: Nicholas Strugnell
	(cherry picked from commit 44c5026d9e06cf5f01098608ddd0aa4acb7bb6eb)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	fish: For -N option, add drive with explicit format = "raw".
	Although autodetecting is safe (we always have just created a drive),
	it saves a little bit of time if we don't have to run qemu-img to
	detect the disk format with the libvirt backend.

	Note that for prepared drives the format is always raw and we don't
	anticipate creating drives in other formats.

	(cherry picked from commit ccd069f859c35c778a4a0cb619dcb6c34a29e247)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	fish: Split up long line in --help output.
	(cherry picked from commit 3c94f0245677a61f271163735444526bd37d29fb)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	fish: Clarify documentation.
	It's not "the guest" which is launched, but the libguestfs appliance.

	(cherry picked from commit a8b03201f0c240d4ef433e349ef7645b90874bb5)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Implement set-label for XFS and fix it for btrfs (RHBZ#986875).
	Implement 'set-label' for XFS filesystems.

	Fix the call for btrfs.  Previous
	commit d5817537fa6c51a7f851ecc5e4e63e60609e0c03 added some bogus
	documentation implying this call would work for btrfs, but it did
	not.

	Cherry picked from commit 091d22f49e7fcb53fb3bb23e2ba94ca12eb88eab.
	Tests removed for backport.

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	tools: 'test.img' is no longer used.
	This probably used to be a temporary file used for testing.

	(cherry picked from commit 5724efa69f0192b71350d9c025e815218f112572)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	tests/lvm: Remove some commented out debugging code.
	(cherry picked from commit 0d97bcf8ae498b2ad92e523f2a6bd973bde3a9c0)

	tests/c-api: Remove 'GETKEY:' hack since it's no longer used anywhere.
	(cherry picked from commit 8a3ecfc04e0561dac74c94ecbafaac8248e302c7)

	tests: Better testing of guestfs_disk_* functions using blank disks from tests/data directory.
	(cherry picked from commit 89865011e4ea725c9c69b0d473118ffcd5039ac3)

	tests/data: Add some blank disks in various sizes and formats for testing.
	(cherry picked from commit 48ed7abc21430f0138a37b593e4341ef04db4f95)

	FAQ: Add section about different packaging strategies for libguestfs.
	(cherry picked from commit 7867c7cd8e4f3dd6c764a309136bce3a0f2630f9)

	mkfs: Use -b size=<size> for xfs (RHBZ#981715).
	(cherry picked from commit 3201e7556424bd305ec39ac49dd84c0471f64544)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	info: Fix double-call to error function when qemu-img info command fails (RHBZ#981663).
	Previously if the 'qemu-img info --output json' command failed, then
	the stdout callback would be called first with a zero-length buffer.
	Since a zero-length buffer cannot be valid JSON (in this context)
	don't produce a separate error message.

	However do catch the case when qemu-img info might produce no output
	and no error (if that were to happen -- it does not happen at the
	moment).

	(cherry picked from commit 28e08776824dd3152638e647259c2f4701a0a577)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	info: disk-format et al: Fix error message when no file exists (RHBZ#981663).
	$ guestfish disk-format /etc/nosuchfile

	Instead of this obscure double error message:

	  libguestfs: error: qemu-img info: JSON parse error: parse error: premature EOF
	                       (right here) ------^
	  libguestfs: error: qemu-img info: /etc/nosuchfile: qemu-img info exited with error status 1.
	  To see full error messages you may need to enable debugging.
	  See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs

	You will now see this simpler error:

	  libguestfs: error: disk info: /etc/nosuchfile: No such file or directory

	Thanks: Bo Fan.
	(cherry picked from commit d50cb7bbb4cc18f69ea1425e9f5cee9685825f95)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	cmd: Allow callers to override file-closing behaviour after fork.
	This allows us to send file descriptors directly to child processes,
	eg. using /dev/fd/<N>.

	(cherry picked from commit aecb5f4b33107935191099dbd5559113f59ee51c)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	acls: Improve documentation for acl_set_file (RHBZ#985269).
	Thanks: Bo Fan.
	(cherry picked from commit 758a2262f5f4033de3400bbe00fac2f85310b4ff)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	library: Fix a few direct calls to perror(3).
	Mainly in the FUSE code, left over from when this code lived in the
	standalone guestmount program.

	(cherry picked from commit ea817cdc603477ab691ce49b21ecf9f0cca6f944)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	./run: Increase default timeout from 1h -> 4h.
	1 hour was not long enough for the C API tests when run in Koji.

	This update commit caab9f1e6f7ac0d8d5209c31854d640b807519ce.

	(cherry picked from commit a7b9d61cde63020686afe769ca8265a01fce208f)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Fix a double-free if kernel linking fails (RHBZ#983218).
	This also simplifies the code which takes the building_lock around
	guestfs___build_appliance.

	Thanks Attila Fazekas for the detailed bug report.

	(cherry picked from commit ae78381287771a781f939f26a414fc8cfdc05fd6)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	./run: Timeout tests after 1 hour.
	No single test should run longer than 1 hour even on the slowest of
	hardware.  We are having a problem in Koji where a test hangs and then
	we end up losing the output completely, so a timeout + print the log
	to that point is much better.

	(cherry picked from commit caab9f1e6f7ac0d8d5209c31854d640b807519ce)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	./run: Add a better comment describing --test mode.
	This is just code motion, there is no functional change.

	(cherry picked from commit 745e507c2fd06f9349212efe86f8143a1f0c5a0e)

2013-07-26  Richard W.M. Jones  <rjones@redhat.com>

	Remove more temporary ($builddir/tmp) files when doing 'make clean'.
	(cherry picked from commit 7e134f865f4e4e35f27d0c676645fffc16d85e80)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.4.

	tests: Add test for aug_ls.
	(cherry picked from commit d457df7dc210178902e9462f5caa4d556753badd)

	tests: Test aug_insert, aug_clear and aug_save.
	(cherry picked from commit bf838e3333b5002e1094f9b38bc95c15e597ccb1)

	tests: Test aug_set.
	(cherry picked from commit 48c16e5ef1174aa40a5769b229424e12835bba5c)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: Test result of aug_get properly.
	Don't just check aug_get runs, check the resulting string is correct.

	(cherry picked from commit 535963bac3018dc7a1874f0a2ed6896ffc3b70eb)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: c-api: Add a cleanup function for tests.
	By specifying a cleanup function we can ensure that Augeas and hivex
	functions can be tested.

	There is no functional change here, verified by diffing the generated
	file tests/c-api/tests.c before and after.

	(cherry picked from commit 86ca8af9f1faf956da96c4e7c51ca6acac7ad40d)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix mix up of actual/expected in error messages.
	(cherry picked from commit b5a938f464a5f2649473b251f7adce7841b33974)

	FAQ: Fix typo.
	(cherry picked from commit 02123b72429ab156512f682301946dfe02780336)

	FAQ: Explain qemu-nbd & libguestfs better.
	(cherry picked from commit 4b838a4b28e660cda4569c099784dc2a53dc74de)

	tests: Add basic Augeas tests.
	(cherry picked from commit 31ce47fe489d74ac21401624d88739aafdcb21e1)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	hivex: Add some simple tests of the hivex_* APIs.
	These are by no means comprehensive, but cover the basics.

	The 'minimal' hive comes from hivex.

	(cherry picked from commit 8c9a5d623ea79448a3912c22e90c05771d7d1c1f)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: hivex: Check that hivex_commit is passed an absolute path (RHBZ#981683).
	You will now get an error like:

	libguestfs: error: hivex_commit: do_hivex_commit: path must start with a / character
	(cherry picked from commit c8f0a2eb76a39a009e0591f73e5249f3bcfc4ee8)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	filesystem-available: Clarify documentation for this test.
	See:
	https://bugzilla.redhat.com/show_bug.cgi?id=980358#c1

	Thanks Bo Fan.

	(cherry picked from commit 280dbed9aabcb5aa2ddbed4f0c49a82235df7eae)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	java: Fix typo in comment.
	(cherry picked from commit 8f504539f21647d72ac537fade26a02be004c63d)

	java: Fix comment in test script.
	(cherry picked from commit 667b303c9afad887f7e23082d2d2b09fcd1f9d5c)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	configure: python: RHEL 6 doesn't have sysconfig, use distutils.sysconfig instead.
	This works on recent Python as well.

	(cherry picked from commit cd9f40945d45f2f44d3986f15dc9b82bd03ac7dc)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Verify ext2/3/4 filesystem name before passing to mke2fs (RHBZ#978302).
	Add a utility function (fstype_is_extfs) to match ext2/3/4 filesystem
	names.  This is used in a couple of places.

	When passing the mke2fs -t parameter, verify that the request is for
	an ext2/3/4 filesystem.  Previously we did not check this, and neither
	did mke2fs when the -F flag was also used.

	(cherry picked from commit fb0bd82dbe9c3cad40312e89de5b61195f5fd889)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Add notes about Windows and disk consistency (RHBZ#975753).
	Also group the Windows-related notes together.

	(cherry picked from commit a7aa47f4de7c61620c92f95ceb2d6de833152574)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Take into account large start offset of the first partition when calculating overhead (RHBZ#974904).
	Since we don't usually move the first partition, if the first
	partition has an unusually large offset from the start of the disk,
	then the unpartitioned space in front of that partition counts as
	partitioning overhead.  However the previous surplus calculation was
	not taking that into account.

	This was a problem for certain Ubuntu images which are partitioned
	with an 8 MB gap before the first partition.

	Thanks: David Hart.
	(cherry picked from commit b730bc0c4685887232daed8fafa491b28f38c300)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Add some more debugging messages.
	These are only printed when using the --debug flag and are
	helpful for diagnosing problems.

	(cherry picked from commit 07f3e5ae5cba03d29c5b9675c7f137463b29d424)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Fix minor typo in error message.
	(cherry picked from commit 7949fd3949c300ec70b85b40d8ac7a9d651cd4af)

	tests: Add a regression test for iface launch hangs (RHBZ#975797).
	(cherry picked from commit d8a3185823e608dbddbc6185209951140b8f3b33)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	launch: direct: Calculate appliance root correctly when iface drives are added (RHBZ#975797).
	This also changes guestfs___appliance_command_line to allow
	appliance_dev parameter to be NULL.  Previously a bogus root=
	parameter could be passed.

	(cherry picked from commit f7fe7e8db021b13f40aba56722d6ebe58e3777d2)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests/regressions: Remove duplicate test skip code.
	(cherry picked from commit e7f83f2ecc8e5e00e15e49357b37980b68fa7153)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: inspection: Add example and test XML to EXTRA_DIST.
	This fixes commit a86cb71fcadbed3881e593b6de9706c03ca57149.

	(cherry picked from commit d88f6c0ba62d65acf8db074d33109947907ec048)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: inspection: Don't complain because NTFS UUID changes between test runs.
	This fixes commit a86cb71fcadbed3881e593b6de9706c03ca57149.

	(cherry picked from commit 0ff0454c59ae79d47fadcc4f2837e3bfca7af105)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Add a real test of inspection.
	Verify that the output from inspection doesn't change, in order to
	catch regressions such as RHBZ#975412.

	(cherry picked from commit a86cb71fcadbed3881e593b6de9706c03ca57149)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Replace phony XML with virt-inspector output from real guests.
	Also add an example from a real RHEL 6 guest.

	Remove rules for building these XML files which are no longer
	relevant.  These files were built by running virt-inspector on real
	guests, and then edited to remove excessive <application> sections.

	(cherry picked from commit d7bc1dd92241ed569627b7583a014059afa5fc37)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Fix hostname inspection because of faulty Augeas path expression (RHBZ#975412).
	(cherry picked from commit 2343840936c900109b6675cc6e605026443ccf0a)

2013-07-09  Richard W.M. Jones  <rjones@redhat.com>

	utils: Add utility functions guestfs___concat_strings and guestfs__join_strings.
	These concatenate strings or join them with a separator in between.

	(cherry picked from commit 2ee4d5e059840b518814dd6ce615627fe0a8391d)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.3.

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Fix inspection of Fedora guests (RHBZ#974489).
	Commit e71b2c11f59b3f8ae0c4b31c4ab5b0d1bfcdf181 broke inspection of
	Fedora guests because guestfs_is_file returns false for
	/etc/redhat-release (it's a symlink to a file, not a file).

	We fix this by using the new followsymlinks flag added in the
	previous commit.  Thus guestfs_is_file becomes
	guestfs_is_file_opts (g, filename, GUESTFS_IS_FILE_OPTS_FOLLOWSYMLINKS, 1, -1)
	which checks if it's a file or a symlink to a file.

	This fixes commit e71b2c11f59b3f8ae0c4b31c4ab5b0d1bfcdf181.
	(cherry picked from commit 7f228489d00f526c5e5a4d29cf930150b0f29083)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	Add followsymlinks flag to is-file, is-dir, is-blockdev, is-chardev, is-fifo and is-socket APIs.
	This adds an extra optional boolean 'followsymlinks' flag to those 6
	is-* APIs.  If the flag is true, then symlinks are followed, ie. we
	use stat instead of lstat in the test.

	For the rationale behind this change, see:
	https://bugzilla.redhat.com/show_bug.cgi?id=974489
	(cherry picked from commit ef107448e89c10899cefc27f887bd627c1d7e777)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Developer questions about committing and forking. (cherry picked from commit 3cf442872b963e4e60367d728237569113f7c249)

	FAQ: Emphasize that we don't accept github pull requests. (cherry picked from commit 372217c375aea4d1878f55bca36e29c53529435c)

	FAQ: Put B<> bold section around "Note"s in the text. (cherry picked from commit d2c05c96cabf63d1c5bf4eaf8452c33180b88e95)

	FAQ: RHEL 6.5 will fix the buildnet problem. (cherry picked from commit 0e652c11bec667544f77b1a033f23c3abf0c0022)

	FAQ: Indent Ubuntu releases in list. (cherry picked from commit 32fe7fd8536a452639a8304e77dde5305d79b209)

	FAQ: RHEL 7 is based on libguestfs 1.22. (cherry picked from commit 3b109ff20710a1cd2805e7bcc1d20c2713f89ab4)

	FAQ: Add link to RHEL 6.5 preview repository. (cherry picked from commit 58519bbe9c456f04bf3cdb261a75351aa94461e5)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	txz-out: Fix this API to produce xz files again (RHBZ#972775).
	Commit 864ef706a84c7c87a62f776d4b2e82a6f959ae14 (in Aug 2012) broke
	the deprecated txz-out API.  Because of a thinko during this commit,
	instead of producing xz files it produces bzip2 files.

	Fix this API again.

	Thanks: Bo Fan / Red Hat QA team.
	(cherry picked from commit 546b3f3fce38874239161484b74aa90560a399dc)

2013-06-14  Matthew Booth  <mbooth@redhat.com>

	inspect: Fix bogus warning for partitions without /boot.ini
	Fix a bogus warning introduced by
	5abb196de869cd27a6fa2377d79b9a267120f48e. If a non-windows partition
	hasn't been detected as something else and falls through to windows
	detection, inspection would display a bogus warning about missing
	/boot.ini.

	RWMJ: Test if guestfs_is_file > 0, in case it returns an error.
	(cherry picked from commit 21f427801c88656ff85467b1bf0acf7c567a59e2)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Reformat is_systemroot declaration.
	Just code motion.
	(cherry picked from commit 95850772021d35911b3597159ff50c11043da686)

2013-06-14  Matthew Booth  <mbooth@redhat.com>

	inspect: Partial support for non-standard windows system root
	Support arbitrary windows system root for pre-vista systems where
	boot.ini is on the same partition as the system root.
	(cherry picked from commit 5abb196de869cd27a6fa2377d79b9a267120f48e)

	inspect: Add internal match6 function (cherry picked from commit 83b7d0a66e99fb970a0929123f6fc0e810869677)

2013-06-14  Matthew Booth  <mbooth@redhat.com>

	inspection: Refactor windows systemroot detection to allow re-use
	This change refactors guestfs___has_windows_systemroot to
	guestfs___get_windows_systemroot. The new function returns a
	dynamically allocated char * which must be freed.

	The new function is no less efficient than before, as it returns the
	result of guestfs___case_sensitive_path_silently, which is required
	anyway. The new code is slightly more efficient than before, as it
	re-uses the result of this testing in guestfs___check_windows_root
	rather than running it again.
	(cherry picked from commit f1385192ad607190b01ccbdb0805eede8a787436)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Build dependencies for tests too. (cherry picked from commit 012a4a5eb5c985e5ce22f3e6991da5369aeaed82)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	build: Add common-rules.mk, common rules for all Makefiles.
	This file is mainly a central place to:

	 - include localenv if it exists, and

	 - define the RHEL 5 backwards compatibility macros, instead of
	   spreading them over every other file.

	(cherry picked from commit 49bdaabc7d011e7fb55e457d6fb865c175d1c757)

2013-06-14  Richard W.M. Jones  <rjones@redhat.com>

	Quote ./configure --help output (options) properly. (cherry picked from commit 94dbcb107f5a5d8658e76add344cf697a938783c)

	ocamldoc: Depend directly on guestfs.mli, guestfs.ml files, not wildcards. (cherry picked from commit edf9d3c7f0d70488ef0ad6a87e7966d774b9b190)

2013-06-14  Hilko Bengen  <bengen@hilluzination.de>

	python: Build extension with PEP-3149 compliant suffix if defined. (cherry picked from commit b7cd34eb776a6429e2de536c53390f791dbc8470)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.2.

	docs: Updated release versions which fix CVE-2013-2124. (cherry picked from commit 731d0e1bf6b2b4b977633a454a697eb61dc1557e)

	perl: Add rules + environment variables so Perl code can be valgrinded. (cherry picked from commit e8af0982da9f48cce00d999ec6777c15ab931d80)

	inspection: Use guestfs_is_{dir,file} in preference to guestfs_exists.
	Where possible, using this is more accurate, and it helps when
	trying to do fuzz testing.
	(cherry picked from commit e71b2c11f59b3f8ae0c4b31c4ab5b0d1bfcdf181)

	events: Avoid event handler limit if program allocates and deallocates handlers. (cherry picked from commit b4d8757dadb67d86d14bd8af854d7ba48e9a55f6)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	proto: Fix for rare FileIn hangs. (RHBZ#969845).
	Yet another protocol bug!

	If the daemon cancels, then the library should send a cancellation
	chunk.  It normally does this during the loop where it is uploading a
	file.  However due to an oversight or possibly a regression when we
	modularized the socket code, the library did not send a cancellation
	chunk if the daemon cancelled just before the end of file was sent.

	This commit fixes this.
	(cherry picked from commit 697b0f89fed04a4017e033861a9eaaa40b3270d9)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Correct fix for segfault if /etc/SuSE-release is an empty file.
	The test was the wrong way round.

	See: CVE-2013-2124.

	This fixes commit ae8bb84ecd46d7b6ef557a87725923ac8d09dce0.
	(cherry picked from commit 1c9dfd079aa6d7893f72c5fd17656c847f72c8d6)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	lib: Don't call directly from one guestfs__* function to another.
	The public-facing functions like 'guestfs_*' are implemented as
	wrappers around implementation functions like 'guestfs__*' (for
	library-side functions only).

	Don't call from one 'guestfs__*' function to another.  It prevents
	ENTER events from being caught, especially where a deprecated function
	calls another implementation.

	Most code was not doing this, but there were still some places left
	where it was done.
	(cherry picked from commit 823628d41f898982979ab7dd53656377bef8ce1d)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	events: Use bool for flag. (cherry picked from commit e86459e5014eca637eade0bf0410175e5a4b5305)

	events: Refactor code to make the common path clear. (cherry picked from commit 75cf879613899c1beb847b1f7a776df90b565be3)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Don't segfault if /etc/SuSE-release is an empty file.
	Related to CVE-2013-2124.

	Thanks: Olaf Hering.
	(cherry picked from commit ae8bb84ecd46d7b6ef557a87725923ac8d09dce0)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	tests/http: Add a test of HTTP protocol.
	Disabled for various reasons.  See comment in Makefile.am.
	(cherry picked from commit 36d6df671e57cd755dc4b0b38acd539615b73936)

	release notes: Recompile so that long URLs aren't broken in text output. (cherry picked from commit b3e5ed69b5d1540f463413122f2db21b3bbcfd46)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Set Text::Wrap::huge property to "overflow".
	This stops long URLs from being broken in the text output mode.

	See:
	https://www.redhat.com/archives/libguestfs/2013-May/thread.html#00088
	(cherry picked from commit aab882a3a6f4acf99b7fba6ea9f9f072ed2898ea)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	security: Centralize CVE information in one place (in guestfs(3)). (cherry picked from commit b0bd0bba933141c4922c9eecd1c721228adccb97)

	security: Add documentation for CVE-2013-2124. (cherry picked from commit ee9f1abe7ffacf4c6000c16721dc9259c51b61a1)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add sensible disk optimizations.
	The timeout lets us read remote images without timing out.

	The noop scheduler lets the host do scheduling.  This generally makes
	sense for mixed workloads because the host has a global view of the
	system, and often has more compute power too.
	(cherry picked from commit 1766ff1177f0cd2e918632f2f67183851f0273f5)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Remove dead code which (if not dead) would have set disk scheduler to noop. (cherry picked from commit da764805ba42fd940c3fbe4bbdc2312c5f84c38f)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Don't set 'rotational' on virtio-blk devices.
	virtio-blk is obsolete so we don't need to bother optimizing it.
	People should use virtio-scsi instead.

	Also virtio-blk should choose the optimal settings itself.

	This was originally added to fix this bug:
	https://bugzilla.redhat.com/show_bug.cgi?id=509383
	(cherry picked from commit 52eb691e0b85d5a934db11c5dba042f7ce089b53)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	generator: Set builddir for old RHEL 5 which didn't have this. (cherry picked from commit 9df4e51f65f15f3d217f527127c17da650d9ef48)

	generator: Set abs_srcdir for old RHEL 5 which didn't have this. (cherry picked from commit 1d08ea938f6c7b29160b833fa7b4be8241b4f565)

	generator: Set abs_builddir for old RHEL 5 which didn't have this. (cherry picked from commit 06291ce0dd656605d3ada94c56103013d6eeaf3d)

	tests: Add 'make check-release' rule.
	This is a subset of tests which will be required to pass before a
	tarball can be released by the maintainer.
	(cherry picked from commit 809a7012dec57977b6fd283c44c26584c15d6999)

2013-06-03  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add new 'make check-all' rule.
	This runs all of the check* rules.  Since this includes 'make check',
	'make check-all' is not quite equivalent to 'make extra-tests'.

	Cherry picked from commit 0a60332e1bcff698555d31c8b2524a435a93a3f9
	and modified because make extra-tests has not been removed from
	this stable branch.

2013-05-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.1.

2013-05-28  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Fix double-free when certain guest files are empty.
	The following commit:

	  commit 5a3da366268825b26b470cde35658b67c1d11cd4
	  Author: Richard W.M. Jones <rjones@redhat.com>
	  Date:   Thu Jan 24 17:07:38 2013 +0000

	      inspect: Use CLEANUP_* macros in inspection code.

	can cause a double-free along an error path when certain guest files
	are empty where we expected those files to contain at least one line.

	This causes virt-inspector to crash when run on these guests.

	The following is a test case which demonstrates the crash.
	`f20rawhidex64' is a Fedora guest, but with small adjustments to the
	test you could use any Linux guest for this test.

	  $ qemu-img create -f qcow2 -b f20rawhidex64 /tmp/test.qcow2
	  Formatting '/tmp/test.qcow2', fmt=qcow2 size=21474836480 backing_file='f20rawhidex64' encryption=off cluster_size=65536 lazy_refcounts=off
	  $ guestfish -i -a /tmp/test.qcow2 -- rm /etc/redhat-release : touch /etc/redhat-release
	  $ virt-inspector /tmp/test.qcow2
	  *** glibc detected *** virt-inspector: double free or corruption (fasttop): 0x00007f18bc9925a0 ***
	  ======= Backtrace: =========
	  /lib64/libc.so.6(+0x34ecc7ca8e)[0x7f18b8e64a8e]
	  /lib64/libguestfs.so.0(+0x3f91898078)[0x7f18ba13c078]
	  /lib64/libguestfs.so.0(+0x3f91899761)[0x7f18ba13d761]
	  /lib64/libguestfs.so.0(+0x3f91896d12)[0x7f18ba13ad12]
	  /lib64/libguestfs.so.0(+0x3f91894140)[0x7f18ba138140]
	  /lib64/libguestfs.so.0(guestfs_inspect_os+0x35)[0x7f18ba0bcc35]
	  virt-inspector(main+0x547)[0x7f18ba7c57d7]
	  /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f18b8e09a05]
	  virt-inspector(+0x6665)[0x7f18ba7c7665]

	This is a denial of service, but not likely to be exploitable.

	(Found by Coverity)
	(cherry picked from commit fa6a76050d82894365dfe32916903ef7fee3ffcd)

2013-05-28  Richard W.M. Jones  <rjones@redhat.com>

	rbd: Fix overallocation because of incorrect 'sizeof'.
	(Found by Coverity)
	(cherry picked from commit 1e7f2b29c428538aa3486c15c72a30c030b276f3)

	conn-socket: Don't leak 'conn' on error paths.
	(Found by Coverity)
	(cherry picked from commit 9854d1f08d3142324593e953744281fca1940dbf)

2013-05-28  Richard W.M. Jones  <rjones@redhat.com>

	erlang: Don't leak (some) strings along error paths.
	This fixes several string leaks along error paths which
	were found by Coverity.

	However this is not a complete fix.
	(cherry picked from commit 0e756842f6e7435ff09c116c1c3edc5316d752a7)

2013-05-28  Richard W.M. Jones  <rjones@redhat.com>

	fish: Check for out of memory failure.
	(Found by Coverity)
	(cherry picked from commit e52a6b56f487890f5507b89c3ff6fdf173eab402)

	inspection: Test for failure from match1 function.
	(Found by Coverity)
	(cherry picked from commit a9a191d20e6b4ea951b0ef38cb5abad68987c81b)

	drives: Don't call `close (-1)'.
	(Found by Coverity)
	(cherry picked from commit 49cb55146f6933dd1a7a9c38ec884aa5afc12247)

	syntax-check: HAVE_DECL_* macros are always defined.
	These macros are always defined to 0|1.  We don't need to
	check if they are defined.
	(cherry picked from commit ada943b949774cdfc60953606f5e7aa9ac0a8638)

	syntax-check: Remove trailing whitespace. (cherry picked from commit 2ed3a383b4fc78966fa37b291c72784cd48100d6)

	syntax-check: Use newline before EOF in these text files. (cherry picked from commit a787d2565f69e651b39fe08246b7235322db7a49)

	syntax-check: Remove unused ``#includes''. (cherry picked from commit 5c80f22b64af2d15623105571cc743beec2f94f6)

	syntax-check: Use exit (EXIT_*) macros instead of hard-coded 0|1.
	These are defined in <stdlib.h> which the test program already includes.
	(cherry picked from commit 014bc5f398d05f6474eb690d86f9f944e9e04000)

	syntax-check: Ignore more syntax-check problems.
	For some reason maint.mk doesn't process all of these regexps,
	or perhaps the regexps are not well-formed.
	(cherry picked from commit 77d08060b412775d1a9ab846decd14439980781d)

	Ignore various intermediate files left around by 'make syntax-check'. (cherry picked from commit 2bc1d522dbaea8727cfc7bcc4bb03bbb8a5c212a)

	make help: Suggest using -j1 -k options with make syntax-check.
	This lets you see all the output, not interleaved.
	(cherry picked from commit 42e268a2b412cc67c139d2023521de6ea35b3882)

2013-05-23  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.22.0.

	build: Set 'stable' or 'development' in commit tag automatically.
	This sets two macros: BRANCH_NUMBER and BRANCH_TYPE.

	release notes: Get ready for 1.22 release.

2013-05-22  Richard W.M. Jones  <rjones@redhat.com>

	tests/mountable/test-internal-parse-mountable.c: Hoist variable decls to top.

	tests/mountable/test-internal-parse-mountable.c: Don't fully allocate 1GB disk.
	This test required 1 GB of free space since it used posix_fallocate
	instead of creating a sparse disk.  Use truncate instead.

2013-05-21  Hilko Bengen  <bengen@debian.org>

	Fix for changed selinux mountpoint
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=707217

2013-05-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.40.

	release notes: Don't document new internal APIs.

	appliance: Use 'rm -f' on files which might have been moved so might not exist.
	This partially reverts commit fae4a2cfb99bab26f3bd60f52e4a586e39f54f49.

	Update gnulib to latest version.

	docs: Add notes about how various check-* targets are implemented.

	Update translations from Transifex.

	Update ROADMAP for 1.24.
	That will be the next stable release after 1.22.

	release notes: Update list of bugs.

	sysprep: Be prepared for CentOS etc. 7 which will act the same way as RHEL 7.

	sysprep: Update /etc/machine-info on Fedora 18+, RHEL 7+ (RHBZ#890027).

	sysprep: Refactor code, introducing a function to replace a line in a file.

	Update API support.

2013-05-20  Richard W.M. Jones  <rjones@redhat.com>

	guestfs-recipes: Two more recipes from my blog.

	examples: If user does 'mount-local --help' don't create a disk image called '--help'.

	fuse: Reimplement umount-local using guestunmount.
	Instead of repeating the same code calling fusermount -u, retrying, etc.

	gluster: Normal port number (assuming 1 brick) is 24007.

	gluster: Note that client needs to run as root.

	gluster: Force exportname to begin with a '/' character.

	gluster: Don't force gluster port number to be specified.
	Gluster can choose its own port number.

2013-05-20  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Allow port to be optional.
	Actually if you don't specify the port, currently libvirt gives
	an error:

	  libguestfs: error: could not create appliance through libvirt: XML
	  error: missing port for host [code=27 domain=20]

	However I think that is a bug in libvirt:

	  https://bugzilla.redhat.com/show_bug.cgi?id=965142

2013-05-20  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Don't use 'rm -f' on files which ought to exist.

2013-05-19  Hilko Bengen  <bengen@hilluzination.de>

	fish/test-events.sh: ignore "trace get_path" line
	The test would fail when LIBGUESTFS_PATH was not set.

	./run: Turn error message about missing LIBGUESTFS_PATH into warning; output to STDERR
	The previous behavior caused the build to abort when trying to build
	the sysprep documentation -- without much of a hint of what went
	wrong.

2013-05-19  Richard W.M. Jones  <rjones@redhat.com>

	README: Clarify that building from git needs './autogen.sh'.

2013-05-18  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Don't install man page for guestfsd(8) if --disable-install-daemon.

2013-05-17  Richard W.M. Jones  <rjones@redhat.com>

	php: Work around buggy PHP returning array as long.
	Because OStringList is an optarg, we must specify "a!"  to
	zend_parse_parameters.

	However zend_parse_parameters still returns this as a *long* rather
	than a NULL (or empty array) so positively check that it has returned
	an array.

2013-05-17  Richard W.M. Jones  <rjones@redhat.com>

	php: Fix comment in run-php-tests.sh.
	This updates commit cd40cf713991569e51b42742177e57f3dca148bc.

	Update release notes.

2013-05-17  Matthew Booth  <mbooth@redhat.com>

	Fix compiler warning when libselinux is not present
	static function selinux_warning() isn't used if HAVE_LIBSELINUX isn't
	defined, which results in a warning.

2013-05-17  Hilko Bengen  <bengen@hilluzination.de>

	Use pkg-config for Python
	At least libpython2.7-dev and libpython3.3-dev on current
	Debian/unstable ship with pkg-config files. As with the pkg-config
	check for Lua, we check for versioned and an unversioned .pc files.

2013-05-16  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Run lvmetad if it exists.
	This daemon is used by newer LVM to interface with udev events.

2013-05-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.39.

2013-05-13  Richard W.M. Jones  <rjones@redhat.com>

	drives: Fix rules for quoting files that contain ':'.
	The test was backwards.

	This fixes commit a95214b1985e694946e3426120a6fdc13a3f081f.

2013-05-13  Richard W.M. Jones  <rjones@redhat.com>

	faq: Update documentation for Debian Squeeze (thanks Hilko Bengen).

2013-05-11  Richard W.M. Jones  <rjones@redhat.com>

	http: Fix typo in documentation.
	This fixes commit 83f74f5c564c51a1324b12e5edc4b50356d49dc6.

	Add support for qemu's curl driver (ie. FTP, FTPS, HTTP, HTTPS, TFTP).

	iscsi: Document that one server must be passed, and that username may be passed.
	This fixes commit 8b271101a1724bab926c65c77436d8128bf1c2df.

	drives: Fix typo in error message.
	This fixes commit 0a065c45748ec5efe86f4d02f4864a58ed7dae36.

	Version 1.21.38.

	build: Add 'make maintainer-tag' rule for tagging HEAD with current version.

	tests/regressions: Remove bogus comment in test.
	This updates commits a95214b1985e694946e3426120a6fdc13a3f081f.

2013-05-11  Richard W.M. Jones  <rjones@redhat.com>

	drives: Remove check for ':' in filename (RHBZ#811649).
	Modern qemu can now handle this properly.  ':' is only special if what
	precedes it looks like a transport, so:

	  qemu-system-x86_64 -drive foo:bar     .. fails
	  qemu-system-x86_64 -drive ./foo:bar   .. works

	Thus by adding ./ in front of relative paths that contain ':' we can
	work around this.

	In addition, this broke iscsi:// URIs because iSCSI target names
	routinely contain ':' characters.

2013-05-11  Richard W.M. Jones  <rjones@redhat.com>

	drives: ceph/gluster/iscsi/sheepdog/ssh: Force the disk name to begin with a '/'.
	This avoids confusion when using URIs in guestfish, since the path
	will always start with a '/', and we don't otherwise know if we should
	remove it or not.  By forcing the '/' to always be there, we deal with
	this problem in the API instead.

	drives: Use libxml2 to construct safely quoted URIs for qemu.

2013-05-10  Richard W.M. Jones  <rjones@redhat.com>

	Add support for iSCSI.

	src/inspect-fs.c: Don't segfault if internal_parse_mountable returns NULL (RHBZ#961812).

2013-05-09  Richard W.M. Jones  <rjones@redhat.com>

	./run: Don't set LIBGUESTFS_PATH if --disable-appliance.
	Thanks Dave Vasilevsky for spotting this problem.

	recipes: Add link to script for converting Windows DVD to bootable USB key.

	New API: cp-r
	This runs 'cp -rP' and is useful for copying when the target
	doesn't support file owners or permissions (ie. FAT).

	Version 1.21.37.

	fish/options.c: Whitespace changes.

2013-05-09  Dave Vasilevsky  <dave@vasilevsky.ca>

	fuse: Document the fstype parameter

	fuse: Allow specifying the fstype of a mount

2013-05-08  Richard W.M. Jones  <rjones@redhat.com>

	rbd: Miscellaneous stylistic changes, no functional change.

	Use size_t for loop iterators.

	src/libvirt-domain.c: Cast constant strings to avoid warning about signedness.

	src/drives.c: 'auth' string is const.
	This fixes commit f3e01b69e04a0e8321e9d54ca39a4d7ea762f80d.

2013-05-08  Mike Kelly  <pioto@pioto.org>

	rbd: Support using a custom secret

	libvirt: extract usernames for network disks

	rbd: support usernames, for cephx authentication

	libvirt: initial support for networked disks

	rbd: send mon_host for rbd drives
	This is how the servers are passed to kvm.

2013-05-02  Hilko Bengen  <bengen@hilluzination.de>

	Fix rpcgen call for separated builds.

	perl: Fix install target for separated builds.

2013-05-02  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.36.

	debian: Add OCaml .depend files to DISTCLEANFILES.
	Otherwise debuild complains that these files have been created after
	it does a 'make distclean'.

2013-05-01  Richard W.M. Jones  <rjones@redhat.com>

	tests/c-api: Various code refactorings.
	- Don't use fixed names for the disks.  This will allow us to
	  parallelize this test.

	- Add a new "GETKEY:<key>" String parameter which can retrieve keys
	  from the handle.  The temporary disk names are stored as keys.

	- Don't test the close callback.  However this uses the close callback
	  mechanism to delete the temporary disks, and in any case close
	  callbacks are well tested by the language binding tests.

	- The generated code now produces a static array of tests (instead of
	  a 'perform_tests' function), making it possible to parallelize.

2013-05-01  Richard W.M. Jones  <rjones@redhat.com>

	tests/c-api: Remove global guestfs handle.
	This will allow us to parallelize these tests.

	tests/c-api: Warn about deprecated functions in main program.
	And replace deprecated guestfs_set_close_callback with
	non-deprecated guestfs_set_event_callback.

	tests/c-api: Factor out common init_* into separate functions.

	java: Standardize Java test numbering.

2013-04-30  Mike Kelly  <pioto@pioto.org>

	ssh: fix setting the username part
	Right now, we'd always be setting a NULL username.

2013-04-30  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Standardize test names and numbering.

	python: Standardize test numbering.

	perl: Make the 030-create-flags test same as canonical OCaml version.

	ocaml: Set close-on-exit flag to true in this test so handle is cleaned up.
	Otherwise the valgrind test fails since the handle resources
	are leaked.

	Version 1.21.35.

	erlang: Make separated builds work correctly.
	Set ERL_LIBS and also create a phony 'ebin' directory for the
	guestfs.beam (library) so that the tests run against the local copy
	not the installed version, and so that separated builds work.

	erlang: Add a CLEANFILES rule.

	python: Fix for separated builds.
	Ensure that ./run sets PYTHONPATH to include the Python source
	directory (location of guestfs.py).

2013-04-30  Richard W.M. Jones  <rjones@redhat.com>

	perl: Fix build and test to work with separated builds.
	This is inspired largely by Hilko Bengen's equivalent
	hivex patch here:

	https://github.com/libguestfs/hivex/commit/887466794a40f57b84ce32524e1a650d6674c7e6

2013-04-30  Richard W.M. Jones  <rjones@redhat.com>

	perl: run-bindtests: Don't set PERL5LIB.
	This environment variable should already be set properly
	by 'run', there is no need to set it from this test script.

	./run: Set s= (srcdir).  Use absolute paths.

2013-04-29  Richard W.M. Jones  <rjones@redhat.com>

	tests/mountable: Fix incorrect use of inspect-os API (RHBZ#957380).

2013-04-29  Mike Kelly  <pioto@pioto.org>

	Make a 1G test image instead, avoiding a size bug
	mkfs_btrfs: /dev/vda2: device /dev/vda2 is too small (must be at least
	256 MB) at .../libguestfs/tests/guests/guest-aux/make-fedora-img.pl line
	140.

	Refactor image partition sizing

2013-04-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.34.

	perl: Almost standardize the Perl tests.
	This needs more work, but brings them mostly up to the same
	standard form as the OCaml tests and the test documentation.

2013-04-29  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Standardize the test sequence for all bindings; implement this for OCaml.
	The idea behind this change is to have a consistent set of
	tests across all bindings, while at the same time saving time.
	For background see:

	https://www.redhat.com/archives/libguestfs/2013-April/thread.html#00069

2013-04-29  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add a regression test for RHBZ#957772.

	daemon: Properly quote arguments for tar-out, base64-out commands (RHBZ#957772).
	This fixes commit c78ec7e085e99bfddd0509dece72bf6a8d0188ce
	which was an attempt to fix RHBZ#908322.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	./run: ruby: Set $RAKE and fix Ruby tests.
	This wasn't set which caused Ruby tests to silently not run
	without any indication.

	ruby: Fix segfault in regression test.
	This was revealed by the regression test for RHBZ#664558.
	Unfortunately because Ruby tests had been silently disabled,
	this regression test was never run.

	ruby: Fix optargs test.

	Version 1.21.33.

	tools: The programs are located in the source directory.

	python: Test programs are located in the source directory.

	fish: Add $srcdir in several places where test files exist in the source directory.

	tests/rsync: This test only copies generated files.

	tests: Add $srcdir in several places for test files located in source directory.

	tests/xml: Get XML data file from source directory.

	tests/btrfs: Get data files from source directory.

	tests/selinux: Pick up run-test.pl script from source directory.

	tests/guests: Various fixes for separated builds.
	This now correctly builds all the phony guests when
	builddir != srcdir.

	tests/guests: Don't include fake Windows binary hive files in git.
	This means that people compiling from git will be required to have the
	'hivexregedit' command (from hivex).

	tests/guests: Ensure hard to generate files are cleaned by 'make distclean'.
	This allows us to switch from non-separated to separated builds
	without breaking (the user must do 'make distclean' between the
	switch).

	perl: Fix 'make check' to find bindtests.pl in source directory.
	Despite this change, separated builds are still broken, apparently
	because ExtUtils::MakeMaker doesn't support this sort of
	configuration, or else we're using it wrong.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	tests/c-api: Allow FileIn paths to be prefixed by "$srcdir".
	Since tests involving FileIn will often wish to read from local files,
	it makes sense that they would want to open files in $srcdir.

	Therefore allow such paths to be prefixed by "$srcdir" which is
	substituted at run time by the same named environment variable (set by
	automake).

	This fixes separated builds in tests/c-api directory.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	Remove many uses of $(builddir).
	"$(builddir)" is always "."

	Therefore most uses of $(builddir) are suspect and should be
	removed or replaced with "."

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Fix rule for building supermin.d/init.img.
	Use a temporary directory instead of copy hack.

	tests/data: Add a comment noting a bug in the Makefile.
	abssymlink is an intentionally dangling symlink, but this confuses
	make which thinks it has to rebuild the rule every time.

	tests/data: Don't prepend build paths with $(builddir).
	It's both unnecessary and confuses make.

	tests/data: Fix initrd when doing separated builds.
	Otherwise the initrd contains paths like '../../tests/data/empty'
	which obviously causes the tests to fail.

	php: Disallow separated builds.
	As it stands, this will just break.  Until it is fixed, give a
	diagnostic message.

	gobject: Fix separated builds.

	haskell: Fix separated builds.

	java: Allow source directory to be prepended by make.
	Fix for separated builds.

	java: Bindtests.java is generated in the source directory.
	Fix for separated builds.

	ocaml: bindtests.ml is generated in the source directory.
	This seems to be necessary because separated builds don't recognize
	the *.ml file as being a source file (unlike, for example, *.c files).

	generator: Place generator, stamp-generator, build files into builddir.
	Previously the generator binary was (deliberately) placed into the
	source directory.  However there was no real reason for this to
	happen.  Always put the build products into the builddir.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	generator: Make stamp-generator in the Makefile.
	Since stamp-generator is a Makefile thing, make it in the Makefile,
	not in the generator itself.

	Also this ensures stamp-generator is created in the builddir, not in
	the source directory (fixing separated builds).

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	configure: Make sure that certain build directories exist.
	When builddir != srcdir, this ensures that certain build directories
	which might not exist are created by configure.

	tests/data: Ensure all generated image files are removed by 'make clean'.
	Otherwise the build breaks if you switch from a non-separated build to
	a separated build.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	Fix 'make distclean'.
	Because the generator subdirectory is cleaned first, and other
	directories recurse into the generator directory, 'make distclean'
	would fail (because generator/Makefile would be deleted by that
	point).

	Change subdirs-rules.mk so it doesn't fail if generator/Makefile has
	been deleted already.

2013-04-25  Richard W.M. Jones  <rjones@redhat.com>

	subdirs-rules: Remove 'appliance' rule.
	It was used in only one place (perl/Makefile.am).

	If users want to build just the appliance, then they could do 'make -C
	appliance'.

2013-04-24  Richard W.M. Jones  <rjones@redhat.com>

	configure: Create resize/ subdirectory if building in a different builddir.

2013-04-23  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.32.

	tests/guests: Add make-guests-all-good.pl to EXTRA_DIST.
	This fixes commit 2ae72dcaf89130647f03ff7c3d0900215a91f59a.

	release notes: Fix unterminated C<...> sequence in POD.

2013-04-22  Richard W.M. Jones  <rjones@redhat.com>

	tests: sysprep: Specify list of operations explicitly.
	This commit makes no functional change on its own, but it allows us to
	filter out failing operations on Ubuntu.

2013-04-22  Richard W.M. Jones  <rjones@redhat.com>

	grub-install: Change test to use /dev/sda instead of /dev/vda.
	The previous test for grub-install hard-coded /dev/vda (ie. assuming
	virtio-blk instead of more modern virtio-scsi).

	This changes the test to hard-code /dev/sda instead.  However this
	change is still not correct since /dev/sda will be adjusted by block
	device name translation in the call to grub-install, but not what is
	written to /boot/grub/device.map.

	Since we no longer support grub-install on Fedora, this won't affect
	things, but Ubuntu still has a 'grub-install' command (although it's
	actually from grub2).

2013-04-19  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Link libguestfs-gobject library with GIO.
	So that we get the g_cancellable_* symbols.

	gobject: Link libguestfs-gobject library with GOBJECT_LIBS.
	There's no such thing as a _LIBS variable in automake, so
	this line was effectively being ignored.

2013-04-19  Richard W.M. Jones  <rjones@redhat.com>

	virt-ls: Use string instead of small array.
	This works around the following warning:

	virt-ls.c: In function 'show_file':
	virt-ls.c:574:1: error: stack protector not protecting function: all local arrays are less than 4 bytes long [-Werror=stack-protector]

2013-04-19  Richard W.M. Jones  <rjones@redhat.com>

	examples: Don't ignore return value of chdir.
	GCC 4.7.3 whinges about this.

2013-04-17  Richard W.M. Jones  <rjones@redhat.com>

	tests: guests: Auto-generated guests-all-good.xml.
	Only include guests which we successfully created, so for example if
	there's no NTFS support then the Windows guest won't be included.

2013-04-17  Richard W.M. Jones  <rjones@redhat.com>

	tests: guests: Display some information about each phony guest for debugging.
	This adds debugging output like this:

	  fedora-btrfs.img: file size bytes: 536870912
	  fedora-btrfs.img: allocated bytes: 12963840
	  fedora-btrfs.img: MD5 hash:        7e8eded44fc832b0f88b0dc5eebf490c

2013-04-17  Richard W.M. Jones  <rjones@redhat.com>

	tests: Mark 'skipped' function with __attribute__((printf)).
	With recent GCC, you get this warning:

	tests-main.c: In function 'skipped':
	tests-main.c:256:3: error: function might be possible candidate for 'gnu_printf' format attribute [-Werror=suggest-attribute=format]

2013-04-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.31.

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: options: Allow Unix domain sockets to be specified in --add URIs.
	You can now use a URI such as:

	 guestfish -a nbd://?socket=/tmp/sock

	(a NBD connection to Unix domain socket /tmp/sock).

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: options: Format server name as "tcp:host[:port]".
	This is safer, because otherwise a URI could contain some clever
	"unix:..." string as the hostname, tricking qemu into opening a Unix
	domain socket at an uncontrolled location.

	This fixes commit 349300af08be9ae9f3d7259e688e2ee5318f2171.

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	df: Move variable decl to top of function.
	Since this code is no longer conditional, we don't need to have the
	extra { ... } inside the case statement.

	This tidies up commit 2f0a4d7c18e622c48e33edc3f80dbd593c6398bc.

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.30.

	Require libxml2.
	libxml2 is very commonly available on Linux distros and has also been
	ported (and is widely available) on Mac OS X and Windows.  Therefore
	simply require libxml2, and remove a lot of conditional code.

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add -a URI (add remote storage) to options.
	Add a remote drive by doing:

	 guestfish -a ssh://example.com/path/to/disk.img

	There are several different protocols supported, as explained in the
	man page.

	This affects all virt-* tools that use the common guestfish options
	parsing code.

2013-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: options: Whitespace change.

	Add support for SSH (Secure Shell) block device.

2013-04-15  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Add a quick summary to the debugging section of the FAQ.

2013-04-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.29.

	tests: Split C API tests into regular C file + generated tests file.

	tests: Replace TestOutputHashtable with TestResult and C test.

	tests: Replace TestOutputBuffer with TestResult and C test.

	tests: Replace TestOutputFileMD5 with TestResult and C test.

	tests: Remove TestOutputLength (not used by any tests).

	tests: Replace TestOutput/TestOutputDevice with TestResult{String,Device}.

	tests: Replace TestOutputList{,OfDevices} with TestResult.
	This adds helper C functions 'is_string_list' and 'is_device_list'
	allowing these tests to be carried out in generic C code instead of as
	specialized tests.

2013-04-12  Richard W.M. Jones  <rjones@redhat.com>

	tests: Replace TestOutputStruct with TestResult.

	tests: Replace TestOutputInt{,Op} with TestResult.

	tests: Replace TestOutputTrue/False with TestResultTrue/False.

2013-04-12  Richard W.M. Jones  <rjones@redhat.com>

	tests: More flexible re-implementation of C API tests.
	Instead of using the various 'TestOutput', 'TestOutputList' etc
	macros, it makes better sense to let the tests contain fragments of C
	code to perform the checks.

	Several new macros are added:

	- 'TestResult': This macro takes a C expression which is evaluated to
	test the result of commands.  For example to compare if a string
	result has some value:

	   TestResult (* command sequence *), "STREQ (ret, \"abcd\")"

	The variable "ret" contains the result from the last command in the
	sequence.  But also, variables "ret1", "ret2", etc contain the results
	from the last but one command, the command before that, and so forth,
	allowing much more flexible tests to be written.

	- 'TestResultTrue', 'TestResultFalse': Wrappers that test the last
	command for true/false.

2013-04-12  Richard W.M. Jones  <rjones@redhat.com>

	tests: 'If' and 'Unless' conditions never used, so remove them.

	is_lv: Does not need to depend on lvm2.
	It only uses 'stat', not any lvm binaries.

	valgrind suppressions: Suppress libmagic leaks.

2013-04-11  Richard W.M. Jones  <rjones@redhat.com>

	debian: packagelist: Add mtools.

2013-04-11  Olaf Hering  <olaf@aepfle.de>

	add --with-supermin-extra-options configure option
	Useful to pass --use-installed and other options to supermin.

2013-04-11  Richard W.M. Jones  <rjones@redhat.com>

	Update translations from Transifex.

	Update gnulib to latest.

	Remove use of gnulib progname module.
	It's simpler to use the glibc 'program_invocation_short_name(3)'
	feature, and fall back to a generic solution.  Also remove risky
	assignments to argv[0].

	New APIs: set-program, get-program.
	These set or get the program name in the handle.  Most programs
	will never need to call this, since we set this, if possible,
	using the glibc 'program_invocation_short_name(3)' feature.

2013-04-10  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add help for prepared disk images to the man page.
	Also the long description for each prepared disk image can now contain
	Perl POD markup.

	inspection: Don't fail if libosinfo database is not found (RHBZ#948324).

2013-04-09  Richard W.M. Jones  <rjones@redhat.com>

	fish: welcome message: guestfish can edit disk images.

	"guestfish" now means the "guest filesystem shell".
	Remove the word "interactive" which implies that guestfish can only
	(or often) be used interactively.

	Version 1.21.28.

	examples: Update debug-logging.c example.
	This updates commit e3546ad2ce2c0d953e3be2b072bacd48972450af.

2013-04-08  Richard W.M. Jones  <rjones@redhat.com>

	examples: Add example program showing enabling debugging and capturing log messages.

2013-04-05  Richard W.M. Jones  <rjones@redhat.com>

	Update release notes for future 1.22 release.

	pod: Fix "wide character in print" warnings by declaring encoding correctly.

2013-04-04  Richard W.M. Jones  <rjones@redhat.com>

	Fix typo in extlinux documentation.
	This fixes commit dee1dd64c3cd5e67393dec679040eb02e81c84b0.

	Version 1.21.27.

	New APIs: Add support for syslinux and extlinux (bootloaders).
	This also adds tests of SYSLINUX and EXTLINUX which create bootable
	guests.

2013-04-04  Richard W.M. Jones  <rjones@redhat.com>

	Don't delete iconv locale data from the appliance.
	- /usr/lib{,64}/gconv/*:

	This is the iconv data, required for APIs like iconv_open to work.  In
	particular, the mtools 'mcopy' program fails completely if it cannot
	use iconv.  'mcopy' is used by SYSLINUX to copy files to the disk.

	The error you would have seen is:

	  Error converting to codepage 850 Invalid argument
	  Cannot initialize 'S:'
	  Bad target s:/ldlinux.sys

	- /usr/bin/localedef and /usr/sbin/build-locale-archive:

	These are not really needed, but both are simply small binaries so we
	might as well not delete them.

2013-04-04  Richard W.M. Jones  <rjones@redhat.com>

	daemon/copy: Ensure errno is preserved along error paths.

2013-04-04  Richard W.M. Jones  <rjones@redhat.com>

	Add 'sparse' option to copy-{device,file}-to-{device,file} calls.
	Setting the 'sparse' optional boolean causes writes to be omitted if
	the block to be written contains all zero bytes.

	This should help with sparse backing files (eg. raw, qcow2, dm-thin, etc).

	Also, modify virt-resize to use this option by default when copying
	devices.  The savings in virt-resize can be quite startling, eg
	'du -sh' (ie. true size) of a resized disk image:

	8.1G      /tmp/f15x32-resized.img    # before this change
	3.2G      /tmp/f15x32-resized.img    # after this change

2013-04-04  Richard W.M. Jones  <rjones@redhat.com>

	php: Fix segfault when function has an OStringList optional argument.
	How this PHP/Zend stuff is supposed to work is not documented, but at
	least with these changes it no longer segfaults.

2013-04-03  Richard W.M. Jones  <rjones@redhat.com>

	python: Let RHashtable be returned as a Python dict.
	The initial proposal was suggested by Matt Booth and discussed on the
	mailing list here:

	https://www.redhat.com/archives/libguestfs/2013-April/msg00007.html

2013-04-03  Richard W.M. Jones  <rjones@redhat.com>

	Better error messages for FUSE and other things not supported.
	The bare message "FUSE not supported" wasn't actionable.

2013-04-02  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: In Fedora >= 19, the RPM detects if it can access the network when building.

	Version 1.21.26.

2013-04-02  Richard W.M. Jones  <rjones@redhat.com>

	perl: Remove Sys::Guestfs::Lib.
	See announcement on the mailing list for more details about this change:

	https://www.redhat.com/archives/libguestfs/2013-April/msg00001.html

2013-04-02  Richard W.M. Jones  <rjones@redhat.com>

	perl: Remove use of Sys::Guestfs::Lib::open_guest function.
	This obsolete function does all sorts of libvirt/XML things, which can
	now be replaced by using ordinary API calls; especially $g->add_domain.

	tests/data: Update README and comments about initrd binary files.
	These are used for testing the C, not Perl, file_architecture API.

2013-04-02  Richard W.M. Jones  <rjones@redhat.com>

	New API: feature-available.
	This API is an easier to use version of the existing guestfs_available,
	because the new API returns true/false instead of throwing an error
	when a feature from the list is not available.

	In truth we've had this implementation internally in the library
	and several tools and in Sys::Guestfs::Lib for a long time.  This
	change just turns it into a publicly consumable API.

2013-04-02  Richard W.M. Jones  <rjones@redhat.com>

	virt-ls, virt-edit: Remove references to Sys::Guestfs::Lib and other irrelevant Perl libraries.

2013-04-01  Richard W.M. Jones  <rjones@redhat.com>

	java: Make test cases depend on jar file.
	This fixes parallel builds.  The error you would have seen was:

	  error: error reading libguestfs-1.21.25.jar; zip file is empty

2013-04-01  Richard W.M. Jones  <rjones@redhat.com>

	java: 'make clean' should remove whole api/ directory.
	This directory (containing HTML documentation) can be removed
	completely when making clean.  CLEANFILES cannot recursively remove a
	directory, so use a clean-local rule instead.

	build: Change various check rules so they implicitly act like 'make -k'.
	Rules such as 'make check-valgrind' are implemented using a for-loop.
	They would always exit after the first error, even if 'make -k' was
	used at the top-level.  Since 'make -k'-style behaviour is generally
	more useful, change these for-loops so they run all the tests, and
	report errors at the end.

	make clean: Remove *~ (editor backup) files.

	make clean: Clean contents of tmp directory.

2013-04-01  Richard W.M. Jones  <rjones@redhat.com>

	valgrind: Write separate log files in tmp/valgrind-<DATE>-<PID>.log
	Current code wrote a single valgrind.log in the top-level directory.
	This was overwritten with each valgrinded program, which wasn't much
	use.  The new version writes multiple separate valgrind-*.log files
	containing the date and PID (so each is unique).

	It would nice if valgrind could delete log files that don't contain
	errors, but this doesn't appear to be possible.

2013-04-01  Richard W.M. Jones  <rjones@redhat.com>

	"attach method" is from now on known as "backend".
	This large, but mainly mechanical commit, renames "attach method"
	everywhere to "backend".

	Backwards compatibility of the API (guestfs_{set,get}_attach_method)
	and environment (LIBGUESTFS_ATTACH_METHOD) is maintained, but in new
	code use guestfs_{set,get}_backend and LIBGUESTFS_BACKEND instead.

	The default backend (launching qemu directly) is now called 'direct'
	instead of 'appliance', although you can still use 'appliance' as a
	synonym.

2013-04-01  Richard W.M. Jones  <rjones@redhat.com>

	build: Clarify output of 'make help'.

2013-03-30  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.25.

	docs: Remove obsolete sections from libguestfs gotchas.
	These refer to old behaviour in long-unsupported versions
	of libguestfs.

	docs: Refresh API overview section.

	docs: Alternate ways to list filesystems through the API.

	FAQ: Update distro support section.

	debian: Allow test-virt-alignment-scan-guests.sh test to be skipped.

	tests/guests: Add 'guests-all-good.xml{.in}' libvirt test guest set.
	This differs from 'guests.xml' in that there are no guests with
	missing disks, etc., so we can use this to test virt-alignment-scan
	accurately.

2013-03-30  Richard W.M. Jones  <rjones@redhat.com>

	parallel: Propagate errors from worker threads and exit with error code.
	In virt-df and virt-alignment-scan, ensure that errors that happen in
	worker threads are propagated all the way up and result in
	exit(EXIT_FAILURE).

	Note that this makes the align/test-virt-alignment-scan-guests.sh test
	fail (for a genuine reason).  This is fixed in the following commit.

	This updates commit 8b90f55dc733e358a0892d8e6e5c67fe2cc4e891.

2013-03-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.24.

	java: Make bindtests depend on jar file so parallel builds work.
	This fixes commit c36ced5e21348f5357fc70b402664c9a5d827b06.

	virt-alignment-scan: Don't call exit(3) from this multi-threaded program.
	For more information see:
	https://bugzilla.redhat.com/show_bug.cgi?id=790837#c2

	daemon: file: Remove extraneous space after output of 'file' command (RHBZ#928995).

2013-03-29  Richard W.M. Jones  <rjones@redhat.com>

	daemon: parse_btrfsvol: Perform device name translation before trying to stat the device.
	If using (eg) virtio-blk, the canonical name won't work unless device
	name translation is done first.

	This fixes commit 47b929b7893b3a76ff22760d245cb80720ae6345..

2013-03-28  Richard W.M. Jones  <rjones@redhat.com>

	daemon: parse_btrfsvol: Move variable decls to top, whitespace fixes.
	This fixes commit 47b929b7893b3a76ff22760d245cb80720ae6345.

	daemon: Fix parse_btrfsvol to use STRPREFIX instead of bogus strncmp.
	This fixes commit 47b929b7893b3a76ff22760d245cb80720ae6345.

	java: Format CLEANFILES rule.

	java: Enable parallel builds.
	This reverts commit 89404ec0ba9781b55cb3a87689bcc519e7d73ea2.

	ocaml tools: Enable parallel builds.
	In particular, building virt-sysprep is slow because there are so many
	modules.  Enable parallel builds.  If it breaks, we should fix it, not
	work around it.

	ocaml: Fix and enable parallel builds.
	We only have to serialize the two calls to ocamlmklib, since both will
	try to create a file called 'libmlguestfs.a'.  Apart from that,
	parallel builds here should be fine.

	ocaml: Break circular dependency of mlguestfs.cma{,x} <-> guestfs.cm{o,x}

	Use new-style demand-loaded bash-completion scripts.

	Version 1.21.23.

	bash completion: Extend this script to work with other virt tools.

2013-03-28  Richard W.M. Jones  <rjones@redhat.com>

	Add --long-options option to most tools.
	For example:

	$ guestfish --long-options
	--add
	--cmd-help
	--connect
	--csh
	--domain
	--echo-keys
	[etc.]

	The idea of this is to make it easier to write a bash completion
	script that accurately expands --<TAB> options for each command.

2013-03-28  Richard W.M. Jones  <rjones@redhat.com>

	fish: Better tab completion for guestfish.

2013-03-28  Richard W.M. Jones  <rjones@redhat.com>

	OCaml tools: Use Common_gettext and Common_utils modules.
	Share these modules across all three tools virt-resize, virt-sparsify
	and virt-sysprep.

	This is mostly code motion.

2013-03-23  Richard W.M. Jones  <rjones@redhat.com>

	osinfo: Fix declaration of guestfs___osinfo_map to work when libxml2 is not installed.

2013-03-19  Richard W.M. Jones  <rjones@redhat.com>

	Add support for: Gluster, Ceph (rbd), Sheepdog.
	These are not tested at all, and so probably won't work.  However the
	code and infrastructure is in place so we can fix bugs easily as they
	arise.

	build: Add 'make check-valgrind-with-appliance'.

	build: Small rearrangement of Makefile.am check-slow rule.

	build: Fix 'make extra-tests' to call 'check-valgrind' instead of rule that doesn't exist.

2013-03-19  Richard W.M. Jones  <rjones@redhat.com>

	build: Turn off warning about overlength-strings.
	ISO apparently specified a limit of 4096 bytes/characters for strings.
	The description of the guestfish command 'add-drive' is now longer
	than this limit, causing this warning.

	Turn off this warning, since GCC has no problems with these strings.

2013-03-18  Richard W.M. Jones  <rjones@redhat.com>

	nbd: Update and clarify the documentation for NBD.

	drives: Make parse_servers return an int (number of servers).
	This is just a code refactoring.

	Version 1.21.22.

	nbd: Allow 'unix' transport & socket to be specified.
	This allows the server string to contain "unix:/path/to/socket",
	thus using a Unix domain socket to connect to the NBD server.

	tests: nbd: Ensure qemu-nbd subprocess is always killed.
	Even if the test fails/dies for some other reason.

	drives: Factor out common code for making a file= qemu parameter.

2013-03-18  Richard W.M. Jones  <rjones@redhat.com>

	drives: Allow multiple servers to be passed to add_drives.
	This changes the existing (non-published-in-stable) API for
	add_drives{_opt} so that instead of having separate 'server' and
	'port' parameters, now we have a single 'server' parameter which is a
	list of strings.

	This is so we will be able to cope with protocols such as Ceph which
	allows multiple servers, or Sheepdog which can use an implicit local
	server (ie. zero servers specified).

	NBD still requires exactly one server.

2013-03-18  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Remove unused #includes.

	drives: Add a common guestfs___free_drive_source function.
	This refactors the code to introduce a common function.

	drives: Whitespace change.

	drives: Change internal struct drive_source.
	This is just code refactoring.

	nbd: Note that readonly connections are not supported by the appliance attach-method.
	This documents the problem and links to the upstream bug.

2013-03-16  Richard W.M. Jones  <rjones@redhat.com>

	lib: Remove -Wswitch-default.
	This warning is actively dangerous.  Because it forces you to use a
	'default:' case in every switch statement, it means you can no longer
	detect missing cases in enums.

	lib: Add missing cases in switch statements.
	These were being hidden by misguided use of the dangerous
	-Wswitch-default flag.

2013-03-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.21.

	appliance: Make sure cachedir has mode 0755 (RHBZ#921292).
	See https://bugzilla.redhat.com/show_bug.cgi?id=921292#c4

	appliance: Use ignore_value() macro instead of casting return to (void).

	drives: add_drive was only called from one place, so inline it.
	This is just code motion.

2013-03-15  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add direct support for the NBD (Network Block Device) protocol.
	You can now add remote NBD drives using:

	 ><fs> add-drive "" format:raw protocol:nbd server:localhost

	(Note that you also need to add port:NNNN if the server is running on
	a non-standard port).

	The corresponding qemu-nbd service can be started by doing:

	 qemu-nbd disk.img -t

	This commit also adds a test.

2013-03-14  Richard W.M. Jones  <rjones@redhat.com>

	drives: Make drv->readonly flag into a bool.

	drives: Refactor code to separate 'struct drive' creation from adding drives.

	launch: Move code concerned with adding drives to 'src/drives.c'.
	Apart from adding a few comments, this is entirely code motion.

	Add ./configure --with-extra-packages="..." option.
	This adds extra packages to the appliance.  It's useful for adding
	debugging packages.

2013-03-14  Hilko Bengen  <bengen@debian.org>

	Mount /run as tmpfs inside appliance (workaround for febootstrap's /init)

2013-03-14  Richard W.M. Jones  <rjones@redhat.com>

	erlang: Use $(ERLANG_LIB_DIR) to get Erlang libdir.
	Instead of previous custom hack which didn't work properly on Debian.

	Thanks: Hilko Bengen.

2013-03-14  Richard W.M. Jones  <rjones@redhat.com>

	README: Discourage general users from doing 'make install'.
	It causes plenty of problems with people have multiple parallel
	versions of libguestfs installed, and there's no benefit because you
	can easily run libguestfs and tools from the build directory.

2013-03-14  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Support 'make INSTALLDIRS=vendor install' for Ruby as well as Perl.
	As with Perl, you can now set INSTALLDIRS to control where Ruby places
	its files (ie. in the site dir, which is the default, or in the vendor
	dir).

	The difference in file layout between 'make install' and
	'make INSTALLDIRS=vendor install' is shown below (for Fedora 18).

	--- /tmp/site	2013-03-14 12:14:35.740015694 +0000
	+++ /tmp/vendor	2013-03-14 12:14:13.668093944 +0000
	@@ -119,21 +119,20 @@
	 ./usr/lib64/ocaml/guestfs/mlguestfs.cmxa
	 ./usr/lib64/ocaml/stublibs/dllmlguestfs.so
	 ./usr/lib64/ocaml/stublibs/dllmlguestfs.so.owner
	-./usr/lib64/perl5/auto/Sys/Guestfs/Guestfs.bs
	-./usr/lib64/perl5/auto/Sys/Guestfs/Guestfs.so
	-./usr/lib64/perl5/auto/Sys/Guestfs/.packlist
	 ./usr/lib64/perl5/perllocal.pod
	-./usr/lib64/perl5/Sys/bindtests.pl
	-./usr/lib64/perl5/Sys/Guestfs/Lib.pm
	-./usr/lib64/perl5/Sys/Guestfs.pm
	+./usr/lib64/perl5/vendor_perl/auto/Sys/Guestfs/Guestfs.bs
	+./usr/lib64/perl5/vendor_perl/auto/Sys/Guestfs/Guestfs.so
	+./usr/lib64/perl5/vendor_perl/auto/Sys/Guestfs/.packlist
	+./usr/lib64/perl5/vendor_perl/Sys/bindtests.pl
	+./usr/lib64/perl5/vendor_perl/Sys/Guestfs/Lib.pm
	+./usr/lib64/perl5/vendor_perl/Sys/Guestfs.pm
	 ./usr/lib64/php/modules/guestfs_php.so
	 ./usr/lib64/pkgconfig/libguestfs-gobject-1.0.pc
	 ./usr/lib64/pkgconfig/libguestfs.pc
	 ./usr/lib64/python2.7/site-packages/guestfs.py
	 ./usr/lib64/python2.7/site-packages/libguestfsmod.la
	 ./usr/lib64/python2.7/site-packages/libguestfsmod.so
	-./usr/local/lib64/ruby/site_ruby/_guestfs.so
	-./usr/local/share/ruby/site_ruby/guestfs.rb
	+./usr/lib64/ruby/vendor_ruby/_guestfs.so
	 ./usr/sbin/libguestfs-make-fixed-appliance
	 ./usr/share/doc/libguestfs/example-debian-netinst-cd.xml
	 ./usr/share/doc/libguestfs/example-debian.xml
	@@ -406,3 +405,4 @@
	 ./usr/share/man/uk/man3/guestfs-perl.3
	 ./usr/share/man/uk/man3/guestfs-python.3
	 ./usr/share/man/uk/man3/guestfs-ruby.3
	+./usr/share/ruby/vendor_ruby/guestfs.rb

	For prompting me to fix this, thanks: Hilko Bengen.

2013-03-14  Richard W.M. Jones  <rjones@redhat.com>

	launch: Print attach-method, tmpdir, umask, euid when launching.
	These are only printed when debugging is enabled, but should help
	debugging hard-to-pin-down permissions problems.

	tests: Make it easier to grep failures out of the log file.

2013-03-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.20.

	utils: Fix error messages for external commands that fail (RHBZ#921040).
	This adds a common utility function (guestfs___exit_status_to_string)
	and a common error function (guestfs___external_command_failed), and
	uses them all over the library and tools when converting exit status
	in error messages etc.

	lib: Move common errors to src/errors.c.
	This is just code motion.

	rescue: Remove dead code.
	This pty code was defended by #if 0 ... #endif and was dead code.

	Ignore case when generating AUTHORS file.

2013-03-12  infernix  <infernix@infernix.net>

	launch: appliance: Add custom parameters last.
	This allows custom parameters to modify parameters added by
	libguestfs, eg. by doing:

	  -set drive.hd0.file=rbd:foo/bar

	[infernix adds the comment below:]

	This works for recent versions of QEMU. The way to use this is:

	guestfish
	><fs> add-drive /dev/null
	><fs> config -set drive.hd0.file=rbd:pool/volume
	><fs> run

	This will probably work for more types (sheepdog, iscsi et al), but
	with the caveat that the libguestfs layers are bypassed so you'll
	*always* end up directly accessing the disk in rw mode.

2013-03-12  Richard W.M. Jones  <rjones@redhat.com>

	docs: Update documentation on attach-methods.
	Add better instructions for getting the default attach-method.

	Update libguestfs-test-tool(1) to show how to enable and disable
	libvirt.

2013-03-12  Richard W.M. Jones  <rjones@redhat.com>

	php: Pass all libvirt environment variables down to PHP test scripts.
	Including LIBVIRTD_* and VIRTLOCKD_*.

	This updates commit cd40cf713991569e51b42742177e57f3dca148bc.

2013-03-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.19.

	qemu-img info: Use --output json and YAJL (JSON parser) to safely parse output (RHBZ#920225).
	The old parser is still used if either YAJL is not available or
	qemu-img info doesn't support the --output json option.

2013-03-11  Richard W.M. Jones  <rjones@redhat.com>

	qemu-img info: Prefix parsing functions as old_parser_*.
	Prefix functions in this file with old_parser_... to make it clear
	this is the old / slightly unsafe human output parser, which is
	shortly to be replaced by a safer JSON parser.

	This is just code motion.

2013-03-11  Richard W.M. Jones  <rjones@redhat.com>

	php: Fix tests.
	- Use ./run script to run the tests.
	- Set environment variables correctly, including $PATH.
	- Test the locally built, not installed, copy of libguestfs.

	php: Revise README-PHP documentation.

	docs: Note that $PATH affects libguestfs.
	If $PATH is not set, libguestfs and/or libvirt tend to break.

	launch: libvirt: Unset $PATH can cause libvirt launch to fail.
	Note this fact in the error message that is printed in this situation.

	launch: libvirt: Print proper dotted libvirt version.

	php: Print libguestfs error string if test fails.

	php: Fix test, /dev/null format must be "raw".

2013-03-11  Richard W.M. Jones  <rjones@redhat.com>

	lib: Give values for each state in 'enum state'.
	The values of CONFIG, LAUNCHING and READY and (kind of) exposed
	through the API so shouldn't change.

	Use a bad sentinel for NO_HANDLE since that indicates a serious error.

2013-03-11  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add comment for libguestfs handle.

	RHEL 5: tests/xml: Define O_CLOEXEC in LD_PRELOAD library.

2013-03-10  Richard W.M. Jones  <rjones@redhat.com>

	RHEL 5: tests: Use gnulib.
	Gnulib defines O_CLOEXEC which is missing on RHEL 5.

2013-03-09  Richard W.M. Jones  <rjones@redhat.com>

	RHEL 5: Replacement for 'Unix.isatty stdout' for old OCaml versions.
	Unix.isatty missing on RHEL 5-era OCaml 3.09.3.

	RHEL 5: gnulib: Use module mkstemps.
	RHEL 5 glibc doesn't have this function.

	RHEL 5: inspect: Add macro for be32toh if one is not defined in the header files.

2013-03-08  Richard W.M. Jones  <rjones@redhat.com>

	Add suppression for memory leak in libmagic.

	filearch: Use a more logical way to construct the cpio command.

	filearch: Don't print errno if cpio command fails, print command status instead.
	errno is meaningless here.

2013-03-08  Richard W.M. Jones  <rjones@redhat.com>

	generator: Small fix for OCaml 3.12.1.
	OCaml 3.12.1 (unlike 4.00.1) doesn't let you use printf formatters
	in this way:

	  printf (if foo then "&%s" else "%s") str

2013-03-08  Hilko Bengen  <bengen@hilluzination.de>

	Move Ruby-related checks from autoconf to extconf.rb; add extra check for rb_alloc_func_t
	Ruby ships its own config.h which may or may not define the same
	relevant constants as our autoconf-generated config.h. Instead of
	trying to specify the exact path to the wanted header file we may just
	as well simply use Ruby's autoconf-inspired checks and macros.

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	df/parallel.c: Fix if libvirt is not available at compile time.

	Version 1.21.18.

2013-03-07  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: Fix link creation

	Still build the libguestfs-specific parts when --disable-appliance is passed to configure

	out-of-tree build: Fix localized manpages

	out-of-tree build: don't distribute extconf.rb.in template, use generated exconf.rb
	Apparently, the file will only be autogenerated in $(builddir) if it
	is not already present in $(srcdir).

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Handle log messages from connection layer centrally.
	Previously described as a "gross hack and massive layering violation".

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Abstract out socket operations from protocol code.
	This creates an abstract layer below the protocol code which handles
	the socket operations.  This will make it easier to introduce libvirt
	virSocketPtr operations in future.

	In the handle, g->conn contains the connection to the appliance.
	g->conn is NULL when we're not connected.

	poll(2) is used instead of select(2).

	All error messages about launch failing or the appliance unexpectedly
	dying are handled by two common error message functions, and these
	contain a better explanation of what to do.

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Remove message_summary code.
	Produces lots of output, and not very helpful.

	launch: unix: Set g->daemon_sock = -1 after closing it.
	This ensures we don't accidentally use the closed fd.

	lib: Rename g->fd to console_sock and g->sock to daemon_sock.
	This just renames the fields in the handle to more descriptive names.
	There is no functional change.

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Set FD_CLOEXEC flag on console socket.
	The earlier (pipe-based) code never set this flag, but that was a bug,
	potentially allowing the file descriptor to be leaked to subprocesses.

	Set the FD_CLOEXEC flag, but also ensure it is cleared in the child
	process just before qemu is exec'd (otherwise qemu would not have a
	console).

2013-03-07  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Use socketpair instead of pipe for qemu stdin/stdout.
	The libvirt backend already uses a Unix socket for the appliance
	console, and so for the libvirt backend the fields g->fd[0] == g->fd[1].

	Change the appliance backend to use a socketpair, so we need just a
	single file descriptor for qemu stdin/stdout (ie. appliance console).

	Consequently we can remove the array int fd[2] in the handle and
	replace it with a single file descriptor.

2013-03-06  Richard W.M. Jones  <rjones@redhat.com>

	proto: send_to_daemon is not an exported function.
	This function is only used inside src/proto.c, so rename
	it from guestfs___send_to_daemon to just send_to_daemon.

	valgrind: Add suppression for memory leak found in libselinux.

	debug: Add command to generate lots of debug messages.

2013-03-05  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: When debugging, print permissions of appliance and sockets.
	When debugging is enabled, this prints out the permissions (ie.
	ls -laZ) of the appliance and sockets directories.  This should be
	helpful for debugging RHBZ#913774.

	launch: libvirt: Rename 'is_root' as 'current_proc_is_root', and documentation.

2013-03-05  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: When root, set socket permissions to 0660 (vs 0775).
	Since qemu connects to both, there was no point at all in having these
	sockets be readable by other, nor executable by anyone.

	The sockets should now end up as:

	  srw-rw---- root.qemu

2013-03-05  Richard W.M. Jones  <rjones@redhat.com>

	fuse: tests: Set FD_CLOEXEC flag on file descriptor.
	This is not required here, but it helps if the test code matches what
	the documentations says you should do.

	Version 1.21.17.

	guestmount: Add --no-fork flag.
	This prevent guestmount from daemonizing.

	Add guestunmount.1.html to the website.
	This fixes commit 3e9e40aee322789e7f81422f4cfd42915b36eb4c.

	fuse: Add guestunmount program to handle unmounting (RHBZ#916780).

2013-03-04  Richard W.M. Jones  <rjones@redhat.com>

	fuse: guestfs_umount_local is not thread-safe.
	Despite what the documentation may have said, it certainly was not
	safe to call guestfs_umount_local from another thread.

	guestfs_umount_local could generate events, call the error handler, or
	access other fields in the handle, with no locking at all.

	We should aim to make guestfs_umount_local thread-safe in future.

	See also:
	https://bugzilla.redhat.com/show_bug.cgi?id=917706

2013-03-04  Richard W.M. Jones  <rjones@redhat.com>

	generator: Generate guestfs_user_cancel.
	This function is now generated, so bindings in various languages
	are made automatically.

	Note that the function previously returned void, but now it returns
	int (although always 0).  We don't believe that this is an ABI break
	since existing programs will continue to work.

2013-03-04  Richard W.M. Jones  <rjones@redhat.com>

	generator: Add 'wrapper' flag to control when wrapper is generated.
	Non-daemon functions normally have a wrapper function called
	eg. guestfs_name.  The "real" (ie. hand-written) function is called
	eg. guestfs__name.  The wrapper deals with checking parameters and
	doing trace messages.

	This commit allows the wrapper function to be omitted.  The reason is
	so that we can handle a few functions that have to be thread-safe
	(currently just: guestfs_user_cancel).  The wrapper is not thread safe
	because it can call events and/or the error handler.

2013-03-04  Richard W.M. Jones  <rjones@redhat.com>

	generator: Typo in comment: "Checking" -> "Check".

	threads: Note that even innocent-looking functions need a mutex.
	RWMJ was caught out by this one ...

	trace: Put trace buffer on the stack instead of in the handle.
	This makes more sense, and makes the code slightly closer to being
	thread safe (although it's still NOT thread safe).

2013-03-01  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Add question about running fsck on live filesystems.

	Version 1.21.16.

2013-03-01  Richard W.M. Jones  <rjones@redhat.com>

	lib: Check calls to xmlXPathEvalExpression for nodesetval == NULL.
	libxml2 xmlXPathEvalExpression can return an unusual nodeset:

	  $1 = {type = XPATH_NODESET, nodesetval = 0x0, boolval = 0, floatval = 0,
	    stringval = 0x0, user = 0x0, index = 0, user2 = 0x0, index2 = 0}

	Note that the nodeset is non-NULL, but the nodesetval is NULL.

	Check every call site and fix those that don't deal with this
	correctly.

2013-03-01  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Move 'connect_live' function.
	This is just code motion.

2013-03-01  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Pass SELinux label from guest to appliance (RHBZ#912499).
	When adding a domain (ie. guestfs_add_domain), read the SELinux
	<label/> and <imagelabel/> from the guest and use them for the
	appliance.  The appliance is statically labelled the same as the
	guest, so it is able to read its disks.

	However tell libvirt not to try relabelling the disks, to prevent
	libvirt from disturbing the existing labels on the disks (in
	particular when the libvirt connection is closed, we don't want
	libvirt to try to restore some other label on the disks).

	Updated with feedback from Matthew Booth.

2013-02-28  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Allow the SELinux label to be set on qcow2 overlay files.
	When a disk is opened readonly, the libvirt attach-method privately
	creates a qcow2 overlay on top.

	This commit lets that overlay get an SELinux label, and sets it to the
	imagelabel specified by guestfs_internal_set_libvirt_selinux_label.

	The above only applies to the libvirt attach-method.

2013-02-28  Richard W.M. Jones  <rjones@redhat.com>

	New internal API: internal_set_libvirt_selinux_norelabel_disks.
	If set, this causes <seclabel model=selinux relabel=no> to be added to
	the disk element in the libvirt XML.

	It has no effect *except* on the libvirt attach method when SELinux
	and sVirt is being used.

2013-02-28  Richard W.M. Jones  <rjones@redhat.com>

	New internal API: internal_set_libvirt_selinux_label
	This internal API sets two SELinux labels in the handle (the process
	label and the image label -- they are closely related).

	If using the libvirt attach-method with SELinux and sVirt, then this
	will cause the following XML to be added to the appliance definition:

	<seclabel type=static model=selinux relabel=yes>
	  <label>[LABEL HERE]</label>
	  <imagelabel>[IMAGELABEL HERE]</imagelabel>
	</seclabel>

	It is ignored by other attach-methods.

2013-02-28  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Refactor domain XML parsing code.
	This is just code motion.

	test-tool: Give an error if there are extra arguments on the command line.

	launch: libvirt: Refactor SELinux warning code.
	This is just code motion.

2013-02-28  Richard W.M. Jones  <rjones@redhat.com>

	parallel: Don't access the global handle from multiple threads.
	libguestfs handles are not thread safe, and it's not safe even to read
	settings from the handle from multiple threads (eg. guestfs_get_trace).
	Stop doing this in the parallel library.  This caused fairly
	reproducible segfaults when you enabled '-x' and/or '-v'.

	This fixes commit 34e77af1bf42a132589901164f29bd992b37589e.

2013-02-27  Richard W.M. Jones  <rjones@redhat.com>

	libutils: Don't include "guestfs-internal.h".
	This mini-library shouldn't access library-internal stuff.  It should
	only use the "guestfs-internal-frontend.h" header.

2013-02-27  Richard W.M. Jones  <rjones@redhat.com>

	lib: Move 'for_each_disk' function back into libvirt-domain.c.
	This function is no longer called from anywhere outside the library,
	or even outside libvirt-domain.c.

	This is just code motion, except for the size_t changes which are
	required in order to avoid signed overflow optimization error:

	  assuming signed overflow does not occur when simplifying conditional
	  to constant [-Werror=strict-overflow]

2013-02-26  Richard W.M. Jones  <rjones@redhat.com>

	generator: Line up GUESTFS_EVENT_ALL.

	generator: Remove "deprecated macros for internal functions".
	No need for these since these are internal functions that only code
	under our control should have been calling.

	Version 1.21.15.

	lib: Fix memory leak in guestfs_list_filesystems.
	This fixes commit 6e7f052ef40fc799605f13e21e1dc4928d274f41.

	tests: Add tests of guests to virt-df and virt-alignment-scan.

2013-02-26  Richard W.M. Jones  <rjones@redhat.com>

	tests: guests: Add blank disks plus libvirt test:// XML.
	You can now run virt-df and virt-alignment-scan on all of the test
	guests by doing:

	./run ./df/virt-df -c test:///path/to/tests/guests/guests.xml
	./run ./align/virt-alignment-scan -c test:///path/to/tests/guests/guests.xml

	which is kinda cool.

2013-02-26  Richard W.M. Jones  <rjones@redhat.com>

	lib: Turn guestfs___for_each_disk back into an internal library function.
	Since the refactoring of virt-df and virt-alignment-scan, those
	tools no longer use this function.

	Partial rewrite of virt-alignment-scan to use parallel threads.
	See previous commit (virt-df equivalent change) for the rationale.

2013-02-26  Richard W.M. Jones  <rjones@redhat.com>

	Partial rewrite of virt-df to use parallel threads instead of single appliance.
	Previously when you asked virt-df to show stats for all your libvirt
	guests, it used a single appliance and tried to attach as many disks
	as possible to it, even disks from different guests.

	However this has been problematic: Not only is the code to do this
	horrendously complex, but it's also insecure, and it doesn't interact
	well with sVirt labels (see RHBZ#912499 comment 7).

	In the meantime we discovered that running parallel appliances gives
	you most of the performance of using a single appliance, but with a
	lot less complexity and better guest isolation (see the documentation
	in commit 680450f3b4f8c2da7a0b1d8f0bd8c2232efc4054).

	Therefore this is a partial rewrite of virt-df so that in this case it
	now uses parallel appliances.

	Notes:

	The '--one-per-guest' option is now the default and only way to do
	things; this option now does nothing.

	By default, the amount of parallelism to use is controlled by the
	amount of free memory seen when virt-df starts up (subject to some
	minima and maxima).  The user can control this through new command
	line option '-P'.

2013-02-26  Richard W.M. Jones  <rjones@redhat.com>

	lib: Export guestfs___add_libvirt_dom for use by virt-df and virt-alignment-scan.
	See the comment in guestfs-internal-frontend.h in this commit.

	tools: Introduce a mini-library for estimating max threads based on free memory.
	This mini-library runs the 'free -m' command and greps the output to
	estimate the max. number of libguestfs appliances we could run in
	parallel in the remaining free memory.

	df: Always have TESTS= line even if appliance is disabled.

	virt-alignment-scan: Set LANG=C in test.

	lib: Add a global MIN macro to guestfs-internal-all.h.

2013-02-25  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.14.

2013-02-25  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: fix test-tool
	(Not entirely sure whether using Gnulib to replace standard functions
	is a good idea at all.)

	link with libgnu:
	  CCLD   libguestfs-test-tool
	libguestfs_test_tool-test-tool.o: In function `main':
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:103: undefined reference to `rpl_getopt_long'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:113: undefined reference to `rpl_optarg'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:125: undefined reference to `rpl_optarg'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:126: undefined reference to `rpl_optarg'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:109: undefined reference to `rpl_optarg'
	libguestfs_test_tool-test-tool.o: In function `set_qemu':
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:382: undefined reference to `rpl_perror'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:366: undefined reference to `rpl_perror'
	libguestfs_test_tool-test-tool.o: In function `make_files':
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:416: undefined reference to `rpl_perror'
	/home/bengen/src/deb/pkg-libvirt/libguestfs/debian/build-default/test-tool/../../../test-tool/test-tool.c:428: undefined reference to `rpl_perror'

2013-02-25  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: fix daemon
	  CC     guestfsd-9p.o
	In file included from ../../../daemon/9p.c:32:0:
	../../../daemon/daemon.h:33:34: fatal error: guestfs-internal-all.h: No such file or directory

2013-02-25  Richard W.M. Jones  <rjones@redhat.com>

	docs: Update guestfs-performance with parallel scaling numbers and test script.

2013-02-25  Olaf Hering  <olaf@aepfle.de>

	lib: avoid pragma usage in inspect-fs-windows
	pragma GCC diagnostic is a gcc 4.6+ feature, compilation fails with
	older compilers:

	inspect-fs-windows.c: In function 'map_registry_disk_blob':
	inspect-fs-windows.c:502: error: #pragma GCC diagnostic not allowed inside functions
	inspect-fs-windows.c:503: error: #pragma GCC diagnostic not allowed inside functions
	inspect-fs-windows.c:505: error: #pragma GCC diagnostic not allowed inside functions
	make[3]: *** [libguestfs_la-inspect-fs-windows.lo] Error 1

	Use memcpy instead of pragma to fix compile error.

2013-02-23  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Add example converting from one format/filesystem to another.

	daemon: protocol: Fix memory leak when receiving FileIn file (RHBZ#914934).
	This fixes commit 950951c67de61da27dceca8ffb2079031c13e43b.

	tests: Add a regression test for RHBZ#914931.
	This involves adding a new test API which crashes the appliance in the
	middle of a simulated upload, then a test which uses that API to test
	for the libguestfs (library-side) crash.

2013-02-23  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Don't segfault if appliance crashes during FileIn upload (RHBZ#914931).
	Instead of the segfault you now get a more informative error:

	*stdin*:0: libguestfs: error: connection to daemon was closed unexpectedly.
	This usually means the libguestfs appliance crashed.  Please enable
	debugging (LIBGUESTFS_DEBUG=1) and rerun the command, then look at the
	debug messages output prior to this error.
	libguestfs: error: /dev/stdout: write: Broken pipe
	libguestfs: error: file receive cancelled by daemon

2013-02-23  Richard W.M. Jones  <rjones@redhat.com>

	run: Refer to README and correct documentation for linking to script.
	Any link works, even a hard link.

	run: Relicense as LGPLv2+.
	To allow reuse in other projects and because of the equivalent change
	made by Eric Blake to the libvirt 'run' script.

2013-02-20  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	Version 1.21.13.

	Use guestfs___count_strings instead of custom versions in various places.

	python: Use guestfs___free_string_list instead of custom version.

	ocaml: Use guestfs___free_string_list instead of custom-coded one.
	It should be possible to add the guestfs___free_string_list to
	dllmlguestfs.so, but I cannot work out exactly how to do this.  As a
	result we end up using src/utils.c directly.

	ocaml: Missing #include <config.h> in generated file.

	lua: Use guestfs___free_string_list instead of custom-coded version.

	fish: Use guestfs___{free_string_list,count_strings} utility functions.
	Instead of custom-coded versions.

	libutils: Add guestfs___count_strings utility function to common library.

	erlang: Use guestfs___free_string_list from libutils, instead of custom version.

2013-02-20  Richard W.M. Jones  <rjones@redhat.com>

	lib: Create libutils convenience library.
	The libutils convenience library is a place for code shared between
	the main library, language bindings and virt tools.  Note that the
	code is statically linked into both the library, each binding and each
	tool, but this is an improvement because (a) the source is shared and
	(b) libguestfs.so can export fewer private functions.

	Currently it contains the cleanup functions, and the functions
	guestfs___free_string_list function and guestfs___for_each_disk.

	guestfs___for_each_disk has changed so that it no longer
	unconditionally sets the error in the guestfs handle.  Instead callers
	can control error handling.

2013-02-20  Richard W.M. Jones  <rjones@redhat.com>

	lib: Rename guestfs_error_errno as guestfs___error_errno, etc.
	These are internal functions.  Very old versions of libguestfs used to
	export them, but they haven't been (and shouldn't be) exported for a
	long time.

	Also remove the unused guestfs_error function.

2013-02-20  Richard W.M. Jones  <rjones@redhat.com>

	build: Remove long and mostly irrelevant comment about libtool versioning.

	build: Rearrange src/Makefile.am into a more logical order.
	This is just code motion.

	tests: Add valgrind suppression for libvirt 1.0.2 memory leak.
	Leak reported as RHBZ#913145.

	tests: Add valgrind suppression variant for new manifestation of an old libvirt memory leak.

	lib: Use CLEANUP_* macros to simplify XPath query code.

	rescue: Improve error messages in the test script.

	faq: Add section for developers, including how to send patches and propose features.

	docs: Rewrite security section (thanks Dan Berrange).

2013-02-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.12.

2013-02-19  Richard W.M. Jones  <rjones@redhat.com>

	build: Only add 'serial-tests' for automake >= 1.12 (thanks Hilko Bengen).
	Earlier versions of automake complain if they get a configuration
	parameter which they don't understand.  The error is:

	configure.ac:27: error: option 'serial-tests' not recognized

	Use some m4 hackery to work around this.

2013-02-19  Richard W.M. Jones  <rjones@redhat.com>

	handle: Define DEFAULT_MEMSIZE, MIN_MEMSIZE constants.
	This is just code motion.

	ruby: Add binding for guestfs_event_to_string.

	python: Add binding for guestfs_event_to_string.

	perl: Add binding for guestfs_event_to_string.

	java: Use guestfs_event_to_string instead of generated code.

	fish: Use guestfs_event_to_string instead of guestfish-specific generated functions.

	ocaml: Add binding for Guestfs.event_to_string and use it in events test.

	New C only API: guestfs_event_to_string.

2013-02-18  Richard W.M. Jones  <rjones@redhat.com>

	handle: Translatable string in guestfs_parse_environment.

	generator: Whitespace changes.

2013-02-15  Richard W.M. Jones  <rjones@redhat.com>

	lib: Fix memory leak when the 'lpj' setting is read from dmesg.
	It was failing to clean up and close the 'struct command' buffer,
	because commit 94d90f03e2bbb595890b01e2a10b63e00e976691 added an
	incomplete patch to use CLEANUP_CMD_CLOSE.

	This fixes commit 94d90f03e2bbb595890b01e2a10b63e00e976691.

2013-02-15  Richard W.M. Jones  <rjones@redhat.com>

	java: Print a better error message when JVM version is too old.
	This fixes commit 87d1f7714f8e1b0f595bad3b7932592f0f85d54b.

	java: Note that JVM >= 1.6 is now required.

2013-02-14  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Use a glibc trick to try to display a stack trace if a program in the appliance segfaults.

	Version 1.21.11.

	tests: mountable: Add test-mountable-inspect.sh to EXTRA_DIST.
	This fixes commit 7d976657e6f02ca0b61858f668ae792a70327309.

2013-02-13  Matthew Booth  <mbooth@redhat.com>

	Fix API doc errors

	gobject: Fix doc generation of L<guestfs(3)/CVE-2010-3851>

2013-02-12  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix RESOLVE_MOUNTABLE, internal_parse_mountable.
	- The mountable->volume field was not being initialized on the
	  device path.

	- XDR string fields cannot be NULL.

	This fixes commit 7d976657e6f02ca0b61858f668ae792a70327309.

2013-02-12  Richard W.M. Jones  <rjones@redhat.com>

	tests: mountable: Print error message if guestfs_create fails.

	tests: Add Fedora btrfs phony guest to target list.
	This fixes commit 754e8194382a9ed265c7fa172e438049e4eb8389.

	tests: Reorder the tests so test guest is created before it's used by mountable test.
	This fixes commit 7d976657e6f02ca0b61858f668ae792a70327309.

	examples: Ensure each example program is documented.

	examples: Rename example programs, replacing '_' with '-'.

2013-02-12  Matthew Booth  <mbooth@redhat.com>

	mountable: Test inspection of fedora image

	inspect: Update inspect_os to use mountables
	This fixes inspection of guests which use btrfs subvolumes.

	New internal API: internal_parse_mountable

	build: Minor cleanup in daemon/Makefile.am

	btrfs: Make a stub Fedora btrfs guest for inspection testing

	mountable: Make list-filesystems return btrfsvols

	btrfs: Update btrfs_subvolume_list to take Mountable_or_Path
	btrfs_subvolume_list can now take either the path of a mounted btrfs
	filesystem, or a mountable describing the location of a btrfs
	filesystem, or one of its volumes. In the latter case, the filesystem
	will be automatically mounted outside of /sysroot before running the
	btrfs tool, and unmounted afterwards.

	mount: Add mount_vfs_nochroot
	This internal function allows mounting a mountable outside /sysroot.

2013-02-12  Richard W.M. Jones  <rjones@redhat.com>

	faq: Add common questions about virt-resize/virt-sparsify in place support.

	faq: Fix some small typos in section on virt-sparsify.

	faq: Update RHEL information.

	test-tool: Point to SELinux documentation for further information.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	examples: Add all the C examples to the guestfs-examples(3) man page.

	build: Separate out *_CPPFLAGS from *_CFLAGS.
	This is pretty pointless.

	test-tool: Get rid of the "=== Test starts here ===" banner.
	It confuses things, because that is not always the start
	of the output.

	test-tool: Display SELinux status in output of libguestfs-test-tool.

	Version 1.21.10.

	tests: Add a regression test for stack overflow in events (RHBZ#909624).
	Note this is a check-slow test since generating 1,000,000 progress
	events take a few minutes.

	proto: Fix stack overflow when there are many progress events (RHBZ#909624).
	Thanks: Eric Blake.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Allow rate to be specified in 'debug progress'.
	There are now two forms of the 'debug progress' command:

	(1) debug progress <n> (the original form) generates ordinary
	rate-limited progress messages for <n> seconds.

	(2) debug progress <n> <rate> generates progress messages every <rate>
	microseconds for <n> seconds.

	The second form omit the usual rate-limiting, and so wouldn't
	be generated like this from an ordinary API call.  However this
	is useful for testing events (see RHBZ#909624).

2013-02-11  Matthew Booth  <mbooth@redhat.com>

	mountable: Implement Mountable_or_Path
	A Mountable_or_Path argument is passed as a mountable_t. A new type is
	added to mountable_t to handle already mounted paths.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add format attribute for GCC 4.8 in two places.

	daemon: Force disable -Wsuggest-attribute=format warning around asprintf_nowarn, for GCC 4.8.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	lib: Define GUESTFS_GCC_VERSION in the internal header.
	Note that you have to use this as follows:

	#if defined(__GNUC__) && GUESTFS_GCC_VERSION >= x0y0z /* gcc >= x.y.z */

	since GUESTFS_GCC_VERSION is not defined unless it's GCC.

2013-02-11  Matthew Booth  <mbooth@redhat.com>

	generator: Create Mountable_or_Path, initially identical to Dev_or_Path

2013-02-11  Matthew Booth  <mbooth@redhat.com>

	mountable: Implement Mountable support for all apis which take it
	A Mountable is passed from the library to the daemon as a string. The daemon
	stub parses it into a mountable_t, which it passes to the implementation.

	Update all implementations which now take a mountable_t.

2013-02-11  Matthew Booth  <mbooth@redhat.com>

	generator: Convert relevant arguments from Device to Mountable
	This change updates the api style of all apis which should take Mountable
	descriptions rather than block devices. It also updates the documentation
	accordingly, but doesn't implement any functional changes.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Document how to change SELinux settings.

	test-tool: Document how to run with alternate libvirt.

	test-tool: exec qemu in the wrapper script.
	This ensures that libvirt can control qemu directly, eg. being able to
	send it signals.

	test-tool: On i386, upstream qemu program is now called 'qemu-system-i386'.
	For a while, the upstream qemu i386 emulator has been called
	'qemu-system-i386' (instead of just 'qemu').  Fix test-tool so it
	calls the right program.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Don't call guestfs_set_qemu before guestfs handle is initialized (RHBZ#909836).
	Because of evolution of the code, if the user used the --qemu or
	--qemudir options, libguestfs-test-tool would segfault because
	guestfs_set_qemu was being called before the guestfs handle was
	opened.

	Change the code so this doesn't happen, and also remove the global 'g'
	variable to make the code a bit more robust.

	Bug found by Amit Shah.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	daemon: link: Remove use of PATH_MAX.
	Replace readlink calls with gnulib areadlink function.

	daemon: xattr: Remove use of PATH_MAX.

	daemon: realpath: Remove use of both PATH_MAX and NAME_MAX.

	daemon: initrd: Remove use of PATH_MAX and other cleanups.
	- Move variables to the top.
	- Rearrange comments to make more sense.

	daemon: find0: Remove use of PATH_MAX.

2013-02-11  Richard W.M. Jones  <rjones@redhat.com>

	getline: Rename &n parameter as &allocsize.
	The second parameter passed into getline(3) is the size of the
	allocated buffer, *NOT* the length of the returned line.  This can be
	confusing, so rename this parameter as 'allocsize' consistently
	throughout the code.

	This is just code motion.

2013-02-09  Richard W.M. Jones  <rjones@redhat.com>

	docs: Improve reasons for using libguestfs-make-fixed-appliance.
	Thanks: Richard Harman.

2013-02-09  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Make it clear that setsockcreatecon debug message is just a warning.
	This was disturbing to some users, but other users saw the warning
	when it was really something they should pay attention to.  Make it
	clear that it's a warning, unless people are really using SELinux +
	sVirt.

	Thanks: Richard Harman.

2013-02-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.9.

	rescue: Count the mountable filesystems when displaying the 'suggest' message.

	tools: Use CLEANUP_* macros in several C tools.

	generator: Export libxml2 CLEANUP_* macros unconditionally.
	These call abort() if libxml2 is not actually installed, but that
	should never happen inside the library or tools.

2013-02-08  Richard W.M. Jones  <rjones@redhat.com>

	lib: Define CLEANUP_CMD_CLOSE macro and use it throughout the library.

	tools, tests: Use "guestfs-internal-frontend.h" header.
	Instead of redefining STREQ, etc.

	lib: Use CLEANUP_FREE_<struct>, CLEANUP_FREE_<struct>_LIST macros in a few places in the library.

2013-02-08  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add CLEANUP_FREE_<struct>, CLEANUP_FREE_<struct>_LIST macros for API structs.
	For example:

	 {
	   CLEANUP_FREE_STAT struct guestfs_stat *stat = guestfs_stat (g, "/foo");

	   // stat is freed automatically when we leave the scope.
	 }

	The new header file "guestfs-internal-frontend-cleanups.h"
	includes definitions for these.  It should not be included
	directly.

2013-02-08  Richard W.M. Jones  <rjones@redhat.com>

	lib: Allow guestfs_free_* functions to be safely called with a NULL pointer.
	This is so they work just like 'free'.

	lib: Remove explicit defines of _BSD_SOURCE.
	An equivalent is defined already in <config.h>.

	generator: Add #ifndef defense around guestfs-internal-actions.h file.

2013-02-08  Matthew Booth  <mbooth@redhat.com>

	generator: Add new Mountable argument type
	This type is initially identical to Device.

	inspect: Fix improperly ignored error in check_filesystem

	inspect: Don't re-implement list_filesystems in inspect_os

2013-02-08  Matthew Booth  <mbooth@redhat.com>

	Fix bogus partition number passed to guestfs___check_for_filesystem_on
	Partition number was being passed to guestfs___check_for_filesystem_on
	based on an index in list_partition. However, this ignores the
	possibility of multiple block devices.

	This change makes guestfs___check_for_filesystem_on examine the
	passed-in device directly to determine if it is a whole device, or
	what its partition number is.

2013-02-08  Matthew Booth  <mbooth@redhat.com>

	New API: is_whole_device

	btrfs: Fix btrfs_subvolume_list on F18 (RHBZ#903620).
	The output of btrfs subvolume list has changed in F18 to include generation,
	which breaks the parsing in btrfs_subvolume_list. This change replaces sscanf
	with a more robust regular expression. The new regular expression should also
	handle the addition of future unexpected columns.

2013-02-06  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Check parameter of base64-out and tar-out before running external command (RHBZ#908322).
	For base64-out, check the filename parameter exists and is not a
	directory.

	For tar-out, check the dir parameter exists and is a directory.

2013-02-06  Matthew Booth  <mbooth@redhat.com>

	generator: Add visibility to action struct
	The visibility field in action replaces in_fish, in_docs and internal.
	The defined types are:

	VPublic:
	  A public API. This is exported and documented in all language
	  bindings, and in guestfish.

	VStateTest:
	  A public API which queries the library state machine. It is exported
	  and documented in all language bindings, but not guestfish.

	VBindTest:
	  An internal API used only for testing language bindings. It is
	  guarded by GUESTFS_PRIVATE in the C api, but exported by all other
	  language bindings as it is required for testing. If language
	  bindings offer any way to guard use of these apis, that mechanism
	  should be used. It is not documented anywhere.

	VDebug:
	  A debugging API. It is exported by all language bindings, and in
	  guestfish, but is not documented anywhere.

	VInternal:
	  An internal-only API. It is guarded by GUESTFS_PRIVATE in the C api,
	  and not exported at all in any other language binding. It is not
	  documented anywhere.

2013-02-06  Richard W.M. Jones  <rjones@redhat.com>

	daemon: download: Add extra check that download file is not a directory (RHBZ#908321).

2013-02-06  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Add more information to certain calls to perror.
	Replace selected calls to 'perror (filename)' with:

	  fprintf (stderr, "syscall: %s: %m\n", filename);

	so that more information is available about precisely which syscall
	failed.

	Note this is *not* reply_with_perror.  These messages are only printed
	in verbose output, for the benefit of debugging.

2013-02-06  Richard W.M. Jones  <rjones@redhat.com>

	9p: Missing call to reply_with_perror.

2013-02-05  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.8.

2013-02-05  Richard W.M. Jones  <rjones@redhat.com>

	Use 'supermin' and 'supermin-helper' in preference to febootstrap.
	Febootstrap has been renamed upstream to 'supermin':
	https://www.redhat.com/archives/libguestfs/2013-February/msg00004.html

	This commit changes libguestfs so it can use either program to build
	the supermin appliance.

2013-02-04  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Call wipefs before mkfs to work around pathological behaviour in btrfs.
	See: RHBZ#907554, http://www.spinics.net/lists/linux-btrfs/msg21197.html

	FAQ: Update section on sVirt.

	build: Add src/guestfs-internal-{all,frontend}.h to EXTRA_DIST.
	This fixes commit ec3b75e5ffd1abea1400f6609ae9c61eab0dfa71.

	Version 1.21.7.

2013-02-04  Richard W.M. Jones  <rjones@redhat.com>

	fish: Be stricter about boolean values.
	Previously I noticed that bfan used this command without any error:

	><fs> hivex-open /WINDOWS/system32/config/software write:ture
	                                                   ^^^^^^^^^^

	This was because the code allowed any string to be evaluated as a
	boolean.

	The new code is stricter.  It allows the following strings only case
	insensitive (everything else is an error):

	  1
	  true
	  t
	  yes
	  y
	  on

	  0
	  false
	  f
	  no
	  n
	  off

2013-02-04  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Include "guestfs-internal-frontend.h" in extension.
	Also undefine '_' symbol defined by Ruby's internal headers.

	This fixes commit ec3b75e5ffd1abea1400f6609ae9c61eab0dfa71.

2013-02-04  Richard W.M. Jones  <rjones@redhat.com>

	perl: Include "guestfs-internal-frontend.h" in XS file.
	Also undefine '_' symbol defined by Perl's internal headers.

	This fixes commit ec3b75e5ffd1abea1400f6609ae9c61eab0dfa71.

2013-02-02  Richard W.M. Jones  <rjones@redhat.com>

	README: Format the list of requirements better.

	Update copyright dates for 2013.

2013-02-01  Richard W.M. Jones  <rjones@redhat.com>

	fish: Use CLEANUP_* macros in a lot of places.

	fish: Use CLEANUP_FREE in parse_config.

	Remove TMP_TEMPLATE_ON_STACK macro.

2013-02-01  Richard W.M. Jones  <rjones@redhat.com>

	Remove all occurrences of the bad_cast (lowercase) function.
	Not to be confused with the libxml2 macro 'BAD_CAST' which converts
	from 'signed char *' to 'unsigned char *'.

	The 'bad_cast' function was defined and used all over the place as a
	replacement for a '(char *)' cast.  I think it is better to make these
	casts explicit, instead of hiding them in an obscure function.

2013-02-01  Richard W.M. Jones  <rjones@redhat.com>

	Rearrange internal header files.
	This commit rearranges the internal header files.

	"src/guestfs-internal.h" is just for the library, as before.

	"src/guestfs-internal-frontend.h" is for use by all library, bindings,
	tools C code, but NOT the daemon.

	"src/guestfs-internal-all.h" is for use by all C code including the
	daemon.

	This is just code motion, but it has some important consequences:

	(1) We can use the CLEANUP_* macros in bindings and tools code.

	(2) We can get rid of TMP_TEMPLATE_ON_STACK.

	(3) We will (in future) be able to stop bindings and tools code from
	using the safe_* allocation functions (which are NOT safe to use
	outside the library alone).

2013-01-31  Cole Robinson  <crobinso@redhat.com>

	tests: Handle changing QEMUDIR
	qemu-wrapper isn't regenerated if QEMUDIR is changed, so just
	delete it and force regeneration.

	Additionally we can drop the silent binary check, since
	check-with-upstream-qemu-1 already does a similar test with --version
	that will actually report an error to the user.

2013-01-30  Matthew Booth  <mbooth@redhat.com>

	Make internal-only functions and structures private
	Certain functions are intended to be internal only, but we currently
	export them anyway. This change moves them into a separate section of
	guestfs.h protected by a GUESTFS_PRIVATE variable. This change also
	enables private structs, but doesn't implement any.

	This change only affects the C api. Language bindings aren't affected,
	but probably should be in the future.

2013-01-30  Matthew Booth  <mbooth@redhat.com>

	build: Fix haskell dependencies and parallel build
	Without this change all the tests in the haskell bindings are rebuilt
	every time. The primary motivation for this change is to fix this.

	The fix for the above also allows parallel builds to be re-enabled.

2013-01-29  Matthew Booth  <mbooth@redhat.com>

	build: Add common rule for sources shared between daemon and library

2013-01-29  Richard W.M. Jones  <rjones@redhat.com>

	daemon: hivex: Rewrite filename param of hivex_commit to include sysroot (RHBZ#905341).

2013-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.6.

	daemon: Use the new CLEANUP_* macros to simplify code.

	daemon: Add CLEANUP_* macros which automatically free memory when leaving scope.
	cf commit 98b64650c852ccc9a8eef8b9691052faeb4873c8

	daemon: Allow free_strings (NULL) and free_stringslen (NULL, ..).
	Equivalent to free (NULL).

	lib: Further use of CLEANUP_* macros.

	launch: libvirt: Use CLEANUP_* macros.
	Also implement macros for cleaning up libxml2 objects.

	inspect: Use CLEANUP_* macros in inspection code.

2013-01-28  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add CLEANUP_* macros which automatically free things when leaving scope.
	Use the macro like this to create temporary variables which are
	automatically cleaned up when the scope is exited:

	  {
	    CLEANUP_FREE char *foo = safe_strdup (bar);
	    ...
	    // no need to call free (foo)!
	  }

	The following code is also valid.  The initialization of foo as 'NULL'
	prevents any chance of free being called on an uninitialized pointer.
	It may not be required in all cases.

	  {
	    CLEANUP_FREE char *foo = NULL;
	    ...
	    foo = safe_malloc (100);
	    ...
	    // no need to call free (foo)!
	  }

	This is also valid:

	  {
	    CLEANUP_FREE char *foo = ..., *bar = ...;
	    ...
	    // no need to call free (foo) or free (bar)!
	  }

	The CLEANUP_FREE_STRING_LIST macro calls guestfs___free_string_list
	on its argument.  The argument may be NULL.

	The CLEANUP_HASH_FREE macro calls hash_free on its argument.  The
	argument may be NULL.

	Important implementation note:
	------------------------------

	On GCC and LLVM, this is implemented using __attribute__((cleanup(...))).

	There is no known way to implement this macro on other C compilers, so
	this construct will cause a resource leak.

	Important note about close/fclose:
	----------------------------------

	We did NOT implement 'CLEANUP_CLOSE' or 'CLEANUP_FCLOSE' macros.  The
	reason is that I am not convinced that these can be used safely.  It
	would be OK to use these to collect file handles along failure paths,
	but you would still want a regular call to 'close'/'fclose' since you
	must test for errors, and so you end up having to do:

	  if (close (fd) == -1) {
	    // failure case
	    // avoid double-close in cleanup handler:
	    fd = -1;
	    ...
	  }
	  // avoid double-close in cleanup handler:
	  fd = -1;
	  ...

2013-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Allow guestfs___free_string_list (NULL).
	Equivalent to free (NULL).

	perl, python, ruby: Add definition of EVENT_ALL in these languages.

2013-01-28  Richard W.M. Jones  <rjones@redhat.com>

	generator: Define all_events_bitmask.
	In the C bindings, use this more accurate mask instead of 'all bits
	set'.

	In the Java bindings, use this instead of open coding.

2013-01-28  Richard W.M. Jones  <rjones@redhat.com>

	header: Minor whitespace fix.

	header: Deprecate LIBGUESTFS_HAVE_* in favour of GUESTFS_HAVE_*.

	header: Link to guestfs-examples(3) man page from header file.

2013-01-24  Matthew Booth  <mbooth@redhat.com>

	Update vim line length to 70
	Apparently this makes it the same as emacs or something.

2013-01-24  Richard W.M. Jones  <rjones@redhat.com>

	python: Inherit from 'object' base class.
	This fixes the following Debian bug:
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698771

	For an overview, see this question and the links from there:
	http://stackoverflow.com/questions/4015417/python-class-inherits-object

2013-01-22  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Add 'is_root' flag to the params struct.
	This is just code motion, but it allows us to read this flag inside
	the 'construct_libvirt_xml_seclabel' function in future (as a possible
	way to fix RHBZ#890291).

2013-01-22  Richard W.M. Jones  <rjones@redhat.com>

	libvirt: Add debugging when opening libvirt handle.
	When debugging is enabled, this produces output like below.  This is
	useful when diagnosing what URI libguestfs is using.

	libguestfs: opening libvirt handle: URI = NULL, auth = virConnectAuthPtrDefault, flags = 0
	libguestfs: successfully opened libvirt handle: conn = 0xb05580

2013-01-22  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Refactor seclabel code.
	This is just code motion.

2013-01-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.5.

	fuse: Use guestfs_rename to implement rename(2) syscall (RHBZ#895910).

	New API: rename: Rename file within the same filesystem (RHBZ#895910).

2013-01-21  Matthew Booth  <mbooth@redhat.com>

	docs: Fix cut/paste error in pread_device

2013-01-21  Richard W.M. Jones  <rjones@redhat.com>

	fuse: If guestfs_last_errno returns 0, don't return no error to FUSE layer.
	guestfs_last_errno (g) == 0 doesn't mean "no error".  It means the
	errno was not captured.  In this case we have to substitute some sort
	of errno, so choose EINVAL arbitrarily.

2013-01-21  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Change ln, ln-f (hard-link) APIs to use link(2) instead of external ln (RHBZ#895905).
	The reasons to do this are twofold:

	(a) It's probably a tiny bit faster.

	(b) It lets us capture the real errno if the link(2) syscall fails.

	The errno is also passed through guestmount, fixing RHBZ#895905:

	+ guestmount -a test1.img -m /dev/sda1:/ -m /dev/sda2:/boot /tmp/mnt
	+ touch /tmp/mnt/foo
	+ cd /tmp/mnt
	+ ln foo boot/foo
	ln: failed to create hard link ‘boot/foo’ => ‘foo’: Invalid cross-device link

2013-01-21  Richard W.M. Jones  <rjones@redhat.com>

	Fix checksums-out command (RHBZ#895904).
	This was broken by the earlier
	commit 0306c98d319d189281af3c15101c8d343e400f13.

	This commit also adds a regression test.

2013-01-21  Richard W.M. Jones  <rjones@redhat.com>

	tests: virt-make-fs: Allow btrfs to be skipped.

2013-01-18  Richard W.M. Jones  <rjones@redhat.com>

	tests/qemu: Don't require LVM for these tests.

	Version 1.21.4.

	daemon: lvm: Fix various paths relative to new lvm_system_dir.
	This fixes commit 9fd41abd40c3ffc10985e862dc34c868360a1b22.

	tests: Don't construct the guests in parallel.
	In automake 1.13, check_DATA is now built in parallel, resulting in it
	trying to build 4 or 5 guests in parallel.

2013-01-18  Hilko Bengen  <bengen@hilluzination.de>

	Fix packagelist for current Debian-based systems

	inspector: Fix tests for out-of-tree builds

	erlang: fix bindtests for out-of-tree build

2013-01-18  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add libcap to the appliance (thanks Skippy VonDrake).

2013-01-17  Richard W.M. Jones  <rjones@redhat.com>

	automake: Force serial-tests.
	automake 1.13 started to use stupid parallel tests by default,
	breaking everything.

	FAQ: Document "Could not allocate dynamic translator buffer" and how to fix it.

2013-01-17  Matthew Booth  <mbooth@redhat.com>

	gobject: Add pkg-config for gobject bindings

2013-01-17  Olaf Hering  <olaf@aepfle.de>

	daemon: copy entire lvm directory
	cp will fail if /etc/lvm is an empty directory. Copy the entire
	directory and adjust environment variable.


	RWMJ:
	 - Fixed a couple of whitespace issues.

2013-01-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.3.

2013-01-16  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Use updated package names, but allow fallback to the old names (RHBZ#894545).
	Thanks Dominic Cleal.

2013-01-16  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Suppress two false positives from Coverity.
	Using // coverity[...] or /* coverity[...] */ comments in the source
	it is possible to suppress specific Coverity errors.  The suppressed
	error should occur in the line following the comment.

	In this case I have suppressed two false positives from Coverity:

	(a) We deliberately assign to a NULL pointer in order to cause a
	segfault, for testing how the library reacts when this happens.
	Coverity flags this, but it is not an error in this case.

	(b) Coverity does not model global variables (a known shortcoming).
	Therefore the code 'errno = posix_memalign (...)' cannot be modelled
	by Coverity, even though the code is correct.  Coverity raises a false
	positive about this.

	(Thanks Kamil Dudka, Coverity)

2013-01-15  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Refresh podwrapper man page.
	This also adds a rule so you can do:

	 make podwrapper.1

	if you want to read the documentation as a man page.

2013-01-15  Richard W.M. Jones  <rjones@redhat.com>

	java: Implement the event API.

	java: Use defined constants for flags in call to guestfs_create_flags.

	java: Change synopsis in man page to show use of add_drive.

	java: Tidy up javadoc.

	Refresh README file.

	Update copyright dates for 2013.
	On generated files in git and README.

2012-12-29  Richard W.M. Jones  <rjones@redhat.com>

	haskell: Use unused bogus data types.

	haskell: Typo in man page, lists -> list.

	haskell: Implement 'head' and 'tail' by hiding the Prelude functions.

	haskell: Use 'import Guestfs as G' in test code.
	The code is equivalent but shorter.

	haskell: Document current state of Haskell bindings.

	haskell: Fix RHashtable in the generator.

	haskell: Use .NOTPARALLEL in this directory.

2012-12-28  Richard W.M. Jones  <rjones@redhat.com>

	haskell: Fix RStringList in generator.

	haskell: Add tests of config functions.

	haskell: Allow non-appliance tests to run when !ENABLE_APPLIANCE.

	haskell: Renumber tests according to Perl scheme.

	haskell: Enable RString, RConstString in generator.

	haskell: Enable RBool in generator.

	haskell: Replace deprecated INCLUDE directive.
	The INCLUDE directive is obsolete.  You must now put the name of the
	include file before the C function name.

2012-12-27  Richard W.M. Jones  <rjones@redhat.com>

	arm: Recomment vexpress-a15 instead of vexpress-a9.
	Neither works (because of lack of PCI) but A15 emulation is probably
	better than A9 emulation.

2012-12-27  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Fix parsing of QEMU_OPTIONS.
	If there was no quoting character, the options could run off the end
	of the string and into whatever string which happened to be following
	in memory.

	This bug was revealed when libguestfs was compiled on arm.

2012-12-27  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Small refactoring of virtio-scsi detection code.
	This is just code motion.

	Fix whitespace in configure.ac.
	Standardize on 4 spaces for indentation in configure.ac file.
	This is just a change of whitespace.

2012-12-27  Richard W.M. Jones  <rjones@redhat.com>

	arm: Prevent -Wcast-align warnings.
	See link below for a general description of the problem:

	https://github.com/libguestfs/hivex/commit/f8b62e4cd2f65cd712164c59094e81f2958aa000

2012-12-27  Richard W.M. Jones  <rjones@redhat.com>

	arm: Only use -device sga if qemu supports this device.
	qemu-system-arm does not have the sgabios device.

	lib: Remove useless cast.
	'strings' is declared as char **, so the return type of
	this expression will already be char *.  The cast is both
	useless and potentially hides errors.

2012-12-24  Richard W.M. Jones  <rjones@redhat.com>

	build: Fix ./configure --with-febootstrap-yum-config option.
	This fixes commit bfddae7ceefa4a419ff56848122a46c71c4d6a3c.

	Also tested that all variants actually work.

2012-12-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.21.2.

2012-12-22  Richard W.M. Jones  <rjones@redhat.com>

	build: Change --with-febootstrap-yum-config to --with-febootstrap-packager-config
	For the rationale behind this renaming, see:
	https://github.com/libguestfs/febootstrap/commit/b8cbe191d0f03af1f6a42a07795995b16d5a8c24

	You can still, for the time being, use
	./configure --with-febootstrap-yum-config
	but it's preferred to switch to the new option.  The new option is
	identical, just renamed.

	Qe still pass the deprecated --yum-config option to febootstrap
	itself, since both old and new febootstrap support this.

2012-12-20  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Set fs->device field on swap devices.
	For some reason the fs->device field was not set for swap devices.

	Apparently this did not matter before (this bug has existed since at
	least libguestfs 1.16), but in commit 6ee80b8dac we started to depend
	on the fs->device field being non-NULL.  This resulted in segfaults
	when inspecting any guest which had a swap device, eg:

	 #0  __strcmp_sse42 () at ../sysdeps/x86_64/multiarch/strcmp-sse42.S:164
	 #1  0x00007ffff7d740cb in parent_device_already_probed (g=0x703a70,
	                        partition=0x6f79b0 "/dev/vda4") at inspect.c:156
	 #2  0x00007ffff7d73e00 in guestfs__inspect_os (g=0x703a70) at inspect.c:83
	 #3  0x00007ffff7cee11d in guestfs_inspect_os (g=0x703a70) at actions-1.c:397

	This commit sets fs->device to the device name.

	(Thanks Matthew Booth for first noticing this problem.)

2012-12-20  Richard W.M. Jones  <rjones@redhat.com>

	Pass noapic on i686 kernel command line.
	qemu 1.2 i686 TCG is buggy and hangs when emulating APIC.
	https://bugzilla.redhat.com/show_bug.cgi?id=857026

2012-12-18  Richard W.M. Jones  <rjones@redhat.com>

	faq: Suggest 'approx' (apt proxy) to speed up Debian builds.
	Thanks Hilko Bengen.

2012-12-18  Richard W.M. Jones  <rjones@redhat.com>

	tests: Skip windows.img tests if it is zero-sized.
	If ntfs-3g is not installed, then tests/guests creates a 'windows.img'
	file which is zero-sized.

	This is problematical because other tests which use this image will
	fail at best, or hit RHBZ#847549 (qemu/virtio-scsi bug) at worst.

	Change the tests which use windows.img so they skip if 'windows.img'
	has zero size.

2012-12-18  Richard W.M. Jones  <rjones@redhat.com>

	build: Add 'make print-subdirs' rule, useful for selectively running tests.
	If you want to selectively run tests, or if the test suite fails half
	way through, use:

	  make print-subdirs

	to print the subdirectories, select the ones you want to run / the
	remaining ones, and do:

	  make check SUBDIRS="..."

2012-12-18  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Make gdisk into an optional dependency and optgroup.
	Also document that gdisk is a dependency at all.

	This fixes commit 956e30effa25eee00fb9e8f5303a6a1fe7409037.

2012-12-18  Richard W.M. Jones  <rjones@redhat.com>

	lua: tests: If $LUA is not set, set it to 'lua' instead of '/usr/bin/lua'.

	lua: Fix misapplied patch.
	This fixes commit 5b70120293f3702f290fba5023a7016fa5ff1beb.

	ruby: Disable -Wstrict-prototypes warning for Ruby headers.

2012-12-17  Richard W.M. Jones  <rjones@redhat.com>

	docs: Properly document attach methods in the guestfs(3) man page.

	lua: Fix Lua configure test on Fedora.
	On Debian, the lua pkg-config file is called "lua5.1.pc" (etc)
	whereas on Fedora it's called "lua.pc" for all versions.

2012-12-17  Hilko Bengen  <bengen@hilluzination.de>

	lua: Use correct binary for tests

	lua: Add ifdefs for Lua 5.2 compatibility

	lua: Use pkg-config to determine Lua version, parameters

2012-12-17  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Use pvcreate --force option (RHBZ#887971).
	pvcreate fails if the partition contains a swap space signature.  Use
	more force to stop it from complaining.

	Version 1.21.1.

	list-filesystems: Ignore MBR type 0x42 (Windows dynamic disks) (RHBZ#887520).

	sparsify: Document that virt-sparsify doesn't work well on multi-disk VMs.
	See: http://bugzilla.redhat.com/887826

2012-12-16  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Improve loop invariant from previous commit.
	This fixes commit 11b6293d1bf7a6c0133c609e0e8067b4422dc794.

	launch: libvirt: Parse capabilities XML and fail early if qemu/KVM not supported (RHBZ#886915).

2012-12-16  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fold stdout on stderr when running e2fsck.
	User Phill Bandelow noted that virt-resize fails with an e2fsck error
	on a host where the system clock had been accidentally set in the
	past.

	Unfortunately this was hard to diagnose because guestfsd 'ate' the
	stdout of the e2fsck program.  I have verified by code inspection that
	e2fsck prints messages on stdout.

	Thus this changes the daemon to fold stdout and stderr together so we
	get to see all error messages from e2fsck when it fails.

2012-12-15  Richard W.M. Jones  <rjones@redhat.com>

	build: Improve 'make help' output description of 'make extra-tests'.

	build: Better formatting for 'make help' output.
	This is just whitespace changes.

	build: Show 'make -k check' as a possibility in 'make help' output.
	Thanks to Cole Robinson for this suggestion.

	ruby: Enable C compiler warnings.
	This has the desirable side effect that the correct CFLAGS get passed
	to the C compiler when building the Ruby extension.

	python: Enable C compiler warnings.

2012-12-15  Richard W.M. Jones  <rjones@redhat.com>

	Change the handling of private functions, safe_malloc etc.
	Rename guestfs_safe_malloc et al to guestfs___safe_malloc etc.

	To use the private functions, code now has to define
	-DGUESTFS_PRIVATE_FUNCTIONS=1.  This will make it easier for us in
	future to work out which programs are using these functions and to
	minimize both the number of programs and the functions they are
	calling.

	Note that the Perl, Python, OCaml, Ruby and Java bindings use
	guestfs_safe_* calls.  None of the other bindings do.  This is a bug
	(in the bindings using those functions): these functions will call the
	out of memory callback on failure.  This function defaults to abort(),
	and since this happens from a language binding, there is no way to
	change this default.

2012-12-15  Richard W.M. Jones  <rjones@redhat.com>

	guestfs.h: Fix use of __attribute__ and GCC < 4.
	I guess no one uses GCC 3 any more, because if they did, including
	<guestfs.h> would not work since GUESTFS_DLL_PUBLIC would not have
	been defined.

	At the same time, ensure that __attribute__((noreturn)) is only used
	when the compiler is GCC >= 3.1.

2012-12-14  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Don't call guestfs_hivex_close if previous guestfs_hivex_open call failed.
	(Thanks Skippy VonDrake)

2012-12-14  Matthew Booth  <mbooth@redhat.com>

	daemon: Add sentinel attribute to commandf and commandrf
	Causes a compiler warning to be emitted if you omit the trailing NULL argument.

	Add support for getting and setting GPT partition type GUIDs
	New APIs:
	  part_set_gpt_type
	  part_get_gpt_type

2012-12-14  Matthew Booth  <mbooth@redhat.com>

	daemon: Remove redundant fork in commandrvf
	Currently the code is doing a redundant fork when passed the
	COMMAND_FLAG_CHROOT_COPY_FILE_TO_STDIN flag. The additional
	sub-process does a chroot() which has no effect because all file
	handles are already open at that point, then simply copies its input
	to its output.

	This change simply replaces the above with a dup2 of the passed file
	handle to STDIN of the command process.

	RWMJ:
	  Don't initialize 'pid' variable.

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	configure: Change minor from .20 to .21 for new development branch.

2012-12-13  Matthew Booth  <mbooth@redhat.com>

	daemon: NFC Use symbolic names in commandrvf
	Improve readability of commandrvf() by replacing bare int values for
	file descriptors with their symbolic names STD{IN,OUT,ERR}_FILENO.

	Also add PIPE_READ and PIPE_WRITE for referencing relevant ends of a pipe.

2012-12-13  Matthew Booth  <mbooth@redhat.com>

	daemon: fix directory outside current root when executing commands
	When executing a command, we temporarily chroot, fork and exec the
	command, then chroot back. We intentionally don't chdir in the parent
	process so that we can 'jailbreak' the chroot later. However, this has
	the effect that commands are executed with a current working directory
	which is outside the current root.  This unusual state can cause
	errors in executed commands which don't anticipate it.

	This change does a chdir("/") before executing and command. This
	happens inside the fork, so the jailbreak isn't affected in the
	parent.

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.20.0.

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	proto: Free drives array when qemu subprocess dies abruptly.
	Commit ed7fda161e1f3d0beb02a368fcbcf5ed95dcdac1 changed the g->drives
	linked list into an array, and also made a subtle change to the
	(undocumented) semantics of drives in the rare case when qemu is
	relaunched.

	Every time we go back to the CONFIG state, we should free the drives
	array.  However there was one place where this was not happening.
	This was caught by the tests of the protocol, but only when using the
	default (appliance) method, not the libvirt method which we were more
	interested in testing in Fedora.

	When testing on Debian using the appliance method, we therefore hit
	this bug for the first time.

	This relates to or fixes the following commits:
	  commit 9df159b34a9e41e6f36c5435869a54396b92a864
	  commit 33f49d85c2a82e66f33cedccb2dbd14faa6070dd
	  commit ed7fda161e1f3d0beb02a368fcbcf5ed95dcdac1

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	debian: Allow test-disk-labels test to be skipped.

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Disable virtio-scsi if qemu <= 1.1.
	Debian Wheezy (7) ships with old qemu 1.1 which claims to support
	virtio-scsi but in reality it's broken.

	Disable virtio-scsi in this case.

2012-12-13  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Parse qemu version.

	docs: Add website index.html.in to stable release documentation.

2012-12-12  Richard W.M. Jones  <rjones@redhat.com>

	release notes: Update bugs list because one more bug was fixed.

2012-12-11  Richard W.M. Jones  <rjones@redhat.com>

	Update gnulib to latest version for libguestfs 1.20 release.

	docs: Add gnulib update to stable release documentation.

	build: Fix 'make help' output.
	check-valgrind-local-tests -> check-valgrind-local-guests

	Update API support ready for libguestfs 1.20 release.

	launch: libvirt: Label sockets with svirt_socket_t (RHBZ#853393).

	Update AUTHORS and BUGS files.

	Push and pull latest translations from Transifex.

	Update ROADMAP for libguestfs 1.20 release.

	Update release notes and get ready for the libguestfs 1.20 release.

2012-12-11  Richard W.M. Jones  <rjones@redhat.com>

	Add support for Windows dynamic disks (libldm / ldmtool) (RHBZ#782167).
	New APIs:

	  list-ldm-volumes
	  list-ldm-partitions
	  ldmtool-create-all
	  ldmtool-remove-all
	  ldmtool-scan
	  ldmtool-scan-devices
	  ldmtool-diskgroup-name
	  ldmtool-diskgroup-volumes
	  ldmtool-diskgroup-disks
	  ldmtool-volume-type
	  ldmtool-volume-hint
	  ldmtool-volume-partitions

2012-12-11  Matthew Booth  <mbooth@redhat.com>

	inspect: Remove unused is_mountable field from filesystem struct

	inspect: Remove unused is_swap field from filesystem struct

	inspect: Remove unused content field from filesystem struct
	RWMJ: Don't remove entire if-clauses.

2012-12-10  Richard W.M. Jones  <rjones@redhat.com>

	docs: Copy-edit documentation of the private data area.

	guestfs-performance: Some copy-editing.

2012-12-10  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Generate the code when libraries are statically not available.
	Since we as developers rarely test the case where some library is
	statically not available, that side of the code was hardly tested,
	except by unfortunate users in the field who often hit cases where
	functions were missing or misdeclared.  In fact, when making this
	change I noticed several bugs like that.

	Change it so that this code is autogenerated, and therefore always
	correct and up to date.

	Previous code which looked like this:

	  int
	  optgroup_acl_available (void)
	  {
	    return 0;
	  }

	  char * __attribute__((noreturn))
	  do_acl_get_file (const char *path, const char *acltype)
	  {
	    abort ();
	  }

	  /* etc */

	is replaced by a single line:

	  OPTGROUP_ACL_NOT_AVAILABLE

2012-12-10  Richard W.M. Jones  <rjones@redhat.com>

	generator: Change optgroups so second element is a list of functions.
	Before this commit it was a list of function names (ie. strings)
	making it hard if you wanted to get back to the original function
	definition.

	generate: Simplify generate_prototype ~single_line feature.
	This is just code refactoring.

	daemon: Make sure *.h files have guards against double-inclusion.
	This is just code cleanup.

	erlang: Add more tests.
	Since I made lots of changes to the Erlang bindings (prompted by
	Coverity), I wasn't confident that something didn't break because
	there were no real tests before.

	./run: Add Erlang support to run script.

2012-12-09  Cole Robinson  <crobinso@redhat.com>

	tests: Fix qemu-wrapper.sh generation

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Avoid double-close of console socket on error path (found by Coverity).

	xfs: Remove potential double-free of 'buf' in multiple places (found by Coverity).

	lua: Add comment about unsolved, hard to fix race (found by Coverity).

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	erlang: Avoid unintentional sign extension (found by Coverity).
	Comment from Coverity:

	  libguestfs-1.19.66/erlang/erl-guestfs-proto.c:115: sign_extension:
	  Suspicious implicit sign extension: "buf[0]" with type "unsigned char"
	  (8 bits, unsigned) is promoted in "(buf[0] << 24) | (buf[1] << 16) |
	  (buf[2] << 8) | buf[3]" to type "int" (32 bits, signed), then
	  sign-extended to type "unsigned long" (64 bits, unsigned).  If
	  "(buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]" is greater
	  than 0x7FFFFFFF, the upper bits of the result will all be 1.

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	lib: 'tmpfile' is never NULL (found by Coverity).

	fish: Close 'sock' in remote control code (found by Coverity).

	md: Free up 'ret' along error path (found by Coverity).

	lib: Free up the right list if guestfs_internal_lstatlist returns an error (found by Coverity).
	We were freeing up a list, but not the right list.

	fish: Don't leak stdout_saved_fd on error path (found by Coverity).

	lua: Don't leak memory for returned objects (found by Coverity).

	python: Don't leak memory along error paths (found by Coverity).

	perl: Use safe_malloc instead of malloc (found by Coverity).

	php: Return SUCCESS from PHP_MINIT_FUNCTION (found by Coverity).

	fish: Don't segfault here is 'words' happens to be NULL (found by Coverity).

	lib: Avoid segfault if guestfs_internal_readlinklist returns an error (found by Coverity).

	inspect: Remove dead code (found by Coverity).

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Really add dummy appliance slot (found by Coverity).
	In the previous code, appliance was unconditionally set to NULL and so
	we never added the dummy appliance slot to g->drives.  This probably
	doesn't matter, since hotplugging doesn't work for the 'appliance'
	attach-method.  Despite that, it's better to get this right.

	This fixes commit ed7fda161e1f3d0beb02a368fcbcf5ed95dcdac1.

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix error checking in function (found by Coverity).

	fish: copy-out: Fail on some errors when creating output directory (found by Coverity).
	However it's not an error if the output directory already exists.

	daemon: Explicitly ignore return value from modprobe command (found by Coverity).

	fish: Ignore failure of mkdir (noted by Coverity).

	tmpdirs: Explicitly ignore return value from guestfs___cmd_run to keep Coverity happy.
	We don't care if this command fails.

	lib: Explicitly ignore return value from guestfs_parse_environment in guestfs_create (found by Coverity).
	The purpose of adding guestfs_create_flags was so that users could
	check for errors from guestfs_parse_environment if they need to.

2012-12-08  Richard W.M. Jones  <rjones@redhat.com>

	Check for error from some guestfs_set_* calls (found by Coverity).
	For some guestfs_set_* calls, add checks for error, when error might
	possibly occur.  eg. It's plausible that guestfs_set_network might
	fail if the attach-method being used doesn't support it (although this
	doesn't happen at the moment).

	In other cases, don't check for errors, eg. if the error doesn't
	matter or there's nothing we could plausibly do about it.

2012-12-07  Richard W.M. Jones  <rjones@redhat.com>

	virt-rescue: Document a method to capture core dumps from within the rescue environment.

	daemon: Fix noreturn error in acl and capabilities code.
	This is an improvement over the original fix in
	commit fe4cdb2a477e88cd65d418aa3c3f12cb029f3dde.

	configure.ac: Fix comment.
	I spent a lot of time looking at how gnulib "manywarnings" works, and
	this comment reflects my improved understanding.

	Add NOT_SUPPORTED macro to daemon and library.
	This convenience macro returns errno == ENOTSUP.

	appliance: Add (default commented out) section containing debugging tools.

2012-12-04  Richard W.M. Jones  <rjones@redhat.com>

	tests: charset: Fix broken Makefile.am escaping.
	This fixes commit 5a2e320ec9390b2146feea6d7b3b8c36a34d0a90.

2012-12-04  Richard W.M. Jones  <rjones@redhat.com>

	configure: Add --enable-code-profiling and --enable-code-coverage flags.
	These configure flags enable code profiling (with gprof) and code
	coverage (with gcov) respectively.

	Although this is a nice idea, it's not currently very useful.

	Libtool mangles filenames in such a way that gcov cannot locate its
	datafiles.

	Profiling is of dubious utility with libguestfs which is not CPU-bound
	and relies extensively on running external programs (oprofile-like
	system profiling that took into account libguestfs + qemu or
	libguestfs + qemu + the appliance + filesystem tools *would* be
	useful).

	Also neither flag will help in capturing data from the appliance.

2012-12-03  Evaggelos Balaskas  <ebalaskas@ebalaskas.gr>

	packagelist.in for archlinux
	latest archlinux has some small changes:

	btrfs-progs-unstable --> btrfs-progs
	genisoimage --> cdrkit
	iproute --> iproute2
	module-init-tools --> kmod
	procps --> procps-ng
	udev --> systemd
	util-linux-ng --> util-linux

	and could you plz add the below packages

	lrzip
	less
	sed

	RWMJ: I took this opportunity to make some general cleanups to the file:

	- add 'less' and 'sed' for everyone
	- 'module-init-tools' & 'kmod'[1]
	- 'procps' & 'procps-ng'[1]
	- 'util-linux' & 'util-linux-ng'[1]
	- sort the ArchLinux packages into order

	[1] Note that febootstrap is supposed to ignore packages it doesn't
	know about.

2012-12-03  Richard W.M. Jones  <rjones@redhat.com>

	build: Make 'check-valgrind' fail noisily if valgrind is not installed.
	The way the existing configure script worked, @VG@ would be empty, and
	it would run all the way through the check-valgrind rule successfully
	without actually running anything under valgrind.

2012-12-01  Richard W.M. Jones  <rjones@redhat.com>

	docs: Minor copyedits to the release notes.

	Update release notes.

	Version 1.19.66.

	doc: Document problems with hibernated Windows guests and Windows 8 "fast startup" (RHBZ#882299).

	test-tool: Parse the environment separately.
	This lets us report bugs when parsing the environment.

2012-12-01  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Create the handle later.
	Although this leads to a small amount of code duplication with the -V
	option, the overall effect is cleaner.

	This is just code motion.

2012-12-01  Richard W.M. Jones  <rjones@redhat.com>

	tmpdirs: Make relative TMPDIR (etc) absolute, and check it's a directory (RHBZ#882417).
	This fixes commit 1efed122c07792f4c66a4083159cfacfb1893212.

2012-12-01  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Print tmpdir properly.
	It was actually printing cachedir.

	This fixes commit f9ab256f0e4c1197b505b0249e66e7614644bd0b.

2012-12-01  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Get icon for Windows 8 (RHBZ#801117).

	contrib: Useful script to extract all logos/icons from a Windows guest.

2012-11-30  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Temporary logo for Windows 8.
	See the comment from the code:

	  NB about Windows 8: No location we've found so far contains a
	  suitable icon for Win8.  In particular, explorer.exe definitely
	  does *not* contain any Windows logo as a resource (I checked).
	  Therefore the "basket icon" that this produces is just a stand-in
	  until we have a better idea for solving this problem.

	and:

	  https://bugzilla.redhat.com/show_bug.cgi?id=801117

2012-11-30  Richard W.M. Jones  <rjones@redhat.com>

	inspection, virt-sysprep: Use /etc/hostname on F18+, RHEL7+ (RHBZ#881953, RHBZ#858696).

	daemon: Avoid gcc warning about noreturn function in acl & cap code.
	acl.c: In function 'do_acl_get_file':
	acl.c:158:1: error: function might be candidate for attribute 'noreturn' [-Werror=suggest-attribute=noreturn]

2012-11-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.65.

	inspection: Don't probe partitions when we've probed the whole device (RHBZ#798979).
	So we don't get multiple <operatingsystem> entries, particularly for
	install ISOs.

	inspection: Read libosinfo database in order to inspect OS install CD/DVD/ISOs (RHBZ#803650, RHBZ#805417).

	lib: Indent CFLAGS in Makefile.am.
	This is just a whitespace change.

	inspection: Move variable decls to top of function.
	This is just code motion.

	inspection: Implement "openbsd" type and distro.

2012-11-29  Richard W.M. Jones  <rjones@redhat.com>

	daemon: isoinfo: Fix parsing of bogus dates.
	eg:

	$ isoinfo --debug -d -i ubuntu-12.04-desktop-amd64.iso
	CD-ROM is in ISO 9660 format
	System id:
	Volume id: Ubuntu 12.04 LTS amd64
	Volume set id:
	Publisher id:
	[...]
	Creation Date:     2012 04 25 16:13:46.00
	Modification Date: 2012 04 25 16:13:46.00
	Expiration Date:                :  :  .
	Effective Date:                 :  :  .
	[...]

2012-11-29  Richard W.M. Jones  <rjones@redhat.com>

	fish: Make type == drv_N field private to guestfish.
	The -N option / drv_N type only makes sense when we are compiling
	guestfish, and just serves to complicate non-guestfish code.

2012-11-29  Richard W.M. Jones  <rjones@redhat.com>

	virt-df: Better output when multiple -a/-d options are specified (RHBZ#880801).
	This is very well explained in the bugzilla comments:
	https://bugzilla.redhat.com/show_bug.cgi?id=880801#c1

	With this change, the disk name has a one or more plus signs ('+')
	appended to show that there are additional disks:

	  $ virt-df -a Win7x32TwoDisks-a -a Win7x32TwoDisks-b
	  Filesystem                   1K-blocks    Used  Available  Use%
	  Win7x32TwoDisks-a+:/dev/sda1    102396   24712      77684   25%
	  Win7x32TwoDisks-a+:/dev/sda2  12478460 7403416    5075044   60%
	  Win7x32TwoDisks-a+:/dev/sdb1    521212   55728     465484   11%

2012-11-27  Richard W.M. Jones  <rjones@redhat.com>

	Add .mailmap to EXTRA_DIST.

2012-11-27  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	Add the .mailmap and change the method to generate AUTHORS

2012-11-26  Richard W.M. Jones  <rjones@redhat.com>

	lib: lpj: Refactor code.
	Only run one grep command to grep any number of files.

	lib: lpj: Only return first match in read_all function.
	If there where several lpj=.. matches then the earlier matches would
	be leaked.  Only return the first one and don't leak memory.

2012-11-25  Richard W.M. Jones  <rjones@redhat.com>

	lib: Get lpj= from /var/log/boot.msg (thanks Olaf Hering).

2012-11-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.64.

2012-11-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: Handle non-\0 terminated buffer correctly.
	The read_all function is used as a callback for

	  guestfs___cmd_set_stdout_callback (cmd, read_all, [str],
	                                     CMD_STDOUT_FLAG_WHOLE_BUFFER);

	As noted in the documentation for CMD_STDOUT_FLAG_WHOLE_BUFFER, the
	buffer returned is not \0-terminated, and so using memdup will create
	an unterminated string, and therefore potentially a memory overrun
	when reading or searching the string.

	Use strndup instead so the final string is \0-terminated.

2012-11-24  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Pass lpj=... on the appliance command line (thanks Marcelo Tosatti).
	Try to get the host's loops_per_jiffy value and pass this on the
	command line to the guest.  In theory this should avoid the appliance
	having to recalculate this value in a VM with TCG (which is generally
	error-prone).  This should avoid timing issues.

	We only do this when we are certain that the guest will be TCG.
	Currently we only have enough information to do this from the libvirt
	attach-method.  So mostly this will only affect people using Fedora in
	a VM.

	The host loops_per_jiffy value is not exported by the kernel.  It is
	only printed by the kernel early during boot, so if boot messages have
	"scrolled off" the kernel ring buffer, it won't be available.  Some
	operating systems save early kernel messages in /var/log/dmesg but (a)
	Fedora 18+ seem to have abandoned this file and (b) on Ubuntu this
	file is unreadable for spurious "security" reasons.

	I have submitted a patch to make lpj available through /proc/cpuinfo.

2012-11-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Refactor parameter passing to construct_libvirt_xml* functions.
	This is just code motion.

2012-11-23  Olaf Hering  <olaf@aepfle.de>

	lua: fix build error due to LUA_GLOBALSINDEX usage
	lua 5.2 changed API, LUA_GLOBALSINDEX is no longer available.
	http://www.lua.org/manual/5.2/manual.html#8.3

2012-11-23  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.63.

	daemon: Ignore lvresize error "New size..matches existing size" (RHBZ#834712).
	The lvresize command unnecessarily gives an error if you don't
	change the size of the LV.  Suppress this error.

	test-tool: Don't print banner when using --help, -V, etc options (RHBZ#879416).

	launch: Refactor duplicate code which constructs the appliance command line.
	Move this into a common file.

2012-11-23  Richard W.M. Jones  <rjones@redhat.com>

	lib: Fix memory leak and simplify command code.
	Fix the following memory leak found by valgrind:

	==13629== 498 (112 direct, 386 indirect) bytes in 1 blocks are definitely lost in loss record 99 of 110
	==13629==    at 0x4A06B2F: calloc (vg_replace_malloc.c:593)
	==13629==    by 0x4CA564E: guestfs_safe_calloc (alloc.c:71)
	==13629==    by 0x4CA9B02: guestfs___new_command (command.c:143)
	==13629==    by 0x4CA66E9: guestfs___build_appliance (appliance.c:690)
	==13629==    by 0x4CBD1B9: launch_libvirt (launch-libvirt.c:188)
	==13629==    by 0x402E7E: main (virt-filesystems.c:349)

	Also adjust the command code in several places to make it simpler.  We
	can almost always call guestfs___cmd_close right after
	guestfs___cmd_run, avoiding any need to close the handle along error
	paths.

	Tested by running the test suite under valgrind.

2012-11-22  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: Implement Linux filesystem capabilities.
	This adds the following new APIs:
	 - cap_get_file
	 - cap_set_file

	New APIs: Implement POSIX ACLs.
	This adds the following new APIs:
	 - acl_get_file
	 - acl_set_file
	 - acl_delete_def_file

2012-11-22  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix test-remote-events test.
	Because the shell script was missing a space, the final output test
	was failing, although for some reason this didn't cause the whole test
	to fail.

	Fixing the missing space also revealed a bug in the test output, which
	is also fixed.

2012-11-22  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove crash data generated by kexec-tools
	Remove the kdump generated kernel crash data.


	RWMJ:
	 - Added /var/log/dump/* path for SLES (thanks Olaf Hering).
	 - Update po/POTFILES-ml.

2012-11-20  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	Update PO files from transifex.

	Version 1.19.62.

	./run: Ensure all paths are built up cumulatively.

	lua: valgrinding Lua code doesn't work.
	See comment.

	valgrind: Ignore init_libguestfs symbol.
	It's not relevant, since the memory leak begins in libvirt.

	lua: Replace internal lua_guestfs_* functions with guestfs_lua_*.
	This is just code motion.  It just ensures there is no possible
	conflict with lua_* symbols.

	lua: Attach __tostring functions exceptions.
	This includes a test.

	lua: Fix whitespace.

2012-11-20  Richard W.M. Jones  <rjones@redhat.com>

	lua: Various fixes to the bindings (thanks Jerome Vuarand).
	See http://article.gmane.org/gmane.comp.lang.lua.general/95065

	Note that this is incompatible with existing code.  You
	have to do:

	  local G = require "guestfs"
	  local g = G.create ()

	ie. give the module your own name ("G" in that example).

2012-11-20  Richard W.M. Jones  <rjones@redhat.com>

	lua: Print the error thrown by callbacks.

	lua: Add comment (not fix) for incorrect 'g' argument in callbacks.
	Thanks Jerome Vuarand.

	lua: Add bindtests.

	lua: Use lua_rawgeti to read elements from lists of strings.
	This is faster, but more importantly it avoids the strange error
	'lua: attempt to index a string value' which appears with (some)
	single element lists.

	lua: Add LuaStyle of commenting to the generator.

	lua: Allow regular int to be passed as a 64 bit integer.

	daemon: wipefs: Use --force option if available.
	See https://bugzilla.redhat.com/show_bug.cgi?id=872831
	and https://bugzilla.redhat.com/show_bug.cgi?id=865961

	lua: Simplify get_event function.
	Use luaL_checkoption which is designed for this purpose.

2012-11-19  Richard W.M. Jones  <rjones@redhat.com>

	lua: Document Guestfs.event_all.

	erlang, lua: Fix links in man pages.

	lua: Test globals in Guestfs.* namespace.

	lua: Add global Guestfs.event_all (list of all events).

	Version 1.19.61.

	lua: Various fixes and enhancements:
	- add support for events (with test)
	- test progress messages
	- update documentation to describe events
	- refactor handle closing code
	- refactor error code
	- use 'assert' in test code instead of 'if ... then error end'

	perl: Add test of multiple independent handles.

2012-11-18  Richard W.M. Jones  <rjones@redhat.com>

	lua: examples: Boolean true shouldn't have quotes around it.

	lua: Add another test to prove that the handles are really independent.

	lua: Don't use %m since Lua string formatter doesn't understand it.
	Use %s + strerror as a replacement.

2012-11-17  Richard W.M. Jones  <rjones@redhat.com>

	lua: Add some missing features.
	- Remove default error handler.
	- User cancel.
	- Add the errno to the object which is thrown on error.

	Still no events.

2012-11-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.60.

2012-11-17  Richard W.M. Jones  <rjones@redhat.com>

	Add Lua bindings.
	These are relatively complete, although only lightly tested.  Missing:

	 - events
	 - last_errno
	 - user_cancel

2012-11-17  Richard W.M. Jones  <rjones@redhat.com>

	perl: Clean up and update the tests.

	perl: Small test of create with flags.

2012-11-15  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Better error when user specifies --compress + raw output (RHBZ#852194).

	todo: We must implement ACLs and filesystem capabilities for SCAP.
	Thanks Steve Grubb.

2012-11-15  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Perform device name translation on mke2fs journaldevice (RHBZ#876579).
	Also various fixes:

	 - remove fixed-size buffer
	 - change if (err) free (err) -> free (err).

2012-11-15  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Add sections about hexdumping, hexediting sectors.

2012-11-14  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Add recipe for diffing two guests.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.59.

	dist: Add miscellaneous files to the tarball.
	Lots of these had been omitted over time.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	tests/protocol: Add test-qemudir-launchfail.sh to tarball (but don't run it).
	This file was present in git, but missing from the tarball.

	Don't actually run the test: it depends on details of how the
	appliance is constructed which would fail for old-style appliances.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add test for remote events.
	This test was present in git, but not included in the tarball,
	nor in the tests that guestfish actually runs.

	This fixes commit 17182af3a6de8e3e94e0a914416c54f09bb74007.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add a parallel launch test.
	This is designed to reveal libvirt race conditions such as
	bug 875741.

	This is a "slow test" so it only runs if you do 'make check-slow'.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add 'make check-slow' rule to recursively run slow/long-running tests.

	Add 'make help' rule.
	This gives a short overview of the make targets.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	tests: Replace 'make extra-tests' with individual tests.
	'make extra-tests' was a monolithic set of tests that did all sorts of
	things: valgrind, tests over local guests, tests with upstream qemu,
	tests with upstream libvirt, tests with the appliance attach method.

	This made it hard to perform individual tests, eg. just valgrind
	testing.  It was also hard to maintain because the tests were not
	located in the same directories as the programs and sometimes
	duplicated tests that were run elsewhere.

	This commit splits up 'make extra-tests' into 5 separate targets:

	 make check-valgrind              # run a subset of tests under valgrind
	 make check-valgrind-local-guests # test under valgrind with local guests
	 make check-with-appliance        # test with attach-method == appliance
	 make check-with-upstream-qemu    # test with an alternate/upstream qemu
	 make check-with-upstream-libvirt # test with an alternate/upstream libvirt

	(You can also still run 'make extra-tests' which is now simply
	a rule that runs the above 5 targets in order).

	This replaces everything that was in the tests/extra directory,
	so that has now gone.

2012-11-13  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Add $(libvirt_ro_uri) substitution to configure.
	This is essentially just code motion.

	Define whole valgrind command (as @VG@) in the configure script.
	This is mostly just code motion, but it also changes the default
	location where valgrind.log is written to be the top build directory
	(instead of tests/extra/valgrind.log).

	align: Add a test for virt-alignment-scan.

	fish: Add simple tests of starting up, inspection, using the prepared disks.

	inspector: Add some real virt-inspector tests.

2012-11-12  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Move valgrind suppressions file to top source directory.
	This is just code motion.

	Various fixes to API support script.
	Remove internal structures, fix it so it works with the new
	code layout under src/

2012-11-12  Richard W.M. Jones  <rjones@redhat.com>

	lib: Split up huge src/guestfs.c into logical compilation units.
	This file had grown by accretion to include:

	 - code related to handles (now in src/handle.c)

	 - safe allocation (src/alloc.c)

	 - debug, errors, warnings (src/errors.c)

	 - private data (src/private-data.c)

	 - miscellaneous functions (src/canonical-name.c, src/utils.c)

	This commit also removes about a dozen #include files which were
	probably not really used.

	This is just code motion.

2012-11-10  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Print cachedir and tmpdir.
	This fixes commit 1efed122c07792f4c66a4083159cfacfb1893212.

	Update release notes.

	Version 1.19.58.

	lib: Fix memory leak in tmpdir/cachedir code (found by valgrind).
	This fixes commit 1efed122c07792f4c66a4083159cfacfb1893212.

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: Remove double-test for availability.
	If you have a function which is in the X optgroup, and also has
	IfAvailable X, then two tests for the optgroup are added to the
	output.

	Check for this case and give an error.

	This also fixes existing APIs.

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: More efficient use of strings in the object code.
	No functional change.

	tests: Use guestfs_{push,pop}_error_handler.
	Replace the custom error handler with calls to
	guestfs_{push,pop}_error_handler only where necessary.  This
	simplifies the generated code.

	tests: Cleanup code that prints each test name.
	This is just code motion.

	tests: Change code for printing warnings about untested functions.
	Just code cleanup, no functional change.

	tests: Remove dead code in generated output.

	tests: Format the generated code properly.
	This is just whitespace changes in the output.

	fuse: Use guestfs_{push,pop}_error_handler so we can see errors in shutdown.
	In the fork (usual) case, we still won't see any errors since stderr
	has been redirected to /dev/null, but this way is still a little more
	correct.

	tools: Modify existing tools to use guestfs_{push,pop}_error_handler.
	This is a shorter and more convenient way to disable errors
	temporarily across calls.

	lib: Modify library code to use guestfs_{push,pop}_error_handler.
	This is less efficient than directly manipulating g->error_cb, but
	easier to maintain.

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add new C API calls: guestfs_push_error_handler, guestfs_pop_error_handler.
	The addition of these calls makes it much simpler to temporarily
	disable or ignore errors:

	 guestfs_push_error_handler (g, NULL, NULL);
	 guestfs_mkdir (g, "/foo"); /* We don't care if this fails. */
	 guestfs_pop_error_handler (g);

	Note these calls are used by the C API only.  They are not necessary
	in other languages, because those map errors to exceptions.

	The subsequent commits change existing code to use push/pop instead of
	laboriously saving and restoring the error handler.

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	lib: Break long line in definition of guestfs_set_error_handler.
	This is just a whitespace change.

	examples: Copy-editing instructions printed by the mount-local program.

	header: Define LIBGUESTFS_HAVE_CREATE_FLAGS=1.
	This fixes commit 9466060201600db47016133d80af22eb38091a49.

	fish: Update documentation for environment variables.
	This fixes commit 1efed122c07792f4c66a4083159cfacfb1893212.

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	lib: Rework temporary and cache directory code. New APIs: set-tmpdir, get-tmpdir, set-cachedir, get-cachedir.
	The current code has evolved over time and has a number of problems:

	(a) A single environment variable ($TMPDIR) controls the
	location of several directories.

	(b) It's hard for the library user to predict which directory
	libguestfs will use, unless the user simulates the same internal steps
	that libguestfs performs.

	This commit fixes these issues.

	(a) Now three environment variables control the location of all small
	temporary files, and the appliance cache:

	  For temporary files: $LIBGUESTFS_TMPDIR or $TMPDIR or /tmp.

	  For the appliance cache: $LIBGUESTFS_CACHEDIR or $TMPDIR or /var/tmp.

	The user can also set these directories explicitly through API calls
	(guestfs_set_tmpdir and guestfs_set_cachedir).

	(b) The user can also retrieve the actual directories that libguestfs
	will use, by calling guestfs_get_tmpdir and guestfs_get_cachedir.
	These functions are also used internally.

	This commit also:

	 - reworks the internal tmpdir code

	 - removes the internal (undocumented) guestfs_tmpdir call (replacing
	   it with calls to the documented guestfs_get_tmpdir API instead)

	 - changes the ./run script to set LIBGUESTFS_TMPDIR and
	   LIBGUESTFS_CACHEDIR

	 - adds a test

	 - fixes a few places like libguestfs-make-fixed-appliance which
	   depended on $TMPDIR

2012-11-09  Richard W.M. Jones  <rjones@redhat.com>

	lib: When parsing environment, handle LIBGUESTFS_TRACE first.
	So that we can trace all the later calls.

2012-11-07  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.57.

2012-11-06  Richard W.M. Jones  <rjones@redhat.com>

	format: Allow virt-format test to be skipped by setting SKIP_TEST_VIRT_FORMAT_SH=1.

2012-11-05  John Eckersberg  <jeckersb@redhat.com>

	lib: debian support for package arch inspection

2012-11-03  Richard W.M. Jones  <rjones@redhat.com>

	tests: wipefs: Don't try to wipe mounted filesystem.
	Previously wipefs (the utility) allowed this, but it's obviously a bad
	thing to do and the new wipefs gives an error if you try it:

	wipefs: error: /dev/VG/LV: probing initialization failed: Device or resource busy

2012-11-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix documentation quit | exit -> separate exit & quit headings.

	fish: Clean up prompt documentation.

2012-11-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Use Unicode LOWER ONE QUARTER BLOCK to represent cursor.
	'ls' (with no argument) is not a valid command.

	This fixes commit bad5c7d5a50e7f340d3a5daff59d7f3c18c0ab8f.

2012-11-02  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.56.

2012-11-02  Richard W.M. Jones  <rjones@redhat.com>

	generator: Split up huge src/actions.c into separate files.
	Split the functions according to a simple hash across
	C.nr_actions_files files (this number can be increased later if
	necessary).

	This is just code motion.

2012-11-02  Richard W.M. Jones  <rjones@redhat.com>

	generator: actions: Move variant functions to a separate file.
	This is just code motion.

	generator: actions: Move 3 helper functions to a separate file.
	This is just code motion.

	New API: mklost_and_found

	todo: General updates.

	ROADMAP: Remove some completed items.

2012-11-01  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Don't fail when trying to remove /var/spool/at/spool (directory).
	This fixes commit 1949016e899b2737525fdc9b6dda451ad9ecbd66.

2012-11-01  John Eckersberg  <jeckersb@redhat.com>

	inspect: Use new inspect_list_applications2 API call
	RWMJ:
	 - Update virt-inspector.rng.

	lib: Add inspect_list_applications2 method (RHBZ#859949)
	RWMJ:
	- Fix memory leak in guestfs__inspect_list_applications wrapper.
	- Don't document app2_spare* fields.

2012-11-01  Hilko Bengen  <bengen@hilluzination.de>

	message catalogs don't need to be executable

2012-10-30  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.55.

	build: Source 'localenv' in top-level Makefile.
	Also document 'local*' files.

	tests: Allow more tests to be skipped.
	Specifically tests which involve btrfs, because btrfs is
	currently broken upstream (RHBZ#863978).

2012-10-30  Richard W.M. Jones  <rjones@redhat.com>

	generator: Use an OCaml struct to store the structs.
	This just makes it simpler to add extra fields to each struct.

	This is code motion.

2012-10-30  Richard W.M. Jones  <rjones@redhat.com>

	lib: Force visibility default on public actions.
	This is currently done implicitly because of the linker script.
	However in order to do symbol versioning, we will have to do
	this explicitly at each definition instead.

	generator: Move struct-freeing functions to a separate source file.
	This is just code motion.

	sysprep: Move a comment.
	No change.

2012-10-30  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove man pages cache
	Remove the cache files generated by man-db.

	sysprep: remove fontconfig cache
	Remove the cache files generated by fontconfig.

2012-10-29  John Eckersberg  <jeckersb@redhat.com>

	lib: update inspect_list_applications to return all installed RPMs (RHBZ#859885).
	Note that because of RHBZ#859949, this will return two identical
	entries for RPMs which differ only by arch.

2012-10-29  Richard W.M. Jones  <rjones@redhat.com>

	build: Remove 'make bindist' rule.
	We've not distributed binaries for quite a long time, and possibly
	this is not advisable.

	Version 1.19.54.

	guestfs-testing: Use L<> around links.

	fish: Add GUESTFISH_PS1 environment variable to control prompt.

2012-10-27  Richard W.M. Jones  <rjones@redhat.com>

	fish: Make progress bars slightly lighter.

2012-10-25  Richard W.M. Jones  <rjones@redhat.com>

	docs: Review and clarify ERROR HANDLING section of guestfs(3).

2012-10-25  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Disable CPU host-model.
	See the comment in the change.

	This "fixes" commit f7a67914c03db6d4c75671793964954640af7892.

2012-10-25  Richard W.M. Jones  <rjones@redhat.com>

	gitignore: Ignore config.cache file.

2012-10-25  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Fix <cpu> element.
	Use <cpu mode="host-model"> (not model=... which was a typo).

	Also set fallback=allow so that libvirt knows it can use another
	CPU model if it wants.

	This fixes commit 890a4fbc8740b9b2019885a866aa06bc82566a41.

2012-10-25  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Mark some functions as attribute((noreturn)).

2012-10-24  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix test-events.sh because of new debug message.
	Commit 2e90f4312928f332f8997b52be3fe54f20920242 added a debug message
	which isn't filtered out by the set of grep -v's in this test.
	Therefore this test would fail when run with LIBGUESTFS_DEBUG=1.

2012-10-22  Richard W.M. Jones  <rjones@redhat.com>

	resize: Depend explicitly on Unix module.
	Commit a0722c7ad846960be54978a31ebe73b76e119203 introduced a
	dependency on the Unix module.  This was not listed in the list of
	'-package's, but as long as you had ocaml-gettext installed it would
	still work because that pulled in Unix implicitly.

	Thanks Olaf Hering.

2012-10-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.53.

2012-10-18  Richard W.M. Jones  <rjones@redhat.com>

	filearch: Use command mini-library to run external cpio command.

	fuse: Use command mini-library to run the fusermount command.

	info: Use command mini-library to run 'qemu-img info' commands.

	inspect: Use command mini-library to parse the output of db_dump command.

	inspect: Change icon code to use command mini-lib instead of system(3).

	launch: libvirt: Use command mini-library to run qemu-img create command.

	launch: appliance: Use command mini-library to parse output of qemu -help etc.

	appliance: Use command mini-library to run febootstrap-supermin-helper (RHBZ#713678)

	lib: Change guestfs___remove_tmpdir function to use command mini-library.

2012-10-18  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add a new 'command' mini-library for running external commands.
	This is a wrapper or mini-library for running external command,
	loosely based on libvirt's virCommand interface.

	Amongst the advantages are:

	 - Can redirect errors into the error log (RHBZ#713678).
	 - Can redirect output into a callback function.
	 - Handles shell quoting properly.
	 - Safely resets signal handlers, closes file descriptors, etc.
	 - Single place where we can implement other improvements in future.

2012-10-18  Richard W.M. Jones  <rjones@redhat.com>

	valgrind: Add suppression for memory leak in libdl:_dl_init function.

2012-10-17  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	NEW API: mktemp
	Used to create temporary directory or file with an optional suffix.


	RWMJ:

	 - Split this out into a new file (daemon/mktemp.c).

	 - I don't see a reason to deprecate the mkdtemp function which
	   works fine.  Instead remove complex dir-making code from the
	   new function.

	 - Test and fix the patch (missing close(fd)).

2012-10-17  Richard W.M. Jones  <rjones@redhat.com>

	configure: Add db5.1_dump, db5.1_load for Debian Wheezy.

2012-10-17  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	TODO: remove the already implemented yum cache clean feature
	The cleanup of package managers cache is already implemented
	by sprep_operation_package_manager_cache.ml, so remove this
	TODO item.

2012-10-16  Richard W.M. Jones  <rjones@redhat.com>

	todo: Implement Ruby blocking calls.

2012-10-15  Richard W.M. Jones  <rjones@redhat.com>

	generator: Add 'blocking' flag to marking blocking (long-running) functions.
	In languages like Python where we release a global lock around
	long-running libguestfs functions, it is also useful to *not* release
	this lock for small, non-blocking functions.

	Therefore mark all functions with a 'blocking' boolean flag.  It
	defaults to true, and is true by definition for all daemon functions.
	For non-daemon functions, I have classified them manually.

	Only when the blocking flag is set do we generate the code to release
	and reacquire the lock around libguestfs calls.

2012-10-15  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Get rid of CAMLprim.
	It's wrong to use it, and in any case it doesn't do anything on Linux.

	Update release notes.

	lib: Add a test for environment parsing functions.
	This updates commit 9466060201600db47016133d80af22eb38091a49.

	lib: Fix guestfs_create_flags example program in man page.
	This fixes commit 9466060201600db47016133d80af22eb38091a49.

	resize, sparsify: Suppress progress bar when output is not a tty.

	sparsify: Fix dependencies so they include resize/progress.*
	This fixes commit 91b2238fc8e462c02f697f0c053043a55f43c13d.

	libvirt: auth: Some clarifications of the API from Dan Berrange.
	This updates commit d83d17e9dbfb24496a0841fc2aed436181ca0341.

2012-10-15  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: guestfs_create_flags, guestfs_parse_environment, guestfs_parse_environment_list.
	Add a new function for creating a handle:

	 guestfs_h *guestfs_create_flags (unsigned flags [, ...]);

	This variant lets you supply flags and extra arguments, although extra
	arguments are not used at the moment.

	Of particular interest is the ability to separate the creation of the
	handle from the parsing of environment variables like
	LIBGUESTFS_DEBUG.  guestfs_create does both together, which prevents
	us from propagating errors from parsing environment variables back to
	the caller (guestfs_create has always printed any errors on stderr and
	then just ignored them).

	If you are interested in these errors, you can now write:

	 g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT);
	 if (!g)
	   exit (EXIT_FAILURE);
	 r = guestfs_parse_environment (g);
	 if (!r)
	   exit (EXIT_FAILURE);

	Also you can *omit* the call to guestfs_parse_environment, which
	creates a handle unaffected by the environment (which was not possible
	before).

	This commit also includes new (backwards compatible) changes to the
	OCaml, Perl, Python, Ruby and Java constructors that let you use the
	flags.

2012-10-15  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Add RUBYLIB to run script.

2012-10-14  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.52.

	Update PO files from Transifex.
	Also run 'make update-po'.

	Update API support.

	valgrind: Fix FUSE memory leak suppression.

2012-10-13  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: Model libvirt authentication events through the API.
	This commit models libvirt authentication events through the API,
	adding one new event (GUESTFS_EVENT_LIBVIRT_AUTH) and several new
	APIs:

	  guestfs_set_libvirt_supported_credentials
	  guestfs_get_libvirt_requested_credentials
	  guestfs_get_libvirt_requested_credential_prompt
	  guestfs_get_libvirt_requested_credential_challenge
	  guestfs_get_libvirt_requested_credential_defresult
	  guestfs_set_libvirt_requested_credential

	See the documentation and example which shows how to use the new API.

	This commit also changes existing calls to virConnectOpen* within the
	library so that the new API is used.

	Also included is an example (but not a test, because it's hard to see
	how to automatically test the libvirt API).

2012-10-13  Richard W.M. Jones  <rjones@redhat.com>

	configure: Add --without-libvirt option.
	Normally we check if libvirt is installed, and the default is still to
	do this.

	However having this option makes it simpler to check if a change to
	the code has broken the case where libvirt is not installed.

	In fact, this change revealed one such place, which is also fixed in
	this commit.

2012-10-13  Richard W.M. Jones  <rjones@redhat.com>

	docs: Make 'EVENTS' into its own =head1 section.
	For some reason it was stuck under "CALLS WITH OPTIONAL ARGUMENTS",
	which made no sense.

	launch: libvirt: Make handle data conditional on HAVE_LIBVIRT.
	This means that we can use virConnectPtr and virDomainPtr instead of
	using void* types.  In the case where libvirt support is disabled or
	not present, effectively nothing changes.

	lib: Rename src/libvirtdomain.c -> src/libvirt-domain.c.
	No change, just code motion.

	lib: Pointer arg to safe_memdup function should be const.

2012-10-12  Richard W.M. Jones  <rjones@redhat.com>

	configure: Fix capitalization in configure script.
	Just make the output of ./configure --help and the <config.h>
	file consistent.

	configure: Fix C++ compiler test so it doesn't print random junk.

2012-10-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.51.

	daemon: Call udev-settle at the start of the daemon.

2012-10-11  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Always set <qemu:env> TMPDIR.
	If TMPDIR is not set, we must choose one, because otherwise libvirt
	will use a random TMPDIR: http://bugzilla.redhat.com/865464

	The convenient guestfs___persistent_tmpdir function does everything
	needed in this case.

2012-10-11  Richard W.M. Jones  <rjones@redhat.com>

	fish: progress bar: Send interactive progress bar output to /dev/tty (RHBZ#859875).

2012-10-11  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Re-use progress bar wrapper code from virt-resize.
	The code was identical -- just copied with s/resize/sparsify/.
	Instead of duplicating identical code, cause the Makefile.am to use
	the code from the ../resize/ directory.

	Unfortunately because there are two Utils modules (which are
	different), this means we had to rename those modules to Resize_utils
	and Sparsify_utils respectively.  So this is a rather larger change
	than intended.  However it's just code motion.

2012-10-11  Richard W.M. Jones  <rjones@redhat.com>

	fish: inspect: Canonicalize paths for printing (RHBZ#859876).

	fish: inspect: Move variable decls to top of function.
	This is just code motion.

2012-10-10  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.50.

	docs: Fix documentation about hotplugging.

	launch: Add warning not to avoid calling launch twice on the same handle.
	For more information on this topic, see:
	https://www.redhat.com/archives/libguestfs/2012-October/msg00045.html

2012-10-10  Richard W.M. Jones  <rjones@redhat.com>

	Revert "btrfs: Add a workaround for btrfs failures seen with kernel 3.7.0." Revert "btrfs: Add an extended workaround for btrfs failures seen with kernel 3.7.0."
	Reverted these workaround, since we may have found a fix for the btrfs
	bug itself (for details see RHBZ#863978).

	This reverts commit d9e5b514aa4ef6d659b267e8caef4ebec8a221b1
	and commit a03f536f0dae3ca20e11b7c2ba41e4a7eb1f28c9.

2012-10-10  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix test-qemudie-* so they re-adds the disk on second launch.
	Commit ed7fda161e1f3d0beb02a368fcbcf5ed95dcdac1 changed the
	way that the drives are handled across appliance shutdowns.

	Previously during the following sequence of calls:

	  create the handle
	  add drive(s)
	  launch
	  kill subprocess
	  launch

	the added drives are still in the handle at the second launch.

	After the above commit, the added drives are removed from the handle,
	which means the second launch happens with no drives (which could be
	an error).

	This was never actually defined either way, so in this case fix the
	test to re-add the drive before the second launch.

	Since hotplugging was added, it isn't really feasible to return to the
	original semantics, since users might remove drives, in which case we
	have lost information about those drives so we cannot restore them on
	the second launch.

	NOTE: PLEASE CALLERS DON'T DO THIS!  Always use a new handle for each
	launch of the appliance.

2012-10-10  Richard W.M. Jones  <rjones@redhat.com>

	btrfs: Add an extended workaround for btrfs failures seen with kernel 3.7.0.
	See:
	https://bugzilla.redhat.com/show_bug.cgi?id=863978
	and:
	http://thread.gmane.org/gmane.comp.file-systems.btrfs/20257

	This extends the fix in commit d9e5b514aa4ef6d659b267e8caef4ebec8a221b1
	because I missed the case where mkfs.btrfs is called directly.

2012-10-09  Richard W.M. Jones  <rjones@redhat.com>

	docs: Fully document all subdirectories of the source.

	docs: Add overview to guestfs(3)/EXTENDING LIBGUESTFS.

	appliance: Add 99-guestfs-serial.rules to EXTRA_DIST.
	This fixes commit 7786d56db8c22413949f98ef6b15fe0ea367d195.

	Version 1.19.49.

	btrfs: Add a workaround for btrfs failures seen with kernel 3.7.0.
	See:
	https://bugzilla.redhat.com/show_bug.cgi?id=863978
	and:
	http://thread.gmane.org/gmane.comp.file-systems.btrfs/20257

2012-10-09  Olaf Hering  <olaf@aepfle.de>

	launch: appliance is optional
	 # virt-filesystems -v -d 6326ad4e-5805-2ab4-1338-d1dad8c76162 --all
	libguestfs: libvirt version = 10002
	libguestfs: [00000ms] connect to libvirt
	libguestfs: [00001ms] get libvirt capabilities
	libguestfs: [00234ms] build appliance
	libguestfs: [00234ms] create libvirt XML
	libguestfs: error: error constructing libvirt XML at "xmlTextWriterWriteAttribute (xo, BAD_CAST "file", BAD_CAST appliance)": No such file or directory
	libguestfs: closing guestfs handle 0x656270 (state 0)

	 # ls -lh /usr/lib64/guestfs/*
	-rw-r--r-- 1 root root  13M Oct  8 16:15 /usr/lib64/guestfs/initramfs.x86_64.img
	-rw-r--r-- 1 root root 3.7M Oct  6 09:25 /usr/lib64/guestfs/vmlinuz.x86_64

2012-10-09  Richard W.M. Jones  <rjones@redhat.com>

	Add support for hotplugging (removing disks). New API: remove-drive.
	Note because of a bug in fuser, this only works with psmisc >= 22.20.

	This also updates the hotplugging tests.

2012-10-08  Richard W.M. Jones  <rjones@redhat.com>

	Add support for hotplugging (adding disks) to the libvirt attach-method.
	When libvirt is used, we can allow disks to be hotplugged.
	guestfs_add_drive can be called after launch to hot-add a disk.

	When a disk is hot-added, we first ask libvirt to add the disk to the
	appliance, then we make an internal call into the appliance to get it
	to wait for the disk to appear (ie. udev_settle ()).

	Hot-added disks are tracked in the g->drives array.

	This also adds a test.

2012-10-08  Richard W.M. Jones  <rjones@redhat.com>

	launch: Add add_drive 'label' option. New API: list-disk-labels
	Allow the user to pass an optional disk label when adding a drive.

	This is passed through to qemu / libvirt using the disk serial field,
	and from there to the appliance which exposes it through udev,
	creating a special alias of the device /dev/disk/guestfs/<label>.
	Partitions are named /dev/disk/guestfs/<label><partnum>.

	virtio-blk and virtio-scsi limit the serial field to 20 bytes.  We
	further limit the name to maximum 20 ASCII characters in [a-zA-Z].

	list-devices and list-partitions are not changed: these calls still
	return raw block device names.  However a new call, list-disk-labels,
	returns a hash table allowing callers to map between disk labels, and
	block device and partition names.

	This commit also includes a test.

2012-10-08  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Create qcow2 overlays for read-only drives and the appliance.
	Instead of adding the snapshot=on option via <qemu:arg>, create qcow2
	overlays for any read-only drives and the appliance using 'qemu-img
	create' + a temporary file.

	This is a workaround for missing support for <transient/> in libvirt's
	qemu driver.  Also for the unpredictable way that libvirtd handles
	$TMPDIR: we want to control where the temporary disk is created.

	Currently it is also much slower, because qemu-img is slow.  However
	we hope to fix qemu upstream.

2012-10-08  Richard W.M. Jones  <rjones@redhat.com>

	launch: Make g->drives into an array (was a linked list).
	Using an array simplifies the implementation of hotplugging.

2012-10-07  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.48.
	We need to regenerate the tarball because the previous one
	had the guestfsd man page missing.  Hence bumped version
	number.

	daemon: Add guestfsd.pod to EXTRA_DIST.
	This fixes commit df2469a48f4641bdfe26a4179dd946df190fa970.

2012-10-06  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.47.

	launch: Add private data pointer to the struct drive.
	This can be used by the attach-method, eg. for libvirt-only data.

	launch: add_null_drive: Force null drive to be writable.
	Because we create a special file, there is no point forcing qemu
	to create an overlay as well.  Save time by setting readonly = 0.

	launch: Rearrange code for adding drives to the g->drives list in the handle.
	This is just code motion.

2012-10-06  Richard W.M. Jones  <rjones@redhat.com>

	build: Use 'tmp-d' as name of temporary directory instead of 'tmp'.
	When building supermin.d/daemon.img, use 'tmp-d' instead of 'tmp'
	as the name of the temporary directory.

	This is just code motion.

2012-10-06  Richard W.M. Jones  <rjones@redhat.com>

	docs: add_drive: Clean up documentation of the 'filename' parameter.
	Also, remove duplicate documentation of using '/dev/null' as the
	filename.

2012-10-06  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix rhbz690819.sh to skip when attach-method is libvirt.
	This sets the iface parameter (implicitly), which is not supported yet
	by the libvirt backend.

	This updates commit 8e198dc1c50fcdba6720b23da478ef75cc979733.

2012-10-06  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Document debug* and internal* functions in the FAQ.

2012-10-03  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: The drive 'iface' parameter is not yet supported.
	We could add support, but at the moment return an error
	if the user tries to use the iface parameter.

	docs: Minor cleanup of documentation for add_drive 'name' parameter.

	syntax: Use __PATTERNS__ instead of @PATTERNS@ in podwrapper man pages.
	It is slightly dangerous to use @PATTERNS@, since these might
	be substituted by autoconf when they appear in Makefile.am files.

	docs: Add guestfsd(8) man page.

2012-10-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.46.

	configure: Rearrange build options report in ./configure output.
	This had accreted over a long period of time, so it wasn't
	arranged very logically.

2012-09-28  Richard W.M. Jones  <rjones@redhat.com>

	daemon: When sorting devices, don't fail on mix of /dev/sd and /dev/vd (RHBZ#858128).
	If compare_device_names was given two devices with devices with
	different interfaces (eg. /dev/sda and /dev/vda) then it would try to
	compare the partition numbers, and fail when it could parse them.

	It's arguable what we should be doing in this case (except for
	strongly discouraging people from using the interface feature), but
	let's at least not cause the daemon to assert-fail.

	Found by Red Hat QA, thanks Mohua Li.

2012-09-28  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Fix calls to case_sensitive_path (RHBZ#858126).
	Don't assume that if guestfs_case_sensitive_path returns NULL, that it
	means the file does not exist.

	The (previously undefined) behaviour of case_sensitive_path was that a
	NULL return meant "either the file doesn't exist or some other error".
	However in commit 973581780d8a006f336684fef6762801402d775d this was
	changed so that if the last element of the path didn't exist, it was
	assumed to be a new file and the (non-NULL) path of the new file is
	returned.

	This change breaks code (including in libguestfs) which tries to use
	case_sensitive_path as a dual-purpose call to fix-up a path for
	Windows and test if the file exists.  Such code should be rewritten so
	that it explicitly tests for file existence after calling
	case_sensitive_path.

	I examined all the calls to case_sensitive_path in libguestfs and
	modified them where necessary.

2012-09-28  Richard W.M. Jones  <rjones@redhat.com>

	virt-edit: If case_sensitive_path returns an error, exit.
	The 'windows_path' function was blindly copied from virt-cat.  In
	virt-cat, errors are checked by the caller to 'windows_path'.  But
	virt-edit lacks this check.  Change the function in virt-edit to add a
	check and exit on error.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.45.

	sysprep: Typo in man page: resets -> reset.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	run: Label tmp directory.
	There's not really any point just documenting that people
	should label the tmp directory, when we can just label it.
	So change the ./run script so it calls chcon.

	However it's not a failure if chcon doesn't work.  If SELinux
	is not installed or is disabled, then labelling will fail.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Add a section about diagnosing hanging guests.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Add prominent warning about including complete output.
	Everyone ignores the documentation.  Everyone ignores me even
	when I specifically tell them to include the complete output.

	Place a prominent notice at the beginning of the output.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: guestfs_get_path might return NULL.
	It would almost certainly indicate a bug if it happens, but
	don't rely on printf not segfaulting if it did happen.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	Revert "test-launch-race: Add SELinux label to $TMPDIR."
	Because RHBZ#860235 has been fixed in selinux-policy 3.11.1-25.fc18.

	This reverts commit 7fc838cca334ccf3d388c5598ff7fae88dbe4513.

2012-09-26  Richard W.M. Jones  <rjones@redhat.com>

	guestfs-testing(1): Start by running libguestfs-test-tool.

2012-09-26  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	remove the useless "h" option
	"h" option is not enabled in virt-cat, remove it.

2012-09-25  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Miscellaneous cleanups.
	- Use S<...> for non-breaking spaces.
	- Arrange the builds section better.
	- Add a section on enabling sVirt.
	- Other small fixes.

	docs: Link to guestfs-recipes(1) from intro in guestfs(3).

	gobject: No need to remove old API files.
	In commit 3d84ca76fec491015030daa53e9122b03032ddfd we changed the
	generator so it now automatically removes old API files.

	test-launch-race: Add SELinux label to $TMPDIR.
	This is a temporary workaround for
	https://bugzilla.redhat.com/show_bug.cgi?id=860235
	which can be removed once this bug is fixed.

2012-09-24  Richard W.M. Jones  <rjones@redhat.com>

	libvirt >= 0.10.2 required for libvirt backend.

	Version 1.19.44.

2012-09-24  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	Fix tests/bigdirs/test-big-dirs.pl to use mke2fs
	Let tests/bigdirs/test-big-dirs.pl uses mke2fs to create small
	inode ratio files.


	RWMJ:
	 - Fix invocation of mke2fs with optional arguments.
	 - Run the test to check it works.

2012-09-24  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	NEW API:ext:mke2fs
	New api mke2fs for full configuration of filesystem.


	RWMJ:
	 - Update description.
	 - Run and fix the tests.
	 - Remove bogus filename from po/POTFILES.

2012-09-24  Richard W.M. Jones  <rjones@redhat.com>

	tests/bigdirs: Add empty TESTS= rule.
	Without this empty rule, automake doesn't generate the rest of the
	testing infrastructure, so you can't enable the test yourself by doing
	'make check TESTS=test-big-dirs.pl'.

	generator: xdr: Re-code procedure table.
	This is just code motion.

	generator: Tidy up comments in guestfs_protocol.x.

	generator: Allow an optional emacs-mode at the top of generated files.

2012-09-24  Richard W.M. Jones  <rjones@redhat.com>

	generator: The default input files are 'generator/ *.ml' [sic].
	Since generator source files were renamed, the comment at the
	top of each generated file was wrong.

	Unfortunately we cannot allow /* to appear within a comment,
	so the space is necessary.

2012-09-22  Olaf Hering  <olaf@aepfle.de>

	sysprep: handle at jobs in cron-spool operation
	cron-spool claims to remove at jobs, but it has no code to actually do
	that. Add patterns to remove files in known at spool locations.

	sysprep: handle distro specific sysv scripts
	Currently firstboot would only work on redhat-based images.
	Handle redhat-based, suse-based and debian guests, error out in case of an
	unknown distro.
	Update firstboot.sh:
	 - make sure scripts exists and can be executed
	 - add LSB header to avoid insserv warnings later on
	 - run script only if called with "start"
	Update functions, pass only required options.

2012-09-22  Richard W.M. Jones  <rjones@redhat.com>

	test-launch-race: Add comment.

2012-09-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.43.

2012-09-21  Olaf Hering  <olaf@aepfle.de>

	sysprep: handle suse-based in hostname operation

2012-09-21  Richard W.M. Jones  <rjones@redhat.com>

	launch: Handle guestfs_config qemu_value == NULL.
	The second parameter to 'config' may be NULL.

	In commit 52fa23d74f6308daf804c2330b0b27e0b4412594 (refactoring of
	guestfs_config) the code this got lost, and guestfs_config would
	segfault if qemu_value was NULL.

	Also this fixes the libvirt method to handle the same case.

	I checked libguestfs-1.18 and -1.16 branches, and this problem does
	NOT affect them.

2012-09-21  Olaf Hering  <olaf@aepfle.de>

	Update SuSE Linux detection.
	Update SuSE Linux detection. Up to now everything with a
	/etc/SuSE-release file was treated as openSuSE. With this change SLES
	based distributions such as "SUSE Linux Enterprise Server", "SUSE
	Linux Enterprise Desktop" and "Novell Linux Desktop" will show up as
	"sles". The 'opensuse' detection was updated to handle older openSuSE
	releases as well as the well known SuSE Linux releases, starting from
	6.0. Everything else with a /etc/SuSE-release file will show up as
	"suse-based".

	Here is a collection of release files:

	==> Dist/6.0/etc/SuSE-release <==
	SuSE Linux 6.0 (i386)
	VERSION = 6.0

	==> Dist/6.1/etc/SuSE-release <==
	SuSE Linux 6.1 (i386)
	VERSION = 6.1

	==> Dist/6.2/etc/SuSE-release <==
	SuSE Linux 6.2 (i386)
	VERSION = 6.2

	==> Dist/6.3/etc/SuSE-release <==
	SuSE Linux 6.3 (i386)
	VERSION = 6.3

	==> Dist/6.4/etc/SuSE-release <==
	SuSE Linux 6.4 (i386)
	VERSION = 6.4

	==> Dist/7.0/etc/SuSE-release <==
	SuSE Linux 7.0 (i386)
	VERSION = 7.0

	==> Dist/7.1/etc/SuSE-release <==
	SuSE Linux 7.1 (i386)
	VERSION = 7.1

	==> Dist/7.2/etc/SuSE-release <==
	SuSE Linux 7.2 (i386)
	VERSION = 7.2

	==> Dist/7.3/etc/SuSE-release <==
	SuSE Linux 7.3 (i386)
	VERSION = 7.3

	==> Dist/8.0/etc/SuSE-release <==
	SuSE Linux 8.0 (i386)
	VERSION = 8.0

	==> Dist/8.1/etc/SuSE-release <==
	SuSE Linux 8.1 (i386)
	VERSION = 8.1

	==> Dist/8.2/etc/SuSE-release <==
	SuSE Linux 8.2 (x86-64)
	VERSION = 8.2

	==> Dist/9.0/etc/SuSE-release <==
	SuSE Linux 9.0 (x86-64)
	VERSION = 9.0

	==> Dist/9.1/etc/SuSE-release <==
	SuSE Linux 9.1 (x86-64)
	VERSION = 9.1

	==> Dist/9.2/etc/SuSE-release <==
	SuSE Linux 9.2 (x86-64)
	VERSION = 9.2

	==> Dist/9.3/etc/SuSE-release <==
	SuSE Linux 9.3 (x86-64)
	VERSION = 9.3

	==> Dist/10.0/etc/SuSE-release <==
	SUSE LINUX 10.0 (X86-64) OSS
	VERSION = 10.0

	==> Dist/10.1-remastered/etc/SuSE-release <==
	SUSE LINUX 10.1 (X86-64)
	VERSION = 10.1

	==> Dist/10.1/etc/SuSE-release <==
	SUSE Linux 10.1 (X86-64) Beta8
	VERSION = 10.1

	==> Dist/10.2/etc/SuSE-release <==
	openSUSE 10.2 (X86-64)
	VERSION = 10.2

	==> Dist/10.3/etc/SuSE-release <==
	openSUSE 10.3 (X86-64)
	VERSION = 10.3

	==> Dist/11.0/etc/SuSE-release <==
	openSUSE 11.0 (X86-64)
	VERSION = 11.0

	==> Dist/11.1/etc/SuSE-release <==
	openSUSE 11.1 (x86_64)
	VERSION = 11.1

	==> Dist/11.2/etc/SuSE-release <==
	openSUSE 11.2 (x86_64)
	VERSION = 11.2

	==> Dist/11.3/etc/SuSE-release <==
	openSUSE 11.3 (x86_64)
	VERSION = 11.3

	==> Dist/11.4/etc/SuSE-release <==
	openSUSE 11.4 (x86_64)
	VERSION = 11.4
	CODENAME = Celadon

	==> Dist/12.1/etc/SuSE-release <==
	openSUSE 12.1 (x86_64)
	VERSION = 12.1
	CODENAME = Asparagus

	==> Dist/12.2/etc/SuSE-release <==
	openSUSE 12.2 (x86_64)
	VERSION = 12.2
	CODENAME = Mantis

	==> Dist/sles8/etc/SuSE-release <==
	SuSE SLES-8 (AMD64)
	VERSION = 8.1

	==> Dist/sles9/etc/SuSE-release <==
	SUSE LINUX Enterprise Server 9 (x86_64)
	VERSION = 9

	==> Dist/sles9sp2/etc/SuSE-release <==
	SUSE LINUX Enterprise Server 9 (x86_64)
	VERSION = 9
	PATCHLEVEL = 2

	==> Dist/sles9sp3/etc/SuSE-release <==
	SUSE LINUX Enterprise Server 9 (x86_64)
	VERSION = 9
	PATCHLEVEL = 3

	==> Dist/sles9sp4/etc/SuSE-release <==
	SUSE LINUX Enterprise Server 9 (x86_64)
	VERSION = 9
	PATCHLEVEL = 4
	==> Dist/sled10/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 10 (x86_64)
	VERSION = 10

	==> Dist/sled10sp1/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 1

	==> Dist/sled10sp2/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 2

	==> Dist/sled10sp3/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 3

	==> Dist/sled10sp4/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 4

	==> Dist/sled11/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 0

	==> Dist/sled11sp1/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 1

	==> Dist/sled11sp2/etc/SuSE-release <==
	SUSE Linux Enterprise Desktop 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 2

	==> Dist/sles10/etc/SuSE-release <==
	SUSE Linux Enterprise Server 10 (x86_64)
	VERSION = 10

	==> Dist/sles10sp1/etc/SuSE-release <==
	SUSE Linux Enterprise Server 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 1

	==> Dist/sles10sp2/etc/SuSE-release <==
	SUSE Linux Enterprise Server 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 2

	==> Dist/sles10sp3/etc/SuSE-release <==
	SUSE Linux Enterprise Server 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 3

	==> Dist/sles10sp4/etc/SuSE-release <==
	SUSE Linux Enterprise Server 10 (x86_64)
	VERSION = 10
	PATCHLEVEL = 4

	==> Dist/sles11/etc/SuSE-release <==
	SUSE Linux Enterprise Server 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 0

	==> Dist/sles11sp1/etc/SuSE-release <==
	SUSE Linux Enterprise Server 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 1

	==> Dist/sles11sp2/etc/SuSE-release <==
	SUSE Linux Enterprise Server 11 (x86_64)
	VERSION = 11
	PATCHLEVEL = 2

2012-09-20  Hilko Bengen  <bengen@hilluzination.de>

	./run: Keep gnome-keyring from disturbing test script output

	./run: Make sure that the temporary directory exists so test scripts can produce output files

	python: PyInt_* no longer exists in python3, replace with PyLong_*

2012-09-20  Olaf Hering  <olaf@aepfle.de>

	rename local variable to avoid clash with match macro
	match will expand to guestfs___match, rename the local variable to avoid clash.

2012-09-20  Richard W.M. Jones  <rjones@redhat.com>

	docs: Add links to various guestfs-* man pages from guestfs(3).

	recipes: Add section about uploading raw filesystem content.

	launch: Make the "launched failed" message more explanatory.
	Since this is the most common error seen by people who have
	installation problems, buggy qemu, etc, and since no one reads the
	FAQ, describe in this error message what resources are available to
	debug launch problems.

2012-09-19  Olaf Hering  <olaf@aepfle.de>

	sysprep: handle SuSE in random-seed operation

	sysprep: add zypper to package-manager-cache operation
	libzypp and zypper store their cache files in
	/var/cache/zypp/{packages,raw,solv}/ and /var/cache/zypper/RPMS/
	Add a single pattern to match both cases.

	sysprep: remove apache2, audit and ntp in logfile operation
	Add more entries to the dump ground of logfile patterns.

	sysprep: handle SuSE in hostname operation
	SuSE based installations store the hostname in /etc/HOSTNAME.
	Add code to handle both opensuse and sles. Code to properly detect
	the latter will be added with another patch.

2012-09-19  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Create /etc/sysconfig/network file if it doesn't exist (RHBZ#858696).

2012-09-18  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Re-run the tests against upstream libvirt.

	extra-tests: Clean up some comments about the upstream qemu tests.

	extra-tests: Add scripts used by these tests to EXTRA_DIST.

2012-09-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.42.

	tmp: Ignore libguestfsXXXXXX temporary files in tmp dir.

	./run: Write temporary file in tmp directory.
	We have a new 'tmp' directory under the top level dir for temporary
	files.  Use it for the temporary output from the ./run script.

	launch: libvirt: Pass TMPDIR to qemu subprocess.

	New API: rm-f: remove a file, ignoring errors if it doesn't exist.

	inspect: Fix segfault and error caused by earlier code cleanups.
	This fixes commit e128a627fb8f39f4f4c11b782cef895bd79f0282.

	launch: libvirt: Disable sVirt if using a custom qemu (ie. setting <emulator>).
	See:
	https://bugzilla.redhat.com/show_bug.cgi?id=857659
	especially Dan's comment 4.

2012-09-17  Richard W.M. Jones  <rjones@redhat.com>

	Fix multiple errors where jump skips variable initialization.
	<file>: error: jump skips variable initialization [-Werror=jump-misses-init]

	This has only just appeared, possibly related to previous gnulib
	update.  In any case, this is just code motion / cleanup.

2012-09-17  Richard W.M. Jones  <rjones@redhat.com>

	daemon: stubs: Move all arg decls to top of function.
	For some reason, argument declarations were handled
	inconsistently for strings and non-string arguments.
	Non-string arguments were all declared at the top of the
	function stub, where as string arguments were declared
	in place.

	Be consistent.

	This is just code motion.

2012-09-17  Jim Meyering  <jim@meyering.net>

	maint: remove a subsumed syntax-check rule
	* cfg.mk (sc_prohibit_trailing_blank_lines): Remove rule.  It is now
	subsumed by the much more efficient sc_prohibit_empty_lines_at_EOF
	rule in gnulib's maint.mk.

2012-09-17  Richard W.M. Jones  <rjones@redhat.com>

	syntax: Exclude examples and test program from <config.h> requirement (thanks Jim Meyering).

	syntax: Allow strncpy in launch-*.c files (thanks Jim Meyering).
	We use strncpy, justifiably, to copy the socket name into
	the fixed length Unix domain sun_path buffer.

	syntax: Exclude examples from strcmp and strncmp checks (thanks Jim Meyering).

	syntax: Ignore documentation when testing for magic number exit() calls (thanks Jim Meyering).

	syntax: Exclude PO files from doubled words test (thanks Jim Meyering).

	syntax: Remove definitions of O_CLOEXEC, except in examples (thanks Jim Meyering).
	The gnulib <fcntl.h> replacement header will now define this symbol if
	it's not defined already.

	syntax: Exclude period in error message checks from PHP programs (thanks: Jim Meyering).

	syntax: Disable cast arg to free test (thanks Jim Meyering).

	syntax: Exclude certain files from bindtextdomain test (thanks Jim Meyering).

	Update to latest gnulib.

2012-09-16  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.41.

2012-09-15  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Write a qemu wrapper script on the fly.
	Passing the $upstream_qemu environment variable is not reliable when
	libvirt is involved: Environment variables are passed to the first
	instance of the session libvirtd, but because libvirt reuses the
	session libvirtd, subsequent environment variable settings are lost
	(this is filed as RHBZ#856619).

	Bypass all of this by writing a custom qemu-wrapper.sh which contains
	the hard-coded values we want.

2012-09-15  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Rerun extra tests with regular appliance attach method.
	If libvirt is being used as the backend, rerun all the extra-tests
	again using the regular appliance backend.

	extra-tests: The upstream qemu test now reruns all the extra tests.

	extra-tests: Fix libvirt URI so we can run tests with libvirt attach-method.

	syntax: Remove trailing whitespace.
	Found by 'make syntax-check'.

	generator: Remove inaccurate comment.
	The correct way to extend functions is documented in generator/README.
	This comment was no longer accurate.

	syntax: Replace test == with = or -eq as appropriate.
	Found by 'make syntax-check'.

	syntax: xfs: Rewrite split_strdup function to avoid use of strncpy.
	Found by 'make syntax-check'.

	syntax: Use STREQ/STRNEQ in place of strcmp.
	Found by 'make syntax-check'.

	syntax: Remove include <signal.h> in file that doesn't use it.
	Found by 'make syntax-check'.

2012-09-15  Richard W.M. Jones  <rjones@redhat.com>

	syntax: Remove PATH_MAX-sized buffers allocated on the stack.
	On Linux PATH_MAX is 4096, but on some platforms it can be much larger
	or even not defined (ie. unlimited).  Therefore using a PATH_MAX-sized
	stack buffer is not a great idea for portable programs.

	This change removes use of PATH_MAX-sized stack-allocated buffers.

	This change only applies to the library and standalone programs.
	Inside the daemon, memory allocation is much more complicated so I
	have not changed those (yet).

	Found by 'make syntax-check'.

2012-09-15  Richard W.M. Jones  <rjones@redhat.com>

	syntax: Remove gnulib "ignore-value.h" in files that don't use it.
	Found by 'make syntax-check'.

	syntax: Remove include <dirent.h> in files that don't use it.
	Found by 'make syntax-check'.

	syntax: Remove gnulib c-ctype.h in files that don't use it.
	Found by 'make syntax-check'.

	syntax: Remove include <assert.h> where assert is not used.
	Found by 'make syntax-check'.

	lib: Rearrange headers.
	This is just code motion.

	lib: Remove unused headers <arpa/inet.h> and <netinet/in.h>
	These were used back in the day when we used TCP for the
	communications channel with the guest.

	syntax: Remove HAVE_*_H tests which are always true.
	Gnulib supplies replacements for these headers, so there
	is no need to test.

	perl: Add <stdio.h> and <stdlib.h> for printf and malloc.

	perl: Include <inttypes.h> and assume it always defines PRId64 and PRIu64.
	If these are not defined in the header files, it's a problem on
	the platform which we should fix with gnulib.  Our replacement
	definitions might be wrong here.

	lib: These optargs structures are not modified, hence const.

	syntax: Remove test for TAB indentation.
	Nothing particularly wrong with using TABs for indentation,
	and this test also has a lot of false positives.

	syntax: xfs: Remove useless if before free.
	Found by running 'make syntax-check'.

	docs: Fix documentation of syntax-check target, add extra-tests.

2012-09-14  Richard W.M. Jones  <rjones@redhat.com>

	faq: Make the legal section less unnecessarily legalistic.

	faq: Tidy up headings.

	faq: Add more answers about read-only disks.

	launch: libvirt: Enable sVirt.

	test-9p: Disable this test with libvirt.
	This test doesn't work with sVirt if SELinux is enforcing, because
	qemu won't be able to access the 9p-exported directory on the host.

2012-09-14  Richard W.M. Jones  <rjones@redhat.com>

	build: Create new 'tmp' directory for tests.
	Having a separate directory means:

	(1) It's easy to clean up orphaned temporary files, the appliance,
	    etc.

	(2) You can put an SELinux label on this directory so that qemu can
	    write to it when you're using sVirt and SELinux is enforcing:

	    chcon --reference=/tmp tmp

2012-09-14  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Mark appliance disk as <shareable/> (thanks Dan Berrange).
	This is a fix for multiprogramming: If two instances of libguestfs
	share the same appliance disk, then libvirt would unlabel the disk
	when one of the instances closes the handle, resulting in the other
	qemu being unable to continue accessing the appliance.

	Adding the flag makes libvirt understand that the disk is shared so it
	doesn't do this, and it apparently handles locking correctly too if we
	were using sanlock.

2012-09-14  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Print more environment variables.
	This prints LIBVIRT_*, LIBVIRTD_*, LD_* and PATH, since these are all
	useful for debugging and could affect libguestfs in some way.

2012-09-13  Richard W.M. Jones  <rjones@redhat.com>

	fish: Replace '_' with '-' in deprecation cross-refs (thanks Olaf Hering).

2012-09-12  Richard W.M. Jones  <rjones@redhat.com>

	lib: guestfs_disk_format: Set LC_ALL=C instead of LANG=C.
	LC_ALL takes precedence over LANG.  See:

	http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html

2012-09-06  Richard W.M. Jones  <rjones@redhat.com>

	release-notes: Add 'draft' background image.

2012-09-05  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Don't use $QEMU as a variable.
	Since 'QEMU' is set (overwritten) by the autoconf-generated Makefile,
	this test would always test installed qemu, not upstream qemu,
	making it pretty useless.  Use another name for this variable.

2012-09-05  Richard W.M. Jones  <rjones@redhat.com>

	generator: Remove generated and unused files from previous runs of the generator.
	If you go back in time in git (eg. git reset, git bisect) then you can
	end up in a situation where a file that was generated by a later
	version is left around unused in the earlier version.

	This isn't a problem for most things, but gobject documentation
	generation picks up any file in a directory, even unreferenced ones,
	and breaks.  So the correct thing to do is to remove these files.

2012-09-05  Richard W.M. Jones  <rjones@redhat.com>

	generator: gobject: Use a more normal way to output files.
	The generator output is identical, verified by comparing the
	output files before and after the change.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.40.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Fix use of closed handle (thanks Olaf Hering).
	This fixes commit faaedeb3432253847107ca2c4530f681c6a1e385.

	Also contains an update to the test which tests the format
	auto-detect path.

2012-09-04  Olaf Hering  <olaf@aepfle.de>

	fix fuse_opt_add_opt_escaped return type
	I: Program returns random data in a function
	E: libguestfs no-return-in-nonvoid-function guestmount.c:75

	The function fuse_opt_add_opt_escaped has only one caller and a return
	code is not checked.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.39.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	shutdown: Add 'check_for_errors' hint along the shutdown path.
	This hint tells the backend whether anyone cares about errors when the
	appliance is shut down.

	Currently this only has any effect on the libvirt backend, where it
	controls whether or not we use the VIR_DOMAIN_DESTROY_GRACEFUL flag.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Add VIR_DOMAIN_DESTROY_GRACEFUL flag.
	We want libvirt to report failures when destroying the guest.  See:

	https://bugzilla.redhat.com/show_bug.cgi?id=853369#c12

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Add an expect-driven test for the virt-rescue command.
	This command was not tested at all.  As a result we didn't notice that
	it was broken for a long time (RHBZ#853159).

	This adds a test that drives the command through a pty.  It uses the
	perl 'Expect' module, although this is not required.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	proto: Don't set g->fd[] to /dev/null in direct mode, fixing virt-rescue (RHBZ#853159).
	https://bugzilla.redhat.com/show_bug.cgi?id=853159

	git bisect pointed to the following commit:

	  commit ec8e3b6cad170d08ac18b580792dfb137eb171dc
	  Author: Richard W.M. Jones <rjones@redhat.com>
	  Date:   Fri Jul 20 14:24:10 2012 +0100

	    launch: Abstract attach method operations.

	    g->attach_ops points to a structure which contains the
	    operations supported by each attach method backend
	    (ie. appliance, unix, etc.).

	Since that commit was essentially just code motion, it wasn't clear
	why virt-rescue should be affected by it.

	In fact the reason is as follows:

	(1) In direct mode, we don't need g->fd[] (which would normally be
	connected to the stdin/stdout of qemu).  So we opened them on
	/dev/null so they had some value.

	(2) accept_from_daemon / read_log_message_or_eof reads from g->fd[1].
	Since this is connected to /dev/null, it always reads EOF.

	(3) This would cause child_cleanup to be called.  This is completely
	unintentional: we don't want to cleanup the child at this point, even
	in direct mode.

	(4) Prior to the commit above, child_cleanup first waited for the
	process to exit (ie. waitpid).  This happened to work, since we are
	effectively waiting for the user to exit virt-rescue.

	(5) After the commit above, the order of operations was changed so
	that we first killed qemu before waiting for it.  This broke
	virt-rescue.

	The fix is to change direct mode so that it leaves g->fd[]'s as -1.
	The rest of the protocol code can deal with this situation -- it
	ignores the log fd instead of trying to read from it.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	rescue: If attach-method is 'libvirt', force it to be 'appliance'.
	The libvirt backend currently doesn't support direct mode.  We should
	make that work in future.  As a workaround, force the attach-method to
	be 'appliance' in this case.

	rescue: If -v / debugging enabled, don't mask error messages.
	We set the error handler to NULL in order to mask "normal" error
	messages that we expect to see because of the unusual way that
	virt-rescue runs the appliance.  However if the user selected -v /
	enabled debugging, then it is reasonable to expect they want to see
	every message, so do not mask anything.

	launch: libvirt: Direct mode flag is not (yet) supported, so give an error in this case.
	We definitely intend to support this in future.

	Update release notes (text file).
	This updates commit 9e4ac650e4c4d934a91a88d7e4aaf5495845a71b.

	Update release notes.

	lib: Add tests to the disk-{format,virtual-size,has-backing-file} APIs.

	New APIs: disk-virtual-size and disk-has-backing-file.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	lib: Reimplement qemu-img info parser for flexibility.
	This allows other fields from the output of 'qemu-img info'
	to be parsed out.

	This updates commit 20902e7ce02fa375d5d336e6b984f615472ad1b1.

2012-09-04  Richard W.M. Jones  <rjones@redhat.com>

	Fix guestfs_disk_image API to work with relative paths.
	guestfs_disk_image makes a symbolic link to the real filename in order
	to sanitize the filename.  However this fails if the filename is a
	relative path.  Call realpath(3) to make the filename canonical.

	This fixes commit 20902e7ce02fa375d5d336e6b984f615472ad1b1.

2012-09-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.38.

2012-09-03  Olaf Hering  <olaf@aepfle.de>

	daemon: provide list of checksum commands
	While adding the list of external commands I missed the
	various checksum tools.

2012-09-03  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Use guestfs_disk_format to autodetect input format (RHBZ#853762).

	launch: libvirt: Use guestfs_disk_format API to autodetect input format.

	guestfs(3): Document disk image formats and how to detect them.

	New API: guestfs_disk_format
	Detect the disk image format of a file, in a secure way.

2012-09-03  Olaf Hering  <olaf@aepfle.de>

	daemon: remove call to obsolete udevsettle
	udevadm is included in all reasonable recent distributions.
	This avoids 'command not found' errors in verbose mode.

2012-09-03  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	TODO: remove the implemented hostname removing feature

	sysprep: remove hostname from ifcfg-*
	Remove hostname from network interface configuration.

2012-09-03  Richard W.M. Jones  <rjones@redhat.com>

	generator: Test zero args, one optarg; and 63 optargs.
	This just generates the code; it's not called.

	java: Fix >= 32 optargs (thanks Wanlong Gao).

2012-09-02  Richard W.M. Jones  <rjones@redhat.com>

	generator: Rename 'generator_*' as '*'.
	This is a simple renaming of the files/modules.

	Note that in OCaml, module names are derived from filenames by
	capitalizing the first letter.  Thus the old module names had the form
	"Generator_api_versions".  The new modules names have the form
	"Api_versions".

2012-09-02  Richard W.M. Jones  <rjones@redhat.com>

	TODO: Suggest removing hostname from ifcfg-eth* files.

	recipes: Checksum file/device.  Download to stdout.

2012-08-31  Richard W.M. Jones  <rjones@redhat.com>

	tests: Attach copyright and license (GPLv2+) notices to various test scripts.
	For some reason these tests did not have license notices.

	tests/rsync: Allow rsync test to be skipped by setting SKIP_TEST_RSYNC_SH=1.

	Version 1.19.37.

	Copy the kernel so that libvirt can add an SELinux label to it. NB. This requires febootstrap >= 3.20 with --copy-kernel flag.

2012-08-31  Richard W.M. Jones  <rjones@redhat.com>

	guestfs-internal.h: Organize functions by file.
	This is almost just code motion.  While doing this I discovered two
	prototypes for functions which no longer exist:

	  * guestfs___launch_appliance
	  * guestfs___launch_unix

	so these prototypes have been removed.  The rest are rearranged more
	logically.

2012-08-31  Richard W.M. Jones  <rjones@redhat.com>

	tests: Make mkswap and tar tests conditional on linuxfsuuid and xz features.

	tests/mount-local: Link test program with gnulib.

	src/dbdump.c: Shouldn't depend on HAVE_HIVEX (thanks Tao Zhou).

2012-08-30  Olaf Hering  <olaf@aepfle.de>

	daemon: collect list of called external commands
	guestfsd calls many different tools. Keeping track of all of them is
	error prone. This patch introduces a new helper macro to put the command
	string into its own ELF section:

	GUESTFSD_EXT_CMD(C_variable, command_name);

	This syntax makes it still possible to grep for used command names.

	The actual usage of the collected list could be like this:

	  objcopy -j .guestfsd_ext_cmds -O binary daemon/guestfsd /dev/stdout |
	  tr '\0' '\n' | sort -u

	The resulting output will be used to tell mkinitrd which programs to
	copy into the initrd.


	RWMJ:
	 - Move str_vgchange at request of author.
	 - Fix snprintf call in daemon/debug.c

2012-08-30  Richard W.M. Jones  <rjones@redhat.com>

	launch: appliance: app.virtio_scsi must not be bool.
	This is used to store values 0..3, so it mustn't be a bool.  Ooops.

	RHEL 5's gcc revealed this bug.

2012-08-30  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Remove e2prog hack (only needed for RHEL 5).
	Instead this patch will be carried out of tree in the oldlinux branch.

	Version 1.19.36.

	launch: libvirt: Remove code for creating sockdir.
	Create the sockets in g->tmpdir as usual.  It's a bug in libvirt that
	it doesn't label the sockets correctly no matter where they are
	located.

	launch: libvirt: Avoid memory leak if sockdir is not created (found by valgrind).

	FAQ: Remove link to old RHEL 6.3 preview repo.

2012-08-30  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	NEW API:xfs:xfs_repair
	Add a new api xfs_repair for repairing an XFS filesystem.


	RWMJ:
	  - Fix non-error return path so it doesn't send two replies.
	  - Document return code.

2012-08-30  Richard W.M. Jones  <rjones@redhat.com>

	docs: Add guestfs-release-notes.txt to Makefile deps.

	tests/big-dirs: Don't run this test by default.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	run: Make --test flag print the time taken to run the test.
	This is useful because it lets us see which tests take
	the longest.

	Version 1.19.35.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	python: Convert OInt64 using PyLong_AsLongLong so 64 bit ints work correctly.
	This avoids the following error on 32 bit machines:

	  OverflowError: Python int too large to convert to C long

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	Update inspection and example programs to use new hivex* APIs (RHBZ#852394).
	I tested this by comparing the output of virt-inspector over Windows
	guests before and after the change, which was identical:

	$ md5sum `ls -1 /tmp/*.before /tmp/*.after`
	c292d6629b5a761eccb4a279754399b4  /tmp/Win2003.after
	c292d6629b5a761eccb4a279754399b4  /tmp/Win2003.before
	eb1e1ff29208a9ee46e9c100dfec26b2  /tmp/Win2012.after
	eb1e1ff29208a9ee46e9c100dfec26b2  /tmp/Win2012.before
	d060a95d7ffe5dce6c4e66feb80c2837  /tmp/Win7x32.after
	d060a95d7ffe5dce6c4e66feb80c2837  /tmp/Win7x32.before
	8914eee70ac4f8a0317659e09e00dcdc  /tmp/Win7x32Dynamic.after
	8914eee70ac4f8a0317659e09e00dcdc  /tmp/Win7x32Dynamic.before
	a2dcdfc0f9d64054640875aa791889e0  /tmp/Win7x32TwoDisks.after
	a2dcdfc0f9d64054640875aa791889e0  /tmp/Win7x32TwoDisks.before
	5ed49568a5147dce7517c99de41ebf2e  /tmp/Win8previewx64.after
	5ed49568a5147dce7517c99de41ebf2e  /tmp/Win8previewx64.before
	fdfc7d272b79a665ae3313ae1ae30660  /tmp/WinXP.after
	fdfc7d272b79a665ae3313ae1ae30660  /tmp/WinXP.before
	3c705444be664f1316b21c5d8d3cb0be  /tmp/WinXPRecConsole.after
	3c705444be664f1316b21c5d8d3cb0be  /tmp/WinXPRecConsole.before

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	New API: guestfs_hivex_value_utf8
	A convenience function that reads a value from the registry
	and returns it as UTF-8.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: hivex_*
	Transscribe many hivex(3) APIs into the libguestfs API.

	There is one hive handle per libguestfs handle, as with Augeas.

	Note that hivex uses iconv_open for some APIs (eg. hivex_value_string).
	But since we delete all the i18n files from the appliance, this
	doesn't work -- iconv_open returns EINVAL.  Therefore hivex APIs which
	require iconv cannot be bound in the daemon.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	lib: Remove AUGEAS_CFLAGS, AUGEAS_LIBS.
	The library doesn't actually use libaugeas, except indirectly via the
	libguestfs API.  The libguestfs API implements this in the daemon, so
	there's no need for the library to link to augeas at all.

2012-08-29  Olaf Hering  <olaf@aepfle.de>

	remove ulockmgr from fuse LDFLAGS
	libguestfs fails to build with --enable-fuse on openSuSE 11.4 and
	earlier because the included fuse version does not include
	libulockmgr.so. configure already used pkgconfig to retrieve the correct
	CFLAGS, so there is no need to hardcode -lulockmgr.
	With this change the build succeeds again.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	java: Further java/java-home fixes.
	In particular the JVM executable is now called $JAVA_EXE.

	This fixes commit 40b9c14ca9af3b31ea1cf5336142d63313bbae39.

2012-08-29  Richard W.M. Jones  <rjones@redhat.com>

	perl: bindtests: Fix 64 bit integers on input on 32 bit Perl interpreter.

2012-08-28  Wulf C. Krueger  <philantrop@exherbo.org>

	Fix Java detection and rename --with-java-home to --with-java.
	Without this patch, if JAVAC points to a valid executable, --with-java-home=no
	is not respected but the build simply fails.
	Furthermore, --with{,out}-java is a more common form and more in-line with all
	other options.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Don't crash if shutdown_libvirt is called early in launch.
	The assert (conn != NULL) was being triggered with this
	stack trace:

	    at launch-libvirt.c:1305
	    fd=<optimized out>, error_if_eof=error_if_eof@entry=0) at proto.c:222
	    size_rtn=size_rtn@entry=0x7fffffffdb34,
	    buf_rtn=buf_rtn@entry=0x7fffffffdb58) at proto.c:548
	    libvirt_uri=<optimized out>) at launch-libvirt.c:391

2012-08-28  Wulf C. Krueger  <philantrop@exherbo.org>

	Fix disabling the Perl bindings.
	--disable-perl isn't currently respected because $PERL correctly points
	to the perl executable and $missing_perl_modules doesn't prevent the
	perl parts to be installed either. Thus, a check for $enable_perl is
	needed.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.34.

	po-docs: Copy all *.1 and *.3 files to the install dir.

	po-docs: Update the list of man pages.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	po-docs: Fix podwrapper so it works on translated POD files.
	These don't contain literal strings like "AUTHORS" (they have the
	translated versions instead) and so checking for these English strings
	is rather useless.

	Also we don't usually have the '--license' parameter conveniently
	around so don't enforce this section.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	po-docs: Don't output translated virt-sysprep page as HTML.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	tools: Fix podwrapper errors in tools directory.
	This also makes the test for license "code" less strict, so it should
	only match POD, not Perl comments.

	This fixes commit 2f97bf873b64384835f257f8916bf1ebb2af62b4.

2012-08-28  Masami HIRATA  <msmhrt@gmail.com>

	Mac OS X: Fixed combination of running autogen.sh on Linux and building on Mac OS X

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Ignore $parser->html_charset if it fails (thanks Wulf C. Krueger).
	This method was added in Pod::Simple 3.16 so earlier versions of Perl
	won't have it.  It's not the end of the world if we don't set it.

2012-08-28  Richard W.M. Jones  <rjones@redhat.com>

	Modified API: mkswap now takes optional arguments.
	Add optional label and uuid arguments, and deprecate mkswap-L and
	mkswap-U.

	This also adds a call to udev_settle after creating the swap device.
	This is an attempt to workaround the following problem seen in Koji
	and Rawhide:

	libguestfs: trace: mkswap_L "swapit" "/dev/sda1"
	libguestfs: send_to_daemon: 72 bytes: 00 00 00 44 | 20 00 f5 f5 | 00 00 00 04 | 00 00 00 83 | 00 00 00 00 | ...
	guestfsd: main_loop: proc 210 (part_disk) took 2.28 seconds
	guestfsd: main_loop: new request, len 0x44
	mkswap -f -L swapit /dev/sda1
	libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00 00 83 | 00 00 00 01 | 00 12 37 cf | ...
	libguestfs: trace: mkswap_L = 0
	libguestfs: trace: swapon_label "swapit"
	libguestfs: send_to_daemon: 56 bytes: 00 00 00 34 | 20 00 f5 f5 | 00 00 00 04 | 00 00 00 ae | 00 00 00 00 | ...
	guestfsd: main_loop: proc 131 (mkswap_L) took 0.77 seconds
	guestfsd: main_loop: new request, len 0x34
	swapon -L swapit
	swapon: cannot find the device for swapit
	guestfsd: error: swapit: swapon: cannot find the device for swapit
	libguestfs: recv_from_daemon: 100 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00 00 ae | 00 00 00 01 | 00 12 37 d0 | ...
	libguestfs: trace: swapon_label = -1 (error)
	swapon_label: swapit: swapon: cannot find the device for swapit
	test_swapon_label_0 FAILED

2012-08-25  Richard W.M. Jones  <rjones@redhat.com>

	docs: Revise README file.

2012-08-25  Masami HIRATA  <msmhrt@gmail.com>

	python: Fixed syntax errors in python/guestfs-py.c

2012-08-21  Richard W.M. Jones  <rjones@redhat.com>

	docs: Use man page name as default title in HTML output.

	release-notes: Add more visible separation between sections in the source file.

	Update release notes.

2012-08-21  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Add --license parameter, which is required.
	This adds standard LICENSE and BUGS sections to all of the man pages
	that are processed by podwrapper.

	Modify all the calls to $(PODWRAPPER) to add the right --license
	parameter according to the content.  Note that this relaxes the
	license on some code example pages, making them effectively BSD-style
	licensed.

2012-08-21  Richard W.M. Jones  <rjones@redhat.com>

	man pages: Ensure consistent copyright/author sections, remove license section.
	Ensure each man page contains consistent COPYRIGHT and AUTHOR
	sections.

	Remove the LICENSE section.  We will add that back in podwrapper in a
	later commit.

2012-08-21  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Ensure the input file is printed in some error messages.

	docs: Document null disks.
	It's always been possible to use /dev/null as a disk image.
	Document this formally in the API.

	launch: libvirt: Always create /var/run/libguestfs.
	This directory won't necessarily exist (esp. if /var/run is
	really /run).  So create it each time.

	Version 1.19.33.

	FAQ: Re-add #backup anchor for section on backups.

	recipes: Update dumping filesystem content to mention that we now support MD/RAID.

	recipes: Refer to virt-format, virt-make-fs for creating disk images.

	recipes: Cloning Windows: plans for virt-sysprep.

	recipes: For auditing for setuid files, point to virt-ls examples.

	recipes: For sparsifying guests, point to virt-sparsify.

	recipes: For listing files, point to virt-ls.

	recipes: Mention virt-sysprep firstboot feature.

	recipes: Most guests now use grub2, so change the example.

	recipes: Add a section on deleting a file and other common file operations.

	recipes: Update cloning section.

	launch: libvirt: Minimum libvirt version is now 0.10.0.

2012-08-21  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	xfs_growfs: drop the unstructed output
	Just drop the unstructed output since we can get the structed info
	from xfs_info instead.

2012-08-21  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	New API: xfs: xfs_admin
	Add new api xfs_admin to change parameters of an XFS filesystem.


	RWMJ:
	 - Remove printuuid, printlabel, since they don't change any settings.
	 - Adjusted the documentation.
	 - Fix the tests.

2012-08-20  Richard W.M. Jones  <rjones@redhat.com>

	run: Disable 'memory optimizations' in glib programs, for valgrind (thanks Dan Berrange).

2012-08-19  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: virt-sparsify and raw sparse output.

2012-08-18  Richard W.M. Jones  <rjones@redhat.com>

	Replace mount-options with mount where appropriate.
	Since our minimum supported version is now 1.16 and mount was fixed in
	1.13.16, it is now safe to replace mount-options + empty options with
	mount wherever it occurs.

	Update API support.

	Version 1.19.32.

	sysprep: docs: virt-sysprep can now be used to customize a guest.

	sysprep: Add --firstboot functionality.
	This allows you to add scripts that run in the context of
	the guest the first time it boots.

2012-08-17  Richard W.M. Jones  <rjones@redhat.com>

	docs: Rewrite section on protocol limits again.
	This updates commit 92e241440d361e9491a9d96d23ad7a378cb2ab6a.

	docs: Update documentation to reflect no 2/4 MB protocol limits.

	todo: Suggest full mke2fs API call.

	tests: Add a test for large directories.
	This also tests the reimplemented APIs:
	 - ls
	 - lstatlist
	 - lxattrlist
	 - readlinklist

	New API: fill-dir: Fill a directory with files (for testing).

	guestfs_readdir: Note that this suffers from protocol limits.

	guestfs_ls: Reimplement to avoid protocol limits.

	New API: ls0 - List files, separated by \0 characters.
	This API is not especially useful on its own.  It will be used to
	reimplement guestfs_ls to work without protocol limits.

	guestfs_readlinklist: Reimplement to avoid protocol limits.

	guestfs_lstatlist, guestfs_lxattrlist: Reimplement to avoid protocol limits.
	Note that the code to do this was already in virt-ls, so this is
	change is mostly just moving the code into the core library.

	guestfs_write, guestfs_write_append: Reimplement to avoid protocol limits.
	Note that we keep the old daemon calls, but rename them as
	"internal_write" and "internal_write_append".  This lets us implement
	the new library-side calls more efficiently in the common case when
	the uploaded content is smaller than the message buffer.  In most
	cases the new calls won't end up using a temporary file.

	guestfs_read_lines: Reimplement to avoid protocol limits.
	This also makes a larger test suite for this command.

	guestfs_read_file: Reimplement to avoid protocol limits.

	guestfs_find: Reimplement to avoid protocol limits.
	This also reimplements the virt-ls -R option to use the replacement
	guestfs_find API, which is simpler (though actually less efficient).

	guestfs_cat: Reimplement to avoid protocol limits.

	generator: Fix error message in checks of proc_nr.

2012-08-16  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Improve error messages.

	Update TODO.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.31.

	subdir-rules.mk: Remove rules that recursively build src/ and daemon/.
	These are unnecessary, and slow down the whole build.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Disable bindtests.
	- gint64 cannot be reliably sent.  It seems to try to convert it
	  via a 32 bit int, and fails if it overflows.

	- OStringList is not implemented yet.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	launch: For /dev/null drives, create a temporary disk.
	This is a workaround for a bug with virtio-scsi in qemu 1.2:
	https://bugzilla.redhat.com/show_bug.cgi?id=847549

	test-launch-race: Use /dev/null instead of hand-made zero-length file.
	There seems to be no reason why creating a zero-length
	file is necessary for this test.

	launch: Move code to add a drive to the list to separate add_drive utility function.
	This is just code motion / simplification.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	launch: Add utility function guestfs___lazy_make_tmpdir.
	This lets us create g->tmpdir lazily earlier if needed.

	This commit is just code motion.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add 'g->unique' to handle, for making unique IDs.

	inspect: Clarify comment about uniqueness of cache.

	close: Check if g->tmpdir is non-NULL before removing tmpdir.
	This happens, by chance, to work.

	bindtests: Test sending min and max 64 bit integers.

	java: Fix bindtests when passing 64 bit integer literals.

	ocaml: Fix bindtests when passing negative optional arguments.

	erlang: Add tests.
	Add bindtests and general tests for Erlang.

	erlang: Fix 64 bit integers in parameters.

	erlang: Fix BufferIn parameters.
	These would break if the buffer contained a \0 character.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	New internal APIs: internal-test-set-output, internal-test-close-output.
	These internal (testing) APIs allow the bindtests output to
	be sent to some other place than stdout.

	This is necessary for Erlang, since stdout is used to communicate with
	the Erlang interpreter.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	python: Fix comment referring to Perl(!)

	generator: Allow permission of output files to be specified.

2012-08-15  Hilko Bengen  <bengen@hilluzination.de>

	Even on Debian, the package containing the diff binary it has been diffutils for two years.
	There had been a virtual package "diff" that depended on diffutils, but that's gone in wheezy/sid, too.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	python: Fix optargs so we don't use special sentinel values.
	Previously with Python it was impossible to set a boolean or integer
	optarg to -1 because that was used as a special sentinel value to
	indicate that the optarg was not set.

	Instead, use None as the sentinel value, since that cannot be a
	boolean or integer type.

2012-08-15  Richard W.M. Jones  <rjones@redhat.com>

	python: Before freeing OStringList, cast it to char ** to avoid a compiler warning.
	This fixes commit c1a269513c05b44af0ed6e6b7b48f5dd11e01060.

2012-08-14  Richard W.M. Jones  <rjones@redhat.com>

	Remove unnecessary comment from <guestfs.h>.
	Read guestfs(3) for documentation, and don't discourage people from
	doing that by putting these comments into the header file.

	docs: Fix '= head' -> '=head' in back compat entries in guestfs(3).

	Version 1.19.30.

	tar-out: Add list of excluded patterns (--exclude=...) (RHBZ#847881).

	generator: Add new OStringList optional arg type.
	This allows lists of strings to be passed as an optional argument.

	daemon: New utility functions 'join_strings', 'concat_strings'.
	Useful functions for concatenating strings together.

	bindtests: Space before parens in call.

	todo: Suggestion: Add sh-in, sh-out, debug sh-in, debug sh-out.

	tar-out: Add optional numericowner flag (RHBZ#847880).
	This is equivalent to the tar option --numeric-owner.

2012-08-14  Richard W.M. Jones  <rjones@redhat.com>

	Add optional compress flag to tar-in, tar-out APIs.
	The compress flag can be used to control compression, one of: (none),
	"compress", "gzip", "bzip2", "xz", "lzop".  Thus these calls can now
	be used instead of tgz-in/tgz-out/txz-in/txz-out, and also support
	more compression types.

	Mark these APIs as once_had_no_optargs so that compatibility code is
	generated.

2012-08-13  Richard W.M. Jones  <rjones@redhat.com>

	docs: Add a section describing how to use gdb + qemu wrappers to debug the appliance.

2012-08-12  Richard W.M. Jones  <rjones@redhat.com>

	docs: Show how to use 'annotate-output' command to collect timings.

2012-08-12  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Use Store_field macro instead of caml_modify.
	Use the safer, higher level Store_field macro when constructing arrays
	of structs to return.

	I don't know if it is strictly necessary in this case, but it's safer.

2012-08-11  Richard W.M. Jones  <rjones@redhat.com>

	virt-make-fs: Don't display output of 'qemu-img' except on error path.

	virt-make-fs: Remove note about vfat and ownership of tarball files.
	This problem has been fixed in
	commit 50780a84f65ec5d76605691cea889392c2730f54.

	Include guestfs-release-notes.txt in the tarball.
	This fixes commit 589db4e42ad5e759041521e7673bd7aa2f800736.

	tests/9p: Add test to EXTRA_DIST.
	This fixes commit 499497fab03716278cb5214a8aa89a35618e06c6.

	Version 1.19.29.

2012-08-11  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the process accounting log files
	We just remove the process accounting files previously without
	touch a empty file, this will cause psacct runs error.
	Restart the service can't help us create this file auto.

	couldn't open file '/var/account/pacct': No such file or directory

2012-08-11  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	xfs: fix a possible memory leak
	free out when failure.

	Fix typo in release notes.
	Fix typo.

2012-08-11  Richard W.M. Jones  <rjones@redhat.com>

	Convert release notes to a POD file / man page.
	Note that we add the text version to git so that it's available for
	people to read without requiring any special tools.

	New APIs: rsync, rsync-in, rsync-out
	Implement rsync.

	fish: Add --network option.
	This enables the libguestfs user network, and is the equivalent of the
	'virt-rescue --network' option.

	generator: 'delete' is a reserved word (in C++).

	tests/extra: Add workaround for memory leak in libvirt.
	See: https://bugzilla.redhat.com/show_bug.cgi?id=847429

2012-08-04  Richard W.M. Jones  <rjones@redhat.com>

	Update release notes for libguestfs 1.20.

2012-08-04  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add rsync and openssh-client{,s} to the appliance.
	This adds ~10M to the appliance (328M -> 338M).

	However for virt-rescue these are frequently requested tools.

2012-08-03  Richard W.M. Jones  <rjones@redhat.com>

	fuse: guestmount doesn't let you pass '-- [FUSE options]'.
	I don't think it ever did, so the --help text was always
	wrong, and definitely didn't match the real behaviour of
	the program.

	ruby: Mark all VALUEs as volatile.

	fish: Fix 'copy-out /' (RHBZ#845522).

	Document problems copying long filenames from NTFS to Linux filesystems (RHBZ#845488).

2012-08-02  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.28.

2012-08-02  Richard W.M. Jones  <rjones@redhat.com>

	examples: Use add_drive_opts function in examples.
	In libguestfs 1.20, you will be able to use 'add_drive'
	instead of 'add_drive_opts' (except in the C bindings).

	However until libguestfs 1.20 is the minimum stable version
	people will still be using old versions where you have to use
	'add_drive_opts'.  This makes the examples confusing.

	Therefore continue to use 'add_drive_opts' in the examples
	for now.

2012-08-02  Richard W.M. Jones  <rjones@redhat.com>

	grep: Add optargs to grep API and deprecate fgrep etc.
	This commit makes grep into an optargs API, with flags for extended,
	fixed, [case-]insensitive and compressed.

	At the same time it deprecates: egrep, fgrep, grepi, egrepi, fgrepi,
	zgrep, zegrep, zfgrep, zgrepi, zegrepi and zfgrepi.

2012-08-02  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	xfs: add new api xfs-growfs
	New api xfs_growfs for expanding a XFS filesystem.

2012-08-01  Richard W.M. Jones  <rjones@redhat.com>

	Revert "appliance: Add '-drive detect-zero=on' flag if qemu supports it."
	This reverts commit fe2253088ff51b51e2586f27a9408a38655170e3.

2012-07-31  Richard W.M. Jones  <rjones@redhat.com>

	Reviewed and revised TODO file.

	m4: Sort .gitignore with LANG=C.  Also add pipe2.m4 (used by RHEL 6).

	build: On x86 search for qemu-system-i386 not qemu-system-i686.
	host_cpu can be set to i686.  The qemu binary is called
	qemu-system-i386.  Apply some sed to fix this.

2012-07-31  Eric Blake  <eblake@redhat.com>

	build: Allow building with new glibc headers and -O0.
	This is a patch taken from libvirt.  See:

	http://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=2af63b1c349

2012-07-30  Richard W.M. Jones  <rjones@redhat.com>

	9p: Add a regression test for 9p functionality in qemu.

	appliance: Exclude kernel* packages explicitly.
	febootstrap >= 3.19 will no longer exclude the kernel package
	by default.

	Version 1.19.27.

	libguestfs-make-fixed-appliance: Don't reference obsolete development version.

2012-07-30  Richard W.M. Jones  <rjones@redhat.com>

	New API: utsname
	Typical output:

	><fs> utsname
	uts_sysname: Linux
	uts_release: 3.5.0-1.fc18.x86_64
	uts_version: #1 SMP Mon Jul 23 17:43:39 UTC 2012
	uts_machine: x86_64

2012-07-28  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Describe more directly how to use qemu-img for snapshotting.

2012-07-26  Richard W.M. Jones  <rjones@redhat.com>

	tests: Consistent use of $(top_builddir)/run --test when building test guests.

	build: Use $(top_builddir)/run in Makefile.am's.
	Not necessary, but this makes all invocations of 'run' consistent.
	There is no functional change.

	Version 1.19.26.

	appliance: Add '-drive detect-zero=on' flag if qemu supports it.
	NB: The patch to implement this feature in qemu is not upstream, and
	may never make it upstream.  However this is so useful for
	virt-sparsify that I decided to add this to libguestfs while we see
	what qemu decides to do.

2012-07-26  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Allow optional arguments hash to be really optional.
	Allow optargs functions to be called as either:

	  g.mkfs_opts(fs, device)

	or:

	  g.mkfs_opts(fs, device, { optargs hash })

	This also preserves backwards compatibility with once_has_no_optargs
	functions such as mkfs.

2012-07-26  Richard W.M. Jones  <rjones@redhat.com>

	ruby: In event wrapper, ignore callback functions which have type T_ZOMBIE.
	Note that in old versions of Ruby, T_ZOMBIE was not defined.

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Set LD_LIBRARY_PATH for Ruby libs in run script.
	This lets you use './run gdb ruby ...' and get accurate
	debugging information.

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Detect qemu-img version and use qcow2 v3 for overlay if available.
	qcow2 v3 is generally more efficient, although unfortunately it
	doesn't support automatically sparsifying zero writes.

	Note this *only* uses qcow2 v3 for the intermediate overlay file, not
	for the final output (since we want the output to be broadly
	compatible with old hypervisors).

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Change code that generates qemu-img -o argument.
	This is just code motion.

	sysprep: Generate new random UUIDs for LVM2 PVs and VGs (thanks Kazuo Moriwaka).

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: pvchange-uuid, pvchange-uuid-all, vgchange-uuid, vgchange-uuid-all.
	These APIs will allow sysprep to change the UUIDs of all PVs and VGs
	in the system.

	LVs don't have UUIDs AFAICT, or at least there seems to be no way to
	change them if they do have them.

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Change perform callback to perform_on_filesystems and perform_on_devices.
	Operations that need to work directly on guest block devices will fail
	because the block devices are busy.  Therefore add a phase with the
	filesystems unmounted, and allow operations to specify that they need
	to work in this phase.

2012-07-25  Matthew Booth  <mbooth@redhat.com>

	fish: Use minimal permissions when initially creating history file

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Tidy up the Makefile.
	This is just code motion.

2012-07-25  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: operation machine-id: return `Created_files.
	This operation can create the /etc/machine-id file, so it may need to
	be relabelled by SELinux.

	This fixes commit e68336d72a7d71a44d80f0d13c40ff44653e5c01.

2012-07-25  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the local machine ID
	remove the local machine ID, leave it empty, let it be generated
	during next booting.


	RWMJ:
	 - Whitespace change.
	 - Remove completed items from TODO.

2012-07-25  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the auto generated abrt data
	remove the automatically generated abrt data.


	RWMJ:
	 - Remove copy and pasted line.
	 - Use C<> in description.

2012-07-24  Masami HIRATA  <msmhrt@gmail.com>

	Mac OS X: Use u_int64_t/uint64_t instead of unsigned hyper in .x file

	RWMJ:
	  Fixed whitespace in generator_xdr.ml

2012-07-24  Masami HIRATA  <msmhrt@gmail.com>

	Mac OS X: Use libtool --mode=execute instead of LD_LIBRARY_PATH
	because Mac OS X doesn't support LD_LIBRARY_PATH

	Mac OS X: Use gnulib stat-time module explicitly.

	lib: Use <sys/socket.h> and <sys/un.h> for sockaddr_un

	Mac OS X: Use real files for gtk-doc (not the symlink)

2012-07-24  Masami HIRATA  <msmhrt@gmail.com>

	Mac OS X: don't check glibc-style extended printf formatters unless --enable-daemon

	RWMJ:
	 - Test was in the wrong place (before --enable-daemon had been
	   detected) so I moved it later.

2012-07-24  Masami HIRATA  <msmhrt@gmail.com>

	Mac OS X: #define UNIX_PATH_MAX 104
	See http://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man4/unix.4.html

	Mac OS X: Added check of #include <endian.h>
	Mac OS X doesn't have endian.h

	Mac OS X: Use gnulib fstatat module explicitly.

	Mac OS X: Use gnulib memmem module explicitly.
	m4/.gitignore: Update.

	configure: Use $(PERL) instead of perl

	configure: Add -nographic command line option to qemu.
	Without this option, configure will fail when there is no display.

2012-07-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.25.

	launch: libvirt: Suppress printing of libvirt errors to stderr and other cleanups.

	launch: libvirt: Use SELinux-mandated directory for sockets (RHBZ#842307).
	Note this does not yet enable sVirt confinement of the appliance.
	That requires at least that SELinux policy goes upstream, plus there
	may still be bugs.

	todo: More suggestions for virt-sysprep (thanks Kazuo Moriwaka).

	launch: libvirt: Move free to end of function.
	This is just code motion.

	launch: libvirt: Add is_blk utility.
	This is just code motion.

2012-07-24  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	umount: use Dev_or_Path for the argument type
	Use Dev_or_Path instead of String.

	Remove the RESOLVE_DEVICE since Dev_or_Path will generate
	REQUIRE_ROOT_OR_RESOLVE_DEVICE instead.

	RWMJ:
	Note a change in semantics: this now requires root.  However this is
	OK and still works with mkmountpoint and friends because
	'is_root_mounted' works even if something is mounted below the root.

2012-07-24  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Set <emulator> in libvirt XML if g->qemu is not the default.

	xfs-info: Fix description to refer to 'pathordevice' param.

2012-07-24  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	xfs_info: resolve device when doing xfs_info on a device
	Resolve device first, like do_umount.
	Use Dev_or_Path.

	umount: add force umount and lazy umount
	Add the option force and lazy for force and lazy umount.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.24.

	tests: Skip regression test for 790721 if attach-method is not 'appliance'.

	lib: Initialize libvirt and libxml2 once when the library loads.

	launch: Make get-pid and max-disks APIs into virtual methods of the current attach-method.

	tests: Move debug-drives testing API to launch.c and change the output.
	It should work with any attach-method.

	python: Set file encoding to utf-8.

	tests/protocol: Skip these tests if default attach-method is not 'appliance'.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix get-attach-method test.
	If ./configure --with-default-attach-method is set to something other
	than 'appliance', then this will legitimately return a different
	string.  Simply test that it runs, rather than testing the output.

	This fixes commit 20a5b4de7ddc4221544784df65eb472481698dcb.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	tests: Remove get-pid test.
	If the libvirt attach-method is used, then there is no known PID
	(libvirt hides it).

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Use <driver name="qemu" type=[format] />.
	We were using format= which was bogus and libvirt was ignoring it and
	forcing raw format instead.

	Also in its default configuration libvirt won't do disk format
	autodetection at all, so we must do it instead.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: You can't set O_CLOEXEC flag using fcntl + F_SETFL.
	And in any case there is no point, since proto.c already sets the
	SOCK_CLOEXEC flag (using accept4) on this socket.

	The code now matches the code in launch-appliance.c.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Use accept4 to set socket flags correctly.

	launch: libvirt: Add <on_reboot>destroy</on_reboot> to libvirt XML.
	This causes libvirt to add the qemu -no-reboot option, which
	reflects existing behaviour.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: Allow default attach-method to be set in environment or configure.
	You can now choose the default attach method in two ways:

	(1) Set the LIBGUESTFS_ATTACH_METHOD environment variable.

	(2)  ./configure --with-default-attach-method=appliance|libvirt|...

	Note that (1) overrides (2).

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	java: Set '-encoding utf8' for javac and javadoc commands.

	java: JAVAC_FLAGS -> EXTRA_JAVAC_FLAGS.
	This is just a rename.

	launch: libvirt: Move remaining to-do items to TODO file.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Add a hack to detect if KVM is available.
	We need to select the <domain type=...> attribute depending on whether
	KVM is detected in the libvirt capabilities.

	This is a hack because it doesn't try to parse the libvirt
	capabilities XML.

2012-07-23  Richard W.M. Jones  <rjones@redhat.com>

	launch: libvirt: Use <cpu model="host-model"/> (thanks Dan Berrange).
	This ensures maximum performance of the appliance, particularly for
	things like MD where the guest needs to use optimal SSE instructions.

	launch: libvirt: Change disk XML according to whether host path is device or file (thanks Dan Berrange).

	launch: libvirt: Use "guestfs-" prefix on random names (thanks Dan Berrange).

	launch: libvirt: Enforce minimum version of libvirt 0.9.13.

	launch: libvirt: Use snapshot=on instead of <readonly/>.
	For compatibility with the appliance backend, devices added readonly
	are in fact added writable with snapshots on top.  This is necessary
	because options like 'mount -o ro' usually require write access to the
	disk (eg. to replay journals).

2012-07-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.23.

2012-07-22  Richard W.M. Jones  <rjones@redhat.com>

	launch: Add libvirt backend.
	Complete the attach-method libvirt backend.

	This backend uses libvirt to create a transient KVM domain to run the
	appliance.

	Note that this still will only work with local libvirt URIs since the
	<kernel>, <initrd> and appliance links in the libvirt XML refer to
	local files, and virtio serial only works locally (limitation of
	libvirt).  Remote support will be added later.

2012-07-21  Richard W.M. Jones  <rjones@redhat.com>

	Add attach-method "libvirt" or "libvirt:<URI>".
	With this commit, you can set the attach method to libvirt,
	but calling launch will give an error.

	launch: Make 'drive_name' into a common function.
	This is just code motion.

2012-07-21  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Push appliance building lock into guestfs___build_appliance.
	Since we will be calling guestfs___build_appliance from the libvirt
	code in future, there's no point having two places where we have to
	acquire the lock.  Push the lock down into this function instead.

	Because "glthread/lock.h" includes <errno.h> we have to add this
	header to the file too.

2012-07-21  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	fuse:remove the unused macro when fuse is not available
	Just make gcc happy when fuse is not available.

2012-07-20  Richard W.M. Jones  <rjones@redhat.com>

	launch: Abstract attach method operations.
	g->attach_ops points to a structure which contains the
	operations supported by each attach method backend
	(ie. appliance, unix, etc.).

	launch: Move the command line building code entirely into launch-appliance.c.
	Although we still use the handle as convenient temporary
	storage.

	launch: Move guestfs_config API and build list of qemu parameters in handle.
	Move and rewrite guestfs_config so it accumulates a list of qemu
	parameters in the handle.  These are added to the appliance at launch
	time (with attach method == unix:...  you'll now get an error).

	launch: Move launch timing / messages code into launch.c.

	lib: Use bool (from <stdbool.h>) for a few fields in the handle.

	lib: Rearrange fields in guestfs handle.
	Arrange the fields more logically.  This is just code motion.

	add-cdrom: Rewrite description emphasising that this API should not be used.

	ocaml: Skip mount-local test if /dev/fuse is not writable.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	launch: Remove some dead code from the appliance method.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	lib: Split launch.c into separate files.
	launch-appliance.c contains the code associated with the 'appliance'
	attach-method.  Mostly.  In fact there are a few APIs which don't fit
	so nicely:

	 - config: deprecated API which fiddles with the qemu command
	   line directly

	 - max-disks: depends on the qemu implementation (virtio-scsi
	   or not)

	 - debug-drives: used for testing only

	launch-unix.c contains the code associated with 'unix:<path>'.

	launch.c is the common code for launching, along with a few other APIs
	such as guestfs_add_drive_opts.

	This commit also reduces the number of headers to just those
	which are required.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	Remove debug-cmdline API.
	Note that debug* calls are not part of the stable API and can be
	removed or changed at any time.

	lib: Use safe_asprintf when constructing attach_method.
	Just a small code cleanup / simplification.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	build: Rename most C files that contain underscore with dash.
	This is just code motion.

	Some files cannot be renamed.  Notably rpcgen input and output files
	must not contain dash characters, else rpcgen breaks.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	fish: Rename fish/virt.c to fish/domain.c
	This file handles the -d option for guestfish and other C command line
	utilities.  Renaming this file makes it less confusing.

	build: Rename src/virt.c to src/libvirtdomain.c
	This file contains the code implementing guestfs_add_domain
	(for adding a libvirt domain) so this name is less confusing.

	build: Arrange libguestfs_la_SOURCES in order.

	Remove references to long-obsolete Ocaml_inspector module from .gitignore.

	podwrapper: Fix setting of GIT_DIR in git subcommand.
	This fixes commit 1e17a32060feb937b3972f61b37f9116ad7d8d9a.

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	license: Use latest license files from gnu.org.
	COPYING from https://www.gnu.org/licenses/gpl-2.0.txt
	COPYING.LIB from https://www.gnu.org/licenses/lgpl-2.1.txt

	(Note this change shouldn't alter the licensing of libguestfs)

2012-07-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.22.
	Includes rebuilt gnulib to work around test problems with
	test-getlogin_r.

	gnulib: Don't include or run getlogin_r test (thanks Jim Meyering).
	See:
	https://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00194.html

	build: Return 77 from skipped tests.

2012-07-18  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.21.

	tests: Rewrite parallel mount-local test in C.

2012-07-18  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Test mount-local, without parallel test.
	Unfortunately the parallel test keeps hitting this bug:
	https://bugzilla.redhat.com/show_bug.cgi?id=838081
	which could be a bug in the OCaml runtime.

	Just test simple mount-local.  We will write a parallel test in C to
	replace this.

2012-07-18  Richard W.M. Jones  <rjones@redhat.com>

	tar-in: Add --no-same-owner flag to tar command when target filesystem doesn't support chown (RHBZ#840572).
	When using tar-in or tools built around it such as virt-make-fs, if
	the target filesystem is vfat then unpacking the tarball would fail
	because tar tries to chown(2) files and fails.

	You would see errors such as:

	tar: <file>: Cannot change ownership to uid 500, gid 500: Operation not permitted

	This change detects whether the target filesystem supports chown(2).
	If not, it adds the --no-same-owner flag to tar to stop it from trying
	to change the ownership of newly created files.

2012-07-18  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Make 'random_name' into a utility function.
	This is mostly code motion, although the precise contract of this
	function changes slightly to make it more generally useful

	virt-make-fs: Suggest guestfish for complex layouts in man page.

	build: Change how make.sh, packagelist, excludelist are updated.
	Add proper dependencies for these files, but also use 'cmp' to ensure
	they only get overwritten if the new files have actually changed, so
	we don't rebuild the appliance unnecessarily.

2012-07-18  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	New API: add new api xfs_info
	Add xfs_info to show the geometry of the xfs filesystem.


	RWMJ:
	 - Updated po/POTFILES.
	 - Use xfs_ prefix for all struct fields.
	 - Return uninitialized fields as -1 / empty string.
	 - Copyedit the description.

2012-07-18  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	augeas: make functions as noreturn
	Just make gcc happy.

2012-07-17  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Use UTF8 in output, send errors to stderr.
	This fixes commit 1e17a32060feb937b3972f61b37f9116ad7d8d9a.

	Version 1.19.20.

2012-07-17  Richard W.M. Jones  <rjones@redhat.com>

	case_sensitive_path: Allow trailing path element to be missing (RHBZ#840115).
	case_sensitive_path is undefined when the final path element doesn't
	exist.  Currently it returns an error, but this means that creating a
	new file doesn't work as expected:

	  $ guestfish --rw -i -d windows touch 'win:c:\blah'
	  libguestfs: error: case_sensitive_path: blah no file or directory found with this name

	We should allow this case (provided there is no trailing slash) so
	that new files or directories can be created.

2012-07-17  Richard W.M. Jones  <rjones@redhat.com>

	case_sensitive_path: Move variables to top of function.
	This is just code motion.

	docs: Use L<...> for links.
	Instead of working around bugs, podwrapper has been fixed so that
	links work in all output formats.

	podwrapper: Subclass Pod::Man so we can fix the way links are generated.

	podwrapper: Define $VERSION in subclass.
	The superclass sometimes uses this and will give an undefined
	error if it's missing.

2012-07-17  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Tidy up the program name.
	Messages now look like this:

	  podwrapper.pl: wrote guestfs-examples.3
	  podwrapper.pl: wrote ../html/guestfs-examples.3.html

2012-07-17  Richard W.M. Jones  <rjones@redhat.com>

	perl: In examples, call $g->shutdown, $g->close.

	perl: Use $g instead of $h in documentation.
	$g is the "standard" name for libguestfs handles.

2012-07-16  Richard W.M. Jones  <rjones@redhat.com>

	docs: febootstrap is in section 8 of the manual, not section 1.

2012-07-16  Richard W.M. Jones  <rjones@redhat.com>

	Replace podwrapper shell script with custom Perl script.
	This uses Pod::Simple so it properly parses the input POD and can
	generate proper custom output as required specifically by libguestfs.

	One immediate benefit is that links between and within manual pages
	now work mostly correctly.

2012-07-16  Richard W.M. Jones  <rjones@redhat.com>

	Fix pod.css for new HTML output from Perl 5.16.
	There used to be a <div> around the table of contents, but that
	is no longer present.

	configure: Make generated files read-only.
	Some of the generated files anyway.

	build: Change calls to podwrapper.sh to use $(PODWRAPPER).
	This will allow us to easily change the location of this
	script in future.

	virt-make-fs: Add --floppy option to make preconfigured vfd's.

	virt-make-fs: Recognize "msdos" as a partition or filesystem type.
	Set MBR partition type byte accordingly.

2012-07-16  Richard W.M. Jones  <rjones@redhat.com>

	Revert "ocaml: Calling Gc.compact before g#mount_local works around RHBZ#838081."
	This reverts commit ad7c4498f66f37c4219242c6df04d28e9ee7877f.

	Reverted because we still see core dumps.

2012-07-16  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.19.

	run: Update comments.

2012-07-14  Richard W.M. Jones  <rjones@redhat.com>

	generator: Rename 'ntfsresize_opts' API to 'ntfsresize'.
	By using the once_had_no_optargs flag, this change is backwards
	compatible for callers.

	generator: Rename 'mkfs_opts' API to 'mkfs'.
	By using the once_had_no_optargs flag, this change is backwards
	compatible for callers.

	generator: Rename 'add_drive_opts' API to 'add_drive'.
	By using the once_had_no_optargs flag, this change is backwards
	compatible for callers (except Haskell, PHP and GObject as discussed
	in earlier commit).

2012-07-14  Richard W.M. Jones  <rjones@redhat.com>

	generator: In non-C bindings, generate '*_opts' alias.
	In C, a function called 'func' which has once_had_no_optargs=true will
	(because of the previous commit) generate 'func_opts' and a
	backwards-compatibility function called 'func'.

	This commit changes some of the non-C bindings so that they also
	generate 'func_opts' which is merely a wrapper that calls 'func'.

	This avoids incompatibility when we rename 'mkfs_opts' etc back to
	plain 'mkfs', and it also makes it easier to translate between other
	language bindings and C code.

	NB: Some bindings do not include aliases:

	  PHP:     There's no way to easily alias methods in PHP < 5.3, and we
	           can't assume everyone has this minimum version.

	  GObject: Very complex to add aliases, but we should probably do this
	           at some point.

	  Haskell: No support for optargs in these bindings.  Unfortunately
	           this means that we can no longer bind 'Guestfs.add_drive'
	           (since it will be changed to add optional arguments) making
	           the Haskell bindings even less useful than they were already.

2012-07-14  Richard W.M. Jones  <rjones@redhat.com>

	generator: Allow non-optargs functions to gain optargs.
	This commit adds a flag (once_had_no_optargs) which can be used to add
	optargs to functions that currently don't have any.

	The idea is that if 'func' currently has no optargs, we can safely add
	optargs provided we are backwards compatible for existing callers.

	In C that means we leave 'guestfs_func' alone and provide an extra
	function 'guestfs_func_opts' that takes the optargs ('guestfs_func'
	becomes a wrapper that calls 'guestfs_func_opts').

	In the C generator this means there are two names for each function
	(although the two names are normally identical).  'c_name' is the name
	that we export publicly (eg. [guestfs_] 'func_opts').  'name' is the
	internal name of the function (eg. 'func') which is used for
	everything apart from the public interface, and also to generate the
	no-optargs compat function.

	In other languages that can add optional arguments safely, we simply
	add the arguments to the existing 'func', so for example in Perl:

	  $g->func (required_args)
	  $g->func (required_args, optional_args)

	can be used.

	Note that this commit does not cause any change to the output of the
	generator.  I verified this by diffing the output before and after.

2012-07-13  Richard W.M. Jones  <rjones@redhat.com>

	generator: Rearrange some C generator code into sub-functions.
	This is just code motion.  I verified this by comparing the
	generator output before and after this commit.

2012-07-13  Richard W.M. Jones  <rjones@redhat.com>

	java: Generate overloaded non-optargs method for each optargs method.
	For example the existing method:

	  public void mkfs_opts (String fstype, String device, Map<..> optargs);

	is now accompanied by this overloaded method which is a simple wrapper:

	  public void mkfs_opts (String fstype, String device)
	    throws LibGuestFSException
	  {
	    mkfs_opts (fstype, device, null);
	  }

2012-07-13  Richard W.M. Jones  <rjones@redhat.com>

	generator: Add c_optarg_prefix for each action.
	This updates commit 9286f556c6a9e6967fcac8aacdae3660821c4c7a.

2012-07-12  Richard W.M. Jones  <rjones@redhat.com>

	generator: Add c_function (C function name) to each action struct.
	This field, which is generated internally by the generator, is the
	name of the C function corresponding to each action.

	For actions that have NO optional arguments, it's just "guestfs_<name>".

	For actions that have any optional arguments, it is
	"guestfs_<name>_argv" (since any binding has to construct the optional
	argument struct explicitly).

	In a future commit, this mapping may become more complex.

	This commit also "fixes" the C# bindings which didn't handle optional
	arguments properly at all.  In fact, it doesn't fix this, it just
	changes it enough that it probably now compiles.  We should either
	compile and test the bindings routinely with Mono, or drop them, since
	they are starting to bit-rot.

	In the GObject bindings, I have added a space between the C function
	name and the first paren.

	Apart from the C# and GObject changes, this is just code motion.  It
	was verified by diffing the output of the generator before and after.

2012-07-12  Richard W.M. Jones  <rjones@redhat.com>

	generator: Change the way that camel-case names are generated.
	Store the camel-case name directly in the struct instead
	of generating it on the fly in only the GObject bindings.

	This is just code motion.  Tested by verifying that the generator
	output is identical.

2012-07-11  Richard W.M. Jones  <rjones@redhat.com>

	tests: Rename test0* functions as internal_test*.
	The internal_* prefix is reserved for internal functions
	such as these tests.

	tests: Better way to ensure 'g' is used and return success or error.

2012-07-11  Richard W.M. Jones  <rjones@redhat.com>

	generator: Use a struct instead of a tuple to describe each action.
	Each action changes from a tuple like this:

	  ("cat", (RString "content", [Pathname "path"], []), 4,
	   [ProtocolLimitWarning],
	   [InitISOFS, Always, TestOutput (
	      [["cat"; "/known-2"]], "abcdef\n")],
	   "list the contents of a file",
	   "[...]");

	to a slightly longer but more readable struct:

	  { defaults with
	    name = "cat";
	    style = RString "content", [Pathname "path"], [];
	    proc_nr = Some 4;
	    protocol_limit_warning = true;
	    tests = [
	      InitISOFS, Always, TestOutput (
	      [["cat"; "/known-2"]], "abcdef\n")
	    ];
	    shortdesc = "list the contents of a file";
	    longdesc = "[...]" };

	["defaults" is a struct which contains the defaults for every field,
	allowing us to use the "{ defaults with ... }" syntax to just update
	the fields we want to be different from the defaults.]

	This is a mechanical change and there is no change to the output of
	the generator.  I checked the output before and after with diff to
	verify this.  There are no changes in the output apart from UUIDs
	which are expected to change with each run.

2012-07-11  Richard W.M. Jones  <rjones@redhat.com>

	todo: Tidy up test0 functions.

	generator: Add a note in generator/README about safely extending functions.

	generator: Move note in comment to generator/README file.

2012-07-10  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Cleaner code and documentation for safe cleanups.

	tests/guests: Add temp files to CLEANFILES.

	Update translations from Transifex.

	podwrapper: Fix shell script.
	This fixes commit f9a5e3ed86ee7bcd13619f13b4d4de6ce46ac8c3.

2012-07-10  Hilko Bengen  <bengen@hilluzination.de>

	podwrapper.sh: Take date from ChangeLog or from the latest git commit.

2012-07-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.18.

	fuse: Add regression test for RHBZ#838592.

	fuse: Add guestmount --pid-file option (RHBZ#838592).

	fuse: Link to mount-local documentation in guestmount man page.

	fuse: Document race condition possible with fusermount.
	See also:
	https://bugzilla.redhat.com/show_bug.cgi?id=835466#c9

	fuse: Document Device or resource busy errors from fusermount.

2012-07-08  Richard W.M. Jones  <rjones@redhat.com>

	Revert "launch: Correction in comment."
	This reverts commit 6e5a85bb9b6557bc337625a339728e23f5f2dd94.

	It turns out this is a bug in QEMU after all.

2012-07-07  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Add a test using upstream qemu.

2012-07-07  Richard W.M. Jones  <rjones@redhat.com>

	launch: Correction in comment.
	https://bugs.launchpad.net/qemu/+bug/1021649 is invalid, probably
	caused by a Fedora ROM.

	This updates commit 52d188e32fb8addb45bf926df07e34ab35898f85.

2012-07-07  Richard W.M. Jones  <rjones@redhat.com>

	Update gnulib to latest version.

2012-07-06  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.17.

	ocaml: Calling Gc.compact before g#mount_local works around RHBZ#838081.

	qemu: Use sgabios by default (thanks Dan Berrange).

2012-07-04  Richard W.M. Jones  <rjones@redhat.com>

	todo: Investigate qemu caching modes.

	Version 1.19.16.

	qemu or qemu-kvm >= 1.1.0 is required.
	Earlier versions of qemu contained a bug in the qcow2 code which
	causes qemu to segfault when shutting down and flushing its internal
	cache, and this can result in data loss.

2012-07-03  Richard W.M. Jones  <rjones@redhat.com>

	New API: guestfs_shutdown: Cleanly shutdown the backend.
	The new API splits orderly close into a two-step process:

	  if (guestfs_shutdown (g) == -1) {
	    /* handle the error, eg. qemu error */
	  }
	  guestfs_close (g);

	Note that the explicit shutdown step is only necessary in the case
	where you have made changes to the disk image and want to handle write
	errors.  Read the documentation for further information.

	This change also:

	 - deprecates guestfs_kill_subprocess

	 - turns guestfs_kill_subprocess into the same as guestfs_shutdown

	 - changes guestfish and other tools to call shutdown + close
	   where necessary (not for read-only tools)

	 - updates documentation

	 - updates examples

2012-07-03  Richard W.M. Jones  <rjones@redhat.com>

	close: Warn if qemu exits unsuccessfully.
	Currently guestfs_close has no method to return an error indication,
	so this commit simply prints the error on stderr.

2012-07-03  Richard W.M. Jones  <rjones@redhat.com>

	close: Rearrange the order in which the handle is closed and freed.
	The order is now:

	 - remove the handle from the list of handles
	 - send close trace message
	 - sync and shutdown qemu
	 - run user close callback
	 - free temporary directory
	 - free memory

	This commit ought to be no functional change.

2012-07-03  Richard W.M. Jones  <rjones@redhat.com>

	perl, python, ruby: Fix comments on call to close method.
	Make the comments consistent.

	Also make the Perl example call $g->close explicitly so it is
	consistent with the other examples.

2012-07-03  Richard W.M. Jones  <rjones@redhat.com>

	examples: In create_disk example, don't call set_autosync.
	This is now set by default in all supported versions of libguestfs.
	It's just confusing if the examples refer to it.

2012-07-02  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Run fsync on block devices after sync (RHBZ#836710).
	On Linux, sync(2) does not actually issue a write barrier, thus it
	doesn't force a flush of the underlying hardware write cache (or
	qemu's disk cache in the virtual case).

	This can be a problem, because libguestfs relies on running sync in
	the appliance, followed by killing qemu (using SIGTERM).

	In most cases, this is fine, because killing qemu with SIGTERM should
	cause it to flush out the disk cache before it exits.  However we have
	found various bugs in qemu which cause qemu to crash while doing the
	flush, leaving the data unwritten (see RHBZ#836913).

	The solution is to issue fsync(2) to the block devices.  This has a
	write barrier, so it ensures that qemu writes out its cache long
	before we get around to killing qemu.

2012-07-02  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Code tidy up in devsparts.
	No functional change.

	Add notes about how qemu cache=none works internally.
	This is just a comment and has no functional effect.

	Rename qemu option cache=off to cache=none.
	Note that qemu treats these identically, so this change has
	no functional effect.

	appliance: Update paths to udevd.
	systemd is playing a WTF game with udevd, moving it around and
	renaming it unnecessarily in each release.  Chase all known locations.

	appliance: Update comment to note that systemd package now contains udevd.

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.15.

	tests: Add a test of /dev/disk/by-id paths (RHBZ#627675).

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	tests: Use qemu-img to create an overlay for testing, instead of copying.
	Replace:

	  cp tests/guests/fedora.img test.img

	with the longer but possibly more space-efficient equivalent:

	  qemu-img create -F raw -b tests/guests/fedora.img -f qcow2 test.qcow2

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Check partition exists when doing fstab mapping.
	If the partition name we're about to return doesn't really exist,
	then don't perform the mapping.

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Guess device name from /dev/disk/by-id/*-partN path (RHBZ#627675).
	See https://bugzilla.redhat.com/show_bug.cgi?id=836573#c3
	for an explanation.

	Useful function 'is_partition' shows how to tell if a device name
	represents a partition.

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Refactor resolve_fstab_device code into multiple functions.
	This is mostly code motion, although it also fixes a memory leak in an
	extremely rare failure case, and it generally tidies up the existing
	code.

	New API: guestfs_nr_devices
	This returns the number of whole block devices added.  It is usually
	simpler to call this than to list the devices and count them, which
	is what we do in some places in the current codebase.

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Fix detection of library (thanks Hilko Bengen).
	On Debian, the Ruby C extensions library isn't '-lruby', it's
	something like '-lruby1.8' or '-lruby-1.9.1' and these can even be
	parallel-installed.

	Fix detection so we use Ruby's own rbconfig.rb file to find the right
	library to use.

2012-06-29  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Changing spacing in configure file.
	No functional change.

	ruby: Remove useless AC_SUBST in configure file.

2012-06-28  Richard W.M. Jones  <rjones@redhat.com>

	Update API support from tarballs.

	tests: Reformat TESTS_ENVIRONMENT so all use a standard format.
	No functional change.

	python: Set PYTHON in run script.

	ocaml: Set CAML_LD_LIBRARY_PATH in run script.

	ruby: Use run --tests for tests.

	java: Use run --tests for tests.
	Java-specific environment variables are set in the run script.

	gobject: Use run --test for tests, and set GJS in run script.

	run: Rearrangement and add comments.
	No functional change.

2012-06-28  Richard W.M. Jones  <rjones@redhat.com>

	run: Set MALLOC_PERTURB_ to a random value.
	MALLOC_PERTURB_ is a glibc feature which causes malloc to wipe memory
	before and after it is used, allowing both use-after-free and
	uninitialized reads to be detected with relatively little performance
	penalty:

	  http://udrepper.livejournal.com/11429.html?nojs=1

	Modify the ./run script so that it always sets this.

	We were already using MALLOC_PERTURB_ in most tests.  Since ./run is
	now setting this, we can remove it from individual Makefiles.  Most
	TESTS_ENVIRONMENT will now simply look like this:

	  TESTS_ENVIRONMENT = $(top_builddir)/run --test

2012-06-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.14.

2012-06-27  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix 'run --test' so it cleans up its temporary file.
	This fixes commit 05d4e07918bfa9907a1fa66391e8e2e2370c64d4.

	Ensure #include <config.h> occurs in every C file.

	src/actions.c: Include <config.h> in this generated file.
	On RHEL 5, because _GNU_SOURCE was not defined, open_memstream was not
	being declared, resulting in miscompilation and a segfault in the
	trace code whenever open_memstream returned a pointer >= 0x80000000
	(which would be truncated to a 32 bit int and then sign-extended).

2012-06-27  Richard W.M. Jones  <rjones@redhat.com>

	gobject: bindtests: gjs exception behaviour changed, fix test.
	When libguestfs calls 'error (g, "error")', gjs in F17 throws
	error.message == "Error invoking Guestfs.test0rinterr: error"

	In F18, error.message is simply the string "error".

	Fix the test so it works for both cases.

2012-06-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.13.

	fuse: Use the ./run --test script to run tests.

	tests: Add ./run --test option.
	This option, when added via
	  TESTS_ENVIRONMENT = [...] $(top_builddir)/run --test
	allows us to run the tests and only print the full output (including
	debugging etc) when the test fails.

	./run: Fix indenting for shell script.

	ocaml: Allow parallel mount-local test to be skipped.
	FUSE is not very reliable on RHEL 5.

	FAQ: Add Gentoo (thanks Agostino Sarubbo).

	Version 1.19.12.

2012-06-26  Richard W.M. Jones  <rjones@redhat.com>

	launch: Avoid double-close when qemu exits early.
	The stdin and stdout of the qemu process are aliased to g->fd:

	  g->fd[0] = wfd[1];
	  g->fd[1] = rfd[0];

	However if the child exits early, then child_cleanup closes g->fd[0],
	g->fd[1], AND the code at the cleanup1 label closes wfd[1], rfd[0],
	resulting in a double-close.

	Avoid this case by setting wfd[1], rfd[0] to -1.  In the cleanup1
	label, only close wfd[1], rfd[0] if they are not -1, and add the same
	for g->fd[0], g->fd[1].

2012-06-26  Richard W.M. Jones  <rjones@redhat.com>

	launch: Ensure errno from test_qemu_cmd is captured and printed.

	launch: Set g->sock = -1 to avoid double-close.
	This fixes commit ef5c02c6ee72eb8e127115923951777a2c2b8480.

	launch: Log errors from close syscall.

	tests: Add thread IDs to test of bug 790721.

2012-06-25  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Don't check for /dev/fuse before running the test.
	The program doesn't actually require FUSE when used without
	any --script options.

	fish: Allow mount-local test to be skipped with environment variable.
	The test uses FUSE, so we need a way to disable it on RHEL 5.

	tests: Allow SELinux tests to be skipped with an environment variable.

	Version 1.19.11.

2012-06-25  Richard W.M. Jones  <rjones@redhat.com>

	launch: Treat /dev/null specially, for old KVM.
	Old KVM can't add /dev/null readonly.  Treat /dev/null as a special
	case.

	We also fix a few tests where /dev/null was being used with
	format=qcow2.  This was always incorrect behaviour, but qemu appears
	to tolerate it.

2012-06-25  Richard W.M. Jones  <rjones@redhat.com>

	lib: Remove obsolete NETWORK, ROUTER definitions in header file.
	These haven't been used since we switched over to virtio-serial.

2012-06-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.10.

2012-06-22  Richard W.M. Jones  <rjones@redhat.com>

	tests/xml: Fix compilation of test on RHEL 5 with old libvirt.
	Old <libvirt.h> had a conflicting definition of virDomainGetXMLDesc:

	fake_libvirt_xml.c:36: error: conflicting types for 'virDomainGetXMLDesc'
	/usr/include/libvirt/libvirt.h:715: error: previous declaration of 'virDomainGetXMLDesc' was here

	The difference is not material ('int' vs. 'unsigned int').

	Avoid the error by not including <libvirt.h>.

2012-06-22  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add workaround for missing O_CLOEXEC.

	tests: Fix broken workarounds for missing O_CLOEXEC.

2012-06-22  Richard W.M. Jones  <rjones@redhat.com>

	test-virt-resize: Replace truncate with guestfish sparse.
	Another instance of 'truncate' command.

	See commit 39df80dcc0e485e69048bddbf33c259ce532e50d for an
	explanation.

2012-06-22  Richard W.M. Jones  <rjones@redhat.com>

	part-get-bootable: Fix when partitions are missing or unordered (RHBZ#602997).
	The original fix for this in
	commit 511c82df46f5c6f4a7f984fdb81d4691038ed6da was not complete, in
	that it did not fix the case of the old (pre '-m' option) parted.
	This doesn't matter for Fedora, but it matters for RHEL 5 which has
	this ancient parted.

	ruby: Add a replacement rb_hash_lookup function for Ruby 1.8.5.
	This function was first added to Ruby in 1.8.7.

	ruby: Fix libruby test.
	If -lruby was not available, this used to define HAVE_LIBRUBY=0.
	However this meant that the later test -n "$HAVE_LIBRUBY" would
	be successful, whereas it should fail in this case.

	virt-format: Don't call wipefs unless API is available.
	This API is optional.  Don't call it unless it's available
	in the appliance.

	tests: Add SKIP_TEST_* variables to allow these tests to be skipped.
	By setting these variables, we can skip tests that fail on
	RHEL 5.

2012-06-19  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Mention update-guestfs-appliance (thanks Steven Dake).

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	build: Workaround for AC_PROG_SED not existing.
	This didn't exist on ancient autoconf in RHEL 5.

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	build: Define abs_builddir if not defined already.
	This is missing on RHEL 5.

	This updates commit 50aa9533e4a505e1c64dbedddb30491bfbb755d6.

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.9.

	fuse: Skip 'truncate' tests if this command is missing.

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	tests: Replace truncate command with 'guestfish sparse'.
	RHEL 5 didn't have the truncate command, but we can replace:

	  truncate -s SIZE FILE

	with the roughly equivalent command:

	  guestfish sparse FILE SIZE

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Add replacement for fuse_opt_add_opt_escaped.
	RHEL 5-era FUSE didn't have this function.

	I copied the function out of upstream FUSE, since the license is
	compatible.

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	build: Define builddir and abs_srcdir when they are missing.
	RHEL 5-era autoconf did not define these, so define them manually
	when they are missing.

	Define builddir as '.'  The scripts require this.  It won't work
	in the srcdir != builddir case, but we don't care about that for
	RHEL 5.

	This commit also moves the builddir / abs_srcdir variable setting
	above the include of subdir-rules.mk, in case that include uses
	these variables.

	Useful script:

	  for f in $(find -name Makefile.am | xargs fgrep '$(abs_srcdir)' -l) ; do
	    if ! grep -q '^abs_srcdir' $f; then
	      echo missing in $f
	    fi
	  done

2012-06-18  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Use OCAMLOPTFLAGS when compiling .cmx (ie. native code) files.

	configure: Look for mkisofs as well as genisoimage.
	For our purposes, the two tools are compatible.

2012-06-14  Richard W.M. Jones  <rjones@redhat.com>

	Ignore .gdb_history file.

	ppc64: is_openable function needed on all platforms now.
	This fixes commit 295d6af48d1d8c5238d1536b0c6a2ece42b0b445.

	Version 1.19.8.

2012-06-14  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add tests for extended attrs and SELinux, direct and via FUSE.
	Note that the SELinux + FUSE test is disabled because of:

	https://bugzilla.redhat.com/show_bug.cgi?id=811217
	https://bugzilla.redhat.com/show_bug.cgi?id=812798#c42

2012-06-14  Richard W.M. Jones  <rjones@redhat.com>

	virtio-scsi: Increase udev timeout.
	In Koji, when you've got 200+ disks, udev times out before all the
	udev events have been processed.

	virt-edit: Document CVE-2012-2690.

	Require febootstrap >= 3.17.

2012-06-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.7.

	tests: Add a test which adds the maximum number of disks and uses them.

	virt-df: Use guestfs_max_disks instead of hard-coding limit of 25.
	And comprehensively fix it so it works with > 26 disks.

	New API: device-index.
	This returns the index of the device, eg. /dev/sdb => 1.
	Or you can think of it as the order that the device was
	added, or the index of the device in guestfs_list_devices.

	New API: guestfs_canonical_device_name.
	This API makes device names canonical, eg. /dev/vda1 -> /dev/sda1.

	lvm-filter: Make it work with > 26 devices.
	Thanks Alasdair Kergon.

	daemon: Fix order of devices in guestfs_list_devices when > 26 disks.
	Sort the device names correctly, not just treating them as
	strings.  As a result, /dev/sdz < /dev/sdaa.

	New API: guestfs_max_disks.
	Returns the maximum number of disks that may be added to a handle.

	Update documentation on maximum number of disks.

	appliance: Add lsscsi to package list.

	virtio-scsi: Fix disk name calculation.
	This fixes commit 0c0a7d0d868d153adf0600189f771459e1068b0a.

	Require febootstrap >= 3.16.

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.6.

	tests/md: Don't hard code /dev/vda in expected output of tests.
	Use a small sed script to canonicalize the device names.

	tests: Fix spelling in comment.

	tests/lvm: Don't hard-code /dev/vda in test.
	Hard-coding it breaks virtio-scsi because the devices are called
	/dev/sda etc.

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Always pass -F option to mke2fs.
	Apparently e2fsprogs only knows that "/dev/sda" is a whole device, but
	doesn't think that "/dev/vda" is.  On switching the default device
	over to virtio-scsi, that causes mke2fs without -F option to complain
	and ask for an interactive prompt.  Adding -F forces it to go ahead
	anyway.

	This caused several less-used APIs to break with virtio-scsi.

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add support for virtio-scsi.
	This requires febootstrap >= 3.15.

	Record output of qemu -device '?'.
	This allows us to find out what qemu devices are supported
	at runtime.

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	Require QEMU >= 1.0.
	QEMU 1.0 was released at the end of 2011.

	Remove all the cruft about detecting broken -machine type which
	was only required for QEMU 0.15.

	This also reverts commit 30ecbf3ec2ada68f7e125a180553e31b069033b7.
	Even on ARM you can pass -machine accel=kvm:tcg and qemu does the
	right thing, so I'm not sure why we wanted to disable that.

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	Remove ./configure --with-drive-if and --with-net-if options.
	These were used to select the default drive and network interface.
	They both default to 'virtio'.

	These were added back in the day when virtio was buggy, so that
	packagers could revert to using ide/ne2k_pci to work around distro
	bugs.  However virtio has been stable in qemu for a very long time, so
	it seems unlikely that any packager would need to use these, and in
	any case it would be better to do this detection at runtime (cf. for
	virtio-scsi).

2012-06-12  Richard W.M. Jones  <rjones@redhat.com>

	New API: fstrim - allow filesystem trim.

2012-06-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.5.

	tests: Allow regression test for bug 690819 to be skipped.

	blockdev_getbsz: Remove test.
	The output of this test depends on page size, so on ppc64
	it returns 64K.

2012-06-09  Richard W.M. Jones  <rjones@redhat.com>

	fish: Change test-escapes so test is not endian-sensitive.
	The test used the external 'od' command to compare the output of
	guestfish with what it's supposed to be.  Unfortunately by default
	this outputs groups of 2-byte words, with the words' endianness
	affected by the current hardware endianness.  For example:

	x86-64$ echo -n ab | od
	0000000 061141
	0000002

	ppc64$ echo -n ab | od
	0000000 060542
	0000002

	By using 'od -b' instead we can output bytes instead of words, and
	there is no endianness issue, and the output is clearer:

	x86-64$ echo -n ab | od -b
	0000000 141 142
	0000002

	ppc64$ echo -n ab | od -b
	0000000 141 142
	0000002

2012-06-09  Richard W.M. Jones  <rjones@redhat.com>

	btrfs: Modify test to correctly detect btrfs availability.

	btrfs: Modify btrfs availability to test if the kernel supports btrfs.
	This is closer to the real meaning of "availability of btrfs", since
	just having the btrfs tool doesn't help much if it's not supported by
	the kernel too.

	New API: filesystem-available: tests for filesystem availability.
	This also creates an internal filesystem_available function within the
	daemon.

2012-06-08  Richard W.M. Jones  <rjones@redhat.com>

	ppc64: Update README with notes about ppc64 support.

2012-06-08  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build/install fix for translations

2012-06-07  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.4.

2012-06-07  Richard W.M. Jones  <rjones@redhat.com>

	Enhance BUGS script.
	Since RHBZ was updated, the old python-bugzilla program broke.  When
	it was fixed, I found the (undocumented) ordering of the results from
	the old tool was no longer true.

	This commit adds a small Perl script to sort the output predictably.
	Now bugs are sorted by both bug state and bug number, so the output
	should be more stable than before.

	Re-enable creation of the BUGS file in 'make dist'
	(this reverts commit 91f3456244e7843768da659e24ce0aeeb4ebe4b0).

	Also the BUGS file has been updated.

2012-06-06  Richard W.M. Jones  <rjones@redhat.com>

	arm: Use #if defined instead of #ifdef.
	No functional change.

	ocaml: Fix parameters to ocaml_guestfs_create.
	The first parameter (not used) is a unit, so declare it properly.

2012-06-02  Richard W.M. Jones  <rjones@redhat.com>

	ppc64: Avoid "defined by not used" warning for is_openable function.

2012-05-31  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.3.

2012-05-28  Hilko Bengen  <bengen@hilluzination.de>

	Split off GObject tests that require an appliance

	Fix out-of-tree build for GObject bindings

2012-05-28  Richard W.M. Jones  <rjones@redhat.com>

	xattr: Refuse to set or get oversized extended attributes.
	See:
	https://www.redhat.com/archives/libguestfs/2012-May/msg00152.html

	appliance: 'udevd' has been renamed, since it joined systemd.

	appliance: Move udev (common package name) to the common section.
	This should be just code motion.

2012-05-27  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.2.

2012-05-26  Richard W.M. Jones  <rjones@redhat.com>

	Update to latest gnulib.

2012-05-25  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.1.

	tests: Add a test of non-ASCII character fidelity on various filesystem types (RHBZ#823887).
	Thanks Laszlo Ersek.

	doc: Add documentation covering use of utf8 option when mounting vfat (RHBZ#823887).

2012-05-25  Richard W.M. Jones  <rjones@redhat.com>

	trace: Fix display of non-printing characters.
	Previously the code would drop the first character in any sequence of
	non-printing characters that occurred within a string.

	Fix for commit e6f18c59d577dd0b443bc6a1d76f699c4e0dde9f.

2012-05-25  Richard W.M. Jones  <rjones@redhat.com>

	trace: Fix escaping of non-printable signed characters.
	Fix for commit e6f18c59d577dd0b443bc6a1d76f699c4e0dde9f.

2012-05-25  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the data and log files of puppet
	Remove the data(keys) and log files of puppet.

2012-05-24  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Don't fail if /etc/HOSTNAME or /etc/hostname are empty files (RHBZ#823821).
	Change guestfs___first_line_of_file so that if the file is empty this
	returns an empty string instead of an error.  This is consistent with
	the behaviour of this function in the case where the file starts with
	a \n character, where it would previously have returned an empty
	string.

	Change all callers so that they handle this case.

	Then change the hostname parsing code so that it doesn't give up when
	/etc/HOSTNAME is empty, but falls through to the next alternative, and
	similarly for /etc/hostname.

	Thanks Todd Mummert for finding and diagnosing this bug.

2012-05-24  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Use parse_release_file to parse ttylinux release file.
	parse_release_file should be used to set fs->product_name, instead of
	calling guestfs___first_line_of_file directory, although currently the
	two are equivalent.

	This is code motion and fixes
	commit b648b1813fc8e55db790435b5414d9be3ec765d2.

2012-05-24  Richard W.M. Jones  <rjones@redhat.com>

	fish/mount: Add better error message when -m (mount) fails (RHBZ#824043).

	fish: Remove inaccurate comment from code.

	virt-make-fs: When writing vfat, add utf8 option to mount (RHBZ#823885).

	virt-make-fs: Provide a clearer error message when mkfs fails (RHBZ#823883).

2012-05-24  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Include 'bzip2' in appliance (RHBZ#824716).
	Missing package caused this error in compress-device-out:

	libguestfs: error: compress_device_out: compression type bzip2 is not supported

	Thanks Mohua Li.

2012-05-23  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Add section about using libguestfs in closed source programs.

	FAQ: Add a note about "child process died unexpectedly".
	This is a common search term on the main website, and there is no good
	information provided by Google at present.

	FAQ: Update Ubuntu instructions.

2012-05-22  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	TODO: sysprep todo list clearance
	Remove the implemented features from TODO list.

2012-05-22  Richard W.M. Jones  <rjones@redhat.com>

	java: Remove unnecessary imports from the generated Java code.

	debug: Add setenv debugging command.

2012-05-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.19.0.

	New stable branch: Version 1.18.0.

	build: Temporarily disable generation of 'BUGS' file.
	Red Hat Bugzilla is broken: RHBZ#823510.

	Update API support.

	Update PO files from Transifex.

	Update road map for 1.18 branch.

	Update release notes for 1.18 branch.

2012-05-18  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Credit Wanlong Gao, Fujitsu under 'AUTHORS' section.

2012-05-18  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove kerberos data in the guest
	Remove the generated kerberos data in the guest.

	sysprep: remove ca certificates in the guest
	Remove the ca certificates.

2012-05-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.43.

	virt-ls: Don't initialize path = NULL.

	virt-ls: Fix --checksum option (RHBZ#822490).

2012-05-15  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	NEW API: add new api btrfs-fsck
	Add the new API btrfs-fsck to check the btrfs filesystem.
	Btrfs is currently under heavy development, and not suitable for
	any uses other than benchmarking and review. But it'll be useful
	in the near future.

	btrfs: change the return value of btrfs-set-seeding
	Change the return value from "r" to "0".

	gobject: remove old generated files further
	also remove guestfs-gobject.c

2012-05-15  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Remove old generated files.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Add missing 'utils.mli' to SOURCES.
	Consequently this file was also missing from the tarball.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	doc: Add notes on how GPT works on 4k sector disks.
	I used scsi_debug to create a 4k sector virtual disk:

	  modprobe scsi_debug dev_size_mb=128 sector_size=4096

	I then used 'gdisk' to create lots of partitions, and used 'hexdump'
	to examine what was written to disk.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	todo: Notes about partitioning tools.

2012-05-14  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	New API: add new api btrfs-set-seeding to enable or disable seeding.
	Add the new API btrfs-set-seeding to support the seeding-device
	feature for btrfs.

	TODO: add note for libblkid
	Add the note about compatible in TODO for libblkid.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	examples: Further fixes to mount-local example program.
	* Set PS1 prompt properly for bash shells.
	* Touch a file into the root directory of the new filesystem.

	This fixes commit 46b6766156ace142443b36e20e55074c544ae6cc.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	example: Various fixes to mount-local example program.
	* Move MOUNT_OPTIONS to #define at top.
	* Move SIZE_MB to #define at top.
	* Set PS1 in subshell (doesn't work - why?).
	* Hide libguestfs errors from guestfs_mount_local_run.

	This fixes commit 46b6766156ace142443b36e20e55074c544ae6cc.

2012-05-14  Richard W.M. Jones  <rjones@redhat.com>

	debian: examples: Don't break when O_CLOEXEC is not defined.
	This affected Debian 6.

	This fixes commit 46b6766156ace142443b36e20e55074c544ae6cc.

2012-05-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.42.

	examples: Add mount options "acl,user_xattr" to mount-local example.
	This fixes commit 46b6766156ace142443b36e20e55074c544ae6cc.

	examples: Add an example of using the mount-local API from C.

	examples: Add if HAVE_HIVEX ... endif around virt_dhcp_address example.

2012-05-12  Richard W.M. Jones  <rjones@redhat.com>

	qemu: Move -nodefaults etc logically together.
	This is just code motion.

2012-05-12  Richard W.M. Jones  <rjones@redhat.com>

	arm: Add configure flag '--with-qemu-options'.
	This flag allows extra QEMU options to be passed on the command line.

	This is useful mainly on arm (see the notes in the updated README
	file).

2012-05-12  Richard W.M. Jones  <rjones@redhat.com>

	arm: Disable -machine, -enable-kvm options except on x86, x86-64.
	Presently KVM is only applicable to x86 and x86-64 (although that will
	change in future, and there are rumoured to be implementations for
	some current non-x86 architectures).  In any case having these options
	breaks ARM, so disable them for non-x86 architectures at the moment.

	arm: On Linux ARM kernels, the serial console is ttyAMA0.
	Cope with unnecessary lack of standardization.

	arm: Disable test for -no-hpet during launch.

2012-05-12  Richard W.M. Jones  <rjones@redhat.com>

	arm: Set minimum LIBGUESTFS_MEMSIZE at 128.
	For ARM Versatile ("versatilepb") architecture, memsize must be set to
	256 (megabytes) else the appliance is unable to boot.  Previously
	setting LIBGUESTFS_MEMSIZE=256 was not allowed.

	Versatile Express has larger limits.

2012-05-12  Richard W.M. Jones  <rjones@redhat.com>

	configure: Fix valgrind --vgdb test.

	configure: Add a comment about vmchannel_test.

2012-05-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.41.

	doc: Add a note about compiling under clang.

2012-05-11  Richard W.M. Jones  <rjones@redhat.com>

	configure: Allow systemtap/DTrace userspace probes to be disabled.
	'./configure --disable-probes' will disable these probes.  Otherwise
	they are autodetected as before.

	The <sys/sdt.h> produces lots of errors when you try to compile with
	these probes enabled under clang, so it is necessary to provide a way
	to disable them for clang users.

2012-05-10  Richard W.M. Jones  <rjones@redhat.com>

	FAQ: Fix typo in download (thanks badnews@IRC)

2012-05-10  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove blkid tab in the guest
	Remove blkid tab cache in the guest.

2012-05-09  Richard W.M. Jones  <rjones@redhat.com>

	configure: Replace 'echo -n' with 'AS_ECHO_N' macro (thanks Eric Blake).

	Update to latest gnulib.

	bootstrap: Remove autopoint, po stuff from bootstrap script.
	It's not needed since we no longer use gettextize cruft.

2012-05-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.40.

	Updated PO files from Transifex.

2012-05-08  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove pam data
	Remove the generated pam data in the guest.

2012-05-05  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Implement -V / --version option.

2012-05-03  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	Version 1.17.39.

	virt-df: Don't fail immediately if a disk is not accessible (RHBZ#789504).

	virt-alignment-scan: Don't fail immediately if a disk is not accessible (RHBZ#789504).

	virt-alignment-scan, virt-df: Add newlines after error messages.

	virt-make-fs: Add a test of btrfs (regression test for RHBZ#816098).

	virt-make-fs: Simplify test code.
	This is just code motion.

	virt-make-fs: Fix estimation when making btrfs (RHBZ#816098).
	This also disables data and metadata duplication, which is not very
	useful on a constructed filesystem on a virtual disk.

	virt-make-fs: Use mount instead of mount_options.

	virt-make-fs: Fix filesystem type check when estimating ntfs.

2012-05-03  Richard W.M. Jones  <rjones@redhat.com>

	tests: Regression test for RHBZ#701814.
	This commit adds a tests/xml directory, and an LD_PRELOAD module which
	can fake arbitrary libvirt XML from an external file (and is therefore
	a much more flexible test than using the libvirt test:// driver
	alone).

	Also added is one regression test for:
	https://bugzilla.redhat.com/show_bug.cgi?id=701814

	Loading the given libvirt XML using Sys::Guestfs::Lib::open_guest
	used to fail with the error:

	  format parameter is empty or contains disallowed characters at /home/rjones/d/libguestfs/perl/blib/lib/Sys/Guestfs/Lib.pm line 256.

	Thanks to Tom Horsley for supplying the test data.

2012-05-03  Richard W.M. Jones  <rjones@redhat.com>

	perl: Don't fail if 'type' (disk format) attribute is missing in libvirt XML (RHBZ#701814).
	Old versions of libvirt allowed you to define disks like this:

	    <disk type='file' device='disk'>
	      <driver name='qemu'/>
	      ...

	Since the <driver> element does not have a 'type' attribute (which
	defines the format), we are supposed to do autodetection, so the
	format should be undefined.

	However what actually happened was that the code in
	Sys::Guestfs::Lib::open_guest received format as an empty string from
	the xpath query, causing libguestfs to give an error.

	If the xpath query returns the format as an empty string, undefine it.

2012-05-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add a regression test for the 'glob' command.

2012-05-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: glob command now expands /dev/ patterns (RHBZ#635971).
	For example:

	><fs> glob echo /dev/*
	/dev/vda
	/dev/vda1
	/dev/vda2
	/dev/vda3
	><fs> glob echo /dev/v*/*
	/dev/vg_f16x64/lv_root
	/dev/vg_f16x64/lv_swap

2012-05-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Move 'feature_available' function to global.
	This is just code motion.

	fish: Clean up glob code and make it return error if malloc fails.
	This commit tidies up the code for the 'glob' command.  It also makes
	the command return an error if malloc fails (previously it would just
	print a message but not return any error indication).

2012-05-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add --pipe-error flag to allow detection of errors in pipe commands (RHBZ#803533).
	For a test case, see:
	https://bugzilla.redhat.com/show_bug.cgi?id=803533

	In guestfish, we use the gnulib closeout module which sets up an
	atexit handler to detect if there were any errors on stdout when the
	program exits.  This is so we can fail correctly in out of disk space
	cases like:

	 guestfish [...] > output

	However the atexit handler just checks that there was any error on
	stdout (using ferror).  If a pipe command such as:

	 ><fs> command_with_lots_of_output | head

	ran at any time during the session, the error flag would be set
	(because the underlying writes failed with EPIPE errors).

	So the commit first adds a test for ferror (stdout) after each command
	that we issue.  This brings error handling closer to the point of
	failure, and so is generally a good thing.

	Secondly we reset the error flag after detecting and dealing with the
	error, so that avoids the redundant 'guestfish: write error' message
	produced by gnulib closeout.

	Thirdly we add a --pipe-error flag which causes guestfish commands to
	fail on pipe commands line the one above.  The default is off for
	backwards compatibility reasons.

2012-05-01  Richard W.M. Jones  <rjones@redhat.com>

	Update release notes.

	Version 1.17.38.

	Turn libguestfs FAQ into a man page: guestfs-faq(1).

	doc: Rewrite description section in man page guestfs(3).
	Make the introduction in the man page shorter and punchier, so it
	leads readers directly to other pages of interest.

	Version 1.17.37.

	Add gettext support for OCaml tools (virt-resize, virt-sparsify, virt-sysprep).
	Note that this support is optional: To enable it, install the
	ocaml-gettext library from
	http://forge.ocamlcore.org/projects/ocaml-gettext .  If this library
	is not installed, then configure detects this and inserts dummy
	gettext functions that do nothing.

	Remove gettextize.
	Replace the sociopathic nonsense in gettextize with a simple
	Makefile.am which does the same ... and is faster.

2012-05-01  Richard W.M. Jones  <rjones@redhat.com>

	Remove "convenience header" "gettext.h" and use <libintl.h> instead.
	gettextize provides a local file called "gettext.h".  Remove this and
	use <libintl.h> from glibc headers instead.

	Most of this change is mechanical: #include <libintl.h> in every C
	file which uses any gettext function.  But also we remove the
	gettext.h file, and adjust the "_" macros.

	Note that this effectively removes the ./configure --disable-nls
	option, although we don't know if that ever worked.

2012-04-30  Richard W.M. Jones  <rjones@redhat.com>

	configure: There are now more OCaml tools than just virt-resize.
	virt-resize, virt-sparsify, virt-sysprep are all OCaml tools, so
	change what is printed in the report.

	configure: Comment fix.

	Move 'libguestfs.pc' (pkgconfig file) to src/ directory.
	Since it describes the C library, it's better in the src/ directory.

	todo: virt-sparsify whitelist option.

2012-04-27  Richard W.M. Jones  <rjones@redhat.com>

	debug: 'progress' (unsupported debug command) now checks argument is reasonable (RHBZ#816839).
	Thanks Yuyu Zhou.

2012-04-27  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Fix installation of headers.
	RPM build errors:
	error: Installed (but unpackaged) file(s) found:
	   /usr/include/optargs-add_domain.h
	   /usr/include/optargs-add_drive_opts.h
	   /usr/include/optargs-btrfs_filesystem_resize.h
	   /usr/include/optargs-compress_device_out.h
	   /usr/include/optargs-compress_out.h
	   /usr/include/optargs-copy_device_to_device.h
	   /usr/include/optargs-copy_device_to_file.h
	   /usr/include/optargs-copy_file_to_device.h
	   /usr/include/optargs-copy_file_to_file.h
	   /usr/include/optargs-e2fsck.h
	   /usr/include/optargs-inspect_get_icon.h
	   /usr/include/optargs-md_create.h
	   /usr/include/optargs-mkfs_btrfs.h
	   /usr/include/optargs-mkfs_opts.h
	   /usr/include/optargs-mount_9p.h
	   /usr/include/optargs-mount_local.h
	   /usr/include/optargs-ntfsclone_out.h
	   /usr/include/optargs-ntfsfix.h
	   /usr/include/optargs-ntfsresize_opts.h
	   /usr/include/optargs-set_e2attrs.h
	   /usr/include/optargs-test0.h
	   /usr/include/optargs-tune2fs.h
	   /usr/include/optargs-umount_local.h
	   /usr/include/session.h
	   /usr/include/struct-application.h
	   /usr/include/struct-btrfssubvolume.h
	   /usr/include/struct-dirent.h
	   /usr/include/struct-inotify_event.h
	   /usr/include/struct-int_bool.h
	   /usr/include/struct-isoinfo.h
	   /usr/include/struct-lvm_lv.h
	   /usr/include/struct-lvm_pv.h
	   /usr/include/struct-lvm_vg.h
	   /usr/include/struct-mdstat.h
	   /usr/include/struct-partition.h
	   /usr/include/struct-stat.h
	   /usr/include/struct-statvfs.h
	   /usr/include/struct-version.h
	   /usr/include/struct-xattr.h
	   /usr/include/tristate.h

	We want to put these headers into the subdirectory, but not
	guestfs-gobject.h.  This isn't easy with automake.

2012-04-27  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Fix whitespace in Makefile.am.

2012-04-27  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: Remove the data of dovecot
	Remove the data of dovecot.

	sysprep: remove the logfiles configured by logrotate
	Remove the logfiles configured by /etc/logrotate.d/*.
	Omit the logfile of "samba" and "sssd" which we removed
	them separately .

2012-04-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.36.

	btrfs: Fix btrfs test so it works with btrfs-progs in Rawhide.
	See: http://bugzilla.redhat.com/816346

2012-04-26  Richard W.M. Jones  <rjones@redhat.com>

	lib: Remove the BUSY state.
	Originally this state was intended so that in some way you could find
	out if the appliance was running a command.  However there was never a
	thread-safe way to access the state of the handle, so in effect you
	could never do anything useful safely with this information.

	This commit completely removes the BUSY state.

	The only visible change is to the guestfs_is_busy API.  Previously you
	could never call this safely from another thread.  If you called it
	from the same thread it would always return false (since the current
	thread can't be running a libguestfs command at that point by
	definition).  Now it always returns false.

2012-04-26  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Use generator_built macro to ensure generated files are rebuilt properly.

2012-04-26  Matthew Booth  <mbooth@redhat.com>

	gobject: Move headers into a subdirectory
	The gobject bindings generate a large number of header files, which pollute
	/usr/include when installed. This patch moves them all into a guestfs-gobject/
	subdirectory. guestfs-gobject.h remains in the same place.

	This change also moves generated source files into src/, because it makes the
	gobject directory a bit tidier.

2012-04-26  Richard W.M. Jones  <rjones@redhat.com>

	btrfs: Fix docs for btrfs_subvolume_set_default (thanks Matt Booth).
	This fixes commit 87ea7a04094d5ed40f3f047ff2b7a613d4d530d4.

2012-04-26  Matthew Booth  <mbooth@redhat.com>

	gobject: Implement libguestfs events as signals
	Implement libguestfs events as GObject signals. Callback arguments are passed in
	a boxed object.

	Note that this patch fixes the length of the uint64_t array in the callback
	arguments at 16, whereas it is actually arbitrary length. This is to make it
	introspectable. There is currently no way to pass an arbitrary length array to a
	callback, and have its type introspected.

2012-04-26  Matthew Booth  <mbooth@redhat.com>

	gobject: Wrap literal sections in POD in CDATA sections

	gobject: NFC generated code formatting fix

2012-04-26  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Add --scratch option.
	This lets you create temporary scratch disks.

	fish: Add opaque field to the drives list for programs to use.
	Not used at present.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.35.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Remove some unnecessary errors.
	virt-rescue prints errors such as:

	  rm: cannot remove `/proc': Is a directory
	  mkdir: cannot create directory `/proc': File exists
	  rm: cannot remove `/sys': Is a directory
	  mkdir: cannot create directory `/sys': File exists

	People have reported these errors (which are nothing to worry about)
	as bugs in the past, so avoid them where possible.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	btrfs: Enhance the btrfs device test.
	This enhances commit 87ea7a04094d5ed40f3f047ff2b7a613d4d530d4.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	tests: Add some more substantial test data.
	The two tarballs:

	  8252 bytes   tests/data/filesanddirs-10M.tar.xz
	 41152 bytes   tests/data/filesanddirs-100M.tar.xz

	contain, as their names suggest, highly compressed files and
	directories, with unpacked size respectively around 10M and 100M (the
	precise size after unpacking depends on the filesystem).

	These can be used for testing purposes.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	btrfs-device-delete: Use correct (sysroot-prefixed) path to filesystem.
	This fixes commit 87ea7a04094d5ed40f3f047ff2b7a613d4d530d4.

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	New btrfs APIs.
	Bind the easy parts of the 'btrfs' program.

	The new APIs are:

	btrfs-device-add: add devices to a btrfs filesystem
	btrfs-device-delete: remove devices from a btrfs filesystem
	btrfs-filesystem-sync: sync a btrfs filesystem
	btrfs-filesystem-balance: balance a btrfs filesystem
	btrfs-subvolume-create: create a btrfs snapshot
	btrfs-subvolume-delete: delete a btrfs snapshot
	btrfs-subvolume-list: list btrfs snapshots and subvolumes
	btrfs-subvolume-set-default: set default btrfs subvolume
	btrfs-subvolume-snapshot: create a writable btrfs snapshot

2012-04-25  Richard W.M. Jones  <rjones@redhat.com>

	btrfs: Modify mkfs-btrfs API so it takes a list of devices.
	btrfs filesystems can span multiple filesystems.

	Note this changes the API, but this API has not yet been released in a
	stable version of libguestfs.

2012-04-25  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	TODO: remove sssd and samba in sysprep
	remove the TODO of sssd and samba in sysprep.

	sysprep: fix typo of the object
	Fix the typo of the OBJECT.
	I'm sorry for the copy and paste typo.

	sysprep: remove the db and log of samba
	Remove the db and log of samba.

	sysprep: remove the db and log of sssd
	Remove the db and log of sssd.

2012-04-24  Richard W.M. Jones  <rjones@redhat.com>

	todo: Suggest 'virt-customize' tool.

	todo: Debian APT cache is now removed (thanks Wanlong Gao).
	This updates commit 7fc7c3aa5b8088abc52b5cc39b682cdaedd1ba84.

	bugs: Update BUGS file.

	bugs: Print count of bugs in each section.

	generator: Add explicit types to pod memoization code.
	This is just code motion.

	Version 1.17.34.

2012-04-24  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the cache of package manager
	Remove the cache of package manager like yum and apt.


	RWMJ:
	- Small code cleanup.

2012-04-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: flag the system for reconfiguration
	Flag the system for reconfiguration by touching /.unconfigured .


	RWMJ:
	- Updated so this is disabled by default, since it requires
	  user intervention at next boot.

2012-04-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove user accounts
	Remove user accounts from /etc/passwd, /etc/group,
	/etc/shadow, and the home directory of the user,
	except the root user.


	RWMJ:
	- Updated to use Augeas to delete accounts.
	- Disable this by default, since it is very invasive.

2012-04-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.33.

2012-04-21  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Don't enable every option by default.
	All current operations are enabled by default.

	Also:

	* The POD description is split into a heading and the description body.

	* An 'enabled_by_default' flag is added to the structure.

2012-04-21  Richard W.M. Jones  <rjones@redhat.com>

	build: Change comment above OCaml tools.

	guests: Add /etc/shadow file to fedora.img.
	This is used for testing file permissions and SELinux contexts.

	tests: Space before parens in perl code.

2012-04-19  Richard W.M. Jones  <rjones@redhat.com>

	Update release notes.

	configure: Test for tgetent, tputs and 'UP' symbols (from libtinfo).

2012-04-18  Jim Meyering  <jim@meyering.net>

	maint: fix doc typos
	Fix typos spotted by http://github.com/lyda/misspell-check.
	* configure.ac: As above.
	* ocaml/examples/guestfs-ocaml.pod: Likewise.
	* fish/guestfish.pod: Likewise.

2012-04-18  Richard W.M. Jones  <rjones@redhat.com>

	Remove obsolete valgrind rule from C API tests.

	extra-tests: Check if valgrind supports --vgdb=no option.
	This option didn't exist in RHEL 6 valgrind.

	Check library still compiles without libvirt.

	sparsify: Add a note about sparsify on tmpfs.

2012-04-18  Matthew Booth  <mbooth@redhat.com>

	Don't abort inspection if mdadm.conf ARRAY doesn't have a uuid

2012-04-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.32.

2012-04-17  Richard W.M. Jones  <rjones@redhat.com>

	python: Remove 'del g' from the docs, replace with 'g.close ()'.
	'del g' is a trap for the unwary.  If the handle has any other
	references, it does nothing (in fact, it can be actively dangerous if
	the user was expecting the appliance to go away).  In non-CPython it
	can be delayed arbitrarily long.

	Using 'g.close()' on the other hand is always safe.

2012-04-17  Richard W.M. Jones  <rjones@redhat.com>

	todo: Note about -cpu host.

	virt-alignment-scan: Fix error code.
	This fixes commit fb401ebff837f9df7c06acb8467b2c03d5b8ced0.

	resize, sparsify: Add a simple-minded check to stop indisk = outdisk.

2012-04-17  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Fix comma/colon and quoting in qemu-img command.
	Colon characters are not allowed in qemu/qemu-img filenames.  There's
	no way to quote them.

	Comma characters CAN be used.  However they must be quoted (by
	doubling) when used in the '-o' option.

	Fix general quoting problems in the external command.

2012-04-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-alignment-scan: Add ability to list all domains.
	The output looks like this:

	 F16x64:/dev/sda1      1048576         1024K   ok
	 F16x64:/dev/sda2      2097152         2048K   ok
	 F16x64:/dev/sda3    526385152         2048K   ok

	If the --uuid option is used, then UUIDs are shown instead of names.

2012-04-16  Richard W.M. Jones  <rjones@redhat.com>

	gitignore: Move cscope.out to second section.
	This fixes commit 3c843e2129d7ce2d6b9bbc6c294cacf7385aa5e3.

2012-04-16  Matthew Booth  <mbooth@redhat.com>

	.gitignore: cscope.out isn't always at the top-level

2012-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Improve reporting in mount-local when verbose is enabled.

2012-04-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.31.

2012-04-13  Richard W.M. Jones  <rjones@redhat.com>

	New APIs for reading and writing ext2 file attributes and file generation.
	The new APIs are:

	  get-e2attrs: List ext2 file attributes of a file.
	  set-e2attrs: Set or clear ext2 file attributes of a file.
	  get-e2generation: Get ext2 file generation of a file.
	  set-e2generation: Set ext2 file generation of a file.

	These are implemented using the lsattr and chattr programs from
	e2fsprogs.

2012-04-13  Richard W.M. Jones  <rjones@redhat.com>

	todo: Remove obsolete sections from the TODO file.

	sysprep: Make the tests run quietly.

2012-04-13  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: bash_history: fix copyright

	sysprep: remove .ssh directory in users' directory
	Remove the .ssh directory of user "root" and any other
	users who have a .ssh directory in their home directory.

2012-04-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.30.

	tests: Fix reference to guestfish in test for RHBZ#811649.
	This fixes commit a9bd90abfb3d4519278dfff305b8b7033ae6d76a.

2012-04-12  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.29.

	Add regression test to test funny filenames (RHBZ#811649).

	lib: Escape , as ,, on qemu command line (RHBZ#811649).

2012-04-12  Richard W.M. Jones  <rjones@redhat.com>

	lib: Remove check_path function, limitation is colon, not comma (RHBZ#811649).
	Remove the bogus check_path function and move the functionality into
	the two places where it was being used.

	  qemu -cdrom ,

	works fine, I tested it.

	Colon cannot be used in a block device filename anywhere, since the
	qemu block driver interprets it as a prefix.  There is no known way to
	work around this problem.  I checked this is true with kwolf.

	Comma is fine in -drive options, provided it is escaped by doubling it.

2012-04-12  Richard W.M. Jones  <rjones@redhat.com>

	Revert "launch: don't add a drive twice"
	This reverts commit be47b66c3033105a2b880dbc10bfc2b163b7eafe.

	extra-tests: Add suppression for memory leak in FUSE.

	extra-tests: ocaml: Use a short delay instead of Thread.yield.
	On the new faster computer, Thread.yield wasn't yielding, so the
	second thread would block the main test from proceeding (only when run
	under valgrind however).

	inspector: Update example XML.

	inspection: Remove spurious warning for Ubuntu 10.04 with encrypted swap (RHBZ#811872).

	inspector: Fix incorrect arch in example-ubuntu.xml.

2012-04-12  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	sysprep: remove the bash history of users
	Remove the bash history of users in home directory,
	and history of root.

2012-04-12  Richard W.M. Jones  <rjones@redhat.com>

	website: typo: guestfs-performance.3 -> guestfs-performance.1

2012-04-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.28.

	New man page: guestfs-performance(1).
	This contains tips for engineering libguestfs for greatest performance.

	docs: Add libguestfs-test-tool(1) and libguestfs-make-fixed-appliance(1) to guestfs(3) man page.
	Inexplicably these were not included before.

	po-docs: Allow parallel builds in po-docs directory.
	The first time the directory is checked out from git, there are no
	*.pod files.  In a parallel build, the first thread notices this and
	runs the 'make -C .. update-po' rule, but the other threads also try
	to run at the same time and fail.

	po-docs: No need to touch virt-sysprep.1 output file.

	extra-tests: Add suppression for libvirt/gnutls leak.
	https://www.redhat.com/archives/libvir-list/2012-April/msg00322.html

	python: Add a regression test for RHBZ#811650.

	launch: Set error when qemu fails early during launch (RHBZ#811650).
	This caused the Python bindings (and probably others) to
	segfault because guestfs_last_error(g) would return NULL.

2012-04-11  Richard W.M. Jones  <rjones@redhat.com>

	python: Add PYTHONPATH to './run' script.
	Also:

	 - tidy up the script
	 - use the ./run script when running Python tests

2012-04-11  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Sort and align all arguments (thanks Wanlong Gao).

	sysprep: Make a common Utils.compare_command_line_args function.
	This isn't quite code motion, since the new function also ignores case
	(which previously we didn't ignore).

	sysprep: Move skip_dashes function into Utils module.
	This is mostly code motion, but I also changed the function to use
	String.unsafe_get and raise Invalid_argument on failure.

	sysprep: Add utils.mli (interface) file.

2012-04-11  Richard W.M. Jones  <rjones@redhat.com>

	sysprep: Print some logging by default.
	It can be disabled using the --quiet option.

	The logging looks like:

	Examining the guest ...
	Performing "cron-spool" ...
	Performing "dhcp-client-state" ...
	Performing "dhcp-server-state" ...
	Performing "hostname" ...
	Performing "logfiles" ...
	Performing "mail-spool" ...
	Performing "net-hwaddr" ...
	Performing "random-seed" ...
	Performing "rhn-systemid" ...
	Performing "script" ...
	Performing "smolt-uuid" ...
	Performing "ssh-hostkeys" ...
	Performing "udev-persistent-net" ...
	Performing "utmp" ...
	Performing "yum-uuid" ...

	Reviewed-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>

2012-04-10  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Disable valgrind vgdb.
	This leaves files called 'vgdb-pipe-*' in .

	Version 1.17.27.

2012-04-10  Qin Guan  <qguan@redhat.com>

	sysprep: Allow hwaddr to be removed on other Red Hat derivatives (RHBZ#811117).

	sysprep: Allow hostname to be set on other Red Hat derivatives (RHBZ#811112).

2012-04-09  Richard W.M. Jones  <rjones@redhat.com>

	Use posix_fadvise when uploading or downloading files.
	But ignore it if the call fails, since the file descriptor could be a
	non-file (eg. /dev/stdout).

	Fix libguestfs-make-fixed-appliance --help option so it displays usage.
	Previously it printed 'Internal error!'

2012-04-06  Richard W.M. Jones  <rjones@redhat.com>

	gobject: Remove guestfs-gobject.c from POTFILES.in.
	This file no longer exists after the sources were split across
	multiple files for the benefit of gtk-doc.

2012-04-06  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix guest building so parallel 'make -jN check' works.
	This means renaming various temporary files (eg. fstab.tmp) that
	several of the scripts were using so they don't conflict
	(eg. fstab.tmp.$$).

	Also the rule:

	  fedora-md1.img fedora-md2.img: guest-aux/make-fedora-img.pl

	causes the script to run twice in parallel when using 'make -jN'.
	Replace this with a stamp file so it runs once:

	  fedora-md1.img fedora-md2.img: stamp-fedora-md.img
	  stamp-fedora-md.img: guest-aux/make-fedora-img.pl

2012-04-06  Richard W.M. Jones  <rjones@redhat.com>

	tests: Don't print "4" when running make-windows-img.sh
	The return value of the pwrite-device command -- 4 (bytes) -- is
	printed out.  Hide it instead.

2012-04-04  Matthew Booth  <mbooth@redhat.com>

	fuse: Add missing #include to guestmount.c
	Fix compilation failure on F17

2012-04-04  Richard W.M. Jones  <rjones@redhat.com>

	debian: Suggest 'apt-get build-dep' to install dependencies.

2012-04-03  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES file for future 1.18 release.

	Version 1.17.26.

	parallel mount-local test: Don't run more than 12 threads.
	On the Koji builder that has lots of memory, this was trying to run
	something like 20 threads.

	Use absolute paths where necessary in .gitignore file.

	inspection: Support Fedora 17+ (RHBZ#809361).
	Recognize grub2 as a bootloader, and /bin being a symlink to
	/usr/bin (ie. UsrMove feature added in Fedora 17+).

	sysprep: Add GDM and session preferences to logfiles.

	sysprep: Remove installation logfiles in /root.

	sysprep: Include logfile glob list in the man page.

2012-04-02  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.25.

	New API: mkfs-btrfs for creating btrfs filesystems (RHBZ#807905).
	This allows all parameters from btrfs to be accessed.

	mkfs: Don't allow blocksize to be set on btrfs (RHBZ#807905).

2012-04-01  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Test virt-sysprep.

	sysprep: Add a test of the --script option.

	sysprep: Simplify and tidy up the test.

	sysprep: script: Documentation fix.

	sysprep: script: Miscellaneous fixes and cleanups to shell script.

	sysprep: script: Wait for child process to exit.

	sysprep: script: Remove useless check that script is executable.
	This check will fail if the script is on the path.  Also document
	that script must be on the path or else the full path to the script
	must be given.

	sysprep: Add some debug code when performing operations.

	Version 1.17.24.

	sysprep: Add more files to CLEANFILES.

	sysprep: When generating man pages, use 'run' script.

	Add po/remove-potcdate.sin to git and EXTRA_DIST.
	This file is produced by gettextize and required by 'make dist'.

2012-03-31  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.23.

	Ensure that SOURCES are always in EXTRA_DIST, even if OCaml not available.

	sysprep: Implement 'script' operation for running general scripts against the guest.

	Rewrite virt-sysprep.

	fish: Add a regression test for mount-local, mount-local-run commands.

2012-03-30  Richard W.M. Jones  <rjones@redhat.com>

	Update translations from Transifex.

	Update API support.

2012-03-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.22.

	Add test of parallel mount-local calls.

2012-03-29  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: mount-local, mount-local-run, umount-local (FUSE support in the API).
	Add FUSE support directly to the API.  Instead of needing to use the
	external 'guestmount' command, you can mount the libguestfs filesystem
	space on a local mountpoint using an API call from any language.

	Note that although mount-local-run is marked as Cancellable, the
	current implementation does not support it, but it would be relatively
	simple to add it.

2012-03-29  Matthew Booth  <mbooth@redhat.com>

	gobject: Ignore generated guestfs-sections.txt

	gobject: Add split-out files to POTFILES.in

2012-03-29  Richard Jones  <rjones@redhat.com>

	test: Thread function is a candidate for attribute noreturn.
	The start_test_thread function never returns, it is always
	cancelled by the main thread.

2012-03-29  Richard Jones  <rjones@redhat.com>

	Partially revert "generator: Fix unescaped '<' and '>' in api descriptions"
	Don't escape < and > in verbatim sections.

	This partially reverts commit 09a4e7664b59789f90b6674f640f9d688e4f8b43.

2012-03-28  Hilko Bengen  <bengen@hilluzination.de>

	Fix out-of-tree build for GObject bindings
	guestfs-gobject.h (in the source directory) was not found.

	In file included from <stdin>:4:0:
	/path/to/libguestfs/gobject/guestfs-gobject.h:23:37: fatal error: guestfs-gobject-session.h: No such file or directory
	compilation terminated.
	Error while processing the source.
	make[2]: *** [Guestfs-1.0.gir] Error 1

2012-03-28  Hilko Bengen  <bengen@hilluzination.de>

	Fix out-of-tree build for Java bindings

	Fix out-of-tree build for appliance

2012-03-28  Matthew Booth  <mbooth@redhat.com>

	gobject: Remove gtk-doc from TODO

2012-03-28  Matthew Booth  <mbooth@redhat.com>

	gobject: Split sources into 1 file per class
	This greatly improves the usability of the generated gtk-doc.

	Although there is a lot of churn in generator_gobject.ml, this is almost
	exclusively code motion.

2012-03-28  Matthew Booth  <mbooth@redhat.com>

	gobject: Add gtk-doc for GuestfsSession and GuestfsSessionClass

	gobject: Add gtk-doc field descriptions for generated structs

	gobject: Add gtk-doc for optarg wrapper classes

	gobject: Drop references to Guestfs::<foo> in comments

	gobject: Handle various problem content in gtk-doc API descriptions
	Produce better gtk-doc for:
	* URLs
	* RHBZ# references
	* CVE references
	* API cross-references
	* Parameter references
	* Escaped characters

	gobject: Add basic gtk-doc for all parameters

	gobject: Add basic gtk-doc for properties

	gobject: gtk-doc SECTION must be named after a source file

	gobject: Include explicit types for all parameters

	gobject: Add infrastructure to build gtk-doc

2012-03-28  Richard Jones  <rjones@redhat.com>

	java: Delete target file before running javah.
	javah from old GNU classpath won't overwrite the target *.h file,
	instead leaving the old one which results in a predictable build
	failure.  Delete the target so this won't happen.

	fish: Fix compilation when libconfig is not available.

	Don't provoke -Wstrict-overflow warning from map_app_md_devices function.
	Unclear if this is a real bug or not.

	Work around -Wstrict-overflow warning on gcc 4.5.1.

	m4: Update .gitignore for old Fedora.

	configure: Don't fail if GOBJECT_INTROSPECTION_CHECK is not defined.

2012-03-27  Richard W.M. Jones  <rjones@redhat.com>

	tests: Don't include internal guestfs header in tests.

	generator: Allow functions with no requires args, and with some optional args.
	Previously the generator disallowed such functions.

	Ignore guestfs.pyo.
	This fixes commit e8ef35df267de6fd6308d0c49a6bdef41113cf19.

2012-03-27  Matthew Booth  <mbooth@redhat.com>

	Only ignore guestfs.* at the top level
	The guestfs.* rule appears to be for temporary appliance directories, which are
	only at the top level. It was matching more than that.

	generator: Remove doc reference to non-existent guestfs_inotify_watch_all

	generator: Fix unescaped '<' and '>' in api descriptions

2012-03-26  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Fix documentation for call to virt-filesystems.
	virt-filesystems requires -a/-d option.

2012-03-25  Richard W.M. Jones  <rjones@redhat.com>

	df: Avoid a compilation error if libxml2 is not available.
	virt_df-domains.o: In function `add_domain':
	/home/feeliwood/Downloads/libguestfs-1.17.21/df/domains.c:274: undefined reference to `guestfs___for_each_disk'

	guestfs___for_each_disk is only available when libvirt _and_ libxml2
	dependencies are available at compile time.

	Thanks Tho Huynh.

2012-03-25  Richard W.M. Jones  <rjones@redhat.com>

	Revert "ruby: Replace deprecated rdoc/task and rake/gempackagetask."
	This reverts commit fd7a5a8bbdc69b9d2a92f6d05ac555334d0516bf.

	This breaks Ruby 1.8.7 in Fedora 16.

2012-03-22  Richard W.M. Jones  <rjones@redhat.com>

	Remove references to obsolete directory appliance/debian.
	This directory has not existed for a long time.

	Remove debian/ subdirectory.

2012-03-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.21.

	filesystems: Implement parents of MD and VG devices (RHBZ#805070).

2012-03-20  Richard W.M. Jones  <rjones@redhat.com>

	filesystems: Allow the parents column to contain multiple parents.
	A list of parents is passed for this column.

	This column is rendered as an (internally) comma-separated list.

2012-03-20  Richard W.M. Jones  <rjones@redhat.com>

	New API: md-stat.
	This returns information about the underlying devices of an MD
	(software RAID) device.

	generator: Generate a .gitignore file specifically for java structs.

	daemon: Set last errno to ENOTSUP when APIs are not available.

	daemon: Add reply_with_error_errno function.
	This function allows you to pass an explicit errno back to the
	library.  reply_with_error is redefined as a macro that calls
	reply_with_error_errno with errno == 0.

2012-03-20  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Set last errno to ENOTSUP when inspection APIs are not available.
	Previously there was no programmatic way to tell if inspection APIs
	were unavailable because they are not compiled in (because hivex isn't
	around).  This contrasts with daemon APIs where the availability is
	covered by the guestfs_available API.

	Change the inspection APIs so that when they are not available, the
	last errno is set to ENOTSUP.  (Note that ENOTSUP must be defined on
	all POSIX platforms).

	This allows programs to detect if they are using a version of
	libguestfs that was compiled without support for inspection, without
	having to parse error messages.

2012-03-20  Richard W.M. Jones  <rjones@redhat.com>

	todo: Document proposed attach-method fd:N

2012-03-19  Richard W.M. Jones  <rjones@redhat.com>

	po-docs: Rename LINGUAS -> linguas (RHBZ#804464).

2012-03-17  Richard W.M. Jones  <rjones@redhat.com>

	Make HTML from libguestfs-test-tool man page.

	Version 1.17.20.

	New API: vgmeta: Download volume group metadata.

	appliance: Add a tool to make fixed appliances.

2012-03-16  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Replace deprecated rdoc/task and rake/gempackagetask.

	todo: Suggestion for virt-sysprep.

	Version 1.17.19.

	generator: Sort camel-case structs.

	New APIs: isoinfo and isoinfo-device.
	Get ISO primary volume descriptor information for either ISO devices
	or ISO files.

	appliance: Include genisoimage in the appliance.
	This is mainly useful for the 'isoinfo' tool, but 'genisoimage'
	itself may be interesting to have in future.

	generator: Fix CompareWithString test.
	This type of test was not used, and in fact the generated test
	simply didn't work.

	generator: Fix FUInt{32,64} struct field types.
	We were not using an unsigned type in the XDR.  This doesn't
	affect data integrity or the protocol, but it makes it more
	complicated for the daemon to set these fields.

	daemon: Don't call reply_with_* after split_lines fails.
	split_lines already sets reply_with_*, so calling it again would lose
	protocol synchronization.

	inspect: Fedora/RHEL CDs are multipart if totaldiscs > 1, not > 0.

	inspect: Parse isolinux menu title from RHEL 6.2 Live CD.

	inspect: Add comment documenting findings of RHEL 5, 6 install CDs.

2012-03-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.18.

	todo: Document further virt-sparsify improvements.

	sparsify: Implement --zero option.
	This unconditionally zeroes the named partition or filesystem.

	sparsify: Add a note about encrypted disks to the man page.

	sparsify: Unlink temporary overlay file if user presses ^C.
	Add a signal handler so this potentially large temporary file
	is removed when the user hits ^C.

	sparsify: Support sparsifying Linux swap partitions.

	sparsify: Use zero-device instead of dd if=/dev/zero to zero device.
	zero-device is more efficient in general, and avoids writing to blocks
	which are already zero.

	Use the new lvcreate-free API to create largest possible LVs.

	New API: lvcreate-free: Create logical volume as % of free space.

	sparsify: Use new zero_free_space API.

2012-03-15  Richard W.M. Jones  <rjones@redhat.com>

	New API: zero_free_space: zero free space in a filesystem.
	Add an API for doing what virt-sparsify was doing: freeing up free
	space in a filesystem.

	The current implementation is simple-minded: we create a file, fill it
	with zeroes until we run out of space, then delete the file.  However
	the description leaves it open to do a better implementation, eg.
	using sparsification support that is currently being worked on in ext4
	and qemu.

	The implementation also sends progress notifications, which is an
	advantage over the old 'dd' method.

2012-03-15  Richard W.M. Jones  <rjones@redhat.com>

	sparsify: Only print qemu-img command if verbose.

	inspect: Ignore missing HKLM\SYSTEM\MountedDevices (RHBZ#803664).
	When a Windows guest doesn't have a HKLM\SYSTEM\MountedDevices node,
	inspection fails.  However inspection should not completely fail just
	because we cannot get the drive letter mapping from a guest.

2012-03-14  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Update man page to describe how to access inspection info from other languages and guestfish.

	Add guestfsd.suppressions file to EXTRA_DIST.

	Version 1.17.17.

2012-03-14  Richard W.M. Jones  <rjones@redhat.com>

	Use O_CLOEXEC / SOCK_CLOEXEC for almost all file descriptors.
	The presumption is that all file descriptors should be created with
	the close-on-exec flag set.  The only exception are file descriptors
	that we want passed through to exec'd subprocesses (mainly pipes and
	stdin/stdout/stderr).

	For open calls, we pass O_CLOEXEC as an extra flag, eg:

	  fd = open ("foo", O_RDONLY|O_CLOEXEC);

	This is a Linux-ism, but using a macro we can easily make it portable.

	For sockets, similarly:

	  sock = socket (..., SOCK_STREAM|SOCK_CLOEXEC, ...);

	For accepted sockets, we use the Linux accept4 system call which
	allows flags to be supplied, but we use the Gnulib 'accept4' module to
	make this portable.

	For dup, dup2, we use the Linux dup3 system call, and the Gnulib
	modules 'dup3' and 'cloexec'.

2012-03-14  Richard W.M. Jones  <rjones@redhat.com>

	java: Make sure generator is rerun when necessary to rebuild generated files.

	java: Enable -Xlint:all and fix all warnings.

	todo: More ongoing code cleanups.

	appliance: Enhance --enable-valgrind-daemon with a suppressions file.
	This lets us suppress errors in system libraries.

	daemon: When copy subprocess fails, print return code.
	Useful for debugging.

	todo: Document ongoing code cleanups.

	daemon: labels: Memory leak in 'set_label'.
	This fixes commit d1711dae9dbd7f516469f88807604894c1304228.

2012-03-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.16.

	Replace 'int' with 'size_t' passim.
	Analyze all uses of 'int' in the code, and replace with 'size_t' where
	appropriate.

2012-03-13  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Implement a growable strings buffer type.
	Previously a lot of daemon code used three variables (a string list,
	'int size' and 'int alloc') to track growable strings buffers.  This
	commit implements a simple struct containing the same variables, but
	using size_t instead of int:

	  struct stringsbuf {
	    char **argv;
	    size_t size;
	    size_t alloc;
	  };

	Use it like this:

	  DECLARE_STRINGSBUF (ret);
	//...
	  if (add_string (&ret, str) == -1)
	    return NULL;
	//...
	  if (end_stringsbuf (&ret) == -1)
	    return NULL;
	  return ret.argv;

2012-03-12  Richard W.M. Jones  <rjones@redhat.com>

	Fix strict-overflow bugs and reenable this warning.
	In two places, we were counting things in an array using an 'int'.  In
	theory, the int could overflow, so gcc determines this to be undefined
	behaviour.

	The fix is to use size_t or ssize_t instead.

2012-03-12  Richard W.M. Jones  <rjones@redhat.com>

	fish: remote: Output from close event now passed over stdout (RHBZ#802389).

	fish: remote: Make sure global cleanups are called for guestfish --listen.
	Return to the main program ('fish.c') and perform global cleanups when
	the guestfish remote server exits.

	fish: remote: Move close_stdout just before accept() call.
	This is just code motion.

2012-03-12  Richard W.M. Jones  <rjones@redhat.com>

	fish: Rename tests and make test paths relative.
	When these tests were originally in the old regressions/ directory,
	they used to refer to guestfish via the path '../fish/guestfish'.
	Some of the tests were also called 'test-guestfish-*'.

	Now that the tests have been moved into the fish/ directory, neither
	of these things make sense.  So change the relative path to
	'./guestfish' and rename all 'test-guestfish-*' as 'test-*'.

2012-03-12  Richard W.M. Jones  <rjones@redhat.com>

	tests: Remove/fix unused variables warnings.

	Version 1.17.15.

	tests: Remove unused variable.

	configure: Enable more warnings, and some cleanup.
	However -Wstrict-overflow is still disabled, see:
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52560

	erlang: Remove unused variables.

	format: Remove unused variables.

	daemon: Remove unused variables.

	inspect: Move variable decl to top of function.

	inspect: Use 1/0 instead of true/false, and fix a bug in UUID parsing.
	UUID parsing returned 'false' (ie. 0 == OK) when the UUID contained
	illegal characters.  Now it returns -1 == failure.

	lib: Remove some unused variables.

	lib: Use size_t instead of int for array iterator.

	inspect: Use uint64_t for maximum file size in bytes.

	lib: Use size_t for allocation size in safe realloc function.

	bindtests: Use size_t instead of int for array iterators.

2012-03-11  Richard W.M. Jones  <rjones@redhat.com>

	Coalesce printable characters in debug and trace messages (RHBZ#802109).

2012-03-09  Richard W.M. Jones  <rjones@redhat.com>

	Document error message from resize2fs (RHBZ#755729, RHBZ#801640).

	resize2fs: Run 'e2fsck -f' automatically if filesystem is not mounted.

	e2fsck: Comment, whitespace, error message cleanups.

	Mark e2fsck-f as deprecated, replaced by e2fsck API.

	Revert "ext2: tweak the error returned message of resize2fs-M(BZ755729)"
	This reverts commit 0eaf06e673833bc25673d5c3d2487fffae310285.

	Version 1.17.14.

	example: Copying a directory between two guests using threads.

2012-03-09  Richard W.M. Jones  <rjones@redhat.com>

	Close all file descriptors and remove all signal handlers in the recovery process.
	If the parent process uses a pipe (or any fd, but pipes are a
	particular problem), then the recovery process would hold open the
	file descriptor(s) of the pipe, meaning that it could not be fully
	closed in the parent.  Because the recovery process doesn't use
	exec(2), this wasn't avoidable even using FD_CLOEXEC.

	Avoid this by closing all file descriptors when starting the recovery
	process.

	After discussion with Dan Berrange, he points out that it's also a
	good idea to set signal handlers to the default after forking, so that
	any signal handlers set up in the parent don't affect the child.

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Export LIBVIRT_DEFAULT_URI to pick-guests.pl.
	This fixes commit 2912e4e1173226f461517a0008664e01b5d3066d.

	Version 1.17.13.

	extra-tests: Check that guests are accessible before picking them.

	fish: Document that guestfish sets pgroup to true (RHBZ#801273).

	inspect_apps: Avoid double-close on error path (found by Coverity) (RHBZ#801298).
	Error: USE_AFTER_FREE:
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect_apps.c:392: freed_arg: "fclose" frees "fp".
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect_apps.c:404: deref_arg: Calling "fclose" dereferences freed pointer "fp".

	dbdump: Avoid double-close on error path (found by Coverity).
	Error: USE_AFTER_FREE:
	/builddir/build/BUILD/libguestfs-1.16.5/src/dbdump.c:132: freed_arg: "pclose" frees "pp".
	/builddir/build/BUILD/libguestfs-1.16.5/src/dbdump.c:142: deref_arg: Calling "pclose" dereferences freed pointer "pp".

	daemon: glob: Initialize glob buffer (quiet Coverity warning).
	Error: UNINIT:
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:32: var_decl: Declaring variable "buf" without initializer.
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:36: uninit_use_in_call: Using uninitialized value "buf.gl_offs" when calling "rpl_glob".
	/builddir/build/BUILD/libguestfs-1.16.5/gnulib/lib/glob.c:557: read_parm_fld: Reading a parameter field.
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:36: uninit_use_in_call: Using uninitialized value "buf.gl_pathc" when calling "rpl_glob".
	/builddir/build/BUILD/libguestfs-1.16.5/gnulib/lib/glob.c:557: read_parm_fld: Reading a parameter field.

	comment: Note time-of-check to time-of-use race found by Coverity.

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: inotify: Check event->len in inotify struct is reasonable.
	The Coverity error is this (which I think is wrong):

	Error: TAINTED_SCALAR:
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:211: tainted_data_argument: Calling function "read" taints argument "inotify_buf".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:232: var_assign_var: Assigning: "event" = "(struct inotify_event *)&inotify_buf[n]". Both are now tainted.
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:258: lower_bounds: Checking lower bounds of unsigned scalar "event->len" by "event->len > 0U".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:272: var_assign_var: Compound assignment involving tainted variable "16UL + event->len" to variable "n" taints "n".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:228: lower_bounds: Checking lower bounds of unsigned scalar "n" by "n < inotify_posn".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:281: tainted_data: Using tainted variable "n" as an index into an array "inotify_buf".

	Adding a sanity check of event->len is prudent.

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: debug: Close fd along error path (found by Coverity).
	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:469: open_fn: Calling opening function "open".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:469: var_assign: Assigning: "fd" =  handle returned from "open("/proc/sys/kernel/core_pattern", 1)".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:474: noescape: Variable "fd" is not closed or saved in function "write".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:476: leaked_handle: Handle variable "fd" going out of scope leaks the handle.

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	fish: Properly free up strings, lists along all error paths (found by Coverity).
	This also includes some tidying up of the generated code.

	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13254: alloc_fn: Calling allocation function "parse_string_list".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/fish.c:1386: alloc_fn: Storage is returned from allocation function "realloc".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/fish.c:1386: var_assign: Assigning: "argv_new" = "realloc(argv, 8UL * argv_len)".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/fish.c:1392: var_assign: Assigning: "argv" = "argv_new".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/fish.c:1396: return_alloc: Returning allocated memory "argv".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13254: var_assign: Assigning: "devices" =  storage returned from "parse_string_list(argv[i++])".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13271: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13288: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13293: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13311: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13316: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13334: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13349: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/cmds.c:13355: leaked_storage: Variable "devices" going out of scope leaks the storage it points to.

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: proto: Close fd along error paths (found by Coverity).
	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:894: open_fn: Calling opening function "open".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:894: var_assign: Assigning: "fd" =  handle returned from "open(filename, 0)".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:903: noescape: Variable "fd" is not closed or saved in function "read".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:911: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:918: leaked_handle: Handle variable "fd" going out of scope leaks the handle.

	daemon: upload: Close fd along error path (found by Coverity).
	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:225: open_fn: Calling opening function "open".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:225: var_assign: Assigning: "fd" =  handle returned from "open(filename, 0)".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:233: noescape: Variable "fd" is not closed or saved in function "lseek".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:235: leaked_handle: Handle variable "fd" going out of scope leaks the handle.

	daemon: 9p: Close fd along error paths (found by Coverity).
	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:130: open_fn: Calling opening function "open".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:130: var_assign: Assigning: "fd" =  handle returned from "open(filename, 0)".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:142: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:149: noescape: Variable "fd" is not closed or saved in function "read".
	/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:153: leaked_handle: Handle variable "fd" going out of scope leaks the handle.

	proto: Close file along error and cancel paths (found by Coverity).
	Error: RESOURCE_LEAK:
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:1125: open_fn: Calling opening function "open".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:1125: var_assign: Assigning: "fd" =  handle returned from "open(filename, 833, 438)".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:1133: noescape: Variable "fd" is not closed or saved in function "xwrite".
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:1146: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
	/builddir/build/BUILD/libguestfs-1.16.5/src/proto.c:1173: leaked_handle: Handle variable "fd" going out of scope leaks the handle.

	Check return values of guestfs_inspect_get_{type,distro} (found by Coverity).
	Error: NULL_RETURNS:
	/builddir/build/BUILD/libguestfs-1.16.5/examples/virt-dhcp-address.c:129: var_assigned: Assigning: "guest_distro" = null return value from "guestfs_inspect_get_distro".
	/builddir/build/BUILD/libguestfs-1.16.5/examples/virt-dhcp-address.c:131: dereference: Dereferencing a pointer that might be null "guest_distro" when calling "__coverity_strcmp".
	[...]
	/builddir/build/BUILD/libguestfs-1.16.5/examples/virt-dhcp-address.c:126: var_assigned: Assigning: "guest_type" = null return value from "guestfs_inspect_get_type".
	/builddir/build/BUILD/libguestfs-1.16.5/examples/virt-dhcp-address.c:128: dereference: Dereferencing a pointer that might be null "guest_type" when calling "__coverity_strcmp".

	Check return values from calloc (found by Coverity).
	Error: NULL_RETURNS:
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:417: returned_null: Function "calloc" returns null (checked 67 out of 81 times).
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:417: var_assigned: Assigning: "ret" = null return value from "calloc".
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:418: dereference: Dereferencing a null pointer "ret".
	[...]
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:374: returned_null: Function "calloc" returns null (checked 67 out of 81 times).
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:374: var_assigned: Assigning: "ret" = null return value from "calloc".
	/builddir/build/BUILD/libguestfs-1.16.5/src/inspect.c:375: dereference: Dereferencing a null pointer "ret".

	Dead code: Remove comma-check in first if-clause (found by Coverity).
	Error: DEADCODE:
	/builddir/build/BUILD/libguestfs-1.16.5/fish/event-names.c:65: dead_error_condition: On this path, the condition "comma" cannot be true.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/event-names.c:57: const: After this line, the value of "comma" is equal to 0.
	/builddir/build/BUILD/libguestfs-1.16.5/fish/event-names.c:57: assignment: Assigning: "comma" = "0".
	/builddir/build/BUILD/libguestfs-1.16.5/fish/event-names.c:65: dead_error_line: Execution cannot reach this statement "fputc(44, fp);".

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	Dead code: 'lvs' cannot be true here (found by Coverity).
	Remove dead code; however only comment it out since if we change the
	preceeding code we may need this line again.

	Error: DEADCODE:
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:107: dead_error_condition: On this path, the condition "lvs" cannot be true.
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:54: const: After this line, the value of "lvs" is equal to 0.
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:91: const: After this line, the value of "lvs" is equal to 0.
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:54: assignment: Assigning: "lvs" = "NULL".
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:91: new_values: Noticing condition "lvs == NULL".
	/builddir/build/BUILD/libguestfs-1.16.5/src/listfs.c:107: dead_error_line: Execution cannot reach this statement "guestfs___free_string_list(...".

2012-03-08  Richard W.M. Jones  <rjones@redhat.com>

	Ignore return values from some functions in guestfs_close (Coverity warning).
	Error: CHECKED_RETURN:
	/builddir/build/BUILD/libguestfs-1.16.5/java/com_redhat_et_libguestfs_GuestFS.c:9552: example_assign: Assigning: "r" = return value from "guestfs_internal_autosync(g)".
	/builddir/build/BUILD/libguestfs-1.16.5/java/com_redhat_et_libguestfs_GuestFS.c:9555: example_checked: "r" has its value checked in "r == -1".
	/builddir/build/BUILD/libguestfs-1.16.5/ocaml/guestfs_c_actions.c:5584: example_assign: Assigning: "r" = return value from "guestfs_internal_autosync(g)".
	/builddir/build/BUILD/libguestfs-1.16.5/ocaml/guestfs_c_actions.c:5586: example_checked: "r" has its value checked in "r == -1".
	/builddir/build/BUILD/libguestfs-1.16.5/perl/Guestfs.xs:5990: example_assign: Assigning: "r" = return value from "guestfs_internal_autosync(g)".
	/builddir/build/BUILD/libguestfs-1.16.5/perl/Guestfs.xs:5991: example_checked: "r" has its value checked in "r == -1".
	/builddir/build/BUILD/libguestfs-1.16.5/python/guestfs-py.c:13702: example_assign: Assigning: "r" = return value from "guestfs_internal_autosync(g)".
	/builddir/build/BUILD/libguestfs-1.16.5/python/guestfs-py.c:13707: example_checked: "r" has its value checked in "r == -1".
	/builddir/build/BUILD/libguestfs-1.16.5/ruby/ext/guestfs/_guestfs.c:16000: example_assign: Assigning: "r" = return value from "guestfs_internal_autosync(g)".
	/builddir/build/BUILD/libguestfs-1.16.5/ruby/ext/guestfs/_guestfs.c:16001: example_checked: "r" has its value checked in "r == -1".
	/builddir/build/BUILD/libguestfs-1.16.5/src/guestfs.c:191: check_return: Calling function "guestfs_internal_autosync" without checking return value (as is done elsewhere 5 out of 6 times).
	/builddir/build/BUILD/libguestfs-1.16.5/src/guestfs.c:191: unchecked_value: No check of the return value of "guestfs_internal_autosync(g)".

	tests/md: Number the errors so we can easily see which test fails.

	Update translations from Transifex.

2012-03-07  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	dist: Distribute all tests, even when configured with --disable-appliance.

	Version 1.17.12.

	inspection: Add detection of FreeDOS install CDs (RHBZ#786188).

	inspection: Add detection of FreeDOS (RHBZ#786215).
	FreeDOS is returned as type="dos", distro="freedos".  No version or
	application information is returned at present.

	Add 'display_icon' example program.
	Running this on a disk image displays the guest icon
	(using external 'display' program).

	Comment change.

	Hide stderr of bmptopng.
	This program is noisy on stderr.  Send that to /dev/null.

2012-03-07  Richard W.M. Jones  <rjones@redhat.com>

	build: Make netpbm and icoutils into proper optional dependencies.
	Netpbm and icoutils (wrestool) have always been dependencies.  Since
	they are not always present, make these into optional dependencies
	(which they were, sort of, before).

	Also document these dependencies in the README file.

2012-03-07  Richard W.M. Jones  <rjones@redhat.com>

	Add support for Buildroot and Cirros distributions.

	Whitespace change.

2012-03-06  Matthew Booth  <mbooth@redhat.com>

	gobject: Update TODO with details of inspect_get_type fix

2012-03-05  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.11.

	Remove ConfigOnly flag from set-autosync.
	guestfs_set_autosync sets a flag which affects guestfs_close, and so
	this call can be made at any time before the handle is closed, not
	just in the config state.

2012-03-04  Richard W.M. Jones  <rjones@redhat.com>

	Test header file under C++.

2012-03-04  Marcin Gibula  <m.gibula@e24cloud.com>

	Make "template" a reserved word.
	Function guestfs_mkdtemp uses c++ keyword "template" as a parameter
	name. In result, attempt to use guestfs.h header in c++ program
	results in compile error.

2012-03-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.10.

	ruby: Use RbConfig instead of Config.
	I have checked, and this works with Ruby 1.8 as well.

2012-03-03  Richard W.M. Jones  <rjones@redhat.com>

	Add a 'fixed' style of appliance.
	This is just the 'kernel', 'initrd' and 'root' files, copied from one
	machine to another, along with a 'README.fixed' file which is also
	used for identification.

	This allows the appliance to be copied from one machine to another,
	making it easier for us to distribute a starter appliance for people
	who cannot get febootstrap or appliance-building working.

2012-03-03  Richard W.M. Jones  <rjones@redhat.com>

	Rebrand 'ordinary appliance' as 'old-style appliance'.
	This is just code motion.

2012-03-01  Nikos Skalkotos  <skalkoto@gmail.com>

	Test fails in arch linux
	--20cf303ea4a84a7a7c04ba331375
	Content-Type: text/plain; charset=ISO-8859-1

	Hello Richard,

	I found what the problem was and the udev symlinks where not created. The
	init script in the appliance uses a full paths for udevadm (/sbin/udevadm)
	which in my case was wrong. In Arch Linux udevadm is hosted under /usr/bin,
	not /sbin. When I fixed this, libguestfs was able to communicate with the
	appliance VM.

	Since PATH variable is defined and exported in init, there is no need in
	using full paths for external programs. As far as I've seen this affects
	all the git branches in libguestfs's repository. Please find attached a
	patch for the master branch.

	Nikos Skalkotos,
	Athens, Greece

	On 24 February 2012 10:25, Richard W.M. Jones <rjones@redhat.com> wrote:

	> On Thu, Feb 23, 2012 at 08:50:12PM +0200, Nikos Skalkotos wrote:
	> [...]
	>
	> I don't know specifically why it fails with ArchLinux, but the problem
	> is caused by the /dev/virtio-ports/* symlinks not getting created by
	> udev.
	>
	> /dev/vport0p1 exists:
	>
	> > crw------- 1 root root 252,   1 Feb 23 18:17 vport0p1
	>
	> but udev doesn't make the corresponding /dev/virtio-ports symlink:
	>
	> > /dev/virtio-ports/org.libguestfs.channel.0: No such file or directory
	>
	> The symlink is supposed to be created by this udev rule:
	>
	> /lib/udev/rules.d/50-udev-default.rules:KERNEL=="vport*",
	> ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
	>
	> So I'd start by looking to see if that rule exists in the udev rules
	> that Arch is using.  Secondly if it does exist, is the corresponding
	> *.rules being copied into the appliance?  (Check appliance/supermin.d/
	> hostfiles)
	>
	> In an old Ubuntu that has udev that predates having this rule, we add
	> the following patch:
	>
	>
	> http://libguestfs.org/download/binaries/ubuntu1004-packages/0002-ubuntu-10.04-Use-dev-vport0p1.patch
	>
	> Rich.
	>
	> --
	> Richard Jones, Virtualization Group, Red Hat
	> http://people.redhat.com/~rjones
	> virt-p2v converts physical machines to virtual machines.  Boot with a
	> live CD or over the network (PXE) and turn machines into Xen guests.
	> http://et.redhat.com/~rjones/virt-p2v
	>

	Hello Richard,<br><br>I found what the problem was and the udev symlinks where not created. The init script in the appliance uses a full paths for udevadm (/sbin/udevadm) which in my case was wrong. In Arch Linux udevadm is hosted under /usr/bin, not /sbin. When I fixed this, libguestfs was able to communicate with the appliance VM.<br>
	<br>Since PATH variable is defined and exported in init, there is no need in using full paths for external programs. As far as I&#39;ve seen this affects all the git branches in libguestfs&#39;s repository. Please find attached a patch for the master branch.<br>
	<br>Nikos Skalkotos,<br>Athens, Greece<br><br><div class="gmail_quote">On 24 February 2012 10:25, Richard W.M. Jones <span dir="ltr">&lt;<a href="mailto:rjones@redhat.com">rjones@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
	On Thu, Feb 23, 2012 at 08:50:12PM +0200, Nikos Skalkotos wrote:<br>
	[...]<br>
	<br>
	I don&#39;t know specifically why it fails with ArchLinux, but the problem<br>
	is caused by the /dev/virtio-ports/* symlinks not getting created by<br>
	udev.<br>
	<br>
	/dev/vport0p1 exists:<br>
	<div class="im"><br>
	&gt; crw------- 1 root root 252,   1 Feb 23 18:17 vport0p1<br>
	<br>
	</div>but udev doesn&#39;t make the corresponding /dev/virtio-ports symlink:<br>
	<div class="im"><br>
	&gt; /dev/virtio-ports/org.libguestfs.channel.0: No such file or directory<br>
	<br>
	</div>The symlink is supposed to be created by this udev rule:<br>
	<br>
	/lib/udev/rules.d/50-udev-default.rules:KERNEL==&quot;vport*&quot;, ATTR{name}==&quot;?*&quot;, SYMLINK+=&quot;virtio-ports/$attr{name}&quot;<br>
	<br>
	So I&#39;d start by looking to see if that rule exists in the udev rules<br>
	that Arch is using.  Secondly if it does exist, is the corresponding<br>
	*.rules being copied into the appliance?  (Check appliance/supermin.d/<br>
	hostfiles)<br>
	<br>
	In an old Ubuntu that has udev that predates having this rule, we add<br>
	the following patch:<br>
	<br>
	<a href="http://libguestfs.org/download/binaries/ubuntu1004-packages/0002-ubuntu-10.04-Use-dev-vport0p1.patch" target="_blank">http://libguestfs.org/download/binaries/ubuntu1004-packages/0002-ubuntu-10.04-Use-dev-vport0p1.patch</a><br>

	<br>
	Rich.<br>
	<span class="HOEnZb"><font color="#888888"><br>
	--<br>
	Richard Jones, Virtualization Group, Red Hat <a href="http://people.redhat.com/%7Erjones%0Avirt-p2v" target="_blank">http://people.redhat.com/~rjones<br>
	virt-p2v</a> converts physical machines to virtual machines.  Boot with a<br>
	live CD or over the network (PXE) and turn machines into Xen guests.<br>
	<a href="http://et.redhat.com/%7Erjones/virt-p2v" target="_blank">http://et.redhat.com/~rjones/virt-p2v</a><br>
	</font></span></blockquote></div><br>

2012-02-29  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	virt-sysprep: add the hostname and net_hwaddr support for rhel
	Add the support for rhel.
	Change the hostname and delete the HWADDR for rhel.

2012-02-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.9.

	resize: Fix --output-format flag (RHBZ#798196).
	Update the test to use the --format and --output-format flags.

2012-02-27  Richard W.M. Jones  <rjones@redhat.com>

	resize: Document steps to avoid UNMOUNTABLE_BOOT_VOLUME BSOD (RHBZ#797986).
	(Thanks Grant Williamson for finding and fixing this problem)

2012-02-27  Richard W.M. Jones  <rjones@redhat.com>

	New API: set-label, for setting a label on any filesystem.
	Currently only ext2/3/4 and (newly) NTFS are supported.

	This change also deprecates set-e2label.

2012-02-27  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: ntfsclone-in, ntfsclone-out.

	New API: ntfsfix for fixing problems on NTFS.
	Note this is not a "chkdsk" equivalent tool.

	Update TODO.

2012-02-25  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	set-smp: limit the number of cpus below 255
	Limit the number of cpus below 255, since qemu can't support.

2012-02-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	Add a flag to make some functions called only at CONFIG state (RHBZ#796520).
	Add a flag "ConfigOnly" to make sure that some non-daemon functions
	should be called only at CONFIG state (RHBZ#796520).

2012-02-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.8.

	sysprep: Try unmounting the filesystem a few times when busy.
	tracker-miner-fs jumps into newly mounted filesystems.  This prevents
	the filesystem from being unmounted, so retry a few times.

2012-02-15  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Make appliance building thread-safe (RHBZ#790721).
	Appliance building can be called from multiple processes, but this is
	only safe if each process holds a lock on the 'checksum' file.
	However threads within a process are not excluded by a file lock, and
	so this strategy completely failed for a multithreaded program calling
	guestfs_launch in parallel.

	Since it makes no sense for threads in a single program to race each
	other to try to create the appliance, add a lock around appliance
	building.

	This serialises building the appliance, but the rest of guestfs_launch
	(eg. starting up qemu) can run in parallel.

2012-02-15  Richard W.M. Jones  <rjones@redhat.com>

	tests: Test parallel launch from multiple threads.

	test-user-cancel: Add \n to fprintf error messages.

2012-02-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.7.

	tests: Add a regression test for RHBZ#789960.
	Test all the ways that the 'mount' command can fail.  Ensure that none
	of them result in failures or desynchronization.

2012-02-13  Richard W.M. Jones  <rjones@redhat.com>

	regressions: One test is not being run.
	rhbz727178.sh exists, but historically was never added to the list of
	tests, so it doesn't run.  Create a special variable for this test and
	ensure it is added to EXTRA_DIST.

	Test was originally added in
	commit d7356a2801130907997acd5c7502e8417566e782.

2012-02-13  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Return error properly when user tries to mount appliance root (RHBZ#789960).
	In the case where the caller attempts to mount the "hidden"
	appliance root device (eg. /dev/vdb if /dev/vda is the only
	normal block device added), we were calling reply_with_error
	but not actually returning immediately, resulting in protocol
	desynchronization.

	This commit fixes this obvious mistake.

2012-02-13  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Don't xdr_free uninitialized args struct on error paths.
	For stubs of functions that had arguments, code did this:

	static void
	mount_stub (XDR *xdr_in)
	{
	  int r;
	  struct guestfs_mount_args args;

	  if (optargs_bitmask != 0) {
	    //...
	    goto done;
	  }
	  // possibly other tests here

	  memset (&args, 0, sizeof args);

	  [...]

	done:
	  xdr_free ((xdrproc_t) xdr_guestfs_mount_args, (char *) &args);
	  return;
	}

	This caused xdr_free to be called on uninitialized 'args' struct,
	causing a segfault.

	The fix is to add another label, so the code looks like:

	static void
	mount_stub (XDR *xdr_in)
	{
	  int r;
	  struct guestfs_mount_args args;

	  if (optargs_bitmask != 0) {
	    //...
	    goto done_no_free;
	  }
	  // possibly other tests here

	  memset (&args, 0, sizeof args);

	  [...]

	done:
	  xdr_free ((xdrproc_t) xdr_guestfs_mount_args, (char *) &args);
	done_no_free:
	  return;
	}

	This fixes commit 330fbea5b2d6bd7db84f7ea7afe87cf1bcd438e0
	and commit 0344248af55802bbbd816b349ec1ba9305996f6e.

2012-02-12  Hilko Bengen  <bengen@hilluzination.de>

	Do not run test-virt-format.sh if appliance has not been built

2012-02-10  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.6.

	virt-format: Add a test.

	fish: edit: Preserve permissions, UID, GID, SELinux context when editing files (RHBZ#788641).

2012-02-10  Richard W.M. Jones  <rjones@redhat.com>

	fish: In edit command, upload to a new file.
	If the upload fails, this means we don't leave a partially
	written file.

	Also add a test for the edit command.

2012-02-10  Richard W.M. Jones  <rjones@redhat.com>

	fish: Refactor error handling in the 'edit' command.
	This is just code motion.

	wipefs: Fix documentation.
	This fixes commit a2b3e0900ee14e5a49d526c24e22edefc3030f99.

	ocaml: Ensure bindings are recompiled whenever there is an API change.

	wipefs: Include "optgroups.h".
	This fixes commit a2b3e0900ee14e5a49d526c24e22edefc3030f99.

2012-02-10  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	virt-format: erase the filesystem signatures before erase partitions
	erase the filesystem signatures on each device, then erase
	the partitions, avoid to list all the partitions here.

	NEW API: add a new api wipefs
	Add the new api wipefs to erase the filesystem signatures
	on a device but now erase any data.

2012-02-09  Richard W.M. Jones  <rjones@redhat.com>

	docs: Note that JRuby should use the Java bindings.

	New API: llz: This runs ls -laZ and is useful for showing SELinux contexts.

	edit: Preserve file permissions, UID, GID, SELinux context on edited files. (RHBZ#788641)

2012-02-08  Hilko Bengen  <bengen@hilluzination.de>

	java: Make use of JAR_INSTALL_DIR, JNI_INSTALL_DIR

2012-02-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.5.

	findfs: Remove /run/blkid/blkid.tab.
	See this util-linux commit:
	https://github.com/karelzak/util-linux/commit/b82590ad46acf9fe8d332b53875e24c3c31e2482

	extra-tests: Add suppression for uninitialized memory bug in latest glibc.

	extra-tests: libnl moved from /lib64 to /usr/lib64 on Fedora.
	Update suppressions file to match.

2012-02-07  Richard W.M. Jones  <rjones@redhat.com>

	perl: Ignore perl/MYMETA.json

2012-02-06  Richard W.M. Jones  <rjones@redhat.com>

	blockdev, parted: Call udev_settle before and after commands. (RHBZ#769304)
	See comments in the code for details.

	This is an alternate fix to
	commit a9c8123c72db47bcab8dd738e8d5256a9ae87f11.

2012-02-06  Richard W.M. Jones  <rjones@redhat.com>

	Revert "daemon: Run udev_settle after pwrite-device finishes."
	This reverts commit a9c8123c72db47bcab8dd738e8d5256a9ae87f11.

	build: Choose a virtual directory for the daemon which is not a symlink.
	Check /sbin, /usr/sbin, /bin and /usr/bin to ensure that neither the
	directory nor the parent (eg. /usr) is a symlink, and use this
	directory for the virtual directory used to store guestfsd in the
	appliance.

2012-02-03  Richard W.M. Jones  <rjones@redhat.com>

	build: Remove 'run' from EXTRA_DIST.
	This file shouldn't be included in the tarball as it contains
	hard-coded paths from the maintainer's machine which cannot be
	relevant to the target machine.

2012-02-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.4.

2012-02-01  Richard W.M. Jones  <rjones@redhat.com>

	Clarify the error message when unavailable functions are called (RHBZ#679737).
	Callers are supposed to use the availability API to check for
	functions that may not be available in particular builds of
	libguestfs.  If they don't do this, currently they tend to get obscure
	error messages, eg:

	  libguestfs: error: zerofree: /dev/vda1: zerofree: No such file or directory

	This commit changes the error message to explain what callers ought to
	be doing instead:

	  libguestfs: error: zerofree: feature 'zerofree' is not available in this
	  build of libguestfs.  Read 'AVAILABILITY' in the guestfs(3) man page for
	  how to check for the availability of features.

	This patch makes the stubs check for availability.  The stub code
	changes to:

	  static void
	  zerofree_stub (XDR *xdr_in)
	  {
	  [...]

	    /* The caller should have checked before calling this. */
	    if (! optgroup_zerofree_available ()) {
	      reply_with_error ("feature '%s' is not available in this\n"
	                        "build of libguestfs.  Read 'AVAILABILITY' in the guestfs(3) man page for\n"
	                        "how to check for the availability of features.",
	                        "zerofree");
	      goto done;
	    }
	  [...]

2012-01-31  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	examples: code cleanups
	do a code cleanup by removing the tailing spaces

2012-01-30  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	guestmount: use O_ACCMODE instead of hard coding
	Change hard code 3 to O_ACCMODE.
	it'll be more sensible.

	guestmount: remove tailing spaces
	just do a cleanup.
	remove the tailing spaces.

2012-01-30  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix crash in aug-defnode (RHBZ#785668).

2012-01-28  Richard W.M. Jones  <rjones@redhat.com>

	virt-alignment-scan: Fix typo in man page (thanks yurchor).

2012-01-28  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Various fixes for bytecode compilation.
	Set LD_LIBRARY_PATH so we link against the just-built library, not
	the installed library.

	Use OCAMLCFLAGS instead of OCAMLOPTFLAGS where appropriate.

	Remove unnecessary -cclib option for bytecode linking (gcc is not used
	in this case).

	This fixes commit eb68a314133c88260cdf4547d7d338446488e698.

2012-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.3.

	ocaml: Sort the tests.

	extra-tests: ocaml: Additional suppressions so we can test bytecode.

2012-01-27  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Test bytecode and native code bindings.
	Compile each test twice, as bytecode and native code, and
	test both.

	ocaml: Fix bytecode bindings for functions with >= 6 args.

2012-01-27  Richard W.M. Jones  <rjones@redhat.com>

	Update to latest gnulib.
	This contains a workaround for stdalign bug:
	http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00340.html
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023

	(Thanks Paul Eggert).

2012-01-27  Richard W.M. Jones  <rjones@redhat.com>

	appliance: udev >= 176 now requires /dev to be a devtmpfs.
	See this udev commit:
	https://git.kernel.org/?p=linux/hotplug/udev.git;a=commitdiff;h=220893b3cbdbf8932f95c44811b169a8f0d33939

2012-01-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.2.

	build: Add gobject/TODO.txt to EXTRA_DIST.
	This updates commit dd25638fc14ea63cf8e8eb0940173f1c6952447f.

	build: Add contrib/make-check-on-installed.pl to EXTRA_DIST.
	This updates commit 3d0c9f3fc63395083fef798ee31058a0bea8432e.

	contrib: Add a script for running test suite on installed packages.

	contrib: Delete 'removed' sections from the README file.
	There is no point in continuing to document removed stuff.

2012-01-26  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix 'test-guestfish-escapes.sh' when running an alternate guestfish binary.
	The error messages would be prefixed by the path to the
	alternate binary, eg:

	../fish/guestfish: invalid escape sequence in string (starting at offset 0)

	Fix this by normalizing the messages further.

2012-01-26  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Don't install bindtests.*.

	ocaml: Don't install libguestfsocaml.a.

2012-01-26  Matthew Booth  <mbooth@redhat.com>

	gobject: Add a TODO list

	gobject: Add an explicit close call
	This change binds guestfs_close(). It consequently results in RConstOptString
	being able to throw an error.

2012-01-26  Matthew Booth  <mbooth@redhat.com>

	gobject: Allow RConstOptString to return an error
	RConstOptString cannot return an error in the C api. This makes it a special
	case for the GObject api, as all other return types have a corresponding GError
	**err argument to return an error. This change removes this special case, and
	includes the possibility of an error return in the API. An error is indicated by
	setting *err to a non-NULL value.

	This change is in preparation for adding a close api. An attempt to call any
	api, even RConstOptString, on a closed handle must return an error.

2012-01-25  Jiri Popelka  <jpopelka@redhat.com>

	appliance: Switch to using 'iproute' ('ip' command) from 'net-tools' (RHBZ#784647).
	Change 'ifconfig' and 'netstat' commands to use 'ip' instead.

	'iproute' was already included in the appliance, so this reduces the
	size of the appliance accordingly.

2012-01-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.17.1.

2012-01-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix use-after-free in case-insensitive-path (found by valgrind).
	This commit tidies up the code by splitting out the path
	element-searching code into a separate function.

	Valgrind found that 'closedir' frees the 'struct dirent *', which
	wasn't immediately obvious.  So now we do the 'closedir' after all
	operations which touch 'd->d_name'.

2012-01-24  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix leaking error message (found by valgrind).

	daemon: Close inotify handle on exit.

	daemon: Close augeas handle on exit.

	daemon: Fix leak of strings in md-detail (found by valgrind).

	daemon: md: Whitespace changes, and use size_t for i instead of pointer.
	This is just a code clean-up with no functional change.

	daemon: Fix leak of strings in blkid (found by valgrind).

	daemon: blkid: Whitespace changes, and use size_t for i instead of pointer.
	This is just a code clean-up with no functional change.

	daemon: Return value from write syscall is ssize_t, not int.

	daemon: Don't leak 'cmdline' (found by valgrind).

	daemon: Length of message is a 32 bit unsigned quantity.

	daemon: Fix use of uninitialized stack data (found by valgrind).
	This uninitialized data was also sent over the protocol,
	potentially being a serious information leak.

	daemon: Fix memory leak in 'initrd-cat' (found by valgrind).

2012-01-24  Richard W.M. Jones  <rjones@redhat.com>

	Enable running the daemon under valgrind.
	This commit allows you to run the daemon under valgrind.  You have to
	enable it at configure time:

	  ./configure --enable-valgrind-daemon

	This should *not* be done for production builds.

	When this feature is enabled, valgrind is added to the appliance and
	the daemon is run under valgrind.  Log messages from valgrind are
	passed back over a virtio-serial channel into a file called
	'valgrind.log.$PID' in the top build directory.

	Running 'make check', 'make extra-tests' etc causes many
	valgrind.log.* files to be created which must be examined by hand.

2012-01-23  Hilko Bengen  <bengen@hilluzination.de>

	resize, sparsify: find progress mini-library in out-of-tree builds (2)

2012-01-23  Hilko Bengen  <bengen@hilluzination.de>

	Fix --{en,dis}able-install-daemon
	This fixes...

	    configure: error: conditional "INSTALL_DAEMON" was never defined.

	... when specifying --disable-daemon

2012-01-23  Richard W.M. Jones  <rjones@redhat.com>

	API support: Fix src/api-support/added file.
	This fixes commit 37e07db1598b433c12ee643302712d81b2c5415d.

	Version 1.17.0.

	Update ROADMAP.

	Finalize RELEASE NOTES.

	Pull translations from Transifex.

2012-01-23  Richard W.M. Jones  <rjones@redhat.com>

	debian: Debian 6 blkid has -p but not -i.
	Fix the existing test to work correctly in this case.

	Other cleanups.

2012-01-23  Matthew Booth  <mbooth@redhat.com>

	gobject: Require minimum gobject library version of 2.26.0
	The GObject bindings require G_DEFINE_BOXED_TYPE, which was not added until
	2.25.15. There are probably other dependencies.

2012-01-23  Jim Meyering  <jim@meyering.net>

	maint: use $var notation rather than ${var} when possible
	I noticed some uses of ${srcdir} in shell scripts.
	That is almost always better written as $srcdir.
	The patch below converts most such variable references.
	Here are the few remaining candidates:

	$ git grep -i -E '\$\{[a-zA-Z_0-9]+\}'|grep -v Makefile.in.in
	configure.ac:        JAR_INSTALL_DIR=\${prefix}/share/java
	configure.ac:        JNI_INSTALL_DIR=\${libdir}
	debian/rules:   for TEST in ${DEBIAN_SKIP_TEST}; do \
	debian/rules:#          mv $${mod} $$(dirname $${mod})/libguestfsmod.so; \
	java/Makefile.am:libguestfs_jar_DATA = libguestfs-${VERSION}.jar
	java/Makefile.am:libguestfs-${VERSION}.jar: $(libguestfs_jar_class_files)
	perl/lib/Sys/Guestfs/Lib.pm:                      "-f", '${Package} ${Version} ${Architecture} ${Status}\n',
	perl/typemap:            croak (\"${Package}::$func_name(): called on a closed handle\");
	perl/typemap:        croak (\"${Package}::$func_name(): $var is not a blessed HV reference\");
	tests/data/Makefile.am:   echo "$${i}abcdefghijklmnopqrstuvwxyz"; \

	We could change all of those, too, except the ones in configure.ac
	and Makefile.am, since they refer to Make variables.  Even those
	should be changed, but to use the preferred Makefile notation:
	$(prefix), $(libdir), $(VERSION).

	>From a86770ecd45666232a94d76c8725c8f9b1c76e3a Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Mon, 23 Jan 2012 11:15:12 +0100
	Subject: [PATCH libguestfs] maint: use $var notation rather than ${var} when
	 possible

	The only case to avoid in a shell script is when the byte after the
	"}" is word-constituent, and concatenating it would thus change the
	name of the variable.

	These changes were induced by running this command:
	  git grep -l -i -E '\$\{(srcdir|md)' \
	    |xargs perl -pi -e 's/\$\{(srcdir|md)\}($|\w)/\$$1$2/gi'

	The "g" was needed because there was one line with two instances.
	The "i" is to handle ${SRCDIR}.  The ($|\w) ensures that concatenating
	whatever follows the "}" won't change semantics.

	* gobject/run-bindtests: Use "$srcdir", not "${srcdir}".
	* haskell/run-bindtests: Likewise.
	* java/run-bindtests: Likewise.
	* ocaml/run-bindtests: Likewise.
	* perl/run-bindtests: Likewise.
	* python/run-bindtests: Likewise.
	* ruby/run-bindtests: Likewise.
	* tests/guests/guest-aux/make-debian-img.sh: Likewise, but $SRCDIR.
	* tests/guests/guest-aux/make-ubuntu-img.sh: Likewise.
	* tests/guests/guest-aux/make-windows-img.sh: Likewise.
	* tests/md/test-mdadm.sh: Likewise, but $md.

2012-01-23  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

2012-01-23  Hilko Bengen  <bengen@hilluzination.de>

	gobject: Run bindtests from srcdir.

2012-01-23  Jim Meyering  <jim@meyering.net>

	build: don't use automake-internal variable
	Hi Rich,

	I realized a day or two late that my suggestion was not quite right.
	Here's the fix:

	>From 5294c21cf07c4ec2f094182ba9f32696f3de2751 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Mon, 23 Jan 2012 10:01:40 +0100
	Subject: [PATCH libguestfs] build: don't use automake-internal variable

	* ocaml/Makefile.am (mlguestfs.cma): Use the documented variable form,
	$(libguestfsocaml_a_OBJECTS), not the $(am_libguestfsocaml_a_OBJECTS)
	that I suggested for commit 1.15.16-17-g8b9eaec.

2012-01-23  Hilko Bengen  <bengen@hilluzination.de>

	check for febootstrap etc. even if not building appliance

	fish: Filter out error messages about history file in test script

	Do not run appliance-related checks if not building appliance

	Replace setting of environment variables with usage of local run script
	(Includes fix by RWMJ)

2012-01-22  Richard W.M. Jones  <rjones@redhat.com>

	php: function_entry -> zend_function_entry.
	function_entry was left over from PHP 3.

	See: http://news.php.net/php.pecl.dev/7123

2012-01-22  Richard W.M. Jones  <rjones@redhat.com>

	php: Enable 'make clean' in extension subdirectory.

	Version 1.15.19.

	gobject: Include bindtests-manual.js in EXTRA_DIST.
	This fixes commit 93b0769ec7929a909678411d75840f81bed55a81.

	gobject: Document these bindings in guestfs(3).

	website: Rebuild the HTML manual pages from scratch.

2012-01-21  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Move internal-autosync function to new file internal.c.
	This is just code motion.

2012-01-20  Matthew Booth  <mbooth@redhat.com>

	gobject: Add bindtests for return values

	bindtests: Test optargs in test0
	Note that this change disables compiling and running the haskell bindtests. The
	haskell bindings do not implement optargs, and adding optargs to test0 causes
	that method not to be bound in the haskell bindings. This prevents the haskell
	bindtests from compiling. These should be re-enabled when optargs are
	implemented.

	gobject: Add basic bindtests

	run script: Add support for gobject introspection

	gobject: Add GObject bindings

2012-01-20  Matthew Booth  <mbooth@redhat.com>

	generator: Add CamelName flag
	We can make a good guess at camel case names for most APIs. For example,
	add_drive_opts can be automatically transformed to AddDriveOpts. However, other
	apis don't produce a satisfactory name when transformed automatically. For
	example, we would want md_create to produce MDCreate rather than MdCreate.

	This change adds a CamelName flag which allows a camel case name to be specified
	explicitly when the automatic transformation isn't satisfactory.

2012-01-20  Hilko Bengen  <bengen@hilluzination.de>

	resize, sparsify: find progress mini-library in out-of-tree builds

	Fixed out-of-tree compilation of OCaml code after .depend files removal

	fish: Remove hard-coded path from test script

2012-01-20  Matthew Booth  <mbooth@redhat.com>

	c: Fix prototype generator when last argument is a BufferIn
	We were passing the name of the last argument directly to va_start. However, if
	the last argument is a BufferIn it expands to 2 arguments, the latter of which
	is <name>_size.

	bindtests: Add a test for RBufferOut
	Fixup the existing test, and add an entry in actions so it's actually generated.

	bindtests: Fix sscanf test in test0rhashtable

	bindtests: Add something non-zero to the RStructList test output

2012-01-20  Richard W.M. Jones  <rjones@redhat.com>

	Update release notes with feedback from Hilko Bengen.

	Revert "generator: Add CamelName flag"
	This reverts commit 83c20f02dc0e97b098e9de837839a3f4a4416129.

2012-01-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.18.

	Update release notes.

	daemon: Run udev_settle after pwrite-device finishes.
	When you call close on any block device, udev kicks off a rule which
	runs blkid to reexamine the device.  We need to wait for this rule to
	finish running since it holds the device open and can cause other
	operations to fail, notably BLKRRPART.

	appliance: Add psmisc package to the appliance.
	This allows us to use 'fuser' and other ps tools.

	daemon: pwrite/pread: Don't double close on error path.
	In Linux, close (fd) closes the file descriptor even if it returns an
	error.

2012-01-18  Richard W.M. Jones  <rjones@redhat.com>

	Tempus fugit.
	Update all copyright dates to 2012.

	tools: Mark obsolete tools clearly in the man pages.

	Version 1.15.17.

	lib: Use -fvisibilty=hidden by default; only ABI symbols are now visible.
	http://gcc.gnu.org/wiki/Visibility

	ocaml: Use automake to build the C part of the bindings.
	By arranging the C part of the bindings into a library, we can get
	automake to build it instead of using $(CC) directly.

	ocaml: Don't include guestfs-internal.h directly.
	However since the OCaml bindings use guestfs_safe_strdup and
	guestfs_safe_memdup we need to export those two (in the private
	functions section) from <guestfs.h>.

	ocaml: Add -Wno-missing-field-initializers to avoid a warning.

	New tool: virt-format: erase and make blank disks.
	This tool allows you to easily reformat a disk, creating a blank disk
	with optional partition, LVM and empty filesystem.

2012-01-18  Richard W.M. Jones  <rjones@redhat.com>

	fish options parsing: Allow add_drives to be called multiple times.
	Ensure that the drv structure is always zeroed on allocation.

	Don't leak old drv->device when add_drives is called multiple times.

2012-01-17  Matthew Booth  <mbooth@redhat.com>

	c: Allow NULL optargs to be passed to _argv calls
	Previously, passing NULL optargs to an _argv call resulted in a segfault. This
	change causes NULL optargs to be interpreted as no optargs, and to be correctly
	handled accordingly.

	c: NFC Remove redundant parentheses

2012-01-17  Matthew Booth  <mbooth@redhat.com>

	generator: Add an explicit Cancellable flag
	Currently any api which takes a FileIn or FileOut parameter is implicitly
	cancellable. This change make cancellable an explicit flag in anticipation of it
	being added to other apis.

	Note that a Cancellable function must be able to return an error, which means it
	can't return RConstOptString.

2012-01-17  Matthew Booth  <mbooth@redhat.com>

	generator: Add CamelName flag
	We can make a good guess at camel case names for most APIs. For example,
	add_drive_opts can be automatically transformed to AddDriveOpts. However, other
	apis don't produce a satisfactory name when transformed automatically. For
	example, we would want md_create to produce MDCreate rather than MdCreate.

	This change adds a CamelName flag which allows a camel case name to be specified
	explicitly when the automatic transformation isn't satisfactory.

2012-01-16  Richard W.M. Jones  <rjones@redhat.com>

	resize2fs-M: fix double-free along error path (thanks Matthew Booth).

	e2fsck: Tidy up the documentation for this API.

2012-01-13  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	e2fsck-f: change the internal to use e2fsck
	Since we implement the new api e2fsck, just change the
	internal of e2fsck_f to use e2fsck now.
	v1->v2: use optargs_bitmask

2012-01-13  Wanlong Gao  <wanlong.gao@gmail.com>

	NEW API: add a new api e2fsck
	m: Wanlong Gao <gaowanlong@cn.fujitsu.com>

	Add a new api e2fsck with two options:
	correct: same as '-p' option of e2fsck
	forceall: same as '-y' option of e2fsck

	Thanks for Rich's idea.
	v1->v2: use optargs_bitmask
	v2->v3: change the optargs_bitmask check

2012-01-13  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	ext2: tweak the error returned message of resize2fs-M(BZ755729)
	Tweak the error message "e2fsck -f" and "e2fsck -fy".
	Indicate the user to use the correct and/or forceall options.

2012-01-11  Matthew Booth  <mbooth@redhat.com>

	build: Remove .depend files from git
	Remove generated .depend files from source control, and don't barf when they
	don't exist while bootstrapping.

2012-01-11  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES.

2012-01-10  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Only test 5 random guests.
	If you have a lot of guests, running extra tests takes a lot of time,
	but (arguably) you're not really doing any more detailed testing.

	Thus pick up to 5 guests at random to test.  A different random
	selection is done on each run, ensuring that data-driven errors (eg in
	inspection) will still be found eventually.

2012-01-10  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.16.

2012-01-10  Richard W.M. Jones  <rjones@redhat.com>

	Allow /dev/null to be added multiple times.
	Change the test for duplicate drives so that you're allowed to
	add /dev/null multiple times.  This corresponds to traditional
	usage.

	This amends commit be47b66c3033105a2b880dbc10bfc2b163b7eafe.

2012-01-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: debug segv correct use of dereferencing NULL.

2012-01-09  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	launch: move the filename checking to a wrapper
	Move the filename's comma character checking to a wrapper.

2012-01-09  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	launch: don't add a drive twice
	1. Change the g->path to restore a absolute path instead of the mixed.
	2. Check that if the adding drive is duplicated with the added drive.


	RWMJ:

	- Make sure abs_path is NULL before it is assigned, so freeing it
	  will work along the error path.

	- Fix the test which added /dev/null multiple times.

2012-01-09  Matthew Booth  <mbooth@redhat.com>

	generator: Create a separate type for optional arguments
	Previously, optional arguments had the same type as regular arguments, but were
	constrained by various runtime tests to be only Bool, Int, Int64 or String. This
	change makes the type of optional arguments stronger by giving them their own
	type.

	A convenience function, optargs_to_args is defined to convert optargs in the few
	places where they are genuinely treated identically to mandatory arguments.

	It also allows for future changes to optional arguments which do not affect
	mandatory arguments.

	RWMJ:
	 - removed redundant parens
	 - readded the check for > 64 optargs, but changed it to > 63
	 - changed the new function to args_of_optargs

2012-01-09  Matthew Booth  <mbooth@redhat.com>

	generator: Rename java_structs to camel_structs to better reflect their purpose
	This map was originally included just for the java bindings, but is generally
	useful to any binding which uses camel case by requirement or convention.

2012-01-09  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	launch: add a goto label when add_drive error
	Code cleanup.
	Add a goto label to simplify the code.

2012-01-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.15.

2012-01-06  Richard W.M. Jones  <rjones@redhat.com>

	debian: Add build-dep erlang-dev.

	Update to latest gnulib.

2012-01-04  Matthew Booth  <mbooth@redhat.com>

	Tempora mutantur, nos et mutamur in illis.

	build: Fix automake warnings

2012-01-04  Richard W.M. Jones  <rjones@redhat.com>

	Sort .gitignore (using sort -d -- dictionary order).

2012-01-04  Wanlong Gao  <wanlong.gao@gmail.com>

	gitignore: ignore the git related files
	*.eml for email picked patches
	other for orginal git patch related files.

2012-01-04  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	fish: fix the Ctrl-\ causes guestfish to abort bug(RHBZ#596761)
	Handle SIGQUIT by guestfish, so that it can't be terminated.

2012-01-03  Wanlong Gao  <wanlong.gao@gmail.com>

	AUTHORS: add the email address for each authors
	Add the email address for authors.
	It would be better.

2011-12-23  Richard W.M. Jones  <rjones@redhat.com>

	fish: mount can be used instead of mount-options with libguestfs >= 1.14

	fish: Fix --format parameter in man page.

	Version 1.15.14.

	lib: Try harder to remove temporary directory along error paths (RHBZ#769680).

2011-12-23  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add guestfs___remove_tmpdir helper function.
	This function does 'rm -rf <dir>' for temporary directories, safely
	working if '<dir>' contains shell meta-characters.

	Replace existing code for removing directories with this.

2011-12-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	gitignore: ignore the guestfs.* directory
	Let git ignore the guestfs.* directorys.

2011-12-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	extra-tests: add test-guests to prevent test error
	extra-tests is depending on tests-guests.
	We need guests/*.img when doing extra-tests.

	/work/git/libguestfs/run valgrind --log-file=/work/git/libguestfs/tests/extra/valgrind.log --leak-check=full --error-exitcode=119 --suppressions=/work/git/libguestfs/tests/extra/suppressions ../../cat/virt-cat -a ../guests/fedora.img /etc/fstab >/dev/null
	../guests/fedora.img: No such file or directory
	make[1]: *** [test-tools-internal] Error 1
	make[1]: Leaving directory `/work/git/libguestfs/tests/extra'

2011-12-23  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix test-guestfish-events.sh so it works when LIBGUESTFS_DEBUG=1 is set.
	Various messages were added and changed when this variable was set
	while tests were running.

2011-12-23  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	mkfs: optimization and code cleanup
	v1->v2: fix a typo pointed by Matt

	Optimizations by reducing the STREQ operations and do some
	code cleanup.


	RWMJ: Whitespace changes.

2011-12-22  Richard W.M. Jones  <rjones@redhat.com>

	tests/lvm: Contains a Perl test so we must set PERL5LIB.
	This fixes commit 498758faee6be7e989869bf7feba5e1026a1bb65.

	tests/protocol: Contains a Perl test so we must set PERL5LIB.
	This fixes commit 498758faee6be7e989869bf7feba5e1026a1bb65.

	Version 1.15.13.

2011-12-22  Richard W.M. Jones  <rjones@redhat.com>

	Security: Mitigate possible privilege escalation via SG_IO ioctl (CVE-2011-4127, RHBZ#757071)
	CVE-2011-4127 is a serious qemu & kernel privilege escalation bug
	found by Paolo Bonzini.

	http://seclists.org/oss-sec/2011/q4/536

	An untrusted guest kernel is able to issue special SG_IO ioctls on
	virtio devices which qemu passes through to the host kernel without
	filtering or sanitizing.  These ioctls allow raw sectors from the
	underlying host device to be read and written.  Significantly, neither
	qemu nor the host kernel checks that the range of sectors is within
	the partition / LV assigned to the guest.  For example, if the guest
	is assigned host partition /dev/sda3, it would be able to read or
	write any part of /dev/sda including other partitions and the boot
	sector.  Exploits through LVs passed to the guest are also possible,
	with some limitations.  File-backed virtual block devices are not
	vulnerable.  Non-virtio block devices are not vulnerable.

	This patch mitigates the problem by disabling the SG_IO ioctl
	passthrough in qemu.  Thus if libguestfs is examining an untrusted
	guest and the libguestfs appliance/daemon is compromised (eg. by
	executing guest commands, or through some other compromise), then the
	compromised appliance will not be able to issue the above SG_IO ioctls
	and exploit the host.

	Note that this is just mitigation for libguestfs.  Users will still
	want to fully update their host kernel, qemu/KVM and libvirt, in order
	to prevent other (non-libguestfs) routes to compromise.

	The following versions of libguestfs (will/have) this patch applied.

	  libguestfs >= 1.15.13
	  libguestfs >= 1.14.8
	  libguestfs >= 1.12.11
	  libguestfs >= 1.10.12
	  libguestfs >= 1.8.16

	Earlier versions may be vulnerable unless a downstream packager has
	applied this patch.

	Cc: Hilko Bengen <bengen@hilluzination.de>

2011-12-22  Hilko Bengen  <bengen@hilluzination.de>

	Fixed checks for libpython features
	The python3.1 package shipped with Debian/squeeze does not have the
	'mu' suffix that was assumed before.

2011-12-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.12.

	tests: Add a simple liveness tests for qemu.

	tests: Finalize the order we run the tests.

	tests: Put test-tool and comment into own section.

	tests: Split images -> tests/data + tests/guests

	tests: Rename extratests -> tests/extra.

	tests: Split regressions -> various subdirectories of tests/

	tests: Rename capitests -> tests/c-api.

	tests: Rename caution -> tests/qemu.

	tests: Document new tests/ subdirectory.

	docs: Arrange directory names in alphabetical order.

2011-12-20  Richard W.M. Jones  <rjones@redhat.com>

	extra-tests: Add an extra suppression for OCaml 3.11.2 in RHEL 6.

2011-12-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: Allow events to be processed in guestfish.
	Add 'event', 'list-events' and 'delete-event' commands so that event
	handlers can be registered, listed and deleted in guestfish.  The
	event handler is a shell script snippet or host command.

	Cc: Pádraig Brady <P@draigBrady.com>

2011-12-14  Richard W.M. Jones  <rjones@redhat.com>

	python: Missing () in guestfs-python(1) examples.

2011-12-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.11.

2011-12-09  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Return EXIT_FAILURE if fuse_main fails.
	fuse_main can return any non-zero value on error.  In particular on
	certain sorts of error such as unsupported -o options it returns 1
	(not -1).

	Therefore make sure any non-zero return is turned into EXIT_FAILURE.

	(Thanks Pádraig Brady)

2011-12-09  Richard W.M. Jones  <rjones@redhat.com>

	fish: -i option should fail if / is not mountable, but warn about others.
	In particular this stops a problem with guestmount where if the -i
	option half-recognizes the guest OS, it would mount the disk (and
	fail, giving only warnings), leaving the mountpoint unusable.

	(Thanks Pádraig Brady)

2011-12-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix utimens so it doesn't hang on named pipes (RHBZ#761460).
	This also adds comprehensive tests for utimens on regular files,
	directories (RHBZ#761451), named pipes (RHBZ#761460), symbolic links,
	block and char devices.

	Note that there is a small change in the (previously undefined)
	semantics of this call: It now sets the time on a symbolic link
	itself, not on what the symbolic link points to.

2011-12-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Allow utimens to work for directories (RHBZ#761451).
	You don't need to open the file O_WRONLY in order to call futimens on
	the file descriptor.  Opening it O_WRONLY fails for directories.
	Therefore open O_RDONLY instead.

2011-12-07  Richard W.M. Jones  <rjones@redhat.com>

	copy-in/copy-out: Wait for the tar subprocess only (RHBZ#760669).

	fish: Improve error messages when no OS / multi-boot OS found with inspection (RHBZ#760775).

2011-12-06  Hilko Bengen  <bengen@hilluzination.de>

	let the user explicitly choose ruby and rake programs

2011-12-06  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.10.

2011-12-06  Hilko Bengen  <bengen@hilluzination.de>

	Fix rpcgen post-processing for out-of-tree builds

2011-12-05  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Use RSTRING_PTR, RSTRING_LEN for compat with Ruby 1.9 (RHBZ#760000).

2011-12-05  Wanlong Gao  <gaowanlong@cn.fujitsu.com>

	blkid: split the RHEL5 which can't support some options
	RHEL5 shoult not support '-p', '-i' and '-o export' options.
	But we just split it according to the '-p' option.

	TODO: remove the implemented command blkid
	Remove the implemented command blkid from TODO lists.

2011-12-04  Richard W.M. Jones  <rjones@redhat.com>

	Revert "blkid: Use -c /dev/null because RHEL 5 blkid doesn't have -p option."
	This reverts commit 6533491b178d18bfab8240cf093be4ef9b547548.

	Revert "blkid: Fix mistake in previous commit."
	This reverts commit c48226a5026816b115ab63b50d3601531aff59dc.

2011-12-03  Richard W.M. Jones  <rjones@redhat.com>

	blkid: Fix mistake in previous commit.
	This updates commit 6533491b178d18bfab8240cf093be4ef9b547548.

	blkid: Use -c /dev/null because RHEL 5 blkid doesn't have -p option.

2011-12-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Use pkg-config to locate Augeas CFLAGS / libraries.
	Augeas 0.10 depends on libxml2, so this is now required in the
	appliance (in fact, it was already present).

	However this exposed two bugs:

	(1) In libguestfs we use a home-brewed recipe for Augeas flags,
	resulting in this error:
	/usr/include/augeas.h:24:25: fatal error: libxml/tree.h: No such file or directory

	(2) Augeas's own augeas.pc didn't include the libxml2 flags, so
	it was broken.  This requires a patch to Augeas 0.10, see:
	https://www.redhat.com/archives/augeas-devel/2011-December/msg00008.html

	Change to using pkg-config to detect Augeas.  It is still an optional
	library.

2011-12-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.9.

2011-12-03  Wanlong Gao  <wanlong.gao@gmail.com>

	NEW API: add blkid command to print the attributes of the device
	A NEW API blkid.
	It can print the device attributes.
	Use it after list-devices, we can list ower devices and the attributes
	of each device.
	Use it like:
	blkid <device>
	It's should be a usefull function.

2011-12-02  Richard W.M. Jones  <rjones@redhat.com>

	extra tests: Test that valgrind and libtool are installed.

2011-12-02  Matthew Booth  <mbooth@redhat.com>

	inspection: Add a test for MD device mapping in fstab
	Check that we properly handle fstab entries of the form /dev/md0 and
	/dev/md/foo.

	RWMJ: Add a skip to test if the Augeas lens is not available.

2011-12-02  Matthew Booth  <mbooth@redhat.com>

	inspection: Handle MD devices in fstab
	This patch fixes inspection when fstab contains devices md devices
	specified as /dev/mdN. The appliance creates these devices without reference to
	the guest's mdadm.conf so, for e.g. /dev/md0 in the guest will often be created
	as /dev/md127 in the appliance. With this patch, we match the uuids of detected
	md devices against uuids specified in mdadm.conf, and map them appropriately
	when we encounter them in fstab.

	build: Add more suppressions for valgrind tests

2011-12-02  Wanlong Gao  <wanlong.gao@gmail.com>

	mkfs: enable to make xfs filesystems when the device already has a filesystem
	Just add the -f option to mkfs.xfs to make sure we can
	make a xfs filesystem when the device already has a
	filesystem on it.

2011-12-01  Hilko Bengen  <bengen@hilluzination.de>

	libguestfs: Added gnulib includes from builddir, as suggested by the Gnulib documentation
	    Since some modules (`getopt', for example) may copy files
	    into the build directory, `top_builddir/lib' is needed as well as
	    `top_srcdir/lib'. -- GNU Gnulib manual, section 2.2 Initial import

2011-11-30  Richard W.M. Jones  <rjones@redhat.com>

	todo: Suggestion for UUIDs in /etc/fstab (thanks Joshua Daniel Franklin).

	ocaml: Fix OCaml dependencies.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.8.

	python: Memory leak: Free roots array along handle close path.

	perl: Memory leak: Free roots array along handle close path.

	ruby: Memory leak: Free roots array along handle close path.

	extra tests: Add comments about what is not tested here.

	extra tests: Absolute path for 'run' command.

	extra tests: Split up and reorder tests more logically.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	extra tests: Test virt-sparsify.
	This adds the virt-sparsify --debug-gc option which causes
	virt-sparsify to call Gc.compact before exiting, allowing
	GC and memory problems to be tested.

	Add an extratest which runs virt-sparsify under valgrind.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	extra tests: Test virt-resize.
	This adds the virt-resize --debug-gc option which causes
	virt-resize to call Gc.compact before exiting, allowing
	GC and memory problems to be tested.

	Add an extratest which runs virt-resize under valgrind.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Load test should call Gc.compact to flag memory errors.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Fix memory leak in bindings for functions that return buffers.
	RBufferOut binding didn't free the buffer after copying it onto
	the OCaml heap.

	Found by valgrind.

2011-11-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.7.

	extra tests: Run C API tests under valgrind.

	protocol: Memory leak: Free temporary buffer along recv_discard path.

	extra tests: Run OCaml tests under valgrind.

	extra tests: Split VG variable into VG / RUN_VG.
	This is just code motion.

	ocaml: Memory leak: Free roots array along handle close path.

2011-11-29  Matthew Booth  <mbooth@redhat.com>

	inspection: Cleanup iteration over fstab entries in inspect_fs_unix.c
	Select non-comment labels using an augeas path to return the correct
	nodes in the first instance, rather than applying a regular expression
	to all results.

	There is no functional change to the code.

	RWMJ:
	 - Rebased to current HEAD.
	 - Move variable decls to top of function.
	 - Some whitespace changes.
	 - Remove check for errors from snprintf since it can never happen.

2011-11-28  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Add outline support for GNU/Hurd.

2011-11-28  Richard W.M. Jones  <rjones@redhat.com>

	fish: When -m option fails, canonicalize device names that are printed.
	The error message now looks like this:

	  guestfish: '/dev/vda6' could not be mounted.  Did you mean one of these?
	            /dev/sda1 (ext4)
	            /dev/vg_f15x32/lv_root (ext4)
	            /dev/vg_f15x32/lv_swap (swap)

	Note that '/dev/sda1' has been canonicalized.

2011-11-28  Richard W.M. Jones  <rjones@redhat.com>

	fish: Rearrange code for displaying mountpoints when -m option fails.
	This also frees the list returned by guestfs_list_filesystems.

2011-11-25  Richard W.M. Jones  <rjones@redhat.com>

	docs: Tidy up documentation for md-stop.
	This cleans up commit cbd1c45d95c530c8d94103dcc2c521bf5501ef59.

2011-11-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.6.

	ubuntu: Add extra suppressions for libnl.1 leaks.

	Update API support.

	extra-tests: Include valgrind suppressions file.
	This updates commit c55bad93fbde03a3daa6058913f02098c45e55f5.

	regressions: Allow test-launch-race.pl to be skipped.
	export SKIP_TEST_LAUNCH_RACE_PL=1
	will cause this test to be skipped.

	debian: Use mdadm -D --export instead of mdadm -DY.
	For compatibility with mdadm on Debian Squeeze.

	Add 'make extra-tests' rule and run extra tests.
	These tests are optional, and require a special environment and
	tools to run.

	lib: Fix memory leak when debugging enabled (found by valgrind).
	If you enabled debugging (eg. LIBGUESTFS_DEBUG=1) then every
	debug message printed would be leaked.

	test-tool: Fix multiple memory leaks found by valgrind.

	filesystems: Fix memory leak found by valgrind.

2011-11-24  Richard W.M. Jones  <rjones@redhat.com>

	part-disk: Change default alignment of this to 64K (128 sectors).
	This is the minimum alignment.  1MB would be better.

	Note that the exact behaviour is not defined in the API.

2011-11-24  Richard W.M. Jones  <rjones@redhat.com>

	virt-alignment-scan: Add checks for when API calls return NULL.
	In particular, virt-alignment-scan -a /dev/null would segfault
	because of an error returned by parted.

2011-11-24  Wanlong Gao  <wanlong.gao@gmail.com>

	New API: md-stop for stopping MD devices
	This API is used to stop a md device.
	When we want to move a device to another md array, we should
	stop the md device which contained this device first.

2011-11-24  Matthew Booth  <mbooth@redhat.com>

	Rename mdadm_ apis to md_
	This change renames the following 2 apis:
	* mdadm_create -> md_create
	* mdadm_detail -> md_detail

	This is more consistent with list_md_devices, and removes a reference to an
	implementation detail from the api.

2011-11-24  Matthew Booth  <mbooth@redhat.com>

	NFC: Allow multiple config files in inspect_with_augeas in inspect_fs_unix.c
	This change is in support of the addition of MD support to fstab inspection.

	NFC: Consolidate the error path in check_fstab in inspect_fs_unix.c

	md: Inspect MD devices

	NFC: Declare and use variables on the same line in inspect.c

	build: Nothing under images/ should be translated

	build: Create an MD variant of the dummy Fedora image
	This change involves rewriting make-fedora-img.sh in perl. This allows the
	flexibility to write mdadm.conf containing whichever uuids where randomly
	generated when the md devices were created.

	run script: Don't overwrite LD_LIBRARY_PATH and PERL5LIB
	This change allows the run scripts of virt-v2v and libguestfs to be chained.

2011-11-22  Richard W.M. Jones  <rjones@redhat.com>

	gnulib: Rebase to latest.

	Don't rely on implicit promotion of float to double in printf args.

2011-11-22  Richard W.M. Jones  <rjones@redhat.com>

	fish: In generated code, put function names on a new line.
	eg:

	static void
	run_foo ()
	{
	}

2011-11-22  Richard W.M. Jones  <rjones@redhat.com>

	df, testing: Add notes on virt-df numbers (thanks Kashyap Chamarthy).

	sparsify: Add -o option for passing qemu-img output format options.

	sparsify: Add --compress option.
	This adds the -c option to the final qemu-img command.

	sparsify: Add auto-detection of .vdi files.
	Note that for this to work properly, it requires a patch to
	the 'file' command.  See:
	https://www.redhat.com/archives/libguestfs/2011-November/msg00120.html

2011-11-21  Matthew Booth  <mbooth@redhat.com>

	fish: Add MD devices to guestfish device autocompletion.

2011-11-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.5.

	guestfs-testing: Link to libguestfs-test-tool.

	contrib: Update introduction to libguestfs.

2011-11-21  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: ruby

2011-11-20  Richard W.M. Jones  <rjones@redhat.com>

	Add guestfs-testing(1) man page.
	This contains suggested manual tests that users can run.

2011-11-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.4.

2011-11-17  Matthew Booth  <mbooth@redhat.com>

	New API: mdadm-detail.

	Add custom indentation config for vim.

2011-11-16  Hilko Bengen  <bengen@hilluzination.de>

	out of tree build: haskell

	java: out-of-tree build, don't build static library

	out of tree build: erlang

2011-11-11  Matthew Booth  <mbooth@redhat.com>

	Update list-filesystems to check md devices.

2011-11-11  Matthew Booth  <mbooth@redhat.com>

	New API: list-md-devices.
	Return a list of Linux MD devices detected in the guest.

	This API complements list_devices, list_partitions, list_lvs and
	list_dm_devices.

2011-11-11  Richard W.M. Jones  <rjones@redhat.com>

	New API: mdadm-create for creating MD devices.

2011-11-11  Richard Jones  <rjones@redhat.com>

	32 bit: Fix printf off_t.

2011-11-11  Richard W.M. Jones  <rjones@redhat.com>

	32 bit: Use %td for ptrdiff_t (difference between two pointers).

	df: Disable part of virt-df test.
	See:
	https://www.redhat.com/archives/libguestfs/2011-November/msg00051.html

2011-11-11  Richard W.M. Jones  <rjones@redhat.com>

	New API: Bind the tune2fs command.
	Previously we bound the 'tune2fs -l' command so that we could list out
	the tunables of an ext2/3/4 filesystem.  Also commands like
	set_e2label and set_e2uuid used tune2fs.

	This commit binds many of the tunables that can be set using tune2fs.

	The coverage is not complete, but we can add more later because this
	uses optional parameters so the call is extensible without breaking
	ABI.  The current change gives us enough for using libguestfs within
	OpenStack.

2011-11-11  Richard W.M. Jones  <rjones@redhat.com>

	tune2fs-l: Add a test.

	generator: Support testing the output of RHashtable functions.
	You can use TestOutputHashtable to test the output of RHashtable
	functions.

	daemon: Define safe ADD_ARG macro for constructing arg lists on the stack.

2011-11-09  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.3.

	ocaml: Fix bindings when a function takes more than 10 parameters.
	If any function had more than 10 required + optional parameters, OCaml
	bindings could not be generated.  Currently there are no such
	functions.

2011-11-09  Richard W.M. Jones  <rjones@redhat.com>

	tests: Fix bitmask parameter when testing optional arguments.
	The bitmask was being constructed backwards(!)

	As a result, any test which tested optional arguments didn't work.
	There are very few such tests and they happened not to be affected by
	this.

2011-11-09  Richard W.M. Jones  <rjones@redhat.com>

	fish: More informative documentation of optargs.

	ocaml: Compile OCaml bindings and tests with -warn-error.

2011-11-09  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Catch EVENT_ENTER case in test.
	For some reason we are not compiling the tests with -warn-error so
	this problem was not noticed before.

	This fixes commit 9420eaf44ec4067c3740b91b0be0fede08a0c515.

2011-11-08  Matthew Booth  <mbooth@redhat.com>

	Update FSF address.

2011-11-04  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Use a private copy of /etc/lvm so we don't modify the real config.
	In the libguestfs live case we need to be careful not to modify the
	real /etc/lvm/lvm.conf file (when setting the filter rule).

	When the daemon starts, make a complete copy of /etc/lvm in a
	temporary directory, and adjust LVM_SYSTEM_DIR to point to the copy.
	All changes are made in the temporary copy.

2011-11-04  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Don't use files with fixed names in /tmp (thanks Steve Kemp).
	Although this doesn't matter for the ordinary (appliance) case, it
	matters for the libguestfs live case.  In that case it could cause the
	guest to be exploited by a tmp/symlink attack.

2011-11-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.2.

	virt-sysprep: Don't use xmlstarlet.
	Use virt-inspector --xpath option instead.

2011-11-03  Richard W.M. Jones  <rjones@redhat.com>

	Add virt-inspector --xpath to run XPath queries directly.
	xmlstarlet is good, but not available in Red Hat Enterprise Linux.

	Build a simple but sane XPath query parser into virt-inspector
	directly so that we don't need any external tools.

2011-11-03  Richard W.M. Jones  <rjones@redhat.com>

	resize: Remove requirement for ocaml Pcre library.
	This library is not available in RHEL 6, and in any case removing the
	dependency is a simple change.

	resize: Add tests for some Utils functions.

2011-11-03  Richard W.M. Jones  <rjones@redhat.com>

	python: Use sys.version_info[0] instead of sys.version_info.major.
	The major/minor fields only exist in Python >= 2.7.  This works for at
	least Python 2.5 and 2.6.

	Thanks to Hilko Bengen.

	This updates commit 646142f5136da9cfe2b908703a822c53350f70e9.

2011-11-02  Richard W.M. Jones  <rjones@redhat.com>

	python: Fixes for Python 3 (RHBZ#750889).
	These fixes allow libguestfs bindings to work with Python 3 (tested
	with Python 3.2)

	You can select which Python you compile against by doing:

	  PYTHON=python ./configure && make && make check

	or:

	  PYTHON=python3 ./configure && make && make check

2011-11-02  Richard W.M. Jones  <rjones@redhat.com>

	python: Pass $PYTHON environment variable to tests.
	If the user set PYTHON when configuring, this variable is not passed
	through to the tests, so it is possible the tests will fail because
	they are testing the wrong version of python.  By passing $PYTHON
	through to the tests we ensure that we test against the same version
	of python that we configured with.

	python: Include <config.h>.
	Ooops ...

2011-11-02  Richard W.M. Jones  <rjones@redhat.com>

	python: Correctly check for Python major/minor.
	The manual for sys.version warns that you should not parse the string,
	which we were doing.  It would have failed on python "2.10" or
	similar.

	Do it correctly using the sys.version_info struct instead.

2011-11-02  Richard W.M. Jones  <rjones@redhat.com>

	contrib: Use PNG images as fallback for IE compatibility.

2011-11-01  Richard W.M. Jones  <rjones@redhat.com>

	contrib: Update talk.

	Version 1.15.1.

	contrib: Add all contrib files to EXTRA_DIST.

	contrib: Add libguestfs talk.
	This is a short (10-15 min) talk that I give to introduce the main
	features of libguestfs.  The "slides" are in the form of a complete
	self-contained HTML page with a handful images that can be easily
	distributed before the talk.

	rescue: Add --suggest option to suggest mount commands.

	fish: Use size_t instead of int when counting strings.

2011-10-31  Matthew Booth  <mbooth@redhat.com>

	Fix debug help error message.
	When given an invalid debug command, libguestfs responds with the
	error message:

	  libguestfs: error: debug: use 'debug help' to list the supported commands

	However this command does not work, as debug requires two
	arguments. This change updates the message to prompt the user to use
	'debug help 0'.

2011-10-31  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add 'mdadm' package.

2011-10-28  Richard W.M. Jones  <rjones@redhat.com>

	perl: Add %guestfs_introspection hash with introspection information.
	Because this is a useful introspection API, it is a candidate for
	being backported into older stable branches.

2011-10-27  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.15.0.

	Pull latest translations from Transifex.

	generator: Remove DangerWillRobinson.
	This warning was applied unevenly.  Potentially any command can be
	dangerous or safe, so it was a needless warning.

	fuse: Skip guestmount test if setfacl is not installed.
	This dependency is optional, don't fail the test if it's not
	installed.

	virt-sysprep: Skip test if xmlstarlet is not installed.
	This dependency is optional, so don't fail the test if it
	is not installed.

	virt-alignment-scan: Add additional data for 4K sector drives (thanks Matt Booth).

	test-virt-sparsify: Relax size_after constraint (for Debian).
	size_after on Debian was 10136K.  The host filesystem was ext3 (vs
	ext4 for Fedora where we did the original testing).  Probably indirect
	blocks (vs more efficient extents on ext4) causes the difference,
	although I did not look at it in detail.

	Update RELEASE-NOTES for 1.14 release.

	Update ROADMAP for 1.14 release.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	Version 1.13.26.

	guestmount: Fix --live option (RHBZ#744795).

	fish and other tools: -d option uses readonlydisk="read" (RHBZ#747290).
	Tools like virt-edit would not be able to edit disks marked as
	<readonly/> in the libvirt XML.  It's not clear if this is a bug or a
	feature.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Add readonlydisk optional argument (RHBZ#747290).
	This optional argument controls how <readonly/> disks in
	the libvirt XML are handled.  It can be set to one of:

	  "write" (default) - add them R/W
	  "read" - add them R/O
	  "error" - throw an error if asked to add them R/W
	  "ignore" - ignore these disks

	I have added limited regression tests for this feature.  However
	libvirt's test:/// XML does not allow you to specify that a domain
	starts off shut down, so we cannot fully test this.  Instead I tested
	it by hand.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	libvirt: Detect if a disk has the <readonly/> flag.
	This changes the private function guestfs___for_each_disk so that the
	<readonly/> flag on libvirt disks is detected and passed through to
	the callback function.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	test-user-cancel: Make this test choose smaller cancellation numbers.
	Use a Gaussian distribution for random numbers so that smaller numbers
	are chosen more frequently.

	This also exposes a bug in this test which only happens when small
	numbers are chosen:

	If the test thread starts up quickly, it can get to
	guestfs_user_cancel before the guestfs_upload command has happened in
	the main thread.  This causes the cancel to be ignored (correctly) and
	we end up in the second loop writing data until the disk runs out of
	space.  Fix this by repeatedly asserting the cancel flag in the second
	loop.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.25.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Be much more conservative about moving first partition.
	Commit 2910413850c7d9e8df753afad179e415f0638d6d caused Windows 7
	resizes to break with the 0xc0000225 boot error.

	Change the --align-first auto (default) option so that it is more
	conservative about when it moves the first partition.  In particular
	it doesn't move it if it's already aligned (as it is for Win7), nor if
	there is more than one partition (also Win7).

	Tested with: Windows XP, 2003, 7, Ubuntu 10.10 and RHEL 5.

2011-10-26  Richard W.M. Jones  <rjones@redhat.com>

	Flush stdout for progress bars used by guestfish, virt-resize.

	virt-resize: Handle extended and logical partitions (RHBZ#642821).

	resize: Get the partition table type of the source disk earlier.
	Also we only permit MBR (DOS) and GPT partition tables.  In theory
	previously we allowed other partition table types, but it is unlikely
	that it would have worked in reality.

	New APIs: copy-{file,device}-to-{file,device}.
	The four new APIs:
	guestfs_copy_device_to_device,
	guestfs_copy_device_to_file,
	guestfs_copy_file_to_device, and
	guestfs_copy_file_to_file
	let you copy from a source to a destination, between files and
	devices, optionally allowing source and destination offsets and size
	to be specified.

2011-10-25  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Make sure virt-resize, virt-sparsify are rebuilt if Guestfs API changes.
	Add a dependency so these tools are rebuilt from scratch if the
	Guestfs API changes.  This prevents the error:
	"[...] make inconsistent assumptions over interface Guestfs".

	This commit includes the generated changes to .depend files.

2011-10-25  Richard W.M. Jones  <rjones@redhat.com>

	virt-filesystems: Add MBR partition type byte to the output.
	This adds an extra column containing this information, looking
	like this:

	Name       Type        VFS   Label  MBR  Size  Parent
	/dev/sda1  filesystem  ntfs  -      -    6.0G  -
	/dev/sda1  partition   -     -      07   6.0G  /dev/sda
	/dev/sda   device      -     -      -    6.0G  -

	In particular you can use this to tell if a partition is an extended
	partition, because the field will contain '05' or '0f'.

2011-10-25  Richard W.M. Jones  <rjones@redhat.com>

	New API: part-to-partnum
	This converts a partition device name (eg. /dev/sda1) to a partition
	number (eg. 1).  This is useful in conjunction with the parted APIs
	that mostly take a disk device + partnum.

	virt-cat: Handle Windows paths and drive letters (RHBZ#693359).

2011-10-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.24.

2011-10-24  Richard W.M. Jones  <rjones@redhat.com>

	Add test for qemu broken -machine option (RHBZ#748266).
	Also add this option, if necessary, when testing for virtio-serial
	support.

	When the workaround is enabled, we specify machine type 'pc'.

2011-10-24  Richard W.M. Jones  <rjones@redhat.com>

	Revert "out-of-tree build: daemon"
	This reverts commit 025dba7f803419f510fd8f085ce693838af82878.

	If build and source directories are the same, you get this error:

	make[3]: Leaving directory `/home/rjones/d/libguestfs/generator'
	make[2]: Circular guestfs_protocol.c <- guestfs_protocol.c dependency dropped.
	make[2]: Circular guestfs_protocol.h <- guestfs_protocol.h dependency dropped.
	rm -f guestfs_protocol.h
	ln  guestfs_protocol.h
	ln: accessing `guestfs_protocol.h': No such file or directory

2011-10-22  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Document syntax for deleting keys and values (RHBZ#737944).
	NB: This requires hivex >= 1.3.2 before this syntax becomes true.

	virt-make-fs: Refresh man page.

2011-10-21  Richard W.M. Jones  <rjones@redhat.com>

	Fix ./configure --disable-erlang.

2011-10-21  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: fixed bindtests and inspector

	out-of-tree build: fix HAVE_OCAML=false case

	out-of-tree build: daemon

2011-10-21  Richard W.M. Jones  <rjones@redhat.com>

	add-drive-opts: Correctly handle unreadable and unwritable files (RHBZ#747287).

	virt-make-fs: Set MBR partition type byte correctly (RHBZ#746295).

	lib: Common code for formatting the qemu -drive parameter.
	This is just code refactoring.

	Allow compilation without hivex (RHBZ#723474).

	po-docs: Force make update-po on first build from git.

2011-10-20  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.23.

	appliance: udev-174 moves udevd to /lib/udev/udevd (instead of /sbin/udevd)

	resize: Add --align-first auto|never|always option.
	The first partition can now be aligned.  We fix the bootloader
	correctly for Windows by adjusting the "Hidden Sectors" field.

	resize: Add --alignment flag to allow partition alignment to be picked.

2011-10-20  Richard W.M. Jones  <rjones@redhat.com>

	resize: Refactor the code for creating target partitions.
	The old code mixed the business of planning the layout of the target
	partitions with the creation of the target partitions.  The
	replacement code separates these into two tasks: firstly we create a
	new 'partitions' list with the target layout, secondly this directly
	drives the creation of the partitions.

	As part of this change I have *removed* the old code that was supposed
	to handle extended/logical MBR partitions.  It simply didn't work, and
	didn't have any hope of working, and there is a separate bug open to
	fix it.

2011-10-20  Richard W.M. Jones  <rjones@redhat.com>

	resize: Remove p_size field from partitions structure.
	This field simply contained a duplicate copy of p_part.part_size.

	There is no functional change in this commit.

2011-10-20  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES.

2011-10-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.22.

2011-10-19  Richard W.M. Jones  <rjones@redhat.com>

	Pushed and pulled latest translations from Transifex.
	Fixed one bug in the nl PO file:

	msgid "security: cached appliance %s is not owned by UID %d"
	msgstr "beveiliging: UID %d is geen eigenaar van toepassing %s in cache"

	should be:

	msgid "security: cached appliance %s is not owned by UID %d"
	msgstr "beveiliging: UID %2$d is geen eigenaar van toepassing %1$s in cache"

2011-10-19  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Return root devices sorted.

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	inspect: Handle cciss devices in /etc/fstab

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	inspect: Don't assume number of captures in match functions
	It is possible for the pcre library to return a variable number of captures for
	a single regular expression. e.g.:

	  ^/dev/(cciss/c\d+d\d+)(?:p(\d+))?$

	This will return either 1 or 2 captures depending on whether the device has a
	partition suffix. The current match wrappers don't allow for this, and require
	that a predictable number of matches are returned.

	This change updates match, match1, match2, and match3 to ignore the specific
	number of matches returned. Instead, any returned captures are assigned to the
	given arguments, and any remaining arguments are set to NULL.

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	inspect: Add drive naming hints
	We currently use a heuristic to guess how drive names we find
	referenced in the guest map to drive names in the appliance. If this
	heuristic fails it can cause inspection to fail.

	This change adds a new 'name' option to add_drive_opts, which allows
	the user to explicitly pass the name of a drive to libguestfs if it is
	known. This change also updates the fstab-parsing inspection code to
	use this information if it is available.

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	NFC: Remove unnecessary goto

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	launch: Store drive information in guestfs_h
	This is a NFC on its own, but provides a place-holder for drive metadata which
	can be used after launch.

	Fixes by RWMJ:

	 - Fix the tests: this requires a new internal function 'debug-drives'
	   that dumps out the g->drives information so it can be checked in
	   two of the tests.  Previously these tests used 'debug-cmdline'.

	 - Test file existence / use_cache_off in the add_drive_opts function,
	   not when launching qemu in the child process.

	 - Call free along error paths.

	 - Add comments.

2011-10-19  Matthew Booth  <mbooth@redhat.com>

	inspect: Fix fstab device mapping for >26 disks
	The regular expression matching disk name assumed that there was only a single
	letter suffix. This change handles a naming scheme for any number of disks.

2011-10-19  Richard W.M. Jones  <rjones@redhat.com>

	launch: Ensure g->cmdline is allocated before assigning g->cmdline[0].

	valgrind: guestfish -i: free strings before exit.
	This isn't really necessary, but it keeps valgrind happy.

2011-10-18  Richard W.M. Jones  <rjones@redhat.com>

	Ubuntu 11.10: Create /run and /run/lock if not already.
	In real machines these directories are a ramdisk.

2011-10-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Fix link in documentation.

	Skip guestmount and virt-sysprep tests if no /dev/fuse.

2011-10-15  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Fix test to use guestmount and virt-inspector binaries that have been built.

2011-10-14  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Fedora cryptsetup-luks renamed to cryptsetup.
	Therefore we need both names to be listed in the file.

	roadmap: Fix Bugzilla URL.

	More TODO items.

	Update RELEASE-NOTES file.

	Version 1.13.21.

2011-10-14  Erik Nolte  <erik_nolte@acm.org>

	Use ArchLinux's new kernel package "linux".

2011-10-14  Michael Scherer  <misc@zarb.org>

	Add basic support for netbsd detection.

	Add support for pkgsrc, default NetBSD package manager.
	For now, only detect the tool, but support from reading
	installed package could be added later ( may require either
	a package of pkgsrc, or a smaller tool to read the db ).

	Add support for mounting ufs from NetBSD, and fix FreeBSD detection on Fedora 16
	While testing on Fedora 16, I noticed that Linux will mount the disk
	without trouble by using automatically ufstype=old, and yet do not
	let us read the directories. So we should start directly with usftype=ufs2,
	and if it fail, try 44bsd, as used for netbsd and openbsd ( as seen on
	http://wiki-static.aydogan.net/How_to_mount_FFS_partition_under_Linux ).

	Add the Opensuse logo ( thanks to Vincent Untz )
	Like Ubuntu one, it may not be always present.

	Add Opensuse and zypper detection support
	This would also erronously detect SLES as Opensuse.

	Add support for Ubuntu logo
	Ths logo is present on Lucid Lynx, but may not always be installed, like
	in case of a minimal installation ( or server ). While Edubuntu and Kubuntu
	have different logo, I didn't check where it would be placed.

	Detect Mageia distribution

	Partially fix --disable-erlang
	Without this, configure will always enable erlang, no matter what
	argument are passed. Now, we can disable it, even if configure still
	need the erlang compiler for some obscure reason.

2011-10-14  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Add cron-spool, mail-spool, utmp.

2011-10-13  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Use /dev/urandom instead of /dev/random.

	virt-sysprep: More clarifications to the man page.

	virt-sysprep: Clarify docs on enabling operations.

	virt-sysprep: Add rhn-systemid.

2011-10-13  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Switch to using guestmount, add more features.
	This switches virt-sysprep to use guestmount instead of guestfish.
	This makes the script a little bit easier to modify for sysadmins.

	This commit also adds:

	 - dhcp-client-state
	 - dhcp-server-state
	 - logfiles
	 - random-seed
	 - smolt-uuid
	 - yum-uuid

	SELinux relabelling, and a section on security in the manual page.

2011-10-13  Richard W.M. Jones  <rjones@redhat.com>

	virt-sysprep: Use Augeas for config file manipulation.

	virt-sysprep: Add prepend_line utility function.

2011-10-13  Richard W.M. Jones  <rjones@redhat.com>

	fish: docs: note how to clean up the remote process properly.
	Killing it is always a bad idea, because the qemu subprocess will be
	left hanging around.  The best thing is to send the exit command.

	This also makes the change to virt-sysprep.

2011-10-13  Richard W.M. Jones  <rjones@redhat.com>

	fish: Close guestfs handle explicitly before exiting.
	NOTE this is just a cleanup.  It is NOT necessary for correctness,
	since libguestfs itself is correctly closing the handle in the exit
	handler.

	virt-sysprep: Trap ERR as well as EXIT.

	guestmount: Add note to man page about 'fuse' group for Debian.

	virt-sysprep: Simplify calls to guestfish --remote.

	virt-sysprep: Further TODO items (thanks Nikita Menkovich).

	virt-sysprep: Further TODO items (thanks Marko Myllynen, James Antill).

2011-10-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.20.

	virt-sysprep: Update TODO list again.

	virt-sysprep: Update TODO list (thanks Steve Grubb, Dan Berrange).

2011-10-10  Richard W.M. Jones  <rjones@redhat.com>

	TODO: More virt-sysprep suggestions (thanks librarian).

	Add systemtap/DTrace probes.
	Mainly this is a documentation change.  However a sample of
	DTrace-compatible userspace probes are also added.

	Update TODO file with future plans for virt-sysprep.

2011-10-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.19.

	New tool: virt-sysprep: system preparation for guests.

2011-10-07  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add man page section on calling guestfish remote robustly from bash.

	virt-alignment-scan: Fix SYNOPSIS in manual page.

	Makefile.am: Fix comment.

2011-10-06  Richard W.M. Jones  <rjones@redhat.com>

	virt-alignment-scan: docs: Add link to RHEL Storage Administration Guide.

	virt-alignment-scan: More information in man page.
	Thanks Mike Snitzer.

	virt-resize: Align partitions to multiple of 128 sectors (instead of 64).
	This gives us effectively 64 KByte alignment, optimal for all current
	types of storage.

2011-10-05  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES file.

	Version 1.13.18.

	New tool: virt-alignment-scan to check alignment of partitions.

	docs: Add directory sections for resize/ and sparsify/

2011-10-04  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES file.

	sparsify: Fix --ignore option to work on canonical device names.

	docs: Clearer language in virt-sparsify man page.

	Version 1.13.17.

	New tool: virt-sparsify to make disk images sparse.

	docs: Add virt-resize to list of links in guestfs(3).

	docs: virt-win-reg is written in Perl, not virt-resize.

	Update API support documentation.

2011-10-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.16.

	mount: Not deprecated any more.
	This updates commit 5c2f1a2d9433eeb5aebeec26f0412c703bbe7269.

	mount: No longer implicitly add -o sync,noatime options.

2011-09-29  Richard W.M. Jones  <rjones@redhat.com>

	daemon: mkswap --help output changed, breaking linuxfsuuid group detection.

2011-09-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.15.

2011-09-28  Richard W.M. Jones  <rjones@redhat.com>

	New API: set-smp, get-smp
	These calls allow you to change the number of virtual CPUs assigned to
	the appliance.

	This also adds a --smp option to virt-rescue.

2011-09-28  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: compress-out, compress-device-out.
	These APIs let you copy compressed files or devices out from the disk
	image.

	Compression is useful for large images which are mostly zeroes.  We
	cannot currently do sparseness detection, and compression gives us a
	form of zero detection for free.

	Example usage:

	$ guestfish --ro -a /dev/vg_pin/F16x64 -i \
	    compress-out gzip /etc/passwd /tmp/passwd.gz
	$ file -z /tmp/passwd.gz
	/tmp/passwd.gz: ASCII text (gzip compressed data, was "passwd", from
	Unix, last modified: Sun Aug 28 14:40:46 2011)

2011-09-28  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Move useful is_zero function to header file.
	Code motion.

2011-09-26  Richard W.M. Jones  <rjones@redhat.com>

	Add no_timer_check to disable faulty test during boot (RHBZ#502058).
	See:

	https://bugzilla.redhat.com/show_bug.cgi?id=502058#c15
	https://bugzilla.redhat.com/show_bug.cgi?id=698842#c8

	This updates commit 79e66f89e2f6c27486476d7857da58feb491bf5c.

2011-09-26  Richard W.M. Jones  <rjones@redhat.com>

	docs: Show how to use a qemu wrapper to edit the qemu command line.

2011-09-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.14.

	Update to latest gnulib.

2011-09-22  Richard W.M. Jones  <rjones@redhat.com>

	erlang: Use the official autoconf macros.

2011-09-21  Richard W.M. Jones  <rjones@redhat.com>

	todo: Suggestion to improve Erlang bindings.

2011-09-21  Richard W.M. Jones  <rjones@redhat.com>

	Enable APIC.
	Originally this was disabled to work around RHBZ#502058.  That bug was
	never officially fixed, but it may have fixed itself.

	In the meantime, KVM has broken ordinary PIC support (RHBZ#723822).
	Since APIC is the most common way that regular Linux and Windows
	guests run it makes sense to remove this hack.

2011-09-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.13.

	Add Erlang bindings.

2011-09-16  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Handle /dev/root in /etc/fstab.
	This means "the device that holds /etc/fstab", so map it correctly.

	This fixes support for ttylinux and also some other guests that use
	/dev/root instead of a real device name.

2011-09-16  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Add support for ttylinux (a minimal Linux).

2011-09-15  Richard W.M. Jones  <rjones@redhat.com>

	Add an optional group ("grub") for the guestfs_grub_install API.
	This also improves the documentation for this call, pointing out
	several pitfalls in using it.

	This unfortunately breaks existing callers that might use
	guestfs_grub_install without checking for this new group.

2011-09-14  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.12.

2011-09-14  Richard Jones  <rjones@redhat.com>

	test-tool: Display TMPDIR.

	test-tool: Refresh libguestfs-test-tool man page.

	test-tool: Make the default timeout be 600 seconds (10 minutes).
	We could sometimes hit the 120 second timeout, eg. if the appliance
	needed to be rebuilt and the machine was very slow and/or under heavy
	I/O load.  10 minutes should be enough for any reasonable situation.

	test-tool: Document the -t command line option.

	test-tool: Use B<...> for command line options in man page.

2011-09-12  Richard Jones  <rjones@redhat.com>

	po-docs: Make podfiles sort stable.

	Stable OCaml dependencies.

2011-09-07  Richard W.M. Jones  <rjones@redhat.com>

	docs: Add a section explaining the appliance boot process.

2011-09-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.11.

	Remove old regression test that mainly tested a buggy API.
	The guestfs_ll command currently lists files in the appliance if you
	prefix filenames with "/..".  However this is a bug, not a feature,
	and we should not be testing it.

	debian: Missing build dependency on db4.8-util.

	daemon: Factor out name of virtio serial channel.
	This is just code motion.

	Create /sys directory if it doesn't exist already.
	Ubuntu 10.04 LTS packages don't create /sys.

2011-08-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.10.

	cat: Small documentation correction.

2011-08-27  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Use xmlstarlet instead of xpath in examples.

	man pages: Add a standard EXIT STATUS section to most pages.

2011-08-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.9.

	progress: Make default UTF-8 progress bar less black.

	resize: Add --machine-readable option for machine friendly output.

2011-08-26  Richard W.M. Jones  <rjones@redhat.com>

	progress: Add machine readable flag.
	Machine-readable progress bars look like:

	0/100
	1/100
	2/100

2011-08-26  Richard W.M. Jones  <rjones@redhat.com>

	resize: Use guestfish progress bar mini-library.
	There are two benefits:

	 - the progress bars look better
	 - there is a reasonably accurate estimate of how long each operation
	   will take

2011-08-26  Richard W.M. Jones  <rjones@redhat.com>

	Add GUESTFS_EVENT_ENTER event.
	This event is generated whenever a libguestfs function is called.

	fish: Make progress bars into a mini library.
	This library could now be called from other virt tools.

	fish: clarify comment: shared source files are used by virt tools too.

	Version 1.13.8.

	ruby: Check Ruby callback exists before we call it (RHBZ#733297).

2011-08-25  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Use a regular C array to pass the arguments through rb_rescue.

	ruby: Append newline character after printing exception in callback.

2011-08-24  Hilko Bengen  <bengen@hilluzination.de>

	python: Newer versions want parentheses around arguments of "print"

	python: Don't build static library

2011-08-23  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.7.

2011-08-23  Richard W.M. Jones  <rjones@redhat.com>

	php: Fix bug in PHP tests.
	We partitioned the disk, and then tried to create a PV on the whole
	disk.  LVM gave the error:

	  Device /dev/vda not found (or ignored by filtering).

	It is unclear how this bug persisted for so long.  It might be due to
	a change in LVM.

2011-08-23  Richard W.M. Jones  <rjones@redhat.com>

	Coverity: fix memory leak along error path.

	Coverity: Initialize msg buffer.
	msg_flags was not being initialized and would have been passed to
	sendmsg with a random value.

	Coverity: fix memory leak in guestfish.

	Coverity: in daemon, free struct in RStruct, RStructList functions.

	pclose: Fix other places where we only tested pclose == -1.
	pclose can return > 0 when the status of the command was non-zero.

	test_qemu: Improve the error message.
	Note that errno is probably not set to a useful value here, so there
	is not much point recording it.

	test_qemu: pclose may return any != 0 on error.
	In particular pclose returns a status > 0 if the command fails.

	qemu detection: Free up previous qemu help/version strings if they exist.

	Coverity: test_qemu: Ensure FILE * is not leaked along error paths.
	This refactors the code in test_qemu slightly to ensure that
	FILE *fp is not leaked on error paths.

	Coverity: Check guestfs_inspect_get_product_name() != NULL before using.

2011-08-23  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Ignore errno after guestfs_launch.
	errno is pretty much random on the error path back from guestfs_launch
	so there is nothing useful to be gained by checking it.

	We could do with a better way to detect if appliance launch failed.

2011-08-23  Richard W.M. Jones  <rjones@redhat.com>

	Coverity: Ignore return value from guestfs_launch in virt-rescue.
	We expect guestfs_launch to fail in this program.

	Coverity: Check return value from sscanf in bindtests calls.

2011-08-20  Richard W.M. Jones  <rjones@redhat.com>

	autobuild: Only add last 100 lines of the log file.

2011-08-20  Richard W.M. Jones  <rjones@redhat.com>

	New autobuild script.
	Remove the old top-level autobuild.sh that confused a lot
	of people.

	Add an autobuild.sh script that builds from the latest tarball.

2011-08-19  Richard W.M. Jones  <rjones@redhat.com>

	configure: Add --with-extra flag to allow setting the extra version string.
	Intended use in Fedora and RHEL is to encode the release
	string, eg.

	  ./configure [...] --with-extra="-%{release}"

2011-08-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.6.

2011-08-18  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Fix case where download can fail for small files.
	There is another case where downloads of small files could fail if the
	library side (writer) fails.  In this case the library would send back
	a cancellation, but it would be received after the daemon had finished
	sending the whole file (because the file is small enough).  The daemon
	would reenter the main loop and immediately get an unexpected cancel
	message, causing the daemon to die.

	This commit also makes test-cancellation-download-librarycancels.sh
	more robust.  We use Monte-Carlo testing with a range of file sizes.
	Small file sizes should trigger the error case.

2011-08-18  Richard W.M. Jones  <rjones@redhat.com>

	Escape special/non-printing characters in debug output (RHBZ#731744).
	The default event handler in libguestfs was simply writing all debug
	output directly to stderr.  However if the output contains
	non-printable characters such as terminal control codes then these
	would also be sent directly.

	With newer SeaBIOS there is a lame attempt to implement a splash
	screen using terminal control codes, thus when libguestfs tries to
	display debugging output it would cause the screen to clear and debug
	output to be lost.

	This commit causes all non-printing characters to be escaped.
	(\n and \r characters from the appliance are treated somewhat
	specially).

	Furthermore, instead of using write(2), use buffered stderr calls.

2011-08-18  Richard W.M. Jones  <rjones@redhat.com>

	Remove guestfs___print_timestamped_argv.
	This function was used to print the qemu and
	febootstrap-supermin-helper command lines.

	Unfortunately in the qemu case it was used incorrectly: it called the
	internal debug function (ie. event API callback) from the forked qemu
	subprocess, which meant that higher level event callbacks might have
	been invoked from the child process.

	To fix this, convert the qemu case into a new function called
	print_qemu_command line which just prints the command line directly to
	stderr.  This is called after stderr has been redirected into the pipe
	to the main process.  Thus the qemu command line will be marshalled
	into the event API along with other qemu and appliance output.

	After fixing this, only one use of guestfs___print_timestamped_argv
	remained, for printing the febootstrap-supermin-helper command line.
	This is converted to a local function print_febootstrap_command_line.

	Also print_febootstrap_command_line is now called before we fork
	febootstrap-supermin-helper, so that messages no longer overlap.

2011-08-18  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: generate ./run from template, fix image checks
	./run can now be run in a separate build directory. Since some files
	needed in the image checks are found in the source tree (but not the
	build tree), the source tree location is passed to make-*-img.sh via
	an environment variable.

2011-08-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.5

	fish: Add fish-cmds.h to generator_built.
	This updates commit 3064277680ad11f887691646d0fa17bb35f38c19.

2011-08-17  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: fix make and make install
	$(srcdir) is not needed for guestfs_c.c.
	*.mli only exists in $(srcdir) and isn't found on "make install" otherwise

	out-of-tree build: fix documentation generation II

	out-of-tree build: remove unneeded explicit paths

2011-08-16  Richard W.M. Jones  <rjones@redhat.com>

	Improve zeroing and detection of zeroes.
	This code modifies zero, zero-device, is-zero, is-zero-device.

	zero and zero-device are modified so that if the blocks of the device
	already contain zeroes, then we don't write zeroes.  The reason for
	this is to avoid unnecessarily making the underlying storage
	non-sparse or (in the qcow2 case) growing it.

	is-zero and is-zero-device are modified so that zero detection is
	faster.  This is a nice side effect of making the first change.

	Since avoiding unnecessary zeroing involves reading the blocks before
	writing them, whereas before we just blindly wrote, this can be
	slower.  As you can see from the tests below, in the case where the
	disk is sparse, it actually turns out to be faster, because we avoid
	allocating the underlying blocks.

	However in the case where the disk is non-sparse and full of existing
	data, it is much slower.  There might be a case for an API flag to
	adjust whether or not we perform the zero check.  I did not add this
	flag because it is unlikely that the caller would have enough
	information to be able to set the flag correctly.

	                                (Elapsed time in seconds)
	Format  Test case                 Before     After

	Raw     Sparse                    16.4       5.3

	        Preallocated zero         17.0       18.8

	        Preallocated random       16.0       41.3

	Qcow2   preallocation=off         18.7       5.6

	        preallocation=metadata    17.4       5.8

	The current code uses a fixed block size of 4K for reading and
	writing.  I also tried the same tests with a block size of 64K but it
	didn't make any significant difference.

	(Thanks to Federico Simoncelli for suggesting this change)

2011-08-15  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Remove two C file dependencies which are not actually used in the POD.

2011-08-15  Hilko Bengen  <bengen@hilluzination.de>

	out-of-tree build: fix building library

	out-of-tree build: Fix up OCaml bindings and generator

	out-of-tree build: fix appliance

	out-of-tree build: fix documentation generation

2011-08-14  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Fix typo in Ruby bindings file.

2011-08-12  Richard W.M. Jones  <rjones@redhat.com>

	Note that additional memory may be required to typecheck Augeas lenses (RHBZ#729887).

	fish: Document that remote run in cmd substitution context hangs.
	This documents bug 592910.

2011-08-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.4.

2011-08-11  Richard W.M. Jones  <rjones@redhat.com>

	Fix 'unknown filesystem' warnings in old inspection code (RHBZ#678231 RHBZ#666578).
	This is a comprehensive fix for the warnings from the old (and
	obsolete) Perl inspection code.  For a full description and
	reproducer, see:

	https://bugzilla.redhat.com/show_bug.cgi?id=678231#c5

2011-08-08  Richard W.M. Jones  <rjones@redhat.com>

	inspection: Better checking for Windows root disks (RHBZ#729075).
	Previously any disk that had /autoexec.bat or /boot.ini or /ntldr
	would be picked up as a candidate for a Windows root disk.  If further
	checking could not find any systemroot (eg. /windows) then this would
	result in complete failure of inspection.

	In particular, this got confused by Hp_recovery partitions which have
	/autoexec.bat, but don't have a systemroot in one of the usual places
	(they have /MiniNT instead).

	What we do now is to properly investigate all possible systemroot
	places before deciding this is a Windows systemroot, so the subsequent
	failure cannot occur.

	(Thanks to lorimar for reporting this bug).

2011-08-08  Richard W.M. Jones  <rjones@redhat.com>

	build: Set TMPDIR for local testing.
	This avoids conflicts with the globally installed libguestfs
	appliance, or lets us build in multiple local directories at the same
	time without conflicts.

2011-08-07  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.3.

	daemon: Don't include .gitignore in EXTRA_DIST.
	This updates commit 60d5a50f4d3d9e2c2f5a7d42a6859de709bda3f6.

	fish: Add setenv and unsetenv commands.
	These commands allow you to manipulate the environment within
	guestfish.

	fish: Declare run_* functions in a generated header file.
	Calls to these functions are generated, so there is no need to declare
	the functions by hand.

2011-08-06  Richard W.M. Jones  <rjones@redhat.com>

	docs: Move deprecation notice up to the top in C man page.

	docs: Emphasize deprecation notice in man pages.

	docs: Fix function names in deprecation notices.

	docs: guestfs_set_out_of_memory_handler returns void, not int.
	It always has done.  The documentation was wrong.

	docs: Clarify error handler example.

2011-08-05  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix regression tests for new guestfish line numbers.
	This updates commit 319e946b92e175c05cdd1fdcb85c9b86f5631011.

	fish: Print input file and line number in error messages.
	eg:
	*stdin*:37: libguestfs: error: luks_close: Device lukstest is busy.

	gnulib: Add all other libs when linking libguestfs.so.
	This updates the previous two commits.

	gnulib: Add $(LIB_CLOCK_GETTIME) when linking libguestfs.so.
	We don't use this library (it is only used in the daemon),
	but we need to add this to make the linker happy.

2011-08-05  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Remove separate configure of daemon subdirectory.
	Combine the two Gnulib instances together.

	Add checks from old daemon/configure.ac into configure.ac.

	Fix daemon/Makefile.am so it is like a normal subdirectory
	Makefile.am.

	Because we are now using the replacement strerror_r function from
	Gnulib (instead of the one from glibc directly), this requires a small
	change to src/guestfs.c.

2011-08-05  Richard W.M. Jones  <rjones@redhat.com>

	Update TODO.

	debian: bash is required to run libtool replacement script.
	This was failing on Debian where $(SHELL) is the minimal dash shell.

	configure: Fix info about virt-resize when OCaml bindings are disabled.

	python: Don't name extension with .so.0.0 and symlinks (thanks Dan Berrange).

2011-08-02  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.2.

	Add regression test to catch missing libraries in the appliance.
	Related to RHBZ#727178.

	debian: Add gawk to packagelist.
	It's already included, but implicitly.

2011-08-01  Richard W.M. Jones  <rjones@redhat.com>

	virt-tar test: Stable ordering of test output.
	The files could be listed in any order, resulting in the test failing
	for no reason.  Sort the output of tar.

	Change link, since PostgreSQL switched to using git.

2011-07-31  Richard W.M. Jones  <rjones@redhat.com>

	debian: Build libguestfs-ocaml and libguestfs-ocaml-dev subpackages.

2011-07-29  Richard W.M. Jones  <rjones@redhat.com>

	Don't fail if HOSTNAME field is missing on Red Hat guests (RHBZ#726739).

2011-07-27  Richard W.M. Jones  <rjones@redhat.com>

	perl: Fix another place where qw() was used as parentheses.
	This is a fix for Perl 5.14.

	See previous commit 5c3c7e8825341e18c9449976f8a321a04cc78d79.

2011-07-26  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Fix locking in event callbacks.
	We weren't acquiring the GC lock around some allocations, resulting in
	segfaults when an event callback ran at the same time as a main thread
	allocation or garbage collection.

	In particular this fixes a noticable crash in guestfs-browser.

2011-07-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.13.1.

	virt-df: Re-add documentation for --csv option.
	The documentation for the --csv option disappeared between 1.6 and 1.8
	when we rewrote virt-df in C.  Re-add it from 1.6 sources.

	test-tool: Print FEBOOTSTRAP_* environment variables (RHBZ#671082).

	test-tool: Display state of pgroup flag from the handle.
	This updates commit f173543fd207bdc254a5eb75180d82ef25eacae9.

2011-07-26  Richard W.M. Jones  <rjones@redhat.com>

	launch: Add qemu_supports_re function.
	This function is like qemu_supports, but allows us to grep
	the help text using regular expressions.

	Note the function is not used yet.

2011-07-25  Richard W.M. Jones  <rjones@redhat.com>

	Require PCRE library.
	This library is widely available in distros.

2011-07-22  Richard W.M. Jones  <rjones@redhat.com>

	docs: Document FEBOOTSTRAP_KERNEL, FEBOOTSTRAP_MODULES (RHBZ#671082).

2011-07-22  Richard W.M. Jones  <rjones@redhat.com>

	perl: Fix CCFLAGS for Perl 5.14.
	A change to ExtUtils::CBuilder in Perl 5.14 causes CCFLAGS to
	completely replace, rather than appending, the C flags.

	The unfortunate consequence of this is that vital flags such as
	-D_FILE_OFFSET_BITS=64 are missing.  For 32 bit code, this means you
	get binary-incompatible code that completely fails to load.

	For further analysis see:

	http://www.nntp.perl.org/group/perl.perl5.porters/2011/04/msg171535.html

	This commit changes CCFLAGS so that it appends to the existing
	$Config{ccflags} instead of replacing it.  On earlier versions of Perl
	this means we get two copies of the flags, which is unfortunate but
	should be safe.

2011-07-21  Richard W.M. Jones  <rjones@redhat.com>

	build: Redirect ./configure errors in general to config.log.

	build: Send failed Perl test configure output to config.log.

2011-07-21  Richard W.M. Jones  <rjones@redhat.com>

	build: Allow 'make quickcheck' test-tool args to be overridden.
	A typical use for this is for packagers who want to increase
	the default timeout:

	  make quickcheck QUICKCHECK_TEST_TOOL_ARGS="-t 300"

2011-07-20  Richard W.M. Jones  <rjones@redhat.com>

	Update version number to 1.13.0.
	There is no build or tarball for this, since it is identical
	to 1.12.0.

	Version 1.12.0.

	Finalize release notes for 1.12 release.

	blkid: Use -c /dev/null option to kill the cache.
	On recent Debian, /etc/blkid.tab is now a symlink to /dev/.blkid.tab.
	Rather than chasing the cache file around (it may move to /run in future)
	use the -c /dev/null option to stop blkid from reading the cache.

2011-07-20  Richard W.M. Jones  <rjones@redhat.com>

	blkid: Detect when value not found and return empty string.
	If the blkid command returns 2, that means the value was not found.

	Note that this changes the output of the vfs-type API when the
	filesystem has no type (eg when it is empty).  Previously this would
	return an error.  Now it returns empty string "".

	We did not document this either way.  Making it return empty string is
	consistent with vfs-label and vfs-uuid.

	This change broke list-filesystems, since that code was assuming that
	vfs-type could only return a filesystem type or an error.

2011-07-20  Richard W.M. Jones  <rjones@redhat.com>

	docs: Update stable release instructions.

	configure: Remove -Wmissing-noreturn warning.

	po-docs: Fix generation of 'podfiles'.

	appliance: Capture stderr from qemu to the event system.

	appliance: Document pipe fds.

	Partially revert d82438431c1551610eb7d9945fa76d6387534582.
	It appears qemu-kvm does *not* require -machine accel=tcg option.
	That problem disappeared after upgrading seabios(!)  However leave the
	test for qemu -help option, since that's useful to determine if qemu
	is completely broken or not.

2011-07-19  Richard W.M. Jones  <rjones@redhat.com>

	build: Fix virtio-serial test for qemu 0.15.
	Now qemu 0.15 won't even start up unless the -machine accel=... option
	is specified.  Essentially this is a regression in qemu.

	Version 1.11.20.

	Update release notes.

	java: Add guestfs-java(3) man page.

	Add missing reference to guestfs-perl(3) to guestfs(3).

	java: Tidy up the generated C bindings file.

	java: Fix optional arguments in calls.
	This also adds tests.

	java: Enable warnings when compiling C bindings code.
	And fix the code so it doesn't generate warnings.

2011-07-18  Nikita A Menkovich  <menkovich@gmail.com>

	debian: Fix misspelling in debian/control.
	Updates commit c6577ac73db2d2d93a094ca2b7990e0d60e6a93a.

	debian: Add debian/guestfsd.* to the tarball.

	debian: Fix misspelling in debian/control.

2011-07-18  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.19.

	po-docs: Include source (POD files) in EXTRA_DIST.

	po-docs: Remove empty Spanish translation file.

	po-docs: Fix UTF-8 encoding problem.

2011-07-17  Richard W.M. Jones  <rjones@redhat.com>

	po-docs: Update the list of output manpages.

	po-docs: Generate list of *.pod files.
	Generate the list of *.pod files, instead of hard coding
	it (and having it get very very out of date).  Store the
	list in a separate file po-docs/podfiles.

	Add notes on making a libguestfs stable release.

	Pull latest translations from Transifex.

	Add tx pull wrapper script.

	ocaml: Generate ocamldoc.
	Also includes improvements to the OCaml documentation.

2011-07-16  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Bind guestfs_last_errno.

	Update API support.

	Update ROADMAP file.

	fish: Don't make --ro the default yet.
	Defer this decision to a future version of libguestfs.

2011-07-16  Richard W.M. Jones  <rjones@redhat.com>

	docs: Separate out combined =item 's in man pages.
	Turn:

	 =item B<-a> | B<--all>

	into:

	 =item B<-a>

	 =item B<--all>

	This gives a more natural-looking manual page, as well as making it
	easier to directly link to these sections.

2011-07-16  Richard W.M. Jones  <rjones@redhat.com>

	Update and rearrange release notes.

2011-07-15  Richard W.M. Jones  <rjones@redhat.com>

	Fix test-guestfish-escapes regression test to work with debug/trace enabled.
	If debugging or tracing is enabled, extra messages are sent to stderr
	which mess with this test.  Remove the extra messages before checking
	stderr.

	This updates commit 617e7f6bafa7de2303c08e1715004aae3141c389.

2011-07-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.18.

	Update release notes.

	Update API support.

	ruby: Add binding for guestfs_user_cancel.

	perl: Add binding for guestfs_user_cancel.

	ocaml: Add binding for guestfs_user_cancel.

	fish: Register ^C handler to cancel long transfers.

	fish: Add is_interactive flag.
	Decide early (before launch) if this is going to be an interactive
	session, and set the is_interactive flag.

2011-07-15  Richard W.M. Jones  <rjones@redhat.com>

	Add user cancellation to the C API.
	This allows long transfers (FileIn and FileOut operations) to be
	cancelled by calling the signal and thread safe guestfs_user_cancel
	function.

	Most of this commit consists of a multithreaded program that tests
	user cancellation of uploads and downloads.

2011-07-15  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: set-pgroup, get-pgroup
	If the pgroup flag is set in the handle, then the qemu and recovery
	subprocesses are placed in separate process groups.  The default is
	false.

	The purpose for setting up a process group is that ^C will not be
	passed from the main process down to these processes (killing them).
	This allows ^C and other keyboard events to be caught and handled in
	the main process.

2011-07-15  Richard W.M. Jones  <rjones@redhat.com>

	guestfs.h: Add missing extern keyword before event functions.

2011-07-14  Nikita A Menkovich  <menkovich@gmail.com>

	debian: New sub-package: guestfsd.
	This patch adds guestfsd debian package to the build.  The daemon can
	be installed in virtualization clients to enable libguestfs live
	access.

2011-07-14  Richard W.M. Jones  <rjones@redhat.com>

	New API: write-append
	Append content to the end of a file.

	fish: Handle backslash escapes in guestfish double-quoted strings.

2011-07-14  Richard W.M. Jones  <rjones@redhat.com>

	build: Add ./configure --enable-install-daemon
	If enabled, then the daemon will be installed in $sbindir
	(eg. /usr/sbin/guestfsd).  The default is off, as now.

	This option should be used by packagers when building the libguestfs
	live service.

2011-07-14  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.17.

	resize: Clarify examples in the man page.

	resize: Add btrfs support to virt-resize (RHBZ#721275).

	New API: btrfs-filesystem-resize (RHBZ#721160).
	This resizes a btrfs filesystem.

	docs: resize: Not just limited to resizing filesystems in partitions.
	If you use --LV-expand then filesystems in LVs can be resized too.

	mkfs: Don't die if mke2fs is not available.
	Allow other types of filesystems to be created.

2011-07-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.16.

	Update release notes.

2011-07-13  Richard W.M. Jones  <rjones@redhat.com>

	Refresh README file.
	Update and verify the list of requirements, by checking it against
	both configure.ac and the Fedora specfile.

	Remove some obsolete sections that covered historical ground.

2011-07-13  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add systemd to get /sbin/reboot for virt-rescue (RHBZ#661280).

	docs: Update API support.

	virt-resize: Arrange options in man page in alphabetical order.

	virt-resize: Add --ntfsresize-force option.
	Use the non-deprecated g#ntfsresize_opts API call, and also add
	the --ntfsresize-force option for forcing resize.

2011-07-12  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.15.

	TODO: Attach method for disconnected operation.

	part-get-bootable: Fix when partitions are missing or unordered (RHBZ#602997).

	New API: ntfsresize-opts (RHBZ#685009).
	This is a more comprehensive fix for RHBZ#685009.  Add a new API which
	allows the --force flag to be passed, allowing multiple NTFS resize
	operations in a single session.

	Document that ntfsresize cannot be used multiple times (RHBZ#685009).

2011-07-12  Richard W.M. Jones  <rjones@redhat.com>

	fish: Show device mapper device in tab completion (RHBZ#688062).
	With this change:

	><fs> luks-open /dev/vda1 lukstest
	Enter key or passphrase ("key"):
	><fs> ll /dev/<TAB>
	/dev/mapper/lukstest  /dev/vda              /dev/vda1

2011-07-12  Richard W.M. Jones  <rjones@redhat.com>

	New API: list-dm-devices (RHBZ#688062).
	List device mapper devices.

	Don't mention /dev/mapper in docs for vg-activate{,-all} commands.
	Although vg-activate and vg-activate-all do make /dev/mapper/VG-LV
	devices internally, we always prefer to use the /dev/VG/LV format and
	we return this format where possible.  Therefore don't mention
	/dev/mapper in this documentation.

	protocol: Force optargs_bitmask to be passed as 0 for non-opt actions.
	If the action doesn't take optional arguments, nevertheless force the
	optargs_bitmask field in the header to be passed as 0, and give an
	error if not.

	list-9p: Avoid double free along error path.
	This updates commit 5f10c3350338bbca735a74db26f98da968957bd9.

2011-07-06  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.14.

	mkfs-opts: Don't test optional arguments in this test.

2011-07-06  Nikita A Menkovich  <menkovich@gmail.com>

	mkfs-opts: Add optional sectorsize parameter.

2011-07-06  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Allow tests to properly test optional arguments.
	For optional arguments, you can now specify empty string to mean no
	argument, except for String optional arguments where you must use
	"NOARG" (empty string meaning a supplied empty string argument).

2011-07-04  Nikita A Menkovich  <menkovich@gmail.com>

	Implement inode option to mkfs_opts command.
	This is needed because older versions of grub(for example in centos)
	do not understand filesystems created with newer version of e2fsprogs.
	By default in e2fsprogs 1.4+ creates partitions with 256 bit inode
	size, and grub expect 128 bit size.

2011-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.13.

	Add caution subdirectory containing safety and liveness tests.
	Not that I'm paranoid about qemu breaking snapshots of anything like
	that ...

	Update release notes.

	inspector: Update documentation to cover <icon> element.
	This updates commit 7f16c346bbeba2f2fe3c31ccb85158178a284d84.

	python: Add explicit g.close() method (RHBZ#717786).

2011-06-29  Richard W.M. Jones  <rjones@redhat.com>

	docs: Update API support.

2011-06-28  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.12.

	fish: Add 'display' command for displaying graphical files.

2011-06-28  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-get-icon returns the guest icon.
	This API returns the guest's favicon if found, else an icon
	representing the guest operating system.  Currently supported by this
	patch: Fedora, RHEL and derivatives, Debian (but not Ubuntu),
	Windows XP, Windows 7.

	This also updates virt-inspector to include an <icon> element
	containing the icon in base64 encoding.

2011-06-28  Richard W.M. Jones  <rjones@redhat.com>

	Change download_to_tmp so it can work with multi-root operating systems.
	The previous guestfs___download_to_tmp function did not handle
	multiboot correctly.  In particular it used the same cache name
	for downloaded files from different roots, which could have caused
	things like applications in each root to be confused.

	This changes the function so that the cache filename is prefixed
	with the root / fs number, eg. $tmpdir/0-Name instead of $tmpdir/Name.

	This change also requires the function to return the new name, so
	all places in the code which called this function had to be
	updated.

	This updates and fixes commit 3c1f762abed92f7a358f3bc93e3396d0606b18ad.

2011-06-28  Richard W.M. Jones  <rjones@redhat.com>

	generator: Fix functions with both RBufferOut and optional args.
	No current function returns RBufferOut and has optional args.  Such
	functions would be generated incorrectly.

	RBufferOut implies a silent "size_t *size_r" argument is added after
	the regular arguments and before the optional arguments.  Various
	changes to the code generator need to be made to take this into
	account.

2011-06-28  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Fix comment in virt-inspector.rng.
	The comment referred to the command line syntax of the old
	virt-inspector.

	inspection: Remove note about root device string.
	This is a fairly pointless note/warning since (a) you can't use the
	API if you don't pass a root device string and (b) the code gives you
	a good error message if you pass something that is not a root device
	string.

	guestfs.h: Tidy up *_argv structs and other #defines.

	Revert "Lib.pm: unknown filesystem label SWAP-sda2 (RHBZ#666578)"
	This reverts commit 5cab0d6c807d8a3bf9690375c663d11a10e21656.

2011-06-22  Richard W.M. Jones  <rjones@redhat.com>

	New API: mount-9p lets you mount 9p filesystems (RHBZ#714981).
	The updated patch makes 'options' into an optional parameter.

	New API: list-9p lists 9p filesystem mount tags (RHBZ#714981).

2011-06-22  Richard W.M. Jones  <rjones@redhat.com>

	trace: Print empty list correctly.
	Empty lists returned by RStringList and RHashtable functions
	were incorrectly printed as [""].

	Fix this so they are printed as [] instead.

2011-06-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.11.

2011-06-20  Richard W.M. Jones  <rjones@redhat.com>

	Enable deprecated option only with gcc >= 4.5.
	Before gcc 4.5, the deprecated option did not take the optional string
	argument (see [1]).  This caused compilation to fail with gcc < 4.5.

	[1] http://gcc.gnu.org/gcc-4.5/changes.html

2011-06-18  Richard W.M. Jones  <rjones@redhat.com>

	perl: Ignore MYMETA.yml.
	This file is created by one of the build tools used by Perl 5.14.

	todo: Idea for interactive disk creator program.

2011-06-18  Richard W.M. Jones  <rjones@redhat.com>

	perl: Don't use qw() as parentheses.
	In Perl 5.14:

	Use of qw(...) as parentheses is deprecated at perl/blib/lib/Sys/Guestfs/Lib.pm line 1111.

2011-06-13  Richard W.M. Jones  <rjones@redhat.com>

	generator: Rewrite UUIDs that begin with zero byte.
	In util-linux <= 2.19, mkswap -U cannot handle the first byte of the
	UUID being zero, so we artificially rewrite such UUIDs.

	See: http://article.gmane.org/gmane.linux.utilities.util-linux-ng/4273

2011-06-10  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.10.

2011-06-10  Jim Meyering  <jim@meyering.net>

	build: include <string.h> for src/match.c's use of strlen

2011-06-10  Jim Meyering  <meyering@redhat.com>

	bootstrap: use --libtool

	build: update to latest gnulib
	* .gnulib: Update submodule to latest.
	* daemon/m4/gnulib-cache.m4: Regenerate.

2011-06-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Keep Coverity happy by ignoring some return values.

2011-06-09  Richard W.M. Jones  <rjones@redhat.com>

	Coverity: Don't return freed pointers from command* along error path.
	If the external command failed to run, we could free up the allocated
	*stdoutput and *stderror pointers, but then return those freed
	pointers to the caller.  The caller usually tries to print and free
	*stderror, so this is a serious error.

	Instead, return *stdoutput as NULL, and *stderror pointing to a
	generic error message.

2011-06-09  Richard W.M. Jones  <rjones@redhat.com>

	Coverity: Missing return on error path.

	Coverity: Ensure fp is closed along all error paths.

	Coverity: Close directory handle along error paths.

	Coverity: Don't leak argv arrays.

	Coverity: Don't leak error strings.

	Coverity: Check return value of sysroot_path.
	For some reason we were checking the parameter!

	Coverity: Check return value of malloc.

	Coverity: Don't close fd_cwd if fd_cwd == -1.

	Coverity: Avoid calling sort_strings (NULL, 0) on empty list.

	Coverity: Don't call free_strings (NULL).

	Coverity: Remove unreachable code.

2011-06-08  Richard W.M. Jones  <rjones@redhat.com>

	init: Remove timeout in udevadm settle command.
	The given timeout (10s) was too low if the appliance was
	running slowly, which caused a cascade of other failures
	during tests.

	Note that in udev-171 and above on Fedora, /sbin/start_udev
	no longer exists, so now we are using this manual method to
	start udevd.

2011-06-07  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Enhance "unexpected end of file when reading from daemon" error.
	Make this error more informative, since it is a common error when the
	appliance fails to start up.

2011-06-04  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.9.

	Only include date, not time, in BUGS file.
	This is so the file does not change so often when using 'make dist'.

	Remove dependency diagram, since it is very out of date.

	virt-ls: Add virt-ls -lR option for complex file iteration.

	virt-ls: Refactor mode selection code.
	This is just code motion.

	virt-ls: Small fix for output of --help option.

	Ubuntu: Fix compilation of virt-resize if old libguestfs already installed.

2011-06-03  Richard W.M. Jones  <rjones@redhat.com>

	recipes: in tr command \000 should be \0

2011-05-20  Nikita A Menkovich  <menkovich@gmail.com>

	daemon: Fix error message.

2011-05-20  Richard W.M. Jones  <rjones@redhat.com>

	todo: Document thoughts on visiting files.

2011-05-20  Nikita A Menkovich  <menkovich@gmail.com>

	debian: Add build dependencies: dpkg-dev, devscripts, gperf.

2011-05-19  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Make sysroot_len be size_t instead of int.

2011-05-18  Richard W.M. Jones  <rjones@redhat.com>

	todo: Remove event log parsing - done.

	build: Install guestfs-recipes.1.html on website.
	This updates commit f2c7df589c7e161f33b46d05a943b5489dc2cffe.

	Add new guestfs-rescue(1) man page with recipes.

	Remove guestfish recipes.
	These were out of date.  We will replace them with more up to date
	information.

	guestfs-examples(3): Remove link to OCaml homepage.

	Version 1.11.8.

	zero: Disable file test because of bug in file command.
	See: https://bugzilla.redhat.com/show_bug.cgi?id=705499

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Win XP paths can contain %systemdrive%.

	virt-win-reg: systemroot macro should be replaced case insensitive.

	New APIs: is-zero and is-zero-device, to test if file or device is all zeroes.

	Document that guestfs_file output depends on file(1) command.
	And therefore practically it cannot be part of the ABI since
	the output of file(1) itself changes from time to time.

	fuse: Add note about allowing other users to see filesystem (RHBZ#705200).

	Version 1.11.7.

	generator: Mark sfdisk functions as deprecated.
	Point to the part-* API calls as replacements.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	generator: Mark mount as deprecated.
	Callers should use 'mount_options' or 'mount_vfs' instead.

	See also:
	http://libguestfs.org/guestfs.3.html#libguestfs_gotchas

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	generator: Mark wait_ready as deprecated.
	The function has been a no op for a very long time.  By marking
	it as deprecated we make it clear that you shouldn't call it
	in new code.

	generator: Check the flags fields.

	Enable deprecation warnings on all C programs.

	fish: fuse: Remove redundant -DGUESTFS_DEFAULT_PATH.
	This was left over from earlier code.  It is used in the base library,
	but not in guestfish or guestmount.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	lib: Warn about deprecated functions (enable with -DGUESTFS_WARN_DEPRECATED=1).
	This allows C API users to be warned if they are using any deprecated
	functions.

	We don't warn about this by default.  Users have to specifically
	request this by defining the cpp symbol GUESTFS_WARN_DEPRECATED as 1.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add GCC version macro to the header file.
	This will be used to internally enable various GCC enhancements.

	lib: Add vertical space between each function in <guestfs.h>.

	appliance: Use qemu -machine option where available (RHBZ#700369).

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Support HKEY_USERS keys.
	This adds support for various Registry keys under HKEY_USERS (user
	preferences).

	(1) HKEY_USERS\<SID>
	    where <SID> is a User SID.

	For example:

	  # virt-win-reg Windows 'HKEY_USERS\S-1-5-19'

	lists out the LocalService user's registry.

	(2) HKEY_USERS\<username>
	    where <username> is a Windows local username (this is a
	    libguestfs extension).

	For example:

	  # virt-win-reg Windows 'HKEY_USERS\rjones'

	lists out the user preferences of user 'rjones'.

	HKU can be used as an abbreviation for HKEY_USERS.  Merging is also
	supported.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Don't use implicit $_ in map_path_to_hive function.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Don't hard-code the relationship between hive name and path.
	The crucial change is the tuple that is returned by map_path_to_hive:

	-    my ($hivename, [...]) = map_path_to_hive ($_);
	+    my ($hiveshortname, $hivefile, [...]) = map_path_to_hive ($_);

	Previously the $hivename was both the name of the hive (eg. "sam"),
	the name of the local copy in /tmp, and the name of the hive in
	%systemroot%\system32\config.

	In the new code, the $hiveshortname (eg. "sam") is still used for the
	local copy in /tmp, but we return $hivefile which is the full Windows
	path (eg. "/windows/system32/config/sam").

	The purpose of this change is to allow us in future to return hives
	from other Windows directories, specifically HKEY_USERS hives from
	Windows home directories.

	Although this is just code motion, it requires some quite extensive
	changes to virt-win-reg.

2011-05-17  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Add --unsafe-printable-strings option.
	This also requires hivex >= 1.2.7.

2011-05-16  Richard W.M. Jones  <rjones@redhat.com>

	todo: See if qemu -machine option can be used to select KVM, TCG acceleration.

2011-05-12  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.6.

	debian: Note that libconfig-dev ought to be required.
	However it doesn't appear to be in Debian at the moment.

	debian: Include debian/ directory in tarball.
	This makes it simpler to build Debian and Ubuntu packages from the
	tarballs.

	build: Sort EXTRA_DIST into lexicographic order.

2011-05-09  Richard W.M. Jones  <rjones@redhat.com>

	configure: Use Python platform-dependent site-packages.
	This updates commit c446e6e26e317e105870b0ab25fb082887e23bf6.

	Version 1.11.5.

	edit: Reorganize options alphabetically.

	edit: Fix reference to virt-cat in the documentation.
	This updates commit 2b5fbc882a0a79646b668c7b95442f0b3673d63a.

	Use Python distutils to determine include and site-packages directories.
	This change was inspired by Hilko Bengen's similar change to hivex:
	http://git.annexia.org/?p=hivex.git;a=commitdiff;h=b808c875a34e62fcdf360534f923d6030590ff44

	Rewrite virt-edit in C.

2011-05-08  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Remove some less useful debugging messages.
	Remove some debug messages which were basically left over from when
	the code was being developed.

	However we leave debug messages where it is printing an external
	command that is about to be executed, since those are useful.

2011-05-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.4.

2011-05-08  Richard W.M. Jones  <rjones@redhat.com>

	Fix guestfs___rollback_cmdline when pos == 0.
	Because of the previous change to size_t, when pos == 0 the loop would
	wrap around and cause a segmentation fault.

	This fixes a regression introduced by
	commit 10167cea98f93a74abe63f0a54d3a662997e7489.

2011-05-06  Richard W.M. Jones  <rjones@redhat.com>

	configure: Sort output files in AC_CONFIG_FILES section.

2011-05-06  Richard W.M. Jones  <rjones@redhat.com>

	fish: Allow -d UUID (specify libvirt domains by UUID).
	This applies in all the commands which use the common C option parsing
	code, ie:

	* guestfish
	* guestmount
	* virt-cat
	* virt-df
	* virt-filesystems
	* virt-inspector
	* virt-ls
	* virt-rescue

2011-05-06  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Add allowuuid flag to allow UUIDs to be used for names.
	This makes a backwards-compatible change to the add-domain API.  If
	the optional allowuuid flag is true then UUIDs can be used instead of
	names in the domain name parameter.

2011-05-06  Richard W.M. Jones  <rjones@redhat.com>

	add-domain: Suppress libvirt errors on stderr.
	Install an error handler on the libvirt error connection so that
	errors are not printed on stderr (instead they go up through the usual
	libguestfs error mechanism).

	Unfortunately this doesn't suppress initial connection error messages
	to stderr.  I cannot see how to do this without affecting the global
	libvirt error handler, which is not acceptable for a library to be
	doing.

2011-05-01  Richard W.M. Jones  <rjones@redhat.com>

	doc: Use I<-...> for cross-references to command line options.
	This is now used consistently across all the documentation.

2011-05-01  Richard W.M. Jones  <rjones@redhat.com>

	df: Refresh virt-df(1) man page.
	Add examples.

	Refresh description.

	Use I<...> to refer to command line options.

2011-05-01  Richard W.M. Jones  <rjones@redhat.com>

	guestfs(3): Note that host file size limits affect guest disk limits.

	guestfs(3): Refresh documentation for private data area keys.

	guestfs(3): Document that old callback functions still work.

	guestfs(3): Referenced section is above, not below.

	guestfs(3): Refresh autosync gotcha documentation.

2011-04-30  Richard W.M. Jones  <rjones@redhat.com>

	guestfs(3): Writing to a file descriptor, not just a pipe.

	guestfs(3): Refresh documentation for guestfs_create, guestfs_close.

2011-04-30  Richard W.M. Jones  <rjones@redhat.com>

	Add a trace message to guestfs_close.
	Only the "first half" (ie. the call) is traced, because by the time
	the function returns the handle has gone and there's no way to
	generate events.

	You should see:

	  libguestfs: trace: close

2011-04-30  Richard W.M. Jones  <rjones@redhat.com>

	internal: Use size_t instead of int for command line size.

	guestfs_close: Move local variables close to code that uses them.
	This is just code motion.

	guestfs_close: Remove unused local variable.

2011-04-27  Richard W.M. Jones  <rjones@redhat.com>

	guestfs(3): Document limits.

2011-04-26  Richard W.M. Jones  <rjones@redhat.com>

	todo: Integrate with CMDBs (thanks Quinten Laureijs).

2011-04-22  Richard W.M. Jones  <rjones@redhat.com>

	python: Ensure Python GIL state is correct during callback.
	This updates commit 2cac52000a6a96a583af72e289a4296c596047d5.

	Version 1.11.3.

	python: Implement new event API.
	This implements set_event_callback and delete_event_callback so that
	Python programs can use the new event mechanism.

2011-04-22  Richard W.M. Jones  <rjones@redhat.com>

	python: Rearrange C files for bindings.
	Move the hand-written functions into two new files:
	guestfs-py.h and guestfs-py-byhand.c

	This is just code motion.

2011-04-22  Richard W.M. Jones  <rjones@redhat.com>

	perl: Decrement refcount in $g->delete_event_callback.
	This updates commit bc468c87d04b34faacd208c49cca4a5096e5103c.

2011-04-21  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Look for %systemroot%/system32 for Windows heuristic.
	The virt-v2v transfer ISO had a /windows directory.  The core
	inspection code thought this was a Windows root filesystem.

	list-applications: If software hive is missing, this is an error.
	virt-inspector would exit silently if list-applications failed along
	this error path.

	inspect: "centos" and "scientificlinux" are now separate distros.
	Previously we returned "rhel" for these, which was not accurate.

	Update TODO.

2011-04-18  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.11.2.

2011-04-18  Richard W.M. Jones  <rjones@redhat.com>

	python: Release Python GIL while running libguestfs calls.
	Release the Python global interpreter lock while running libguestfs
	calls.

	We don't release it around guestfs_create() because that is a short
	call that just allocates memory.  We do release it around
	guestfs_close() since that is a potentially long-running (it can call
	wait(2) amongst other things).  We also release it around all the
	other generated Python calls.

	We don't yet support callbacks into Python code (ie. the new event
	API).  But when we do in future, we will need to also handle the GIL
	around those callbacks.

	This code is adapted from libvirt's python/typewrappers.h.  Thanks to
	Dan Berrange for showing us how to do this properly.

2011-04-16  Richard W.M. Jones  <rjones@redhat.com>

	fish: --rw option will be mandatory in 1.12 not 1.10.

	fish: Fix typo in guestfish man page (--format option).

	inspector: Refresh the virt-inspector(1) manpage.

	run script: Don't depend on libtool being installed.
	Also use 'exec' to run the program.

	Version 1.11.1.

	Add images/guestfs-aux/fedora-packages.db{,.txt} to EXTRA_DIST.
	This updates commit d95874db3dc6c415061b86275d03770b4f28ffbb.

2011-04-16  Richard W.M. Jones  <rjones@redhat.com>

	Remove local LIBGUESTFS_PATH detection from guestfish and guestmount.
	Remove the hack that let you run ./fish/guestfish or
	./fuse/guestmount.  You now have to do:

	  ./run ./fish/guestfish
	or
	  ./run ./fuse/guestmount

	to run these programs without installing.

2011-04-16  Richard W.M. Jones  <rjones@redhat.com>

	Remove ad-hoc run*locally scripts, replace with './run'
	Remove all the run*locally scripts and replace with a single top level
	./run shell script.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Handle write failures when creating example-*.xml.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	Delete file so db_load doesn't run incrementally.
	It turns out that db_load incrementally updates the database (instead
	of writing a new one).  Remove the old database to force db_load to
	write a new one.

	This also ensures that we handle write failure gracefully.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Include <hostname> in output.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Get version and release of RPM packages.
	This commit downloads the Packages RPM database allowing us to find
	other details about installed RPM packages (via
	inspect-list-applications).  This adds version and release.  Epoch
	cannot yet be found.

	This commit also updates the Fedora example image so that it contains
	a dummy RPM Packages database with some data.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Abstract out db_dump code for listing RPM applications.
	There are two changes here:

	(1) The code for listing RPM applications ran db_dump and parsed the
	output.  We abstract out that parsing code into a separate reusable
	module (src/dbdump.c).

	(2) The old db_dump parsing code used db_dump -p (printable) format.
	Instead use db_dump -k (hex) format so we can read binary fields.

2011-04-14  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Split code into separate files.
	The src/inspect.c file had grown rather large -- 3,500 lines.  Split
	it across several files according to function.

	This is just moving code.

	After the split the files are more evenly divided:

	  536 src/inspect_apps.c
	  766 src/inspect.c
	  537 src/inspect_fs.c
	  404 src/inspect_fs_cd.c
	  785 src/inspect_fs_unix.c
	  535 src/inspect_fs_windows.c
	 3563 total

2011-04-13  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Move shared PCRE match functions to separate file.
	This is just moving code around.

2011-04-13  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Cache downloaded files in the handle g->tmpdir.
	During inspection we download various files such as the Windows
	'software' and 'system' registries.  Previously these were downloaded
	as temporary files and discarded immediately after use.  This meant
	that the 'software' registry was being downloaded twice by
	virt-inspector (it's required once for basic OS inspection, and a
	second time to list Windows applications).

	This commit changes this so that these files are cached in g->tmpdir,
	and thus the second time we just reuse the file we've already
	downloaded.

	Callers shouldn't be relying on inspect-list-applications to reread
	the actual registry from the VM (unless you close and reopen the
	handle).  It says in the documentation that the results of inspection
	may be cached in the handle.

2011-04-13  Richard W.M. Jones  <rjones@redhat.com>

	Remove temporary directory containing arbitrary files.
	In preparation for caching inspection information in the temporary
	directory (g->tmpdir), allow the temporary directory to contain
	arbitrary files, and remove all of them when the handle is closed.

	This just generalizes the previous method of cleaning up the tmpdir.

2011-04-13  Jim Meyering  <jim@meyering.net>

	Include string.h and libintl.h, as needed.
	* df/df.c: As above.
	* df/main.c: As above.
	* df/output.c: As above.
	* fuse/guestmount.c: As above.
	* inspector/virt-inspector.c: As above.
	* rescue/virt-rescue.c: As above.

	Add more missing include directives.
	* cat/virt-cat.c: Include string.h and libintl.h.
	* cat/virt-filesystems.c: Likewise.
	* cat/virt-ls.c: Likewise.

2011-04-13  Nikita A Menkovich  <menkovich@gmail.com>

	debian: Add dependency on libpcre-ocaml-dev.

2011-04-13  Jim Meyering  <jim@meyering.net>

	Add missing include directives.
	* fish/config.c: Include string.h, for use of strlen.
	* fish/keys.c: Likewise, but for use of memcpy.
	* fish/man.c: Likewise, but for use of memset.

	Avoid warning about implicit declaration of strlen.
	* src/events.c: Include <string.h>, for use of strlen.

2011-04-12  Richard W.M. Jones  <rjones@redhat.com>

	debian: libguestfs-test-tool-helper no longer exists.

	resize: Include stamp file for manpage in CLEANFILES.

	Version 1.11.0.

	Update RELEASE-NOTES for 1.10 release.

	Update ROADMAP for 1.12 and beyond.

	README: virtio-serial is required.

	guestfs(3): Fix documentation for drive letters.
	We can now get drive letter mappings through the inspection API.

	inspect: Fix some small memory leaks in Windows inspection.
	Found using valgrind.

	fish: Allows win:... paths to work with drives mounted anywhere.
	This allows you to mount disks on (eg) /c and /e and have the
	guestfish win:... path mechanism map drive letters to the
	right places.

2011-04-11  Richard W.M. Jones  <rjones@redhat.com>

	todo: guestfish drive letters.

2011-04-10  Richard W.M. Jones  <rjones@redhat.com>

	resize: Update dependencies.

	resize: Don't build this directory in parallel.

	resize: Consistent use of 'part' in help output.

	resize: Missing \n after version.

2011-04-09  Richard W.M. Jones  <rjones@redhat.com>

	resize: Link with local copy of guestfs.

	Version 1.9.18.

	Update POT file.

	Include po/Makefile.in.in in git, to avoid needing to rerun gettextize.

	build: virt-resize manpage.

2011-04-09  Richard W.M. Jones  <rjones@redhat.com>

	Rewrite virt-resize in OCaml.
	This is a fairly straightforward translation of Perl virt-resize into
	OCaml.  It is bug-for-bug and feature-for-feature identical to the
	Perl version, except as noted below.

	The motivation is to have a more solid, high-level, statically safe
	compiled language to go forwards with fixing some of the harder bugs
	in virt-resize.  In particular contracts between different parts of
	the program are now handled by statically typed structures checked at
	compile time, instead of the very ad-hoc unchecked hash tables used by
	the Perl version.

	OCaml and the ocaml-pcre library (Perl-Compatible Regular Expressions
	bindings for OCaml) are required.

	Extra features in this version:

	- 32 bit hosts are now supported.

	- We try hard to handle the case where the target disk is not "clean"
	  (ie. all zeroes).  It usually works for this case, whereas the
	  previous version would usually fail.  However it is still
	  recommended that the system administrator creates a fresh blank disk
	  for the target before running the program.

	- User messages are a bit more verbose and helpful.  You can turn
	  these off with the -q (--quiet) option.

	There is one lost feature:

	- Ability to specify >= T (terabytes) sizes in command line size
	  expressions has been removed.  This probably didn't work in the Perl
	  version.

	Other differences:

	- The first partition on the target is no longer aligned; instead we
	  place it at the same sector as on the source.  I suspect that
	  aligning it was causing the bootloader failures.

	- Because it's easier, we do more sanity checking on the source disk.
	  This might lead to more failures, but they'd be failures you'd want
	  to know about.

	- The order in which operations are performed has been changed to make
	  it more logical.  The user should not notice any functional
	  difference, but debug messages will be quite a bit different.

	- virt-resize is a compiled binary, not a script.

2011-04-07  Matthew Booth  <mbooth@redhat.com>

	Compile rpcgen-generated files with -fno-strict-aliasing
	rpcgen generates source which can't be safely compiled with strict-aliasing
	enabled.

2011-04-06  Richard W.M. Jones  <rjones@redhat.com>

	test-tool: Don't use static binary helper program, nor ISO.
	This simplifies the libguestfs-test-tool program down to essentials.
	Bugs most commonly occur when starting the appliance, so what we
	should concentrate on test is just that.

	Previously the test tool built a special static binary helper program,
	packaged it up in an ISO, then ran this inside the appliance.  None of
	this really tested useful failure modes, but they did make the test
	tool itself harder to build, harder for users to run, and more
	brittle.

	This change also adds some more debugging of libguestfs state.

2011-04-06  Richard W.M. Jones  <rjones@redhat.com>

	Update RELEASE-NOTES file.

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.17.

	fish: copy-in, copy-out, edit, more commands can use win:... prefix.

	fish: Enhance guestfish win:... parsing to understand drive letters.

	edit: Allow Windows-style drive letters and paths to be used.

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-get-drive-mappings
	This returns the drive mappings from the Windows Registry.

	virt-inspector displays the drive mappings, giving output
	similar to this:

	  <drive_mappings>
	    <drive_mapping name="C">/dev/sda2</drive_mapping>
	    <drive_mapping name="E">/dev/sdb1</drive_mapping>
	  </drive_mappings>

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-get-windows-current-control-set
	This returns the actual registry key corresponding to
	CurrentControlSet (eg. it might be "ControlSet001").

	Previously the inspection code was hard-coding ControlSet001.  Now we
	use the correct control set, and also make it available to callers
	through the API.

	This commit also updates the virt-dhcp-address example so it uses this
	new API.

	virt-inspector displays the current control set when available.

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Reimplement 'mounts' and 'mountpoints' commands.
	Reimplement these so they read /proc/mounts instead of trying to parse
	the output of the 'mount' external command.

	One consequence of this is that these commands now work again for
	ntfs-3g filesystems.

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	Rename resolve_windows_path_silently to case_sensitive_path_silently.
	A more accurate description of what this function does.

	This is just code motion.

2011-04-05  Richard W.M. Jones  <rjones@redhat.com>

	edit: Move 'exit 0' to end of file.
	This is just code motion.

	edit: Let $root == $roots[0].
	This is just code motion.

	cat, edit: Reference guestfish equivalent commands in the manual pages.

2011-04-04  Richard W.M. Jones  <rjones@redhat.com>

	python: Convert any iterable argument to a list (RHBZ#693324).
	Thanks to Erez Shinan.

2011-04-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add 'pulse mode' to the progress bar.

	fish: Move variable decls to top of function.
	This is just code motion.

2011-04-02  Nikita A Menkovich  <menkovich@gmail.com>

	debian: Add missing deps: ocaml-findlib, libstring-shellquote-perl.

	mkisofs is obsolete.  Require genisoimage everywhere instead.

2011-04-02  Richard W.M. Jones  <rjones@redhat.com>

	Pull translations from Transifex.
	New Ukrainian po-docs translation added.

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.16.

	du: Add pulse mode progress messages.

	cpmv: Add pulse mode progress messages.

	checksum: Add pulse mode progress messages.

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Introduce "pulse mode" progress events.
	This introduces a new form of progress event, where we don't know how
	much of the operation has taken place, but we nevertheless want to
	send back some indication of activity.  Some progress bar indicators
	directly support this, eg. GtkProgressBar where it is known as "pulse
	mode".

	A pulse mode progress message is a special backwards-compatible form
	of the ordinary progress message.  No change is required in callers,
	unless they want to add support for pulse mode.

	The daemon sends:

	 - zero or more progress messages with position = 0, total = 1
	 - a single final progress message with position = total = 1

	Note that the final progress message may not be sent if the call fails
	and returns an error.  This is consistent with the behaviour of
	ordinary progress messages.

	The daemon allows two types of implementation.  Either you can just
	call notify_progress (0, 1); ...; notify_progress (1, 1) as usual.

	Or you can call the functions pulse_mode_start, pulse_mode_end and/or
	pulse_mode_cancel (see documentation in daemon/daemon.h).  For this
	second form of call, the guarantee is very weak: it *just* says the
	daemon is still capable of doing something, and it doesn't imply that
	if there is a subprocess that it is doing anything.  However this does
	make it very easy to add pulse mode progress messages to all sorts of
	existing calls that depend on long-running external commands.

	To do: add a third variant that monitors a subprocess and only sends
	back progress messages if it's doing something, where "doing
	something" might indicate it's using CPU time or it's printing output.

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	daemon: When running commands, restart select if we receive a signal.

	daemon: Reset SIGPIPE to default before running subprocesses.

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	Generate progress messages during launch.
	This commit generates approximate progress messages during the
	guestfs_launch call.  Currently this code generates:

	   0 / 12: launch clock starts
	   3 / 12: appliance created
	   6 / 12: detected that guest kernel started
	   9 / 12: detected that /init script is running
	  12 / 12: launch completed successfully

	(Note this is not an ABI and may be changed or removed in a future
	version).

	Progress messages are only generated at all if 5 seconds have elapsed
	since the launch, and they are only generated for the ordinary
	appliance (not if using attach-method to attach to an existing virtio
	serial port).

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Sleep for 1ms before reading log messages.
	As explained in the comment:

	  /* QEMU's console emulates a 16550A serial port.  The real 16550A
	   * device has a small FIFO buffer (16 bytes) which means here we see
	   * lots of small reads of 1-16 bytes in length, usually single
	   * bytes.  Sleeping here for a very brief period groups reads
	   * together (so we usually get a few lines of output at once) and
	   * improves overall throughput, as well as making the event
	   * interface a bit more sane for callers.  With a virtio-serial
	   * based console (not yet implemented) we may be able to remove
	   * this.  XXX
	   */

2011-04-01  Richard W.M. Jones  <rjones@redhat.com>

	Shared function to send progress messages.
	This is just code motion.

	Add prototype for timeval_diff.
	This is just code motion.

	docs: Progress messages don't necessarily reach 100% in the error case.
	This should be obvious, and now it is documented to avoid any
	confusion.

	docs: Fix link to progress messages in guestfs(3).
	This updates commit 4e0cf4dbf8a8a96288f70114fdc3939da0aa7ad1.

	Update copyright date on main guestfs(3) man page.

	Version 1.9.15.

	fish: Fix incorrect path passed to perror.
	Fix commit b8e1dee73a1deef1bfd5937e2abfbe9afef7b1ef.

	Add libguestfs-tools.conf file to EXTRA_DIST.

2011-03-31  Richard W.M. Jones  <rjones@redhat.com>

	examples: Add virt-dhcp-address program.
	This is like the mythical 'virt-ifconfig'.  There is not enough
	certainty around the right way to be doing this for us to make
	a full virt tool for this.  Therefore the code is just an example.

	examples: Use WARN_CFLAGS, WERROR_CFLAGS macros instead of -Wall

	examples: size_t-correctness change in inspect_vm.c

	contrib: Fix URLs in README file.

2011-03-31  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Detect 32 bit applications running on WOW64 emulator (RHBZ#692545).
	These applications are located along a different Registry path.  See
	http://support.microsoft.com/kb/896459 for all the details.

	Thanks Jinxin Zheng for finding the bug and the solution.

2011-03-31  Richard W.M. Jones  <rjones@redhat.com>

	Add /etc/libguestfs-tools.conf configuration file.
	This allows the default for --ro or --rw to be controlled for the
	three tools guestfish, guestmount and virt-rescue.

2011-03-30  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Add -w|--rw option.

	fuse: Document -w flag in --help output.

2011-03-29  Richard W.M. Jones  <rjones@redhat.com>

	Exclude po-docs directory completely if po4a not available.
	Lift the if HAVE_PO4A ... endif completely out of the po-docs
	subdirectory, and just exclude the whole subdirectory if the po4a
	program is not available.

	tests: Don't fail when compiled without support for NTFS.

	perl: Canonicalize /dev/vd* paths in old inspection code (RHBZ#691724).

2011-03-28  Richard W.M. Jones  <rjones@redhat.com>

	README: Note that getfacl, getfattr are optional dependencies.

	Version 1.9.14.

2011-03-28  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Fix getxattr, listxattr calls and add a regression test (RHBZ#691389).
	The documentation for the getxattr and listxattr calls is not very
	clear and as a result we were always returning something different
	from that which the Linux kernel would usually return.

	This fixes these calls, at least far enough that both the 'getfattr'
	and 'getfacl' programs now work fine on FUSE-mounted filesystems.

	Note that SELinux attrs are *not* passed through.  This appears to be
	a known bug between SELinux and FUSE.  For more information see:

	http://www.spinics.net/lists/selinux/msg09460.html

2011-03-28  Richard W.M. Jones  <rjones@redhat.com>

	fish: fuse: Add -m dev:mnt:opts to allow mount options to be specified.
	This lets you turn on ACLs and xattrs by doing:

	  -m /dev/sda1:/:acl,user_xattr

	The extra parameter is passed through to mount_options:

	  libguestfs: trace: mount_options "acl,user_xattr" "/dev/sda1" "/"

2011-03-28  Richard W.M. Jones  <rjones@redhat.com>

	roadmap: Move QMP to 'beyond 1.10'.
	See: https://www.redhat.com/archives/libguestfs/2011-March/msg00124.html

	Open release notes for version 1.10.0.

	ruby: Don't segfault if callbacks throw exceptions (RHBZ#664558). (Thanks Chris Lalancette).
	See:
	https://bugzilla.redhat.com/show_bug.cgi?id=664558#c6

2011-03-25  Richard W.M. Jones  <rjones@redhat.com>

	RHEL 5: Use mke4fs on RHEL 5 as replacement for mke2fs.

	mkfs: Force mke2fs to create a filesystem even on raw IDE device (RHBZ#690819).

	Rename $tmpdir/sock to $tmpdir/guestfsd.sock.
	No functional change; this simply makes the purpose of the
	socket clearer.

	inspector: Add detection of Slackware.

2011-03-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.13.

2011-03-23  Richard W.M. Jones  <rjones@redhat.com>

	New API: guestfs_inspect_get_product_variant
	This returns a product variant for inspected operating systems.  In
	practice this is a useful way to distinguish between consumer and
	enterprise/server versions of Windows that otherwise have the same
	version number.

2011-03-22  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add better quick help to --help output.

	fish: Add -w|--rw option to --help output.

	inspect: Don't fail for Windows guests with multiple disks (RHBZ#674130).

	inspect: Simplify Windows root heuristic code.
	Add special is_file_nocase and is_dir_nocase functions and
	remove the duplicate checks for files and directories with
	different cases.

	umount-all: Use /proc/mounts instead of output of 'mount' command.
	The particular issue is that ntfs-3g (or FUSE?) no longer appears
	to update /etc/mtab, which meant that umount-all was not unmounting
	these partitions.  But parsing /proc/mounts is simpler and more
	robust in any case.

2011-03-19  Richard W.M. Jones  <rjones@redhat.com>

	guestfs(3): 'kernel' -> 'supermin appliance'.

	guestfs(3): Indent line to keep code together.

	todo: Add ntfsck.

2011-03-18  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add all stamp-*.pod files to CLEANFILES.

	Version 1.9.12.

2011-03-18  Richard W.M. Jones  <rjones@redhat.com>

	proto: Fix both-ends-cancel case.
	In the case where both ends cancel at the same time (eg. both ends
	realize there are errors before or during the transfer), previously we
	skipped sending back an error from the daemon, on the spurious basis
	that the library would not need it (the library is cancelling because
	of its own error).

	However this is wrong: we should always send back an error message
	from the daemon in order to preserve synchronization of the protocol.

	A simple test case is:

	  $ guestfish -N fs -m /dev/sda1 upload nosuchfile /
	  libguestfs: error: open: nosuchfile: No such file or directory
	  libguestfs: error: unexpected procedure number (66/282)

	(Notice two things: there are errors at both ends, and the
	loss of synchronization).

	After applying this commit, the loss of synchronization does not occur
	and we just see the library error:

	  $ guestfish -N fs -m /dev/sda1 upload nosuchfile /
	  libguestfs: error: open: nosuchfile: No such file or directory

	The choice of displaying the library or the daemon error is fairly
	arbitrary in this case -- it would be valid to display either or even
	to combine them into one error.  Displaying the library error only
	makes the code considerably simpler.

	This commit also (re-)enables a test for this case.

2011-03-18  Richard W.M. Jones  <rjones@redhat.com>

	proto: Fix FileIn ops that abort during the chunk upload stage.
	As a previous, incorrect attempt to fix RHBZ#576879 we tried to
	prevent the daemon from sending an error reply if the daemon had
	cancelled the transfer.  This is wrong: the daemon should send an
	error reply in these cases.

	A simple test case is this:

	  guestfish -N fs -m /dev/sda1 upload big-file /

	(This fails because the target "/" is a directory, not a file.)
	Prior to this commit, libguestfs would hang instead of printing an
	error.  With this commit, libguestfs prints an error.

	What is happening is:

	  (1) Library is uploading
	  a file                          (2) In the middle of the long
	                                  upload, daemon detects an error.
	                                  Daemon cancels.
	  (3) Library detects cancel,
	  sends cancel chunk, then waits
	  for the error reply from the
	  daemon.                         (4) Daemon is supposed to send
	                                  an error reply message.

	Because step (4) wasn't happening, uploads that failed like this would
	hang in the library (waiting for the error message, while the daemon
	was waiting for the next request).

	This also adds a regression test.

	This temporarily breaks the "both ends cancel" case (RHBZ#576879c5).
	Therefore the test for that is disabled, and this is fixed in the next
	patch in the series.

	This partially reverts commit dc706a639eec16084c0618baf7bfde00c6565f63.

2011-03-18  Richard Jones  <rjones@redhat.com>

	proto: Don't drop outgoing message when daemon cancels (RHBZ#576879).
	This is a (potential) fix for the long standing protocol bug
	which causes loss of synchronization when a FileIn action
	fails very early on the daemon side.  The canonical example
	would be the 'upload' action failing immediately if no filesystem
	is mounted.

	What's supposed to happen is this:

	  (1) library sends
	  request message              (2) daemon processes request
	  first chunk of data          and sees that it will fail,
	                               sends cancellation
	                               (3) discards chunks of data
	  (4) library sees daemon
	  cancellation and stops
	  sending chunks

	It was going wrong in step (1), in guestfs___send_to_daemon.
	In some (timing related) circumstances, send_to_daemon could
	receive the cancellation before sending the first chunk, at
	which point it would exit, *discarding the first chunk*.
	This causes the daemon to fail in step (3) since it reads the
	next request as if it was a chunk, thus losing synchronization.
	(The protocol specifies that you always have to send at least
	one chunk if there is a FileIn or FileOut parameter).

	The patch changes guestfs___send_to_daemon so that if it detects
	cancellation, it sends the remaining data in its output buffer
	instead of discarding it.  (This also fixes another edge case
	to do with sending partial data although I don't think we
	ever saw that in practice).

2011-03-18  Richard Jones  <rjones@redhat.com>

	daemon: Improve protocol debug messages.
	This adds 'guestfsd: ...' prefix before each message, and
	also puts a message at the top of the main loop just after
	a new message has been received.

	The intent is to make it simpler to follow the protocol.

2011-03-18  Richard W.M. Jones  <rjones@redhat.com>

	regressions: Enable both tests for bug 576879 (not fixed).

	daemon: Print error for invalid chunk.cancel field.
	The chunk.cancel field should always be [0|1].  If it is not then
	something has gone badly wrong -- probably loss of synchronization.
	If this occurs print a debug message and return error from
	receive_file function.

	proto: Improve debug messages.

	haskell: Small fixes for ghc 7.

2011-03-17  Richard W.M. Jones  <rjones@redhat.com>

	regressions: Rename the file we are uploading too.
	This updates commit cbd8da6d4dd2e4cbc3b87fbc7cb7d6129eb69172.

2011-03-17  Richard W.M. Jones  <rjones@redhat.com>

	regressions: Split the test rhbz576879.sh into two halves.
	We suspect that there are in fact two separate bugs.  In any
	case it makes sense for the two tests to be done separately.

	Note that these tests still fail.

2011-03-16  Richard W.M. Jones  <rjones@redhat.com>

	tests: Ignore return value from fwrite.

2011-03-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.11.

	ruby: Missing files from EXTRA_DIST.

	perl: Binding and test for guestfs_last_errno (RHBZ#672491).

	ruby: Use ALLOC_N to avoid potential memory leak (RHBZ#667610).

	ruby: Remove unnecessary checking around StringValueCStr (RHBZ#667610).

	ruby: Add rdoc documentation (RHBZ#667610).

	New event API - Ruby bindings (RHBZ#664558).

2011-03-15  Richard W.M. Jones  <rjones@redhat.com>

	New event API - Perl bindings (RHBZ#664558).
	The methods $h->set_progress_callback and $h->clear_progress_callback
	have been removed, and replaced with a complete mechanism for setting
	and deleting general-purpose events.

	This also updates virt-resize to use the new API.

2011-03-15  Richard W.M. Jones  <rjones@redhat.com>

	New event API - OCaml bindings (RHBZ#664558).
	The functions set_progress_callback and clear_progress_callback have
	been removed, and replaced with a complete mechanism for setting and
	deleting general-purpose events.

2011-03-15  Richard W.M. Jones  <rjones@redhat.com>

	New event API (RHBZ#664558).
	This API allows more than one callback to be registered for each
	event, makes it possible to call the API from other languages, and
	allows [nearly all] log, debug and trace messages to be rerouted from
	stderr.

	An older version of this API was discussed on the mailing list here:
	https://www.redhat.com/archives/libguestfs/2010-December/msg00081.html
	https://www.redhat.com/archives/libguestfs/2011-January/msg00012.html

	This also updates guestfish to use the new API for its progress bars.

2011-03-15  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: guestfs_first_private, guestfs_next_private to walk over the private data area.
	This commit adds new APIs for walking over the keys and pointers in
	the private data area associated with each handle (note this is only
	applicable to the C API).

2011-03-15  Angus Salkeld  <asalkeld@redhat.com>

	check the pid is > 0 before calling waitpid()

2011-03-14  Angus Salkeld  <asalkeld@redhat.com>

	check the pid is > 0 before calling waitpid()

2011-03-11  Richard W.M. Jones  <rjones@redhat.com>

	RHEL5: Old pod2man didn't have --stderr or -u options.

	configure: Remove unnecessary variable assignment.
	Left over from pre-virtio-serial days.

	RHEL5: Make use of 'futimens' function optional.

2011-03-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.10.

2011-03-08  Richard W.M. Jones  <rjones@redhat.com>

	Detect Red Hat Desktop as 'rhel' distro (RHBZ#682979).
	/etc/redhat-release on Red Hat Desktop contains the following
	string:
	  Red Hat Desktop release 4 (Nahant Update 8)

	Previously we matched against the string "Red Hat Enterprise Linux"
	but since this does not contain that string, this distro wasn't being
	detected correctly.

	Note this also changes the obsolete Perl code, for the benefit of
	virt-v2v.

2011-03-07  Richard W.M. Jones  <rjones@redhat.com>

	Include <locale.h> in compilation units that use setlocale function.
	Fix required by gcc 4.6.0.

2011-03-07  Richard W.M. Jones  <rjones@redhat.com>

	generator: Introduce error code (errcode) concept.
	There was a lot of repeated code to map return types (eg. RErr)
	to error cases (eg. -1 or NULL).

	This commit introduces an error code type and two functions to
	map return types to error codes and error codes to strings.

2011-03-07  Richard W.M. Jones  <rjones@redhat.com>

	Fix trace segfault for non-daemon functions (RHBZ#682756).
	Previously we expanded the code for 'trace_return' unconditionally for
	all non-daemon functions.  However this code was not prepared to
	handle all error conditions, and in fact would segfault if it tried to
	print RStringList or RHashtable where r == NULL.

	We need to make the code conditional on the return value, calling
	either 'trace_return' or 'trace_return_error' as appropriate.

	Note the difficult case for RConstOptString which returns NULL in
	non-error cases.

2011-03-07  Richard W.M. Jones  <rjones@redhat.com>

	Fix URL of transifex instance to be the canonical one.
	This updates commit 182a2ceae6d6f50448159e24d8b5c0c92f44407f.

	Import project into transifex.
	http://www.transifex.net/projects/p/libguestfs/

2011-03-05  Richard W.M. Jones  <rjones@redhat.com>

	debian: Rename nilfs2-tools to nilfs-tools.

2011-03-04  Richard W.M. Jones  <rjones@redhat.com>

	virt-make-fs: Round disk size to integer, fix for qemu-img 0.14.
	qemu-img used to allow you to specify a fractional image size in bytes
	(or at least, it used to ignore the part after the decimal place).  In
	qemu-img 0.14 it no longer does this so we round down the size to a
	whole number of bytes.

	virt-make-fs: In debug mode, print qemu-img command line.

	Version 1.9.9.

2011-03-03  Richard W.M. Jones  <rjones@redhat.com>

	Fix inspection code when PCRE or hivex is missing.

2011-03-02  Richard W.M. Jones  <rjones@redhat.com>

	java: Add a test of g.list_filesystems (a function that returns a Map).

2011-03-02  Richard W.M. Jones  <rjones@redhat.com>

	java: Fix generated functions that return RHashtable.
	Creating a HashMap directly from JNI is possible but very tedious
	(see: http://java.sun.com/docs/books/jni/html/fldmeth.html#26254)

	Instead we use the existing code to return hashes from JNI as plain
	String[], then add some code in the Java wrapper to convert these to
	HashMap<String,String>.

2011-03-02  Richard W.M. Jones  <rjones@redhat.com>

	java: Return Map<String,String> for RHashtable functions.
	There's no point returning the specific HashMap type here.
	Return the generic interface type instead.

	Note that no users are actually calling these functions yet,
	since at present they always fail.

2011-03-02  Richard W.M. Jones  <rjones@redhat.com>

	java: Fix a minor whitespace error in generated code.
	In functions that don't have javadoc, the function prototype wasn't
	being indented correctly.

	java: Remove old test file if one was left around.
	If a test.img file was left over from a previous run, then it
	would cause the subsequent test to fail.  Therefore remove any
	old test.img file.

2011-03-02  Richard W.M. Jones  <rjones@redhat.com>

	java: Enable assertions when doing 'make check'.
	It turns out that Java assertions are disabled by default.  You have
	to add the 'java -ea' flag to the JVM.  Who knew ..?

	Because of this oversight, the tests weren't actually performing the
	assertions that we wanted (although in fact none of the assertions
	were failing).

	This change enables assertions when running the tests.

2011-02-06  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.8.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Ignore return value from chdir.
	This updates commit 7eb012f3710bb554d5fc2c4229036901b0b5ad90.

	fish: Add guestfish --live, guestmount --live options.
	The other programs have the variable, but the flag is not enabled
	either because it doesn't make sense or because the implications are
	not well understood.

	Add documentation for attach method.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	Add guestfs_add_domain 'live' flag.
	This optional flag controls whether this API call will try to connect
	to a running virtual machine 'guestfsd' process.

	If the flag is given and the virtual machine is running, then the
	libvirt XML is parsed looking for a suitable <channel> element, and
	'guestfs_set_attach_method' is called with the corresponding
	virtio-serial socket path.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	lib: Implement attach-method unix:<path>
	Allow connections to a Unix domain socket which is connected
	(via virtio-serial) to a guestfsd running free in an existing
	guest.

	In order to use this you have to add the following element
	to the libvirt XML:

	  <channel type='unix'>
	    <source mode='bind' path='/tmp/socket'/>
	    <target type='virtio' name='org.libguestfs.channel.0'/>
	  </channel>

	(or perform the equivalent on the qemu command line).

	Then in guestfish, you can do:

	  guestfish \
	    attach-method unix:/tmp/socket : \
	    run : \
	    ll /

	(or any other commands as desired).

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Remove -f (don't fork) option.
	This option was not being used.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Allow -r option to run daemon standalone.
	This changes several aspects of the daemon.  Currently:

	* sysroot will be "" (ie. operate directly on /)
	* CHROOT_IN/CHROOT_OUT are disabled
	* autosync doesn't try to unmount everything

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: change to root directory
	Ensure the daemon always starts with current directory == root.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: set-attach-method, get-attach-method.
	These allow you to get and set the attach method.  The format
	is one of:

	* appliance
	* unix:<path>

	It's stored broken out into an enum and a string in the handle.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	lib: Move appliance launching to separate function.
	This is just code motion.

	php: Ignore another generated file in php/extension directory.

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Parse /proc/mounts instead of /etc/mtab
	Since Fedora util-linux 2.19, the %post script does:

	  rm -f /etc/mtab
	  ln -s /proc/mounts /etc/mtab

	We are no longer running %post scripts, so this means that /etc/mtab
	is a plain file in the appliance.  Usual 'mount' still updates it, but
	for some reason mount.ntfs does *not* update it in Fedora 15, meaning
	that you couldn't mount and then operate on NTFS partitions.

	It seems better to always parse /proc/mounts (ie. what the kernel
	thinks is mounted) unconditionally, rather than relying on the
	capriciousness of the external mount command.

	Therefore, parse /proc/mounts instead of /etc/mtab, but add a note
	saying that in future we should really be parsing
	/proc/self/mountinfo, but that needs a custom parser, and the format
	is rather tricky:

	http://lxr.linux.no/#linux+v2.6.37/Documentation/filesystems/proc.txt#L1462

2011-02-03  Richard W.M. Jones  <rjones@redhat.com>

	regressions: Fix rhbz557655.sh so it works with tracing enabled.

2011-01-31  Richard W.M. Jones  <rjones@redhat.com>

	guestfs-perl: Fix missing \n
	This updates commit 477eebc83dcd33d00d34398692692dae6af04f22.

2011-01-30  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.7.

	virt-make-fs: Fix typo in man page.

	perl: Translate C examples into Perl and include a manual page.

2011-01-29  Richard W.M. Jones  <rjones@redhat.com>

	perl: Ignore internal_* functions in POD coverage test.
	This updates commit 1d999540bddd7aea7c2d0fef8b15223d4acc645f.

2011-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Fix test-guestfish-a.sh regression test for new trace format.
	This fixes commit 1d999540bddd7aea7c2d0fef8b15223d4acc645f.

	autobuild: Add a 'make clean' step.

	lib: Fix use-after-free bug in XPath parsing code.

2011-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Add a new internal-autosync API to perform autosync.
	Instead of explicitly calling umount-all; sync, we add a daemon
	function called internal-autosync which does the same.

	Apart from slightly simplifying the process of closing the handle, the
	main advantage is we can modify the daemon for the standalone case so
	that internal-autosync does not do the umount-all operation.

2011-01-28  Richard W.M. Jones  <rjones@redhat.com>

	Add a prefix to output when tracing (RHBZ#673479).
	Also separate the call and return lines so that everything can be
	easily 'grepped' from debug output.  The trace output now looks like
	this:

	$ guestfish -x -N fs exit
	libguestfs: trace: is_config
	libguestfs: trace: is_config = 1
	libguestfs: trace: add_drive "test1.img"
	libguestfs: trace: add_drive = 0
	libguestfs: trace: is_config
	libguestfs: trace: is_config = 1
	libguestfs: trace: launch
	libguestfs: trace: launch = 0
	libguestfs: trace: part_disk "/dev/sda" "mbr"
	libguestfs: trace: part_disk = 0
	&c.

2011-01-27  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Replace root_mounted global with intelligence.
	We used to maintain a global flag 'root_mounted' which tells us if the
	user has mounted something on root (ie. on the sysroot directory).

	This flag caused a lot of trouble (eg. RHBZ#599503) because it's hard
	to keep the flag updated correctly when the user can do arbitrary
	mounts and also use mkmountpoint.

	Remove this flag and replace it with a test to see if something is
	mounted on *or under* the sysroot.  (It has to be *or under* because
	of mkmountpoint and friends).

	This also replaces a rather convoluted "have we mounted root yet"
	check in the mount* APIs with a simpler check to see if the mountpoint
	exists and is an ordinary directory.

2011-01-27  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Add perror to two exit paths to make errors clearer.

	debian: Include actual shared libraries in python-guestfs package.

2011-01-26  Nikita A Menkovich  <menkovich@gmail.com>

	mkfs-opts: Add optional "features" parameter.
	This allows the -O parameter to be added to the mkfs command line.
	This is used to select filesystem features.

	mkfs-opts: Add a note about blocksize param and UFS filesystems.

2011-01-26  Richard W.M. Jones  <rjones@redhat.com>

	generator: Fix generation of library-side stubs with optional String arguments.

	packagelist: Add ufsutils for Debian and Ubuntu.
	Note there is no mkfs.ufs available for Fedora (see RHBZ#541618
	for details).

2011-01-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.6.

	fish: Fix typo in error message (copy-in should be copy-out).

2011-01-19  Richard W.M. Jones  <rjones@redhat.com>

	Use /var/tmp for the cached appliance (for FHS compliance).
	The FHS advises large files not to be stored in the root
	filesystem[1], and that /var/tmp is persistent across reboots[2]
	(whereas /tmp is possibly not[3]).

	Therefore we should store the large cached supermin appliance in
	/var/tmp instead of /tmp.  /tmp is still used for all other temporary
	files and directories.

	In either case you can override this by setting $TMPDIR.

	[1] http://www.pathname.com/fhs/pub/fhs-2.3.html#THEROOTFILESYSTEM
	[2] http://www.pathname.com/fhs/pub/fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE
	[3] http://www.pathname.com/fhs/pub/fhs-2.3.html#TMPTEMPORARYFILES

2011-01-18  Richard W.M. Jones  <rjones@redhat.com>

	fish: Initialize pcmd structure.
	On Debian we get this warning which I'm pretty sure is bogus:

	fish.c:690: error: 'pcmd.cmd' may be used uninitialized in this
	function [-Wuninitialized]

2011-01-18  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.5

2011-01-18  Richard W.M. Jones  <rjones@redhat.com>

	fish: <! cmd executes a shell command and inlines the resulting commands.
	The new guestfish construct "<! cmd" executes the shell command
	"cmd", and then anything printed to stdout by "cmd" is parsed
	and executed as a guestfish command.

	This allows some very hairy shell scripting with guestfish.

2011-01-18  Richard W.M. Jones  <rjones@redhat.com>

	fish: Factor out command line parsing.
	Factor out the code which splits a string into a command line.

	fish: Make exit_on_error into a completely local variable.
	Note that 'time' and 'glob' (which both run subcommands) do not
	correctly pass the exit_on_error flag in the remote case.  This is not
	a regression: the current code doesn't work either.

	fish: exit_on_error is a local variable.

2011-01-15  Richard W.M. Jones  <rjones@redhat.com>

	todo: Live CD inspection works, but not for Windows 7.

	Version 1.9.4.

	README: Note that po4a is mandatory if compiling from git.

	Add ability to inspect install disks and live CDs.
	For examples of the virt-inspector output, see the additional
	inspector/example-*.xml files in this commit.

	inspect: Add macros for file size limits.
	This also bumps the file size limit for "small text files"
	up to 2 MB, since we want to parse Windows CD txtsetup.sif
	files that are usually around 500K in size.

2011-01-14  Nikita A Menkovich  <menkovich@gmail.com>

	New API: resize2fs-M to resize ext2/3/4 to minimum size.

2011-01-11  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.3.

2011-01-11  Richard W.M. Jones  <rjones@redhat.com>

	df: Skip final '/' character when calculating basename.
	Previously it was including the final '/' character when calculating
	the basename for the -a option eg:

	Filesystem                                Size       Used  Available  Use%
	/Ubuntu1010x64:/dev/sda1                  9.4G       2.3G       6.6G   25%

	With this patch the '/' is not printed.

2011-01-11  Richard W.M. Jones  <rjones@redhat.com>

	fish: Don't fail if some mountpoints in /etc/fstab are bogus (RHBZ#668574).
	Fix guestfish (and other C tools) so that they ignore errors
	when /etc/fstab contains bogus entries.

	Update the documentation for inspect-get-mountpoints to emphasize
	that callers must be aware of this when mounting the returned
	values.

	Add a regression test.

	Update the example code ("inspect_vm") to reflect the way this
	API ought to be called.

	For more detail see:
	https://bugzilla.redhat.com/show_bug.cgi?id=668574

2011-01-11  Richard W.M. Jones  <rjones@redhat.com>

	Add logo used on the website.

2011-01-10  Richard W.M. Jones  <rjones@redhat.com>

	Add cartoon fish logo (not completed).

2011-01-09  Richard W.M. Jones  <rjones@redhat.com>

	todo: /proc/self/mountinfo

2011-01-08  Richard W.M. Jones  <rjones@redhat.com>

	todo: Add notes on inspecting ISO images.

2011-01-08  Richard W.M. Jones  <rjones@redhat.com>

	virt-filesystems: Ignore errors when getting label and UUID (RHBZ#668112).
	If virt-filesystems was pointed to an image that contained
	bogus or blank filesystems, then calls to vfs-label and/or vfs-uuid
	could fail, resulting in errors like this:

	libguestfs: error: vfs_label: /dev/vda1:

	These errors can be ignored and shouldn't stop virt-filesystems
	from working.

2011-01-07  Richard W.M. Jones  <rjones@redhat.com>

	resize: Fix typo in man page (thanks avesh@IRC).

2011-01-04  Richard W.M. Jones  <rjones@redhat.com>

	fish: fails to tilde expand '~' when $HOME env is unset (RHBZ#617440).
	This also adds a regression test.

2011-01-04  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix off-by-one bug in tilde expansion.
	Although this doesn't seem to cause a crash, valgrind confirms
	that this is a genuine off-by-one bug.  It could potentially
	cause a crash if you did:

	  echo 'echo ~root/foo' | guestfish

2011-01-03  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.9.2.

	New tools: virt-copy-in, virt-copy-out, virt-tar-in, virt-tar-out.
	Relatively trivial wrappers around the equivalent guestfish
	commands.  Change also includes new man pages.

	.gitignore: Use full paths for some ignored files.

	docs: Add QMP to ROADMAP file.

2011-01-02  Richard W.M. Jones  <rjones@redhat.com>

	filesystems: Document the columns in --long output.

	Add initial announcement to release notes.

	Update TODO file.

	inspector: Apps in Windows VMs are now listed - update documentation.

2011-01-02  Douglas Schilling Landgraf  <dougsland@redhat.com>

	Lib.pm: unknown filesystem /dev/hd{x} (cdrom) (RHBZ#666577)
	This a purpose patch to avoid the message "unknown filesystem /dev/hdc".
	Where /dev/hdc is an entry in fstab for CDROM.

	Example of fstab:
	/dev/hdc                /media/cdrom            auto
	pamconsole,exec,noauto,managed 0 0

	https://bugzilla.redhat.com/show_bug.cgi?id=666577

2011-01-02  Douglas Schilling Landgraf  <dougsland@redhat.com>

	Lib.pm: unknown filesystem label SWAP-sda2 (RHBZ#666578)
	Hi,

	This is a purpose patch to avoid the message: unknown filesystem label
	SWAP-sda2.

	Instead of validate the label with 'eq', use '=~' and /$label/i.

	https://bugzilla.redhat.com/show_bug.cgi?id=666578

	Thanks
	Douglas

2011-01-02  Douglas Schilling Landgraf  <dougsland@redhat.com>

	Lib.pm: avoid message "unknown filesystem /dev/fd0" (RHBZ#666577)
	This patch to avoid the message "unknown filesystem /dev/fd0".
	https://bugzilla.redhat.com/show_bug.cgi?id=666577


	Thanks
	Douglas

2011-01-02  Richard W.M. Jones  <rjones@redhat.com>

	Tempora mutantur, nos et mutamur in illis.

2010-12-31  Richard W.M. Jones  <rjones@redhat.com>

	podwrapper: Fix up the HTML output so most inter-page links work.

	podwrapper: Fix script indentation.

	podwrapper: 'builddir' was not defined - use a properly defined path.

	Version 1.9.1.

2010-12-30  Richard W.M. Jones  <rjones@redhat.com>

	docs: add-domain: Remove ref to not impl add-libvirt-dom API call.

	docs: Refresh programming language list in guestfs(3).

	docs: Refresh programming language equivalence example in guestfs(3).

	docs: Fix missing g handle in guestfs(3) man page.

	docs: Refresh guestfs(3)/DOWNLOADING.

	docs: Refresh guestfs(3)/MOUNTING

2010-12-23  Jaswinder Singh  <jsingh@redhat.com>

	Update Punjabi translations (RHBZ#665358).

2010-12-21  Richard W.M. Jones  <rjones@redhat.com>

	recipes: Refresh guestfish recipes.

2010-12-21  Piotr Drąg  <piotrdrag@gmail.com>

	Updated Polish translation (RHBZ#502533).

2010-12-20  Richard W.M. Jones  <rjones@redhat.com>

	fish: --ro will be default in 1.10, not 1.8.

2010-12-19  Richard W.M. Jones  <rjones@redhat.com>

	docs: Update API support.

	api-support: Fix detection of similar APIs.
	Because we didn't match on word boundaries, the previous
	code would get confused by similar APIs, eg. getxattr vs getxattrs.

	docs: Obsolete HACKING file, move content into guestfs(3) man page.
	Add a new section called "EXTENDING LIBGUESTFS" to the
	guestfs manual page which contains all the information
	previously in "HACKING".

	docs: Refresh README file.

	Update TODO file.

	Version 1.9.0.

	Update BUGS, PO files for 1.8.0.

	Prepare for next stable branch: version 1.8.0.

	Update RELEASE-NOTES.

	Add ROADMAP for 1.10.

	fuse: Add more tracing for calls into guestmount functions.

	appliance: Don't exclude upstart (/sbin/reboot) (RHBZ#661280).
	Don't exclude upstart from the appliance.  It provides /sbin/reboot
	which is required by virt-rescue.

	appliance: Don't hard-code febootstrap --exclude parameters.
	Create a separate file 'excludelist.in' that contains these
	regular expressions, and process it the same way as packagelist.in.

	appliance: Use a temporary file when processing packagelist.in.

2010-12-17  Richard W.M. Jones  <rjones@redhat.com>

	docs: Add section on using /dev/fd/* with upload and download calls.

	docs: Fix link to function in documentation of "du" and "du-s" commands.

2010-12-16  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.24.

	ntfs-3g: Document problems with symlinks and alternatives (RHBZ#663407).

2010-12-16  Richard W.M. Jones  <rjones@redhat.com>

	New APIs: getxattr and lgetxattr to get single extended attributes.
	These APIs are essentially required to work around a problem
	with ntfs-3g.  This filesystem (or FUSE?) does not list all
	extended attributes of a file when you call listxattr(2).  However
	if you know the name of an extended attribute, you can retrieve
	it directly using getxattr(2).

	The current APIs (getxattrs etc) are simple to use, but they
	don't work if we can't list out the extended attributes (ie.
	by calling listxattr(2)).

	Example using the new APIs on an ntfs-3g filesystem:

	><fs> lgetxattr "/Documents and Settings" system.ntfs_attrib | hexdump -C
	00000000  16 24 00 00                                       |.$..|
	00000004
	><fs> lgetxattr "/Documents and Settings" system.ntfs_reparse_data | hexdump -C
	00000000  03 00 00 a0 34 00 00 00  00 00 18 00 1a 00 10 00  |....4...........|
	00000010  5c 00 3f 00 3f 00 5c 00  43 00 3a 00 5c 00 55 00  |\.?.?.\.C.:.\.U.|
	00000020  73 00 65 00 72 00 73 00  00 00 43 00 3a 00 5c 00  |s.e.r.s...C.:.\.|
	00000030  55 00 73 00 65 00 72 00  73 00 00 00              |U.s.e.r.s...|
	0000003c
	><fs> getxattr "/Documents and Settings" system.ntfs_reparse_data | hexdump -C
	libguestfs: error: getxattr: getxattr: No such file or directory
	><fs> getxattr "/Documents and Settings" system.ntfs_attrib | hexdump -C
	libguestfs: error: getxattr: getxattr: No such file or directory
	><fs> lgetxattr "/Documents and Settings" system.ntfs_attrib | hexdump -C
	00000000  16 24 00 00                                       |.$..|
	00000004
	><fs> getxattr "/Users" system.ntfs_attrib | hexdump -C
	00000000  11 00 00 00                                       |....|
	00000004

2010-12-16  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Add 'attr' package for xattr support in virt-rescue.

2010-12-12  Richard W.M. Jones  <rjones@redhat.com>

	generator: List files generated in a separate file.

	docs: Update RELEASE-NOTES to latest.

	README: Advise using febootstrap >= 3.3.

	Version 1.7.23.

2010-12-12  Thomas S Hatch  <thatch45@gmail.com>

	Removed hfsprogs from supermin packages for Arch

2010-12-12  Richard W.M. Jones  <rjones@redhat.com>

	fish: Clarify documentation for --ro option.

	fish: Document equivalence of -a/add etc. in man page.

	fish: Split ..|.. options into separate items in man page.

2010-12-11  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Don't set utime on cachedir until we know it is safe.
	This could be used to touch an arbitrary file (albeit one which
	must already exist), and this could have been a security problem.

	appliance: Touch cached appliance files so they don't get tmp cleaned.

	Remove extra \n character from end of error messages.

	Version 1.7.22.

2010-12-11  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Be careful about cleaning up old appliances.
	This change resolves several issues with current appliance
	building:

	(1) Old appliances are cleaned up.

	(2) Race conditions between appliance building is handled better.

	(3) Several bugs fixed.

2010-12-10  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Use prog_exists to check for features.
	This updates commit 0938509e0422363554023ab99381fd70a22a6e08.

	debian: Work around warning in Debian udev init script.
	See also:
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606622

	win-reg: Add Windows Tips to documentation.

	win-reg: Move documentation after options, combine shell quote sections.

	Version 1.7.21.

	Remove several unused local variables.
	(Revealed by compiling under Debian where this is a warning).

2010-12-10  Thomas S Hatch  <thatch45@gmail.com>

	Added packages for Archlinux support

2010-12-09  Richard W.M. Jones  <rjones@redhat.com>

	debian: Dependencies for all the different names of qemu/KVM.

	debian: Quilt is not used for patch management.

	cat: Remove some unused local variables in virt-cat.c and virt-ls.c.

2010-12-09  Richard W.M. Jones  <rjones@redhat.com>

	Add debian/ directory (temporarily).
	This was created initially from pkg-libvirt/libguestfs.git
	commit 680ff0b0e8c9133ef987e68392bd3990715f6891.

	This is a temporary measure to allow us to build Debian and Ubuntu
	packages more easily.  When downstream packaging is being done on
	these distros we will remove this directory again.

	To build a Debian package, use this command:

	  debuild -i -us -uc -b

2010-12-09  Richard W.M. Jones  <rjones@redhat.com>

	debian: Exclude file-rc.
	This package duplicates /etc/init.d/README which is
	really supplied by sysv-rc package.

	build: Use ./configure --with-python-installdir=DIR to select Python dir.
	We don't always want to install in the site-packages directory.  Allow
	the directory to be chosen using a configure option.  Rename the
	variable PYTHON_INSTALLDIR to reflect its true purpose.

	build: Add "checking ... result" around Python tests.

	build: Remove check for root.
	With the new package building system, it is no longer dangerous to run
	'configure', 'make' or 'make check' as root (although it is still not
	necessary and not advisable).  In any case we don't need to check
	this.

	inspector: Remove some unused local variables.

	fish: Remove some unused local variables.

	build: Remove AM_GNU_GETTEXT_VERSION macro.
	See discussion on the mailing list:
	https://www.redhat.com/archives/libguestfs/2010-December/thread.html#00032

2010-12-08  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Add notes about networking.
	In particular the 'ping' command does not work because it is
	using QEMU user networking.

	rescue: Add note about using virt-rescue as root/non-root.

2010-12-07  Richard W.M. Jones  <rjones@redhat.com>

	docs: Link to guestfs-examples(3) after simple example.

	docs: Note that guestfs_sync is no longer necessary.

	Version 1.7.20.

	build: relink-static.sh script removed from EXTRA_DIST.
	This updates commit 9bc15f5d98a3a17d465a94f42dc3ffb60c077293.

2010-12-07  Richard W.M. Jones  <rjones@redhat.com>

	ubuntu: deactivate LVs and VGs before removing them.
	Even with the '-f' option, LVM on Ubuntu sometimes cannot remove
	active LVs and VGs.

	Change lvm-remove-all so it deactivates each LV and VG before
	removing them.

2010-12-07  Richard W.M. Jones  <rjones@redhat.com>

	Revert "umount-all: Add udev_settle after unmounting disks."
	This reverts commit ad2abf89c364d5ec73fb12af63b053637d99d757.

	Ubuntu still has errors even with the addition of udev_settle
	after umount-all.  Therefore this was just masking the problem.

2010-12-07  Richard W.M. Jones  <rjones@redhat.com>

	debian: Fix ntfs3g available API on Debian.
	Really we should have a test for "is program on $PATH?" but this
	fix will do for now.

	fuse: Set UID and GID when performing FUSE tests.
	This avoids breakage on Ubuntu.

	autobuild: Skip some tests on Ubuntu.

	ubuntu: Allow test-luks.sh to be bypassed to workaround Ubuntu bug.
	This is necessary because of too old cryptsetup on Ubuntu.

	umount-all: Add udev_settle after unmounting disks.
	This helps avoid an error on Ubuntu, but it's not clear if this
	is a real solution or just helps by adjusting the timing of some
	race condition.

	fuse: Disable test which doesn't run reliably on Debian.
	See discussion in RHBZ#660687.

	fuse: Fix emulation of open call.
	We were being over-complex in this call.  All the FUSE API requires
	this call to do is to check permissions.

	fuse: Fix segfault in guestmount --verbose.
	If hash_delete returns NULL and --verbose option was given then
	this would cause a segfault.

	Add autobuild script.

	gitignore: Ignore all local* files in the main directory.

2010-12-06  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Don't quote the --exclude parameters.
	The quotes appear literally on the command line:

	$ s="--foo 'bar'"
	$ echo $s
	--foo 'bar'

2010-12-06  Richard W.M. Jones  <rjones@redhat.com>

	Add --with-febootstrap-yum-config.
	This allows the febootstrap --yum-config option to be passed through,
	allowing a separate yum configuration to be used.

	The hope is that this will enable building in Koji.

2010-12-06  Richard W.M. Jones  <rjones@redhat.com>

	Remove ability to build static distribution.
	We are now going to build binaries for each distribution so
	there is no need to build the quasi-distro-independent static
	binaries any more.

	regressions: Disable test for 576879.
	This test has worked only intermittently for a while.  Disable
	it.  The upstream bug has been reopened.

	build: Use grub-pc instead of old grub on Debian and Ubuntu.

	build: Add diff to package list for Debian and Ubuntu.

	build: Add cpio package to package list (for Debian and Ubuntu).

	build: Look for other db_dump variations (for Ubuntu).

	ubuntu: Disable xfsprogs from Ubuntu package list.

	ubuntu: Make Ubuntu into a separate distro for the package list.
	This allows us to select Ubuntu packages separately from Debian ones.

	build: Don't emit warnings about stack protector failures.
	These are seen on gcc 4.5.1 used in Ubuntu.

	debian: Enable more packages in packagelist.in.
	These were previously disabled because of problems with
	debirf.  Now we are not using debirf, we can use them
	again.

2010-12-05  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.19.

	Debian: Extra packages needed to run C API tests.

2010-12-05  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Change to using febootstrap 3.x supermin appliance.
	This removes all support for building the ordinary / old
	style appliance using febootstrap 2.x, debootstrap, debirf,
	fakeroot and fakechroot.

	Instead this uses febootstrap 3.x to build the supermin appliance
	in a simpler cross-distro manner.

2010-12-04  Richard W.M. Jones  <rjones@redhat.com>

	appliance: Put /init in a separate supermin appliance component.

	appliance: Don't look for kmod.whitelist.
	This file is not used for building the supermin appliance.

2010-12-02  Richard W.M. Jones  <rjones@redhat.com>

	New API: mkfs_opts, mkfs with optional arguments.
	This is an extensible version of 'mkfs' which supports optional
	arguments.  There is now no need for 'mkfs_b' since you should
	use 'mkfs_opts' with the optional 'blocksize' argument instead.

2010-12-02  Richard W.M. Jones  <rjones@redhat.com>

	generator: Code to handle optional arguments in daemon functions.
	Previously we only supported optional arguments for library
	functions (commit 14490c3e1aac61c6ac90f28828896683f64f0dc9).

	This extends that work so that optional arguments can also be
	passed through to the daemon.

2010-12-02  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix generation of code to handle Int/Int64 optional arguments.

	Fix argv struct mixup over Int/Int64.

	todo: Refresh documentation.

2010-12-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.18.

	Add progress notification messages to upload and upload-offset APIs.

	protocol: Handle progress notification messages during FileIn.
	If the daemon sends progress notification messages while we
	are uploading FileIn parameters, these are received in
	check_for_daemon_cancellation_or_eof.  Modify this library
	function so that it turns these messages into callbacks.

2010-12-01  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Really read 4 bytes while checking for cancellation.
	We've not actually hit this bug in practice, but at least in
	theory while checking for cancellation we could read > 0 but
	fewer than 4 bytes, which would effectively be discarded and
	we would lose synchronization.

	Note the socket is non-blocking.

	Change the code so that we temporarily set the socket back to
	blocking and force the read of all 4 bytes.

2010-12-01  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Send progress_hint in header.
	For actions that have FileIn arguments, count the size of all
	the input files and send that in the progress_hint field of the
	request header.

2010-12-01  Richard W.M. Jones  <rjones@redhat.com>

	protocol: Upload progress messages and optional arguments.
	Two unrelated changes to the protocol to support progress
	messages during uploads, and optional arguments.

	Note that this makes an incompatible change to the protocol,
	and this is reflected in the protocol version field (3 -> 4).

2010-11-30  Richard W.M. Jones  <rjones@redhat.com>

	df: Fix segfault when using virt-df -a filename
	If 'filename' doesn't contain a '/' character then virt-df
	was calculating NULL as the basename and later segfaulting.

	Version 1.7.17.

	php: Combine tests to reduce number of launches.

	haskell: Combine tests to reduce number of launches.

	java: Combine tests to reduce number of launches.

	python: Combine tests to reduce number of launches.

	ocaml: Combine tests together to reduce number of launches.
	Combine launch, lvcreate and readdir tests together into a
	single 'basic' test, so that we don't launch the appliance
	so often when testing in this subdirectory.

2010-11-30  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Convert many InitBasicFS tests to InitScratchFS.
	These tests run much more quickly if you don't have to run
	'mkfs' and (particularly) partitioning/LV commands between each
	test.

	The total time for running 'make -C capitests check' on my laptop
	has gone from 413 seconds down to 221 seconds.

2010-11-30  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Add 'InitScratchFS' test environment.
	This should allow us to perform filesystem-based write
	tests much more quickly, because we don't need to recreate
	the filesystem from scratch each time.

	capitests: Move test documentation into HACKING file.

2010-11-30  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Use /dev/sdc for misc tests (instead of /dev/sdb).
	This change means that /dev/sdb is not being used during
	the tests (except passively, eg. in listings of devices).

	This allows us (in a forthcoming commit) to use /dev/sdb as a
	quick scratch filesystem for testing writes.

2010-11-27  Richard W.M. Jones  <rjones@redhat.com>

	docs: Fix small inaccuracies in virt-resize(1).

	docs: Fix typo in virt-filesystems(1).

	docs: Remove ref to L</add-drive-opts> wrongly copied into some man pages.

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	Update API support.

	Updated RELEASE-NOTES file.

	Version 1.7.16.

	fish: Don't use external pod2text program.
	This removes the dependency from guestfish to the external
	pod2text program (and hence the final dependency on perl for
	guestfish).  This is done by storing the formatted pod2text
	output in guestfish as the help text.

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	generator: More options for internal pod2text generator.
	Allow extra width, and trimming options.

	This necessitates a change in the memoized format.  To avoid
	causing crashes if a new generator loads the old format, also
	change the filename of the memo file.

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	libtool fix: Don't do fix if there was no -o option to libtool.
	For example if libtool is being run as 'libtool --mode=execute ...'

	This fixes commit 4cf4f2b66f850bb39c5bf29d3cd12ada9114d67e.

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.15.

	build: Add several missing shell scripts to dist.

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	Remove dependency_libs from libtool *.la files.
	Add a libtool wrapper which kills dependency_libs in libtool *.la
	files, to ensure that libtool doesn't add unnecessary extra libraries
	when linking.

	See http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html

2010-11-26  Richard W.M. Jones  <rjones@redhat.com>

	df: Missing direct dependency on libvirt.
	virt-df has an (optional) direct dependency on libvirt.  Because of
	libtool's over-linking behaviour this was being missed.

	rescue: Rewrite virt-rescue in C.

	Update HACKING description of tools/ subdirectory.
	This fixes commit 18374b5b7d3154e0b8b8a07e3590f6eee762b58e.

	daemon: Close leaked file descriptor along checksum error path (RHBZ#657499).

2010-11-25  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.14.

2010-11-25  Richard W.M. Jones  <rjones@redhat.com>

	df: Rewrite virt-df in C.
	I have diffed the output from the original virt-df with this
	new version, and they agree very closely.  Some differences:

	 - Old virt-df have a divide-by-zero error in cases where the
	   number of used inodes was 0.  New virt-df fixes this.

	 - New virt-df uses gnulib human_readable library which displays
	   numbers to 3 significant figures for -h output (old version
	   used an ad hoc function).

2010-11-25  Richard W.M. Jones  <rjones@redhat.com>

	Export private function 'guestfs___for_each_disk' for use by virt-df.
	This private function (not part of the API) allows us to
	iterate over disks from a guest, avoiding the business of
	writing all the XPath code yet again.

	fish: Keep device names in options drives list.
	In the 'struct drv *drvs' structure, keep a list of the
	device name(s) for each added drive or guest.  The device name
	is the canonical name as that drive would be known inside
	libguestfs, eg. "/dev/sda"

	Fix memory leak (xptype XPath obj) in add-domain API.

2010-11-24  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.13.

	build: Remove some non-existent files from CLEANFILES.

	ruby: Translate C examples into Ruby and include documentation.

	python: Translate C examples into Python and include documentation.

	ocaml: Translate C examples into OCaml and include documentation.

	docs: Standard C examples, and guestfs-examples(3) man page.

	build: Centralize all POD manipulation in 'podwrapper.sh' script.

	build: Rename bugs-in-changelog.sh

	build: Rename update-bugs as update-bugs.sh.

	generator: Remove unused variable.

	fuse: Add note in test about how to debug guestmount.

	build: virt-make-fs requires String::ShellQuote, add to configure.

	regressions: Fix test-launch-race to work in non-supermin case.

	daemon: blkid cache is at a different location on Debian.
	Remove both possible cache locations.

	debian: Include ntfsprogs in the appliance.
	This allows us to build NTFS filesystems at least.  Mounting
	NTFS doesn't work in Debian because of a problem with debirf.

2010-11-24  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Detect if db_dump and db_load programs are available.
	If db_dump is not available then disable RPM application detection.

	Note these utilities have odd names on Debian.

2010-11-24  Richard W.M. Jones  <rjones@redhat.com>

	build: Move po4a detection up near other program detection.

2010-11-23  Richard W.M. Jones  <rjones@redhat.com>

	daemon: In sfdisk call blockdev --rereadpt with device name.

	ocaml: Fix some unused parameter warnings in OCaml bindings.

	Update README to reflect Perl modules that are really still required.

	build: XML::Writer Perl module is no longer required.

	filesystems: Fix command synopsis in usage message.
	This updates commit fbc2555903be8c88ad9430d871cf0d27c8fded1e.

	Version 1.7.12.

	fish: Link to virt-inspector from guestfish man page.

2010-11-23  Richard W.M. Jones  <rjones@redhat.com>

	New tool: virt-filesystems
	This tool replaces virt-list-filesystems and virt-list-partitions with
	a new tool written in C with a more uniform command line structure
	and output.

	This existing Perl tools are deprecated but remain indefinitely.

2010-11-23  Richard W.M. Jones  <rjones@redhat.com>

	ls: Rewrite virt-ls in C.

	resize: Fix canonical device function (RHBZ#655554).

	inspector: Make whole disk paths canonical (RHBZ#655554).

2010-11-22  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Fix documentation of -x option in usage.
	This updates commit c5cb65f0aac3298e634b183f73fda6644a158018.

	cat: Fix documentation of -x option in usage.
	This updates commit d29e9a552f5823d1d8cb8d4962cb1301bbf60b0e.

	cat: Continue after encountering an error.

	cat: Fix documentation for command line with format option.

2010-11-19  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Fix rule to build HTML file.
	This updates commit c5cb65f0aac3298e634b183f73fda6644a158018.

	Version 1.7.11.

	po-docs: Remove virt-inspector.pl reference from Makefile.am.

	inspector: Rewrite virt-inspector in C.

	fish: Fix memory leak in handling of encrypted volumes by -i option.
	This fixes a memory leak introduced by
	commit a232e62dcf508517a32b9a8d7e4529e827be721b.

	inspect: Fix memory leak of hostname.
	This fixes a memory leak introduced by
	commit fab75c0337d7897d10ea5e95e47ac05eab81ace9.

	cat: Fix run-cat-locally script so it doesn't go via Perl.

	cat: Give a better error if the user specified no drives on command line.

	cat: Tidy up documentation for --format option.

2010-11-18  Richard W.M. Jones  <rjones@redhat.com>

	Remove FIPS .*.hmac files from the supermin appliance (RHBZ#654638).

2010-11-17  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.10.

	generator: trace mode prints return values.

	generator: Make return value into an explicit variable.
	This is just code motion.

	generator: Make trace flag an explicit variable.
	This is just code motion.

	todo: Suggest that trace should include return values.

2010-11-16  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Fix typo in documentation of --network option.

	Version 1.7.9.

	inspector: Replace old examples with ones derived from phony images.

	images: Make phony Windows image for testing.

	images: Make phony Ubuntu image for testing.

	images: Make a phony Debian image for testing.

	images: Make a better phony Fedora image.
	This now includes a product string, major and minor version,
	hostname and even some applications.

	daemon: findfs-uuid and findfs-label should not return /dev/mapper paths.

	New API: inspect-get-hostname to return the hostname of the guest.
	This returns the hostname of the guest.  Tested on RHEL, Fedora,
	Debian 5, Ubuntu 10.10, FreeBSD 8, Windows 7.

	inspect: Check /etc/lsb-release is not too large before calling head on it.

	inspect: Add function to read the first line of a file, with safety checks.

	inspect: Abstract the wrapper that sets up Augeas.
	This is just code motion.

2010-11-15  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.8.

	inspector: Replace code for listing applications with new core API.

2010-11-15  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-list-applications.
	This converts the current Perl code in virt-inspector for
	listing applications, into C, making it a part of the core API.

	This is also capable of fetching the list of Windows applications
	from the registry.

2010-11-15  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Centralize all file downloads through a single function.

2010-11-15  Richard Jones  <rjones@redhat.com>

	inspect: Add support for Linux Mint and Mandriva.
	Linux Mint is derived from Ubuntu.

	Mandriva has a release file, but it also has /etc/lsb-release and
	the same parsing code can be reused.  Mandriva has a package manager
	called urpmi.

2010-11-15  Richard Jones  <rjones@redhat.com>

	docs: Put list of distros in alphabetical order.

	docs: Debian and Ubuntu are now separate distros.

2010-11-15  Richard W.M. Jones  <rjones@redhat.com>

	todo: live CD inspection

	Version 1.7.7.

2010-11-14  Maxim Koltsov  <kolmax94@gmail.com>

	build: Missing backslash again.

2010-11-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.6.

	filearch: Refuse to download initrd if it is huge.

	inspect: Fix error out path if minor_version parsing fails.

	inspect: Refuse to download software hive if it is huge.

	inspect: Refuse to parse /etc/fstab if it is huge.

	lib: Make some error strings localizable.

2010-11-13  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Inspection support for FreeBSD.
	This adds inspection support for FreeBSD.

	However this is not quite enough to allow guestfish -i freebsd.img
	to work, because guestfish will try to mount the filesystems,
	which cannot be done because Linux requires special mount options
	for the Universal Filesystem (UFS) used by *BSD.  Nevertheless
	you can manually run the same commands.

2010-11-13  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Optimize root filesystem check.
	Avoid duplicate checks for things like /etc and /bin.

	lib: Add match3 function.

	lib: Add safe_asprintf function.

	docs: Add a section on security.

2010-11-13  Richard W.M. Jones  <rjones@redhat.com>

	docs: Rearrange guestfs(3) sections.
	This rearranges the sections into a more logical order:

	 - synopsis and introduction
	 - API-related overview sections
	 - (security will go here, see next commit)
	 - API in detail
	 - architecture and other internals
	 - usual end sections

2010-11-13  Richard W.M. Jones  <rjones@redhat.com>

	static: Use correct libraries for static binaries.
	Also add virt-cat.static target.

	Version 1.7.5.

2010-11-12  Richard W.M. Jones  <rjones@redhat.com>

	ruby: Add 'make install' rule for ruby bindings (RHBZ#652796).

	todo: Notes on parsing.

2010-11-12  Richard Jones  <rjones@redhat.com>

	New APIs: inspect-get-package-format, inspect-get-package-management.
	This APIs reimplement some parts of virt-inspector in C.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Remove warning about dead definitions.
	This updates commit cb7ec8be4ce6068b6cbc6522a67826cdbd161024.

	Check that just including <guestfs.h> on its own works.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	Don't need to include XDR headers in <guestfs.h>.
	Include the XDR headers in the internal guestfs-internal.h instead.

	This is knock-on effects to several other source files which
	were implicitly relying on indirectly loaded headers.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	Be less verbose in the macros defending typedefs in <guestfs.h>.
	This updates commit 4d59e271046f2b5f0d9b1730cd23425fd631c76c.

	perl: Ignore debug functions in Test::Pod::Coverage.

	Version 1.7.4.

	build: xml-light is no longer required (thanks Maxim Koltsov).
	At some point we removed the last thing that required
	xml-light, but were still testing for it at various places
	in the build.  This removes all traces.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	Rewrite virt-cat in C.
	With changes in the core API since 1.5, virt-cat was little
	more than a Perl wrapper which did some command line argument
	processing.  Thus it could easily be rewritten in C.

	This version also shares core command line argument processing
	with guestfish and guestmount, so the options have changed
	slightly (old-style command line *is* supported).

	 virt-cat -a disk.img file [file ...]
	 virt-cat -d domname file [file ...]

	Several other guestfish options are supported including encryption,
	and with the new style multiple files can be downloaded.  See the
	man page for details.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	Generate a dummy 'Fedora' fedora.img in images directory for use by tests.
	We were generating this dummy 'Fedora' image already in the
	tools directory.  It contains just enough Fedora-like files
	to fool our inspection code and thus to test the tools.

	This is general enough that we can use it everywhere.

2010-11-11  Richard W.M. Jones  <rjones@redhat.com>

	Defend all typedefs in <guestfs.h> with #ifdefs.
	This allows other libraries to redefine those typedefs
	if they need to use but not depend on <guestfs.h>.

	lib: Make <guestfs.h> be completely generated.
	This removes the 'not-quite-separate' guestfs-actions.h and
	guestfs-structs.h files.

	Fix small typo in a comment in src/Makefile.am.

	capitests: Add the code to test (proposed) add-libvirt-dom C API.
	This API was dropped as there are some problems with it.  This
	commit adds the original test code, but commented out.

2010-11-11  Richard Jones  <rjones@redhat.com>

	fish: Use core add-domain API to implement '-d' option.
	This also makes libxml2 and libvirt into optional dependencies.
	If they are missing then the core API will print an error, as
	will the '-d' option to guestfish.

2010-11-11  Richard Jones  <rjones@redhat.com>

	New API: add-domain
	This new API allows you to add the disks from a libvirt
	domain.

	In guestfish you can use the 'domain' command to access the
	API, eg:

	><fs> domain Fedora14 libvirturi:qemu:///system
	1

	The returned number is the number of disks that were added.

	Also here is a proposed (but commented out) low-level API
	which would allow you to add a domain from a virDomainPtr.
	However there are several problems with this API -- see discussion
	on the list:
	https://www.redhat.com/archives/libguestfs/2010-November/thread.html#00028

2010-11-10  Richard Jones  <rjones@redhat.com>

	generator: Add Pointer parameter type to the generator.
	This allows generic "foo *bar" pointers to be passed to
	library functions (not to daemon functions).

	In the language bindings (except Perl) these are handled
	as generic int64s with the assumption being that any
	pointer can be converted to and from this.  There is room
	to add specific support for some pointer types in future
	by specializing the match cases.  However this is inherently
	tricky because it depends on the implementation details of
	other bindings (eg. to support virDomainPtr in OCaml depends
	on the implementation details of the ocaml-libvirt project).

	Perl is slightly different in that you have to supply a
	typemap.  Again this would depend on the implementation
	detail of an external library unless you supplied a generic
	typemap for int64.

2010-11-10  Richard W.M. Jones  <rjones@redhat.com>

	New API: debug-cmdline for printing QEMU command line (internal only).
	This is an internal-only debugging API so may be changed or
	removed at any time in the future.

2010-11-10  Richard Jones  <rjones@redhat.com>

	Add internal facility to checkpoint and roll back the command line.
	This internal interface can be used to ensure that certain
	operations are atomic.

2010-11-10  Richard Jones  <rjones@redhat.com>

	lib: Make pcre, libmagic and hivex libraries optional.
	This change makes these libraries optional.  If they are not
	available at compile time then certain core API features will
	be disabled (see below).

	This also changes PCRE detection to use pkg-config instead
	of the ad hoc autoconf checks.

	The large inspect.c file has been split out into separate
	function-specific files.

	  file-architecture: requires pcre & libmagic
	  inspection: requires pcre & hivex

2010-11-10  Richard W.M. Jones  <rjones@redhat.com>

	Don't include debug* commands in the documentation.

	capitests: Add whitespace in Makefile.

2010-11-10  Richard Jones  <rjones@redhat.com>

	inspect: win64 regexp was dead code.

	lib: Augeas (client side) is not needed by the library.
	However it is used by the daemon.

2010-11-09  Richard Jones  <rjones@redhat.com>

	ocaml: Error on compiler warnings.

	ruby: Remove extra space before parenthesis.

2010-11-08  Richard Jones  <rjones@redhat.com>

	Revert "autogen: Touch ocaml/.depend"
	This reverts commit a0f85ba643990da25b6afe6a2bbd2407cf312c73.

2010-11-08  Richard Jones  <rjones@redhat.com>

	Revert "Remove ocaml/.depend from git."
	This reverts commit 064569bcbf854a9cf588ce31851d987d5f114ec8.

	This commit does the wrong thing: creating an empty ocaml/.depend
	file is wrong because building the OCaml bindings will fail.
	Not having this file will prevent automake from running.  Therefore
	this file has to exist with the correct content in git.

2010-11-08  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.7.3.

	build: Create an AUTHORS file.

2010-11-08  Maxim Koltsov  <kolmax94@gmail.com>

	build: Don't try to rebuild po-docs/<lang> if no po4a.

	build: Add ./configure --disable-php option.
	This disables the PHP language bindings.

2010-11-08  Richard W.M. Jones  <rjones@redhat.com>

	build: Test for virt tools Perl libraries conditionally.
	Only test for these if $PERL is defined, and use $PERL as
	the interpreter.

2010-11-08  Maxim Koltsov  <kolmax94@gmail.com>

	build: Add ./configure --disable-haskell option.
	This disables the Haskell language bindings.

	build: Add ./configure --disable-ruby option.
	This disables the Ruby language bindings.

	build: Warn if Python include or site-packages not found.

	build: Add ./configure --disable-python option.
	This disables the Python language bindings.

	build: Add ./configure --disable-perl option.
	This disables the Perl bindings.

2010-11-08  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Remove the old OCaml viewer program.
	This program is obsolete and the code has been reused for
	guestfs-browser here:
	http://people.redhat.com/~rjones/guestfs-browser/

2010-11-08  Maxim Koltsov  <kolmax94@gmail.com>

	build: Add ./configure --disable-ocaml option.
	This can be used to disable the OCaml bindings.  Note that
	OCaml is still required in any case where you need to rerun
	the generator.

	build: Add ./configure --disable-fuse option.
	If this option is specified, FUSE support is unconditionally
	disabled.

2010-11-08  Richard W.M. Jones  <rjones@redhat.com>

	supermin: If disabled, don't compile in supermin code or check for supermin.
	If supermin is disabled at compile time and the user just wants to
	use the ordinary appliance, there is no need to compile in all
	the supermin code, and in particular there is no need to check
	for the supermin appliance (which involves running
	febootstrap-supermin-helper that probably doesn't exist).

	This fixes a warning message observed under Debian w/o supermin:

	  sh: febootstrap-supermin-helper: command not found

2010-11-08  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add --rw option (does nothing yet).
	This adds the guestfish --rw option, intended in future
	to be required for writing to disk images.

	At the moment this does not change the default and so does
	nothing.  This patch is intended for backporting to the
	stable branches so that we can start to introduce scripts
	which use 'guestfish --rw'.

2010-11-07  Richard W.M. Jones  <rjones@redhat.com>

	Add missing generated files to the tarball (thanks maksbotan).
	C# bindings were omitted entirely.  Add a Makefile.am for this
	directory even though we don't build these.

	Because of a missing backslash, some POD files were not being
	included.

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add --listen --csh to for csh, tcsh compatibility.
	(Thanks Eric Blake).

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	fish: Suggest safer form of eval.
	eval "$(guestfish --listen)"

	instead of various other forms.

	(Thanks Eric Blake).

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	fish: More portable export sh statment.
	Don't depend on bash, but allow sh/dash/etc format:
	GUESTFISH_PID=nn; export GUESTFISH_PID

	(Thanks Eric Blake).

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-get-roots to return roots from last inspection.
	Return the roots found by the last call to inspect-os, but
	without redoing the whole inspection.

	generator: Don't die if an API call isn't listed in API versions file.
	For example, it may just have been added.

	Version 1.7.2.

2010-11-05  Guido Günther  <agx@sigxcpu.org>

	configure: Test for 'kvm' binary.

	Include <stdarg.h> in public header.
	Public headers use va_list, and this gives an error unless <stdarg.h>
	had been included before the header.

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	Don't print out key material in trace output.

2010-11-05  Richard W.M. Jones  <rjones@redhat.com>

	fish: '-i' option automatically handles whole-disk encryption.
	This feature is also available in guestmount because of the
	shared option parsing code.

	You don't need to do anything to enable it, just using -i
	will attempt decryption of encrypted partitions.

	Only works for simple Fedora whole-disk encryption.  It's a
	work-in-progress to make it work for other types of encryption.

2010-11-04  Richard W.M. Jones  <rjones@redhat.com>

	docs: Fix API support script.
	Before libguestfs 1.0.69 we needed to look in src/guestfs.c to
	see all the API calls.

	fish: Fix missing guestfish commands in HTML docs.

	fish: Make the 'help' command more helpful.

2010-11-04  Richard W.M. Jones  <rjones@redhat.com>

	docs: Which API calls were first supported in which upstream versions.
	Run src/api-support/update-from-tarballs.sh (this won't work
	unless you have a local copy of the tarballs from the website).

	src/api-support/added contains the result of running the
	script, a list of pairs: (API name, version first appeared).

2010-11-03  Richard W.M. Jones  <rjones@redhat.com>

	virt-win-reg: Current is the control set Windows chooses at boot.

	HACKING: Mention PHP bindings.

	docs: Indent *_va and *_argv functions correctly.
	This fixes commit f661db2c393d1b7e4211c55682b7fac82a70e36d.

	Version 1.7.1.

	fish: Use a perfect hash for faster command lookups.
	Existing command lookups are approx O(n^2).  Replace this
	with a perfect hash implementation which should be a lot
	faster.

	generator: Properly lay out and indent multi-line C function decls.

	docs: Clarify no additional error available from guestfs_create.

	docs: Clarify default error handler.

	docs: Error strings are in fact localized, documentation was wrong.

	docs: Clarify, not every function that returns int returns -1 for errors.

	capitests: Test guestfs_last_errno call.

	fuse: Use guestfs_last_errno instead of errno-reversal-hack.

	lib: Expose errno through new API guestfs_last_errno.
	If either the daemon sends back an errno, or a system call
	fails in the library, save the errno in the handle and then
	make it available to callers through the guestfs_last_errno
	function.

2010-11-03  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Send back the errno as a string.
	This changes the protocol again so that if the errno is available,
	it is converted to a string (like "EIO") and sent back over the
	protocol to the library.

	In this commit the library just discards the string.

2010-11-03  Richard W.M. Jones  <rjones@redhat.com>

	capitests: Test guestfs_add_drive_opts with optional args from C.

	capitests: Test some basic aspects of the C API.

	capitests: Use ftruncate instead of seek + write to create test files.

	capitests: Don't open test files with O_NONBLOCK.
	I have no idea why we were doing this.

	capitests: Set path in TESTS_ENVIRONMENT instead of in tests.c
	By exporting LIBGUESTFS_PATH with the right path to the appliance,
	we no longer need to hard code the path in tests.c

	generator: Remove unnecessary macro redefinitions.
	These macros are already defined in guestfs-internals.h

	Define internal safe_calloc shorthand.

	daemon: Don't use ../src path to include generator_protocol.h
	This file is already hard-linked into the current directory, so
	the relative path is not required.

2010-11-02  Richard W.M. Jones  <rjones@redhat.com>

	tests: Remove use of sfdisk from tests.
	Some older tests used sfdisk to create partitions for the
	tests.  sfdisk is buggy (more so than parted -- what is it
	with partitioning tools?) so replace these tests with
	equivalent part-* commands.

	daemon: Tolerate failure of blockdev --rereadpt after sfdisk.
	See commit 840536ea5a0568296dfd3e483442c76b93c5a949
	and commit 956fc5a3feacc970ea763697bf28fb686c875408.

	binary: Link guestmount static binary with -lm.
	This is indirectly required via the new shared guestfish
	C inspection code by libxml2.

	website: Distribute BUGS and RELEASE-NOTES files to website.

	Version 1.7.0.

	Final RELEASE-NOTES file for version 1.6.0.

	inspect: Add support for MeeGo.

2010-10-29  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.26.

2010-10-29  Richard Jones  <rjones@redhat.com>

	inspect: Add support for Ubuntu.

	inspect: Add detection of Gentoo.

	inspect: Add detection of Arch Linux.

	inspect: Add detection of Pardus.

	inspect: Generic parsing of MAJOR.MINOR in product names.

	inspect: Generic parsing of release files.

	inspector: Sort <filesystems> section.

2010-10-29  Richard W.M. Jones  <rjones@redhat.com>

	inspect: Ignore Pardus "/.swap" swapfile.

2010-10-29  Richard Jones  <rjones@redhat.com>

	autogen: Touch ocaml/.depend

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	inspector: List Debian packages.
	List Debian packages by downloading and parsing the file
	/var/lib/dpkg/status.

	inspector: Introductory documentation for XML format.

	inspector: Debian package format 'deb' instead of 'dpkg'.

	inspector: Return canonical block device paths in XML.

	Version 1.5.25.

2010-10-28  Matthew Booth  <mbooth@redhat.com>

	Ensure atomic creation of a cached appliance
	Cached appliances are discovered by their predictable path. Previously we were
	creating a cached appliance directly in this predictable path. This had at least
	2 undesirable effects:

	* Interrupting appliance creation would leave a corrupt appliance
	* 2 processes could simultaneously attempt to create the same appliance, causing
	  corruption.

	This patch causes the cached appliance to be created in a temporary directory,
	and then renamed to the predictable path. As rename is an atomic operation, this
	makes the whole creation atomic.

	This patch also changes the predictable path to have a prefix of 'guestfs.'.
	This will make it simpler for system administrators to clean up old cached
	appliances.

	This patch resolves RHBZ#639405

2010-10-28  Matthew Booth  <mbooth@redhat.com>

	Call febootstrap-supermin-helper using the new -u and -g options
	Use febootstrap-supermin-helper's new -u and -g command line options to setuid,
	rather than doing it in libguestfs.

	This resolves an issue with the generation of the cached appliance checksum. The
	checksum was being generated by a call to febootstrap-supermin-helper through
	popen(). Unfortunately, a bash misfeature meant that euid would be reset to uid,
	and the checksum was generated for uid, not euid. When virt-v2v is writing to a
	RHEV target, uid == 0 and euid == 36, which resulted in a cached appliance being
	created for root with permissions for uid 36.

	Note this requires febootstrap 2.10.

2010-10-28  Matthew Booth  <mbooth@redhat.com>

	Log the febootstrap-supermin-helper command line
	A side-effect of change 17e7cb9937a63ed8f9bb0fb6ac7302758be76846 was the the
	febootstrap-supermin-helper was no longer logged. This change adds it back using
	the new guestfs___print_timestamped_argv internal function.

	New internal function guestfs___print_timestamped_argv
	This function generalises the existing print_cmdline used to output the qemu
	command line to output any given command line, and exports it to other modules.
	It also adds a timestamp to the old print_cmdline output for consistency with
	guestfs___print_timestamped_message.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	list-filesystems: Use core list-filesystems API (RHBZ#642933).
	Change virt-list-filesystems to use the core inspection API
	instead of the deprecated Sys::Guestfs::Lib::get_partitions
	function.

	Sys::Guestfs::Lib: deprecate get_partitions (RHBZ#642933).
	However the code is left since this function is used
	by virt-v2v amongst others.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	inspector: Rewrite virt-inspector (RHBZ#642930).
	Rewrite virt-inspector:

	 - remove old and unsupportable features
	 - use the C inspection API
	 - don't run programs from the guest

	The RNG has been updated to reflect the new XML-only output.

	The new example files show the new XML output.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	tools: Use C API for inspection (RHBZ#642930).
	Update the following tools to use the C API for inspection:

	 - virt-cat
	 - virt-edit
	 - virt-ls
	 - virt-tar
	 - virt-win-reg

	None of the tools in the tools/ directory now use the deprecated
	Perl inspection APIs.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	New API: inspect-get-windows-systemroot to get systemroot.
	We are already using heuristics in the C inspection code to
	determine the Windows %SYSTEMROOT% directory.  This change
	just exposes this information through the API.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	Sys::Guestfs::Lib: deprecate inspection functions (RHBZ#642930).
	Deprecate the guest inspection functions in this module, remove
	documentation, and point users at the core API functions instead.

	However we will keep the code here since it is used by virt-v2v
	and virt-inspector.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Fix /dev/mapper paths from mounts and mountpoints (RHBZ#646432).
	Make the LV paths returned by these two commands canonical.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	edit: Clean up tmp file handling in virt-edit.
	This was probably not a security issue, but this change
	makes the code cleaner by not opening the tmp file twice.

	Also be more careful about error checking in close syscall.

2010-10-28  Richard W.M. Jones  <rjones@redhat.com>

	doc: Warn about security implications of running commands.

	virt-ls: Small fix to documentation.

2010-10-28  Matthew Booth  <mbooth@redhat.com>

	Remove ocaml/.depend from git.
	ocaml/.depend is automatically generated. This patch removes it from git.

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.24.

	Disable test for RHBZ#576879 comment 5.
	This test has started to hang, for reasons we don't understand.

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	Unify guestfish and guestmount options processing (RHBZ#642932).
	In guestfish, factor out the processing of the options -a, -c,
	-d, -i, -m, -n, -r, -v, -V, -x into a separate set of files:
	options.c, options.h, inspect.c, virt.c.

	Change guestmount so that it uses these same files (from the
	../fish directory) to process the same options.

	This unifies the handling of these options between the two programs.
	It also adds the useful inspection feature to guestmount, so you
	can now do:

	  guestmount -d Guest -i --ro mnt/

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	df: Add --uuid option to print guest UUIDs instead of names (RHBZ#646821).

	todo: Remove obsolete items from TODO file.

	Document problems mixing mkmountpoint and umount-all (RHBZ#599503).

	appliance: Repo name is not Fedora-specific.
	The --with-repo parameter is also used by Debian to specify
	the Debian software repository, so remove references to
	Fedora.

	appliance: Remove repo from appliance filename (RHBZ#638901).
	There's no need to have the appliance filename contain the
	repository name it was built from, and this change gives
	downstream users more freedom to mix and match libraries
	and appliances if they want to.

	inspection: Ignore floppy disks and CD-ROM drives (RHBZ#642929).

	Enable autosync by default.

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	/dev/mapper paths should not be returned from C inspection APIs (RHBZ#638899).
	With this patch, /dev/mapper paths do not appear in the output
	of guestfs_inspect_os, as you can see from this example:

	Welcome to guestfish, the libguestfs filesystem interactive shell for
	editing virtual machine filesystems.

	Type: 'help' for a list of commands
	      'man' to read the manual
	      'quit' to quit the shell

	Operating system: Fedora release 13 (Goddard)
	/dev/vg_f13x64/lv_root mounted on /              <--- NB
	/dev/vda1 mounted on /boot

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	New API: lvm-canonical-lv-name: make LV name canonical.
	When logical volume names appear in places like /etc/fstab
	files they can have the form "/dev/mapper/foo-bar".  This
	function takes such names and makes them canonical.

	Note that this operation cannot be performed using the current
	API, because 'guestfs_stat' does not work on device names, and
	we don't really want to make a 'stat-device' call since that
	exposes too much non-useful detail about the appliance.

	With this patch you can do this:

	><fs> debug ll /dev/mapper
	total 8
	drwxrwxr-x  2 root root   4096 Oct 25 12:51 .
	drwxr-xr-x 16 root root   4096 Oct 25 12:51 ..
	crw-------  1 root root 10, 62 Oct 25 12:51 control
	lrwxrwxrwx  1 root root      7 Oct 25 12:51 vg_f13x64-lv_root -> ../dm-0
	lrwxrwxrwx  1 root root      7 Oct 25 12:51 vg_f13x64-lv_swap -> ../dm-1

	><fs> lvm-canonical-lv-name /dev/mapper/vg_f13x64-lv_root
	/dev/vg_f13x64/lv_root
	><fs> lvm-canonical-lv-name /dev/mapper/vg_f13x64-lv_swap
	/dev/vg_f13x64/lv_swap
	><fs> lvm-canonical-lv-name /dev/mapper/foo
	libguestfs: error: lvm_canonical_lv_name: lvm_canonical_lv_name_stub: /dev/mapper/foo: No such file or directory
	><fs> lvm-canonical-lv-name /dev/mapper/control
	libguestfs: error: lvm_canonical_lv_name: /dev/mapper/control: not a logical volume
	><fs> lvm-canonical-lv-name /dev/vg_f13x64/lv_root
	/dev/vg_f13x64/lv_root

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	rescue: Add --network option.
	This enables networking in the rescue shell.

2010-10-27  Richard W.M. Jones  <rjones@redhat.com>

	Don't use kernel module whitelist with ext2-based appliance.
	Since the ext2-based appliance is cached, and since it is not
	all loaded into memory (as with the initrd), we might as well
	put all the kernel modules in there.

	Note the kmod.whitelist.in file is still used for building the
	ordinary appliance.

2010-10-27  Matthew Booth  <mbooth@redhat.com>

	Fix networking in the appliance.
	Commit 4963be85 re-introduced networking to the appliance,
	but didn't configure the custom network the appliance expects
	since we switched to link local addressing. This patch
	configures QEMU to use the custom network again.

	Note that you still need to use guestfs_set_network (g, 1)
	to enable user networking.

2010-10-26  Matthew Booth  <mbooth@redhat.com>

	Don't include control characters in BufferIn trace output (RHBZ#646822).
	The example below shows what the output looks like for a large
	random buffer.

	$ guestfish -N fs -m /dev/sda1 -x -- \
	    touch /test : \
	    pwrite /test "$(dd if=/dev/urandom bs=128k count=1)" 0
	[...]
	pwrite "/test" "\x7f\xa0/\xb3\x80\xd3\xbc\xc3\xc3.\xb1\xe0\x1b\xafC\x06\xd5;\x0ajJ[o\xc1\xdd\xae\x1f\xce\xb2\x8d\xb3\xd0\x11\xcc$%\xe6<\xc7\xc7\xe7BU*\xc4l%\xaa\xea\xe9\x1an\xda]\xc6I\x0eC\xf9;\xec\x12a\x1f\xeaRH\xb2P\xd6+\xc4\xe6\xa5bW\x99\\x9d\xc8\x9bJ\xef\x99-\x16:h5\xe2\x0f\xa2\xa08\x9bU\x0b$\x138\xcf\xd4j\x9b\x83{%\xac0\xdaa1Xx\xbd`\x8e\xdd\x82\x87\x07\x98\xd2\x9ed\x8bq\xd0\x1f5\x8f\xab\xad4z1\xda\xc4b\xc1\xbc\x0f\xaa\xea\xc1\x15(\xfd1\xc2\x0bF\xe6\x9e\xb0+/g\\xab\xb0b\xde_\xca\xf9\xad\xe1?%\x17\xad\x98\xa4e\xc1\xe0f'\x89\xe9>\xff\xadhYi\xe7\x8c]%\xef\xe0\xa1R\xe5\xd5\x03K\xefI\xdf\xad\xd3\x82\xdb\x0f\xdd\xc3\x8f"\xf1G\xea\xf9r\xdd\xff\x88\x81\xb7\xf2\x0e\x0f\x1d;:\xf2F1\xdb\xb5D\xa1^\x928\xf5\x8e)\xab\xc4\xc3H(\xd0ol\xc6\xe4\xd6\xa3L\x1c\x06\xf4"<truncated, original size 130567 bytes> 0
	[...]

2010-10-25  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Print failed path in stat command errors.

2010-10-25  Karel Klíč  <kklic@redhat.com>

	fish: Fix too-short allocation in tilde expansion (RHBZ#636061).

2010-10-23  Piotr Drąg  <piotrdrag@gmail.com>

	Update Polish translations (RHBZ#502533).

2010-10-23  Richard W.M. Jones  <rjones@redhat.com>

	fish: Quote optional argument name in error message.

	fish: Reject unknown opt args (RHBZ#642934,CVE-2010-3851).
	This updates commit 0c1d3c02a8147617ee0646e37d011235abdd2c22.

2010-10-23  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Add --format option to docs (RHBZ#642934,CVE-2010-3851).
	This updates commit 44c5ee1163918bd5c9e6aa6c292f0c3bb15b7b25.

	Document the --format option in the guestmount manual page.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.23.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	resize: Specify format of input, output disk (RHBZ#642934,CVE-2010-3851).
	This adds two new options: --format specifies the format of the
	input disk, and --output-format specified the format of the output
	disk.

	Requiring the format of the output disk seems a bit strange at first:
	after all, this is the disk that the virt-resize user has to create.
	However it is needed because we sometimes reopen this disk, after
	copying data over the first sector, and in theory a raw-format guest
	could write a qcow2 header here and have it copied to the output
	disk, which we would subsequently reopen.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	virt-make-fs: Specify format of disk (RHBZ#642934,CVE-2010-3851).

	df: Specify format of disks (RHBZ#642934,CVE-2010-3851).
	The format parameter is taken from libvirt if available, else
	the user should supply the '--format' parameter (eg. for local
	disk files).

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	tools: Specify format of disks (RHBZ#642934,CVE-2010-3851).
	Sys::Guestfs::Lib is changed in two ways: firstly we take the format
	string from libvirt and pass it to add_drive_opts.  Secondly we allow
	an extra format =>  parameter to open_guest which allows the
	format to be specified for disk images.

	All the tools are changed to add an extra --format parameter allowing
	the format to be specified for direct disk images.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	fuse: Specify format of disks (RHBZ#642934,CVE-2010-3851).
	For command line disk images, specify the format using --format option
	in the same way as for guestfish.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	fish: Specify format of disks (RHBZ#642934,CVE-2010-3851).
	For libvirt guests, the disk format is copied from libvirt (if
	libvirt knows it).

	For command line disk images, you can use --format to override
	format auto-detection.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	generator: Optional arguments, add-drive-opts (RHBZ#642934,CVE-2010-3851).
	This large commit changes the generator so that optional arguments
	can be supported for functions.

	The model for arguments (known as the "style") is changed from
	(ret, args) to (ret, args, optargs) where optargs is a more limited
	list of arguments.

	One function has been added which takes optional arguments, it is
	"add-drive-opts", modelled as:

	  (RErr, [String "filename"], #required
	         [Bool "readonly"; String "format"; String "iface"]) #optional

	Note that this function is processed in the library (does not go over
	the RPC protocol to the daemon).  This has allowed us to simplify
	the current implementation by omitting changes related to RPC or the
	daemon, although we plan to add these at some point in the future.

	From C this function can be called in 3 different ways as in these
	examples:

	  guestfs_add_drive_opts (g, filename,
	                          GUESTFS_ADD_DRIVE_OPTS_READONLY, 1,
				  GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
	                          -1);

	(the argument(s) between 'filename' and '-1' are the optional ones).

	  guestfs_add_drive_opts_va (g, filename, args);

	where 'args' is a va_list.  This works like the first version.

	  struct guestfs_add_drive_opts_argv optargs = {
	    .bitmask = GUESTFS_ADD_DRIVE_OPTS_READONLY_BITMASK,
	    .readonly = 1,
	  }
	  guestfs_add_drive_opts_argv (g, filename, &optargs);

	This last form lets you construct lists of optional arguments, and
	is used by guestfish and the language bindings.

	In guestfish optional arguments are used like this:

	  add-drive-opts filename readonly:true

	In OCaml these are mapped naturally to OCaml optional arguments, eg:

	  g#add_drive_opts ~readonly:true filename;

	In Perl these are mapped to extra arguments, eg:

	  $g->add_drive_opts ($filename, readonly => 1);

	In Python these are mapped to optional arguments, eg:

	  g.add_drive_opts ("file", readonly = 1, format = "qcow2")

	In Ruby these are mapped to a final hash argument, eg:

	  g.add_drive_opts("file", {})
	  g.add_drive_opts("file", :readonly => 1)
	  g.add_drive_opts("file", :readonly => 1, :iface => "virtio")

	In PHP these are mapped to extra parameters.  This is not quite
	accurate since you cannot omit arbitrary optional parameters, but
	there's not much than can be done within the limitations of PHP
	as a language.

	Unimplemented in: Haskell, C#, Java.

2010-10-22  Richard W.M. Jones  <rjones@redhat.com>

	generator: Rearrange argt logically (RHBZ#642934,CVE-2010-3851).
	This structure has accreted over time.  Rearrange the types
	into a logical order.

	daemon: Use stdint UINT64_C instead of <const>ULL.

	inspector: Add comment about why --fish option implies write mode.

2010-10-21  Richard W.M. Jones  <rjones@redhat.com>

	php: Create test file properly before running test.

	php: Note that tests are testing the wrong thing.

	ruby: Run tests one at a time, instead of in parallel.

	generator: Refactor code for Perl bindings.
	This simplifies the code that generates the Perl bindings
	by removing repeated sections.

	generator: Missing newline character.

	fish: Change 'int argc' to 'size_t argc' throughout.

2010-10-20  Richard W.M. Jones  <rjones@redhat.com>

	generator: Remove unused parameter.
	generate_c_call_args optional decl parameter is never actually
	used, so remove it.

2010-10-19  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.22.

2010-10-18  Richard W.M. Jones  <rjones@redhat.com>

	virt-resize: Document guest boot stops at "GRUB" (RHBZ#640961).

	df: Correctly quote libvirt domain and filesystem in --csv mode (RHBZ#639986).
	This fixes virt-df --csv when used with libvirt domains that contain
	quotes, spaces, commas and other lesser-used characters.

	virt-resize: Document qcow2 output format (RHBZ#642826).

	virt-resize: List truncate(1) in SEE ALSO section.

	tools: Add section describing quoting libvirt domain names to docs (RHBZ#643624)

	parted: Don't return "loop" for non-partitioned devices (RHBZ#634246).
	If you ran part-get-parttype command on a device which didn't
	contain a partition, it used to return the string "loop".  This
	is an internal representation that parted uses.  We should instead
	return an error because part-get-parttype makes no sense for
	devices which are not partitioned.

	contrib: Note about what needs to be done for visualization.

	todo: Add wishlist items to to-do list.

2010-10-06  Richard W.M. Jones  <rjones@redhat.com>

	todo: Add note about using blktrace.

	contrib: More trace visualization.

	debug: Add qtrace <device> on|off to allow selective traces.

	part-disk: Align whole disk partition to 64 sectors.
	Change the part-disk command so it aligns the partition to
	64 sectors (instead of 1 or 34 sectors as now).  This should
	ensure that the filesystem contained within is aligned.

2010-10-05  Richard W.M. Jones  <rjones@redhat.com>

	contrib: Fix small mistake in README file.

	contrib: Update README files.

	contrib: Visualizing block device access and alignment.

2010-10-04  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Add g#ocaml_handle method.

	ocaml: Document g#close () method for objects.

	ocaml: Create the handle when the object is instantiated.
	Previously we had only one handle shared between all objects .. oops.
	This fixes commit 67636f721056d2f2250b0ff8acd981a0294536a9.

2010-10-03  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Add alternate object-oriented programming style.
	In original style:

	let () =
	  let filename = Sys.argv.(1) in
	  let g = Guestfs.create () in
	  Guestfs.add_drive_ro g filename;
	  Guestfs.launch g;
	  let roots = Guestfs.inspect_os g in
	  print_endline (Guestfs.inspect_get_product_name g roots.(0))

	The same code in the new OO style:

	let () =
	  let filename = Sys.argv.(1) in
	  let g = new Guestfs.guestfs in
	  g#add_drive_ro filename;
	  g#launch ();
	  let roots = g#inspect_os () in
	  print_endline (g#inspect_get_product_name roots.(0))

2010-10-02  Richard W.M. Jones  <rjones@redhat.com>

	test-copy: Skip this test if /dev/fd is missing, because of broken mock 1.1.4.

	test-virt-resize: Skip this test on 32 bit hosts.

2010-10-01  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.21.

2010-10-01  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix glob command (RHBZ#635969).
	This is a fix for the glob command in guestfish which was inadvertently
	broken in commit c359347dd42c9f5b875630537ee3641264826b89.

	This also appears to fix:
	  https://bugzilla.redhat.com/show_bug.cgi?id=635969
	  glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage

2010-09-27  Richard W.M. Jones  <rjones@redhat.com>

	Add test for virt-resize.
	This tests a number of things which have caused problems for us:

	 - resizing PVs and LV content
	 - handling GPT format disks
	 - using qcow2 as a target disk format
	 - shrinking disk images

	Note that the disk content is empty (not a real VM), but this is
	adequate since all we want to test are the operations and calculations
	done by virt-resize.  We are not interested here in whether e2fsprogs
	and LVM actually works.

2010-09-27  Richard W.M. Jones  <rjones@redhat.com>

	resize: Fix handling of GPT and qcow2 (RHBZ#633766, RHBZ#633096).
	Previously we copied the bootloader data directly from the
	source disk image to the target disk image using host file
	operations (before launching libguestfs).  This has two problems:
	firstly it has no chance of working with qcow2, and secondly
	it didn't behave properly with GPT.

	This changes the code so that everything is done through
	libguestfs.  Block device sizes are now calculated properly
	for qcow2 (RHBZ#633096) because this is done using the libguestfs
	blockdev_getsize64 call.  The partition table is still created
	by parted, but to workaround a bug in parted this is done before
	copying the bootloader.  Finally the bootloader copy is done
	using the new APIs pread-device and pwrite-device.

	Shrinking now works, at least for simple cases (RHBZ#633766).

2010-09-27  Richard W.M. Jones  <rjones@redhat.com>

	New API: pread-device, partial read for devices.

	pread: Check count and offset parameters are not negative.

	Freshen POD (manual pages) stylesheet.

2010-09-26  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.20.

	New API: pwrite-device
	This is the same as the existing 'pwrite' API call, but allows you
	to write to a device.

	pwrite: Check offset is not negative.

	fish: Refresh guestfish documentation.

	Document ambiguity between devices and paths in API.

2010-09-24  Richard W.M. Jones  <rjones@redhat.com>

	Document accurately how supermin appliance uses /tmp as a cache.

	Allow $TMPDIR to override most temporary directory uses.
	Be more consistent in allowing the user to override use of the
	temporary directory by specifying $TMPDIR.  Also prefer P_tmpdir
	macro (defined in <stdio.h>) if that is defined, rather than
	hard-coding "/tmp" for the fallback location.

	Call blockdev --rereadpt then udev_settle after sfdisk commands.
	This updates commit 956fc5a3feacc970ea763697bf28fb686c875408 so
	that we call udev_settle after rereading the partition table.  This
	ensures that the devices nodes for the new partitions have been
	created.

2010-09-23  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translations (RHBZ#636918).

2010-09-23  Piotr Drąg  <piotrdrag@gmail.com>

	Update Polish translations (RHBZ#502533).

2010-09-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.19.

2010-09-22  Richard W.M. Jones  <rjones@redhat.com>

	regressions: Test just-built guestfish.
	Instead of testing the installed /usr/bin/guestfish.

	This fixes commit ddda0f7bd00a37274dae38f4ce93955b8cfdf7d7.

2010-09-22  Richard W.M. Jones  <rjones@redhat.com>

	Call blockdev --rereadpt after sfdisk commands.
	On fast machines sfdisk has some sort of race where it
	fails to re-read the partition table it has just created
	(it's not clear if this is a race in sfdisk, the kernel or
	some other component).

	This commit works around the problem by calling
	blockdev --rereadpt after sfdisk operations, which
	experience shows is enough to stop the problem from
	happening.

2010-09-22  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.18.

	Test guestfish -a and guestfish -d options.
	Since these options were both broken in released version 1.5.17,
	best to have a regression test to catch this in future.

2010-09-22  Richard Jones  <rjones@redhat.com>

	appliance: Ignore unreadable dbus service file (Fedora 15).

2010-09-22  Richard W.M. Jones  <rjones@redhat.com>

	fish: Fix segfault in free_drives() function.
	This updates commit 8ea62c8d7f3f7f7e4057b93105cf979271aa13f4
	so it doesn't try to free the optarg (stack-allocated) strings.

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.5.17.

	Update release notes for new features in 1.5 branch.

	fish: Implement 'hexedit' command.

	New APIs: upload-offset and download-offset
	These APIs allow you to efficiently write and read parts of
	files or devices.

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	leak: Clear history before exiting guestfish.
	Clear the in-memory history before exiting.  This removes
	some but not all memory leaks associated with using the GNU
	History library.  As far as I can tell it is not possible to
	free up everything used by GNU History.

	(Found by valgrind).

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	leak: Free list of drives and mountpoints in guestfish.
	Previously the list of -a, -d, -m, -N parameters were leaked.  This
	change frees them explicitly.

	This is not such an important fix since guestfish is a one-shot
	program, but it aids in finding other leaks in future.

	(Found by valgrind).

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	leak: Free PCRE regexps when library is unloaded.
	The compiled PCRE regexps used for inspection were being leaked when
	the library was unloaded.

	(Found by valgrind).

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	leak: Appliance name was leaked during guestfs_launch.
	This frees the string containing the name of the appliance
	which was previously being leaked during launch.

	(Found by valgrind).

2010-09-21  Matthew Booth  <mbooth@redhat.com>

	Add more exclusions to .gitignore.

2010-09-21  Matthew Booth  <mbooth@redhat.com>

	Fix appliance build dependency problem
	The appliance was being completely rebuilt every time guestfsd was updated. This
	was because make.sh depended on guestfsd, which it had to do because it
	called update.sh to install guestfsd.

	This fix removes the call to update.sh in make.sh, and therefore the dependency
	on guestfsd. The Makefile already includes a rule to run update.sh when guestfsd
	is updated, so this was unnecessary.

2010-09-21  Richard W.M. Jones  <rjones@redhat.com>

	fish: Add --echo-keys option to allow passphrases/keys to be echoed.
	See also:
	http://catless.ncl.ac.uk/Risks/26.17.html#subj13.3

2010-09-20  Richard W.M. Jones  <rjones@redhat.com>

	df: Add --one-per-guest option for using one appliance per guest.

2010-09-20  Richard W.M. Jones  <rjones@redhat.com>

	Fix error launching libguestfs when euid != uid.
	When writing to a RHEV target, virt-v2v launches the libguestfs
	appliance with euid:egid = 36:36, which is required to write to
	an NFS target using root_squash.

	Since we changed to using a cached appliance, this causes an error on
	start up, as the cached files are owned by root, but the cache directory
	is owned by 36:36.  The reason is that bash resets euid to uid and
	egid to gid so when febootstrap-supermin-helper is executed, it runs as
	root:root.  The cache directory was created by libguestfs directly so
	it has the correct ownership.

	This patch fixes the issue by using explicit fork/exec instead of
	system (ie. not going via a shell) and by setting the real UID and
	GID to the effective UID and GID before execing.

2010-09-20  Richard W.M. Jones  <rjones@redhat.com>

	todo: Suggest removing repo name from appliance name.

2010-09-18  Richard W.M. Jones  <rjones@redhat.com>

	generator: Generate guestfish-only commands.
	The guestfish-only commands such as 'alloc' and 'edit' are
	now generated from one place in the generator instead of being
	spread around ad-hoc in the C code.

	fish: In guestfish(1) turn command references into links.

2010-09-17  Richard W.M. Jones  <rjones@redhat.com>

	fish: Correction for online help for 'edit' and 'more' commands.
	This corrects commit b5c287bcd456bdb02d8ec0443483df34f4fd6b5d
	and commit 639ca1828b167bf59353f0cd3c8c79c6289bbd5d.

2010-09-15  Richard Jones  <rjones@redhat.com>

	Version 1.5.16.

	configure: Make "fedora-13" the default repository.

	fish: If -m option fails, suggest a mountpoint.

	todo: Remove section since we now have list-filesystems API.

	Version 1.5.15.

2010-09-15  Richard Jones  <rjones@redhat.com>

	New API: list-filesystems: list filesystems
	This API is a simpler replacement for the guestfish commands
	list-devices / list-partitions / lvs, in the case where you are
	just examining a guest by hand to see what it contains.

	Typical usage and output in guestfish is like this:

	$ guestfish --ro -a /dev/vg_trick/F13x64
	><fs> run
	><fs> list-filesystems
	/dev/vda1: ext4
	/dev/vg_f13x64/lv_root: ext4
	/dev/vg_f13x64/lv_swap: swap

	It can also be used to replace programs that try to mount
	devices to determine if they are mountable filesystems.

2010-09-15  Richard Jones  <rjones@redhat.com>

	New API: part-to-dev: Convert partition name to device name.
	This adds a formal API for going from a partition to the containing
	device, eg. /dev/sda1 -> /dev/sda

	generator: Add TestOutputDevice.
	This is for testing functions that return a device or partition
	name, so that we can compare the return value with the canonical
	device name (eg. "/dev/vda1" == "/dev/sda1").

	todo: More use of libblkid.

2010-09-14  Richard Jones  <rjones@redhat.com>

	fish: In usage message use new-style -i option syntax.

	fish: Update copyright dates in usage message.

	fish: Remove extraneous space from usage message.

	todo: More ideas.

	Version 1.5.14.

	configure: Check for virtio-serial support in qemu.
	All other vmchannel methods are obsolete, but we were still trying
	to check for them.  This replaces all of them with a simple check
	for virtio-serial.

	pardus: Check for cpio in configure.

2010-09-13  Richard Jones  <rjones@redhat.com>

	Update Spanish translation (RHBZ#633357).

	build: Add run-test-tool-locally to EXTRA_DIST.

	Version 1.5.13.

	appliance: Disable setting scheduler to noop.
	This is a workaround until
	https://bugzilla.redhat.com/show_bug.cgi?id=630583
	is fixed (bug in Linux 2.6.36).

	ubuntu: Remove bogus debirf file.

	ubuntu: Add linux-image to the packagelist.
	It seems that linux-image (ie. the kernel) is omitted in some
	versions of the base packages.

	ubuntu: /proc can be a symlink
	If it's a symlink then the succeeding mount commnd will fail.
	Remove it and make a /proc directory.

	build: 'make quickcheck' rule now uses new run-test-tool-locally script.

2010-09-11  Richard Jones  <rjones@redhat.com>

	build: hivex is required.
	hivex library has been required since we moved the inspection
	code to C.  Check for this in configure.ac.

	Version 1.5.12.

	build: require Augeas for library.
	Augeas has been required since we moved the inspection code to C,
	however we were not correctly enforcing this in configure.ac, nor
	correctly linking to the library until now.

	generator: Provide no-op generator if no OCaml compiler.

	build: Don't distribute src/generator.ml, no longer exists.

2010-09-11  Richard Jones  <rjones@redhat.com>

	generator: Calculate MD5 of test.iso at runtime.
	Because this used to be compiled into the C test, it changed
	every time the ISO was rebuilt (which because of Makefile deps
	was every run).

	Now it is calculated at runtime so the C test file doesn't keep
	changing.

2010-09-11  Richard Jones  <rjones@redhat.com>

	generator: Don't use real uuidgen for UUIDs.
	This was one reason why capitests/tests.c changed every time the
	generator was run.

2010-09-11  Richard Jones  <rjones@redhat.com>

	Split generator into separate source files.
	'src/generator.ml' is no more.  Instead the generator is logically
	split up over many different source files.

	Read generator/README for help and tips.

	We compile the generator down to bytecode, not native code.  This
	means it will run more slowly, but is done for maximum portability.

2010-09-11  Richard Jones  <rjones@redhat.com>

	syntax: Replace -a and -o with && and || for portability.

2010-09-10  Richard Jones  <rjones@redhat.com>

	syntax: Use exit (EXIT_SUCCESS) instead of hard-coded number.

	syntax: Remove unused assert.h header.

	syntax: Remove unused ignore-value.h header.

	syntax: Remove unused signal.h header.

	syntax: Remove unused c-ctype.h header.

	syntax: Fully bracket m4 macro arguments.

	syntax: Remove trailing spaces.

	syntax: Use spaces instead of tabs for indentation.

	syntax: Replace _prohibit_regexp with _sc_search_regexp.

	fish: glob should only print commands when trace mode is enabled.

	fish: Add regression test for copy-in and copy-out.

	README: Document virtio-serial is now the only vmchannel.

	fish: const-correctness fixes in copy.c

	Version 1.5.11.

	Update OCaml dependencies.

	Update PO files.

	fish: Fix 'copy-out' command when local directory is "/foo".

	fish: Fix typo in documentation of copy-out.

2010-09-09  Richard Jones  <rjones@redhat.com>

	Version 1.5.10.

	todo: Remove discussion of copy-in/copy-out.

	fish: Implement copy-in and copy-out commands.

	New APIs: is-chardev, is-blockdev, is-fifo, is-symlink, is-socket
	These complement the existing is-file and is-dir APIs.

	daemon: Move 'exists', 'is-file' and 'is-dir' to separate file.
	This commit is just code movement.

	generator: Fix incorrect shortdesc in docs for 'is-dir' command.

	generator: Fix documentation for 'is-file' command.

	fish: Fix 'more' command to work with any file.

	fish: Fix 'edit' command to work with any file.

	guestfs: Reference guestfs-browser architecture in threads documentation.

	guestfs: Document progress notification messages in protocol.

	guestfs: More accurate documentation for initial message.

	guestfs: Remove traces of documentation for non-existent 'low-level API'

	guestfs: Fix typo in man page.

	todo: Notes on virt copy command.

2010-09-08  Richard Jones  <rjones@redhat.com>

	Bring TODO file up to date.

	Version 1.5.9.

	fish: Add guestfish -N bootroot and -N bootrootlv for creating boot+root disks.

	fish: Add guestfish -N lvfs for creating formatted LVs.

	fish: Add guestfish -N lv for creating disks with LVs.

	fish: Improve appearance of guestfish -N help output.

	fish: Allow guestfish -N help for listing prepared disk image help.

	fish: Generate list of prepared disk image types.
	This commit shouldn't change the semantics of the code.

2010-09-06  Richard Jones  <rjones@redhat.com>

	test-tool: Add a 'run-test-tool-locally' script.
	This can be used to run the test tool without installing it.
	It sets the environment variables and command line arguments
	up correctly to run the tool from the build directory.

	appliance: init script does 'ls -lR /dev' (verbose only)
	It's useful to see what files are in /dev subdirectories
	at boot, eg. for looking at virtio-serial ports.

	daemon: Don't warn about 'long long' usage.
	This removes a fatal warning (-Werror) which stops compilation
	on 32 bit machines.

2010-09-05  Richard Jones  <rjones@redhat.com>

	php: Remove 'make clean' rule in subdirectory.

2010-09-04  Richard Jones  <rjones@redhat.com>

	Version 1.5.8.

	PHP bindings.
	Note that these are not complete on 32 bit architectures.  PHP doesn't
	offer any convenient 64 bit type (on 32 bit).  Therefore you should
	always use these PHP bindings on 64 bit.

2010-09-04  Richard Jones  <rjones@redhat.com>

	Define LIBGUESTFS_HAVE_<shortname> for C API functions.
	The actions each have a corresponding define, eg:

	  #define LIBGUESTFS_HAVE_VGUUID 1
	  extern char *guestfs_vguuid (guestfs_h *g, const char *vgname);

	However functions which are for testing, debugging or deprecated do
	not have the corresponding define.  Also a few functions are so
	basic (eg. guestfs_create) that there is no point defining a symbol
	for them.

2010-09-04  Richard Jones  <rjones@redhat.com>

	build: guestfs-structs.h was missing from libguestfs_la_SOURCES.

	Add full docs pot file.

2010-09-02  Richard Jones  <rjones@redhat.com>

	Allow manual pages and POD files to be translated.
	This uses the optional po4a package to split these files into
	PO files for translation, and reassemble afterwards.

	Note this creates an extra pot file (po-docs/libguestfs-docs.pot).
	We don't (yet) combine this with the main po/libguestfs.pot file.
	The 'libguestfs-docs.pot' file included in this commit is not the
	real thing, just a short cut down snippet for testing.  The real
	thing is created if you update one of the dependent files and
	rebuild.

	Note also the dummy ja.po, for testing the principles.

2010-09-02  Geert Warrink  <geert.warrink@onsnet.nu>

	Add Dutch translation (RHBZ#629593).

2010-09-02  Richard Jones  <rjones@redhat.com>

	ruby: Add Guestfs::Guestfs.new() method.
	This is a more standard way to create objects in Ruby.  The old
	way was to call the module function Guestfs::create() which still
	works.

	perl: Document handle is a hashref.
	For details see commit eb566f7dc7974b42ac65729a2e5e5bcee329a0a9.

	perl: Add documentation about testing availability of methods and features.

2010-09-01  Richard Jones  <rjones@redhat.com>

	build: Link static -ltinfo into guestfish.static binary.

	Version 1.5.7.

	fish: Add missing header file to sources.

	ocaml: Add test for progress notification callbacks.

	debug: Add 'debug progress' command.
	This debugging command generates progress notification messages,
	used for testing purposes.

	debug: Arrange prototypes in alphabetical order.

2010-09-01  Richard Jones  <rjones@redhat.com>

	daemon: Enable debug command by default.
	The debug command is useful for internal testing, and so should
	be enabled by default in all builds.

	Note that it is still *not* part of the stable ABI.

2010-09-01  Richard Jones  <rjones@redhat.com>

	Consistent use of 'void *opaque' to refer to opaque pointer in C API.
	We inconsistently used 'void *data' or 'void *opaque' all over to
	refer to the same thing.  Use 'void *opaque' in all places in the
	published API and documentation.

2010-09-01  Richard Jones  <rjones@redhat.com>

	resize: Add progress bar to virt-resize.
	With this commit you will see a plain progress bar during the
	lengthy copy operations, similar to below:

	Summary of changes:
	/dev/sda1: partition will be left alone
	/dev/sda2: partition will be resized from 7.5G to 9.5G
	/dev/sda2: content will be expanded using the 'pvresize' method
	Copying /dev/sda1 ...
	[############################################################################]
	Copying /dev/sda2 ...
	[########################################------------------------------------]

2010-09-01  Richard Jones  <rjones@redhat.com>

	perl: bindings to progress callback.

	ocaml: bindings to progress callback.

2010-09-01  Richard Jones  <rjones@redhat.com>

	Implement private data area.
	The private data area is a hash table which is associated with
	libguestfs handles, that C callers may use to store arbitrary
	data for the lifetime of the handle.

	Later the OCaml bindings will use this in order to implement
	callbacks.

2010-09-01  Richard Jones  <rjones@redhat.com>

	fish: Implement progress bars in guestfish.
	The progress bar is updated 3 times per second, and is not displayed
	at all for operations which take less than two seconds.

	You can disable progress bars by using the flag --no-progress-bars,
	and you can enable progress bars in non-interactive sessions with
	the flag --progress-bars.

	A good way to test this is to use the following command:

	guestfish --progress-bars \
	          -N disk:10G \
	          zero-device /dev/sda

	(adjust "10G" to get different lengths of time).

2010-09-01  Richard Jones  <rjones@redhat.com>

	fish: Detect UTF-8 output and open termcap/terminfo database.
	Provide a generic mechanism within guestfish to detect if
	output if UTF-8 and to open the termcap (or terminfo) database
	for the current terminal type.

	Add progress messages to download command.

	Add progress messages to zero-device command.

	Add progress messages to zero command.

	Add progress messages to fill-pattern command.

	Add progress messages to fill command.

2010-08-31  Richard Jones  <rjones@redhat.com>

	Add progress messages to copy-size command.

2010-08-31  Richard Jones  <rjones@redhat.com>

	Implement progress messages in the daemon and library.
	This implements progress notification messages in the daemon, and
	adds a callback in the library to handle them.

	No calls are changed so far, so in fact no progress messages can
	be generated by this commit.

	For more details, see:
	https://www.redhat.com/archives/libguestfs/2010-July/msg00003.html
	https://www.redhat.com/archives/libguestfs/2010-July/msg00024.html

2010-08-31  Richard Jones  <rjones@redhat.com>

	ocaml: Remove old entry from .gitignore file.

2010-08-27  Richard Jones  <rjones@redhat.com>

	Version 1.5.6.

	Requires febootstrap >= 2.9.

	daemon: Set O_CLOEXEC flag on the virtio-serial file descriptor.

2010-08-27  Richard Jones  <rjones@redhat.com>

	build: Don't add version extra string to the version number.
	If this string was non-empty, then it broke a lot of things because
	autoconf and other parts of the build system were expecting this
	string to contain a simple MAJOR.MINOR.RELEASE version number.

	This requires changes to guestfish and guestmount so they use the
	guestfs_version API to fetch the version from the library.  (The
	Perl tools were already doing it this way).  In a way this is more
	accurate, because it's no longer hard-coded in the binary, but
	fetched from the dynamically linked libguestfs.so.

2010-08-26  Richard Jones  <rjones@redhat.com>

	Update BUGS, PO files.

2010-08-26  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translations (RHBZ#627556).

	Updated Spanish translations (RHBZ#626843).

2010-08-26  Piotr Drąg  <piotrdrag@gmail.com>

	Update Polish translation (RHBZ#502533).

2010-08-26  Richard Jones  <rjones@redhat.com>

	Prepare for version 1.5.5.

	rescue: Fix typo in comment.

2010-08-26  Matthew Booth  <mbooth@redhat.com>

	Ignore launch() error in virt-rescue. (RHBZ#618556)
	launch() expects guestfsd to start, which it never does in virt-rescue, so it
	always returns an error about the appliance shutting down unexpectedly.

2010-08-26  Matthew Booth  <mbooth@redhat.com>

	Shut down the appliance cleanly
	When guestfsd exits, or the user exits the virt-rescue shell, the init script
	exits which causes the kernel to panic. This isn't really a functional issue, as
	all useful work is done by this point. However, it does cause virt-rescue to
	display an unsightly error message.

	This patch causes the appliance to power off cleanly before the init script
	exits. Note it actually does a reboot rather than a poweroff. This is because
	ACPI is disabled in the appliance, meaning poweroff doesn't work, but qemu is
	configured not to restart on reboot.

2010-08-26  Matthew Booth  <mbooth@redhat.com>

	Call sync after guestfsd exits
	Core files are not reliably written to disk if guestfsd dumps core. This patch
	makes libguestfs do the same appliance cleanup for guestfsd and virt-rescue,
	which seems to fix the matter.

	It also removes a redundant sleep and additional sync when exiting virt-rescue.

2010-08-26  Matthew Booth  <mbooth@redhat.com>

	Add a core_pattern debug command
	This adds a new debug command, core_pattern, which writes a new pattern for
	coredump files to the appliance kernel, and sets the daemon's hard and soft core
	limits to infinity.

2010-08-25  Richard Jones  <rjones@redhat.com>

	Include statically linked binaries in the binary distribution.

	Rename global 'xdr_str'.
	Two bits of XDR both contained a definition called 'str' which
	means that 'xdr_str' was being exported globally twice.  Because
	of the linker script this didn't affect us.  But it's best to
	rename this global so that conflicts cannot arise.

2010-08-24  Daniel Berrange  <berrange@redhat.com>

	Add -nodefconfig command line option to qemu.
	Without this option, qemu will read some defaults from /etc/qemu/
	configuration files.

2010-08-24  Richard Jones  <rjones@redhat.com>

	Version 1.5.4.

	New APIs: set-network and get-network to enable network support.
	guestfs_set_network (g, true) enables network support in the appliance.

	build: Add 'bindist' rule for building binary distribution.

	Don't print debug messages when not in verbose mode.
	Don't print them because no one's listening ...

	Change protocol to send Linux errno from daemon to library.
	This changes the protocol so that the Linux errno (if available)
	is sent back to the library.  Note that the errno is not yet
	made available to callers, since it is not clear how best to
	present this Linux-specific number.

2010-08-24  Richard Jones  <rjones@redhat.com>

	Raise error message max size to 64K.
	This commit removes one of the protocol limits, by raising the
	maximum error message size from 256 bytes to 64K.

	Although we could consider raising this further, since the
	error messages are currently stored in fixed sized buffers on
	the stack, that would require more invasive code changes.

2010-08-24  Richard Jones  <rjones@redhat.com>

	Use virtio-serial, remove other vmchannel methods.
	This adds support for virtio-serial, and removes all other
	vmchannel methods.

	Virtio-serial is faster than other methods, and is now widely
	available.

	I tested this by using the guestfs_upload API on an 83 MB file:
	  before: 6.12 seconds (14.1 MB/sec)
	   after: 4.20 seconds (20.6 MB/sec)
	(note this is with the current 8K chunk size)

2010-08-23  Richard Jones  <rjones@redhat.com>

	Change to using ext2-based, cached supermin appliance.
	This changes the method used to build the supermin appliance
	to use the new ext2-based appliance supported by latest febootstrap.
	The appliance can also be cached, so we avoid rebuilding it
	each time it is used.

	Mailing list discussion goes into the rationale and details:
	https://www.redhat.com/archives/libguestfs/2010-August/msg00028.html

	Requires febootstrap >= 2.8.

2010-08-23  Richard Jones  <rjones@redhat.com>

	Make print_timestamped_message into a cross-module function.
	This is just code movement.

	Factor out code for locating the temporary directory.
	This is just code movement.

2010-08-21  Richard Jones  <rjones@redhat.com>

	Whitespace change: Add blank line between structures and functions.

	appliance: Remove some obsolete testing rules from Makefile.am
	This haven't been used -- and haven't worked -- for a long time.

2010-08-17  Richard Jones  <rjones@redhat.com>

	Version 1.5.3

	Remove old ocaml-inspector code.
	Not used by anyone, didn't work well, and replaced now by the
	C inspection APIs.

2010-08-17  Richard Jones  <rjones@redhat.com>

	fish: Reimplement -i option using new C-based inspection.
	Don't shell out to virt-inspector.  Instead, use the new C-based
	inspection APIs.

	This is much faster.

	The new syntax is slightly different:

	  guestfish -a disk.img -i
	  guestfish -d guest -i

	However, the old syntax still works.

2010-08-17  Richard Jones  <rjones@redhat.com>

	fish: Add -c/--connect and -d/--domain options.
	The -d option lets you specify libvirt domains.  The disks from
	these domains are found and added, as if you'd named them with -a.

	The -c option lets you specify a libvirt URI, which is needed
	when we consult libvirt to implement the above.

2010-08-17  Richard Jones  <rjones@redhat.com>

	New APIs for guest inspection.
	This commit converts (some of) the Perl inspection code to C and
	makes it available through core APIs.  The new APIs are:

	inspect-os        - Does the inspection, returns list of OSes
	inspect-get-*     - Get results of the inspection

	where '*' is one of:

	  type            - 'windows' or 'linux'
	  distro          - Linux distro
	  arch            - architecture
	  product-name    - long product name string
	  major-version
	  minor-version   - major.minor version of OS
	  mountpoints     - get a list of the mountpoints
	  filesystems     - get all filesystems associated with the OS

	This works for all existing supported Linux and Windows OSes.

2010-08-17  Richard Jones  <rjones@redhat.com>

	New APIs: findfs-label and findfs-uuid
	These two calls wrap up the /sbin/findfs command, allowing you
	to find a filesystem by only knowing its label or UUID.

	This is especially useful when resolving LABEL=... or UUID=...
	entries in /etc/fstab.

	Sample guestfish session:

	><fs> vfs-uuid /dev/vda1
	277dd61c-bf34-4253-a8dc-df500a05e7df
	><fs> findfs-uuid 277dd61c-bf34-4253-a8dc-df500a05e7df
	/dev/vda1
	><fs> vfs-label /dev/vda1
	/boot
	><fs> findfs-label /boot
	/dev/vda1
	><fs> vfs-uuid /dev/VolGroup00/LogVol00
	40ce7c36-82ce-4a12-a99d-48f5e054162c
	><fs> findfs-uuid 40ce7c36-82ce-4a12-a99d-48f5e054162c
	/dev/mapper/VolGroup00-LogVol00
	><fs> findfs-uuid 12345678
	libguestfs: error: findfs_uuid: findfs: unable to resolve 'UUID=12345678'

2010-08-17  Richard Jones  <rjones@redhat.com>

	New API: file-architecture
	This change simply converts the existing Perl-only function
	file_architecture into a core API call.  The core API call is
	written in C and available in all languages and from guestfish.

	generator: No need to redefine safe_* macros.
	These are already defined in "guestfs-internal.h" which is
	included in the .c file.

	Add safe_strndup call.

2010-08-17  Matthew Booth  <mbooth@redhat.com>

	Send trace output to stderr.
	Trace output sent to stdout can be lost in the event of a crash due to
	buffering.  This patch sends it to stderr instead.

2010-08-17  Richard Jones  <rjones@redhat.com>

	Python: Use new PyCapsule API where supported.
	See:
	http://lists.fedoraproject.org/pipermail/devel/2010-August/141064.html

2010-07-31  Richard Jones  <rjones@redhat.com>

	generator: Fix typo in error message for RConstOptString.

2010-07-30  Richard Jones  <rjones@redhat.com>

	New API: is-lv: check if a block device is a logical volume (RHBZ#619793)
	This adds a new API, guestfs_is_lv (g, device), which returns true iff
	the named device is an LVM2 logical volume.

	A sample guestfish session:

	><fs> lvs
	/dev/vg_f13x64/lv_root
	/dev/vg_f13x64/lv_swap
	><fs> list-devices
	/dev/vda
	><fs> list-partitions
	/dev/vda1
	/dev/vda2
	><fs> is-lv /dev/vg_f13x64/lv_root
	true
	><fs> is-lv /dev/vg_f13x64/lv_swap
	true
	><fs> is-lv /dev/vda
	false
	><fs> is-lv /dev/vda1
	false
	><fs> is-lv /dev/vda2
	false

2010-07-28  Richard Jones  <rjones@redhat.com>

	Rename internal functions.
	This is an update to commit 41f25ab3df5f306ac717fa7a6efd58328d30c1ae.

	Internal functions should be named guestfs___* (3 underscores) to
	avoid clashing with the implementation of actions (2 underscores).

2010-07-27  Richard Jones  <rjones@redhat.com>

	Rearrange library code into separate files.
	We split the library code into these separate files:

	 - guestfs.c: creating handles, closing handles, handle-related variables
	 - actions.c: generated library-side stubs for each action
	 - bindtests.c: generated code to test bindings
	 - launch.c: launching the appliance
	 - proto.c: the library side of the daemon communications protocol

	This is just code movement.

2010-07-27  Richard Jones  <rjones@redhat.com>

	Rename guestfs-{actions,bindtests}.c to {actions,bindtests}.c
	Rename these two generated files, in preparation for splitting
	up the main src/guestfs.c file.

	TODO: Implement inspector code in C.

	TODO: Implement recursive upload/download in guestfish.

	TODO: Add link to discussion of progress bars.

2010-07-22  Richard Jones  <rjones@redhat.com>

	Version 1.5.2.

2010-07-22  Richard Jones  <rjones@redhat.com>

	regressions: Don't print misleading 'Expect error ...' lines.
	Some tests in the regressions directory deliberately print
	error messages.  As long as they still PASS, this is OK.

	However these tests also printed some misleading messages
	about what error to expect.  Since error messages were slightly
	different across distros, these messages were not accurate.

	Therefore remove these messages, and replace with a general
	message before all tests telling users not to worry about
	errors from the tests as long as the tests don't fail.

2010-07-22  Richard Jones  <rjones@redhat.com>

	New APIs: Support for creating LUKS and managing keys.
	This commit adds four APIs for creating new LUKS devices
	and key management.  These are:

	  luks_format         Format a LUKS device with the default cipher.
	  luks_format_cipher  Format with a chosen cipher.
	  luks_add_key        Add another key to an existing device.
	  luks_kill_slot      Delete a key from an existing device.

	This enables all the significant functionality of the
	cryptsetup luks* commands.

	Note that you can obtain the UUID of a LUKS device already
	by using vfs-uuid.

	This also includes a regression test covering all the LUKS
	functions.

2010-07-22  Richard Jones  <rjones@redhat.com>

	Move variable initialization close to variable use.

2010-07-22  Richard Jones  <rjones@redhat.com>

	Revert "add_drive_ro adds readonly=on option if available." (RHBZ#617200).
	Adding the readonly=on option is not so clever.  This causes
	qemu to present the disk as read-only to the guest.  (The
	expected behaviour of snapshots=on,readonly=on was that it
	would open the disk O_RDONLY but present a writable disk to
	the guest).

	Since the guest sees a read-only disk, we are unable to do any
	recovery if a filesystem on the disk is inconsistent.  This basically
	prevents most accesses to live disk images.

	What we really want is a qemu option which presents a writable
	disk to the guest, but only opens the disk on the host side with
	O_RDONLY, to alleviate the udev bug RHBZ#571714.

	This reverts commit 676462684e05dd8341dd695762dd99a87d8ec022.

2010-07-22  Richard Jones  <rjones@redhat.com>

	generator: Make documentation inside guestfish match man page.

2010-07-21  Richard Jones  <rjones@redhat.com>

	Version 1.5.1.

2010-07-21  Richard Jones  <rjones@redhat.com>

	New APIs: Support for opening LUKS-encrypted disks.
	This adds support for opening LUKS-encrypted disks, via
	three new APIs:

	  luks_open:    Create a mapping for an encrypted disk.
	  luks_open_ro: Same, but read-only mapping.
	  luks_close:   Close a mapping.

	A typical guestfish session using this functionality looks
	like this:

	  $ guestfish --ro -a encrypted.img
	  ><fs> run
	  ><fs> list-devices
	  /dev/vda
	  ><fs> list-partitions
	  /dev/vda1
	  /dev/vda2
	  ><fs> vfs-type /dev/vda2
	  crypto_LUKS
	  ><fs> luks-open /dev/vda2 luksdev
	  Enter key or passphrase ("key"):
	  ><fs> vgscan
	  ><fs> vg-activate-all true
	  ><fs> pvs
	  /dev/dm-0
	  ><fs> vgs
	  vg_f13x64encrypted
	  ><fs> lvs
	  /dev/vg_f13x64encrypted/lv_root
	  /dev/vg_f13x64encrypted/lv_swap
	  ><fs> mount /dev/vg_f13x64encrypted/lv_root /
	  ><fs> ll /
	  total 132
	  dr-xr-xr-x.  24 root root  4096 Jul 21 12:01 .
	  dr-xr-xr-x   20 root root     0 Jul 21 20:06 ..
	  drwx------.   3 root root  4096 Jul 21 11:59 .dbus
	  drwx------.   2 root root  4096 Jul 21 12:00 .pulse
	  -rw-------.   1 root root   256 Jul 21 12:00 .pulse-cookie
	  dr-xr-xr-x.   2 root root  4096 May 13 03:03 bin

	NOT included in this patch:

	 - An easier way to use this from guestfish.
	 - Ability to create LUKS devices.
	 - Ability to change LUKS keys on existing devices.
	 - Direct access to the /dev/mapper device (eg. if it contains
	   anything apart from VGs).

2010-07-21  Richard Jones  <rjones@redhat.com>

	generator: Add 'Key' parameter type.
	Add a 'Key' parameter type, used for passing sensitive key material
	into libguestfs.

	Eventually the plan is to mlock() key material into memory.  However
	this is very difficult to achieve because the encoded XDR strings
	end up in many places.  Therefore users should note that key material
	passed to libguestfs might end up in swap.

	The only difference between 'Key' and 'String' currently is that
	guestfish requests the key from /dev/tty with echoing turned off.

2010-07-21  Richard Jones  <rjones@redhat.com>

	generator: Remove unnecessary parameter.
	The 'name' parameter is not used on the right hand side of the
	match, so it can be removed.

2010-07-16  Richard Jones  <rjones@redhat.com>

	df: Minimize the number of times we launch the libguestfs appliance.
	This commit greatly improves the performance of the 'virt-df'
	command by batching as many disks as possible onto a single appliance.
	In many situations this means the appliance is launched only once,
	versus one launch per domain as before.

	However doing it this way is a lot more complex:

	(1) Because of limits in Linux and virtio-blk, we can only attach
	26 disks maximum at a time to the appliance.

	(2) We have to use LVM filters (lvm-set-filter) to confine LVM to
	the disks of a single guest.

2010-07-16  Richard Jones  <rjones@redhat.com>

	New APIs: lvm-set-filter and lvm-clear-filter.
	These APIs allow you to change the device filter, the list of
	block devices that LVM "sees".  Either you can set it to a fixed
	list of devices / partitions, or you can clear it so that LVM sees
	everything.

2010-07-16  Richard Jones  <rjones@redhat.com>

	Use an unsigned type (size_t) for all loop iterators.
	This resolves a warning from gcc 4.5:
	  assuming signed overflow does not occur when simplifying
	    conditional to constant

	This page explains the issues in some detail:
	  http://www.airs.com/blog/archives/120

2010-07-16  Richard Jones  <rjones@redhat.com>

	generator: Don't hard-code name in DeviceList check.
	Only one function currently uses DeviceList.  The generated code
	unfortunately hard-coded the argument name from that function.

	build: Don't warn about 'long long'.
	Various language bindings simply need this, so we have to allow
	it even though it's a GCC extension.

	doc: Add guestfish 'lvcreate 1M' gotcha.

2010-07-11  Richard Jones  <rjones@redhat.com>

	tar: Remove redundant use statement.

	edit: Clean up temporary files.
	Note to self: The 'tempfile' function does *not* default to
	removing files with the program exits!

	edit: Add -b (backup) option and make uploading more robust.

	edit: Add -e 'expr' option to non-interactively apply expression to the file.
	(Suggested by Justin Clift).

2010-07-08  Richard Jones  <rjones@redhat.com>

	Prepare for new development branch, starting at 1.5.0.
	Add BUGS and RELEASE-NOTES to EXTRA_DIST.

	Also update the RELEASE-NOTES file.

2010-07-07  Richard Jones  <rjones@redhat.com>

	Make tmp directory world readable (RHBZ#610880).
	If you have a restrictive umask (0077 for example) then
	files in the tmp directory would be created with 0600
	permissions.  Example:

	drwx------.  2 rjones rjones     4096 Jul  2 17:52 .
	drwxrwxrwt. 57 root   root     102400 Jul  2 17:52 ..
	-rw-------.  1 rjones rjones 86328832 Jul  2 17:52 initrd
	lrwxrwxrwx.  1 rjones rjones       46 Jul  2 17:52 kernel -> /boot/vmlinuz-2.6.33-0.40.rc7.git0.fc13.x86_64

	This in itself is not a problem.  However in virt-v2v we also
	change UID:GID and the result is that qemu is unable to read
	the initrd file:

	qemu: could not load initial ram disk '/tmp/libguestfs2ssynP/initrd'

	With this patch we make the tmp directory and the files
	world readable.  After the patch:

	$ ls -la /tmp/libguestfsJFVzPg/
	total 116192
	drwxr-xr-x.  2 rjones rjones      4096 Jul  2 18:03 .
	drwxrwxrwt. 56 root   root      102400 Jul  2 18:03 ..
	-rw-r--r--.  1 rjones rjones 118869504 Jul  2 18:03 initrd
	lrwxrwxrwx.  1 rjones rjones        46 Jul  2 18:03 kernel -> /boot/vmlinuz-2.6.33-0.40.rc7.git0.fc13.x86_64

2010-07-07  Richard Jones  <rjones@redhat.com>

	fish: Don't fail if -m and --listen flags are both given (RHBZ#612178).
	Testing this against a Fedora disk image:

	$ ./fish/guestfish --ro -a F13.img -m /dev/sda1 --listen
	export GUESTFISH_PID=6033
	$ ./fish/guestfish --remote=6033 -- ping-daemon
	$ ./fish/guestfish --remote=6033 -- ping-daemon
	$ ./fish/guestfish --remote=6033 -- exit

	Without this fix the first remote command would fail because
	qemu would have already been killed.

2010-07-02  Richard Jones  <rjones@redhat.com>

	todo: Add comment about progress of long-running operations.

	inspector: Improve error message when YAML::Any library is not installed.

2010-06-28  Richard Jones  <rjones@redhat.com>

	Explicitly depend on e2fsprogs.
	See: http://lists.fedoraproject.org/pipermail/devel/2010-June/137953.html

	Fix gfs2 support by adding required kernel modules.

2010-06-16  Richard Jones  <rjones@redhat.com>

	Version 1.3.21.

2010-06-16  Richard Jones  <rjones@redhat.com>

	ocaml: Fix thread safety of strings in bindings (RHBZ#604691).
	There's a thread safety issue with the current OCaml bindings which
	is well explained in the bug report:

	https://bugzilla.redhat.com/show_bug.cgi?id=604691

	This commit fixes the safety issue by copying strings temporarily
	before releasing the thread lock.  Updated code looks like this:

	  char *filename = guestfs_safe_strdup (g, String_val (filenamev));
	  int r;

	  caml_enter_blocking_section ();
	  r = guestfs_add_drive_ro (g, filename);
	  caml_leave_blocking_section ();
	  free (filename);
	  if (r == -1)
	    ocaml_guestfs_raise_error (g, "add_drive_ro");

	Also included is a regression test.

2010-06-16  Richard Jones  <rjones@redhat.com>

	TODO: Add a note about impl of list-filesystems.

2010-06-15  Richard Jones  <rjones@redhat.com>

	todo: More ideas for TODO list.

	Update Spanish translations (RHBZ#603870).

2010-06-11  Richard Jones  <rjones@redhat.com>

	perl: Check all images are defined in first param of open_guest.

2010-06-10  Richard Jones  <rjones@redhat.com>

	perl: Add explicit close() method (RHBZ#602592).
	This add an optional explicit $g->close method which may be
	used to force the handle to be closed immediately.  Note the
	provisos about this method in the manual page entry.  Callers
	should *not* normally use this method.

	The implementation of the handle also changes.  Before, the
	handle was a blessed reference to an integer (the integer
	being the pointer to the C guestfs_h handle).  Now we change
	this to a hashref containing currently the following field:

	  _g => pointer to C guestfs_h handle (as an integer)

	If this field is not present, it means that the handle has been
	explicitly closed.  This avoids double-freeing the handle.

	The user may add their own fields to this hash in order to store
	per-handle data.  However any fields whose names begin with
	an underscore are reserved for use by the Perl bindings.

	This commit also adds a regression test.

	This commit also changes the existing warning when you call
	a method without a Sys::Guestfs handle as the first parameter,
	into an error.  This is because such cases are always errors.

2010-06-10  Richard Jones  <rjones@redhat.com>

	Add error callback (RHBZ#602599).
	Read the note in the man page before using this feature.

	Fix typo in documentation of guestfs_set_launch_done_callback.

2010-06-08  Richard Jones  <rjones@redhat.com>

	Version 1.3.20.

	Revert "perl: Rerun configure if MAX_PROC_NR changes."
	This reverts commit f8ee7869f4836427109959cf20e299a31fa86eaf.

	TODO: Freeze/thaw filesystems.

	TODO: Need to add regression test for virt-inspector.

	TODO: 'file' command should be fixed.

2010-06-08  Richard Jones  <rjones@redhat.com>

	virt-df: Disallow -h and --csv options together (RHBZ#600977).
	Before this commit, if you used the -h and --csv options together
	you would get these warnings from virt-df:

	$ virt-df -h --csv Guest
	Virtual Machine,Filesystem,Size,Used,Available,Use%
	Argument "13.5G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	Argument "4.7G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	Argument "8.1G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	"/dev/vg_trick/RHEL55x64","/dev/VolGroup00/LogVol00",13,4,8,34.8%
	Argument "98.7M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	Argument "18.8M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	Argument "74.9M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
	"/dev/vg_trick/RHEL55x64","/dev/vda1",98,18,74,19.0%

	We could fix this so that the human-readable numbers get written
	into the CSV file.  However would probably be wrong for most uses
	of the CSV format (databases and spreadsheets) since they would not
	be able to interpret these human-readable numbers, or worse could
	misinterpret, eg. thinking that "1M" and "1G" are both 1.

	Therefore this commit disallows this combination of options.

2010-06-08  Richard Jones  <rjones@redhat.com>

	file: Fix file command on /dev/VG/LV paths (RHBZ#582484).
	Previous commit 4df593496e116dfb635731c058b7627e81fc179c broke the
	"file" command on logical volume paths, since these are symbolic
	links.  We *should* follow these (only).

	This inadvertantly broke virt-inspector too, which indicates that
	we need more regression testing in this area.  Since carrying whole
	Fedora images around could make the distribution even larger than
	now, I'm not sure at the moment how to do this.

	Thanks to Matt Booth for diagnosing this bug.

2010-06-07  Richard Jones  <rjones@redhat.com>

	Use the noop scheduler inside the appliance.
	In my limited tests, this seems to make a small but noticable
	difference, improving the performance of some straightforward
	read operations by a little over 10%.

	For more information see:
	http://kbase.redhat.com/faq/docs/DOC-5428

2010-06-05  Richard Jones  <rjones@redhat.com>

	Add release notes.
	To generate the "Bugs fixed" list, run the bugs-in-changelog script
	like this:

	  ./bugs-in-changelog 1.0.89..

2010-06-04  Richard Jones  <rjones@redhat.com>

	Version 1.3.19.
	Update BUGS and PO files.

2010-06-04  Richard Jones  <rjones@redhat.com>

	file: Restrict to regular files (RHBZ#582484).
	The file call can hang if called on char devices (because we are
	using the file -s option).

	This is hard to solve cleanly without adding another file API.

	However this restricts file to regular files, unless called explicitly
	with a /dev/ path.  For non-regular files, it will now return a
	string like "directory".

	There is a small semantic change for symbolic links.  Previously
	it would not have worked at all on absolute links (or rather, the
	results would have been undefined).  It would have treated relative
	symlinks to regular files as the regular file itself.  Now it will
	return the string "symbolic link" in both cases.

	This commit also makes the API safe when called on untrusted
	filesystems.  Previously a filesystem might have been set up so
	that (eg) /etc/redhat-release was a char device, which would have
	caused virt-inspector and virt-v2v to hang.  Now it will not hang.

2010-06-04  Richard Jones  <rjones@redhat.com>

	touch: Restrict touch to regular files only (RHBZ#582484).

2010-06-04  Richard Jones  <rjones@redhat.com>

	daemon: Rearrange code in 'file' command.
	  path = path to access file (/sysroot/.. or /dev/..)
	  display_path = original path, saved so we can display it
	  buf = optional buffer which is freed along return codepaths

	There should be no change to the semantics of the code.

2010-06-04  Richard Jones  <rjones@redhat.com>

	gnulib: Ignore asm-underscore.m4 in the correct place.

	Update to latest gnulib.

2010-06-03  Richard Jones  <rjones@redhat.com>

	mkfs-b: Map block size to cluster size for VFAT and NTFS partitions (RHBZ#599464).
	This also adds a regression test for VFAT and (conditionally)
	NTFS filesystems.

	mkfs-b: Check that blocksize parameter is > 0 and a power of 2.

2010-06-03  Richard Jones  <rjones@redhat.com>

	generator: Allow individual tests to depend on daemon features.
	Using IfAvailable "featurename" we allow individual tests to
	only run if the feature is available in the daemon.

	This will allow us to extend testing to a lot more optional
	features such as NTFS.

2010-06-03  Richard Jones  <rjones@redhat.com>

	tests: Factor out common code into 'is_available' function.
	This commit is just code motion.

	grub-install: Enable grub-install tests and create explicit device.map file.

	grub-install: In docs suggest manually creating device.map (RHBZ#484986).

2010-06-02  Richard Jones  <rjones@redhat.com>

	Version 1.3.18.
	Update BUGS and PO files.

	RHEL 6: sr_mod.ko is needed for RHEL 6 to see CD-ROM devices (RHBZ#598807).

	parted: Check partition number >= 1 in several calls.

2010-06-02  Richard Jones  <rjones@redhat.com>

	daemon: Parse output of old parted which didn't support -m option (RHBZ#598309).
	This fixes the following commands when run with RHEL 5-era parted:

	  get-bootable
	  get-parttype
	  part-list

2010-06-02  Richard Jones  <rjones@redhat.com>

	daemon: count_strings function returns size_t

2010-06-02  Richard Jones  <rjones@redhat.com>

	base64-in: Ignore garbage characters in input.
	On RHEL 5 you have to specify the -i option to get the
	external 'base64' command to ignore \n characters.  (The
	Fedora version seems to ignore these characters anyway).

	Add this option so the tests can pass on RHEL 5.

2010-06-02  Richard Jones  <rjones@redhat.com>

	resize2fs: Document this command also works with ext4 (thanks Yufang Zhang).

2010-06-02  Richard Jones  <rjones@redhat.com>

	fish: help command return error for non-existent commands (RHBZ#597145).
	With this change, the exit status indicates error for non-existent
	commands.

	$ guestfish -h foo
	foo: command not known, use -h to list all commands
	$ echo $?
	1
	$ guestfish help foo
	foo: command not known, use -h to list all commands
	$ echo $?
	1

2010-06-02  Richard Jones  <rjones@redhat.com>

	daemon: write-file: Check range of size parameter (RHBZ#597135).
	This also adds a regression test.

	daemon: Limit label lengths (RHBZ#597118).

	Update BUGS and PO files.

2010-06-01  Richard Jones  <rjones@redhat.com>

	Fix and deprecate get_e2label and get_e2uuid (RHBZ#597112).
	Fix these calls (see description in RHBZ#597112), but also
	deprecate them since the new calls vfs_label and vfs_uuid can
	work on any filesystem type.

	This also adds a regression test for the original bug reported
	in RHBZ#597112.

2010-06-01  Richard Jones  <rjones@redhat.com>

	New APIs: vfs-label and vfs-uuid return label and uuid for many fs types.
	These APIs generalize the existing 'get-e2label' and 'get-e2uuid'
	calls, to provide calls which should be able to get the label
	and UUID for most filesystem types.  These use 'blkid' to do the
	work.

	I have tested that the blkid commands themselves work on RHEL 5.

	(Suggested by Yufang Zhang).

2010-06-01  Richard Jones  <rjones@redhat.com>

	daemon: Kill blkid cache to improve reliability of blkid commands.
	By killing the cache file, we make blkid work in situations such
	as a just-created filesystem.

	daemon: Generalize the implementation of vfs-type.
	Note that there is no change to the semantics of the code.

2010-05-28  Richard Jones  <rjones@redhat.com>

	todo: Should generate -N option.

	todo: Remove implemented resize functions from TODO file.

2010-05-27  Matthew Booth  <mbooth@redhat.com>

	Make the supermin appliance include local augeas lenses

2010-05-27  Matthew Booth  <mbooth@redhat.com>

	Rely on new augeas lens for modules.conf and conf.modules
	Latest augeas includes a lens for /etc/modules.conf. If this new lens is
	present, the code to force the Modprobe lens to try to match /etc/modules.conf
	as well results in /etc/modules.conf not being parsed at all. This results in
	modprobe_aliases in virt-inspector output being empty.

	This change is equivalent to change cfd28d1140393667913689b7b9bcf21c8bfe592c
	from virt-v2v.

	An effect of this change is that the Modules_conf augeas lens is now required
	for correct operation on guests which use /etc/modules.conf.

	Fixes RHBZ#596776

2010-05-27  Daniel Cabrera  <logan@fedoraproject.org>

	Updates to Spanish translation (RHBZ#596763).

2010-05-27  Richard Jones  <rjones@redhat.com>

	Version 1.3.17.

	Fix documentation for vfs-type to reflect reality.

	Clarify documentation on distro backports in version command.

	Add reference to version number documentation to version command.

	Clarify sparse behaviour of truncate-size command.

	Fix typo in documentation of guestfs_readlinklist.

	Fix missing word in docuentation of guestfs_readdir.

	Revise documentation on creating files.

	New API: fallocate64 (replaces fallocate).
	guestfs_fallocate takes an integer for the length, effectively
	limiting it to creating 1GB files.  This new call takes an int64_t
	for the length, but is otherwise identical.

2010-05-26  Richard Jones  <rjones@redhat.com>

	Fix typo in description of echo-daemon command.

2010-05-25  Richard Jones  <rjones@redhat.com>

	Version 1.3.16.

	Add bash complation script to EXTRA_DIST.

	Version 1.3.15.

	Add tests for available-all-groups command.

	fish: First pass at guestfish bash completion script.

	fish: Don't eat words when completing case-insensitive paths (RHBZ#582993).

	fish: Sort returned paths so the list is stable across multiple calls.

	fish: Document test1.img, test2.img etc used by -N option in FILES section.

	fish: Create a separate FILES section in the manpage.

	fish: Move 'EXIT CODE' section to a more logical place in the documentation.

	resize: Refresh the examples in the documentation.
	The documentation was previously very intimidating.  Bring some
	common, simple examples up to the top of the page in a separate
	section.

	fish: Make the read/write warning more prominent.
	Follow the example on other manual pages by making the warning
	more prominent.

2010-05-25  Richard Jones  <rjones@redhat.com>

	fish: New command: 'supported'
	This checks all available optional groups and prints out which
	ones are supported by the daemon.  Note you must launch the appliance
	first.

	Example:

	><fs> supported
	      augeas yes
	     inotify yes
	 linuxfsuuid yes
	linuxmodules yes
	 linuxxattrs yes
	        lvm2 yes
	       mknod yes
	      ntfs3g yes
	   ntfsprogs yes
	    realpath yes
	       scrub yes
	     selinux yes
	          xz yes
	    zerofree yes

2010-05-25  Richard Jones  <rjones@redhat.com>

	New API: available-all-groups to return list of all optional groups.

	perl: Rerun configure if MAX_PROC_NR changes.
	If MAX_PROC_NR changes (because a new API has been added to the
	generator) then we need to rerun configure in order to set the
	Makefile's ${MAX_PROC_NR} variable, in order to rebuild Makefile.PL.

2010-05-25  Piotr Drąg  <piotrdrag@gmail.com>

	Update Polish translations (RHBZ#502533).

2010-05-24  Richard Jones  <rjones@redhat.com>

	Version 1.3.14.

	build: Remove install_kernel from EXTRA_DIST.
	This updates commit a34fadf900625f1f7359ecf3ca760820ffa20815,
	removing this now non-existent script from EXTRA_DIST.

	build: For development releases, print a notice.

2010-05-22  Richard Jones  <rjones@redhat.com>

	guestfs_version: Correct documentation.
	Remove reference to 'ELF weak linking tricks' and replace
	with suggestion to use dl* functions.

2010-05-21  Richard W.M. Jones  <rjones@redhat.com>

	Build workaround for Python 2.4.x in RHEL 5.
	See:
	http://www.python.org/dev/peps/pep-0353/#conversion-guidelines

	C99 compatible build fix for RHEL 5.

2010-05-21  Richard Jones  <rjones@redhat.com>

	New API: ntfsresize-size to allow shrinking NTFS (RHBZ#585223).

	New API: pvresize-size to allow shrinking PVs (RHBZ#585222).

	New API: resize2fs-size to allow shrinking ext2 filesystems (RHBZ#585221).

2010-05-21  Richard Jones  <rjones@redhat.com>

	fish: Allow suffixes on number parameters (eg. 1M)
	This small change uses the gnulib xstrtoll functionality to
	enable suffixes on integer parameters in guestfish.  For example:

	 truncate-size /file 1G

	(previously you would have had to given the full number).

	This also applies to the 'alloc' and 'sparse' commands (and
	indirectly to the -N option).  The specification for these commands
	has changed slightly, in that 'alloc foo 1MB' would now use SI
	units, allocating 1000000 bytes instead of a true megabyte.  All
	existing uses would use 'alloc foo 1M' which still allocates true
	megabytes.

2010-05-21  Richard Jones  <rjones@redhat.com>

	fish: Fix '-N part' disk partition type sub-option.

	TODO: Suggest including undelete utility.

	Fix name of update-bugs script in output file BUGS.

2010-05-20  Richard Jones  <rjones@redhat.com>

	ubuntu: Use direct udevd method to start udev on Ubuntu.
	On Ubuntu, /etc/init.d/udev is a symlink to an upstart file,
	but running that causes the appliance to hang.

	Therefore detect if this is a symlink and fall through to the
	direct start of udevd.  This shouldn't affect Debian because the
	file is not a symlink on standard Debian.

2010-05-20  Richard Jones  <rjones@redhat.com>

	ubuntu: Remove two FUSE packages from the default list.
	fuse-utils (a dependency of these) cannot be installed under
	debirf because it does something with the system udevd which is
	not permitted.  Seems to be a bug either in fakeroot or in the
	post install scripts for fuse-utils.

2010-05-20  Richard Jones  <rjones@redhat.com>

	ubuntu: Ignore packages in packagelist.in which are missing.
	For distros using 'yum', packages which cannot be found are just
	ignored.  This allows us to include for example 'e4fsprogs' on the
	list even though that only exists on RHEL 5.

	However for Debian-derived distros, missing packages would cause
	apt to fail.  This was particularly a problem when building Ubuntu
	since it doesn't have as complete a list of packages, and the list
	changed a lot between releases.

	This commit adds a check first for missing packages, ignoring those
	and thus acting more like 'yum'.

2010-05-20  Richard Jones  <rjones@ubuntu910x64.home.annexia.org>

	Ubuntu: Use apt-get instead of aptitude when installing guestfsd.

	Ubuntu: Revert install-kernel to debirf default script.

2010-05-20  Richard Jones  <rjones@redhat.com>

	generator: Make 'xz' into an optional group.
	On Ubuntu <= Karmic, xz-utils was not packaged, and therefore
	any xz-related tests would fail.  Thus make this an optional
	group so that we can test for this and avoid running the tests
	if xz utils are not present.

2010-05-20  Richard Jones  <rjones@redhat.com>

	generator: Check parameters are not NULL (RHBZ#501893).
	This adds additional tests to check that several types of parameter
	including String are not NULL when passed to the C functions.
	Previously this would cause a segfault inside libguestfs.  With
	this change, you get an error message / exception.

	Of the possible pointer parameters, only OptString is now permitted
	to be NULL.

	This change does not affect the Perl bindings.  This is because Perl
	XS code was already adding similar checks if you passed undef into
	a parameter expecting a string.

2010-05-20  Richard Jones  <rjones@redhat.com>

	generator: Some String parameters should be OptString (RHBZ#501894).
	I haven't checked the list of functions exhaustively, but
	these are the obvious ones.

	fuse: Implement write syscall (RHBZ#592883).

	New API: Implement pwrite system call (partial fix for RHBZ#592883).

2010-05-20  Richard Jones  <rjones@redhat.com>

	New API: write for creating files with fixed content (RHBZ#501889).
	The guestfs_write call can be used to create small files with
	arbitrary 8 bit content, including \0 bytes.

	This replaces and deprecates write-file, which cannot be modified
	to use BufferIn because of an unfortunate choice in the ABI: the
	size parameter to write-file, if zero, means that the daemon tries
	to calculate the length of the buffer using strlen.  However this
	fails if we pass a zero-length buffer using BufferIn because then
	the daemon tries to do strlen on a (really) zero length buffer, not
	even containing a terminating \0 character, thus segfaulting.

2010-05-20  Richard Jones  <rjones@redhat.com>

	generator: Implement BufferIn parameter type (RHBZ#501889).
	The BufferIn argument turns into various things:

	 in C      const char *, size_t parameter pair

	 in XDR    an opaque<> type (instead of string) which allows \0 chars

	 in other bindings
	           mostly just a string, since most languages except for C
	           permit strings to contain any 8 bit data

2010-05-20  Richard Jones  <rjones@redhat.com>

	fish: Fix build error if built without readline.
	fish.c:1447: error: 'add_history_line' defined but not used [-Wunused-function]

	(Reported by Matt Booth)

2010-05-20  Richard Jones  <rjones@redhat.com>

	appliance: Fix /etc/resolv.conf
	Since changing to use link local address
	(commit fbf29976b33a69c64dc7847c54454bf2cfa5fde6)
	we have included an incorrect resolv.conf file in the appliance
	which points to the old (qemu) DNS server.  This commit changes
	to use the new DNS server.

2010-05-19  Richard Jones  <rjones@redhat.com>

	Update BUGS.

2010-05-18  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translations (RHBZ#593292).

2010-05-18  Richard Jones  <rjones@redhat.com>

	appliance: Ignore utempter unreadable binaries (for RHEL 6).

	appliance: Change comment about unreadable binaries.

2010-05-15  Richard Jones  <rjones@redhat.com>

	Version 1.3.13.

	Update BUGS

	Update PO files.

	Generate BUGS file from Red Hat Bugzilla database.
	Add a script which generates the 'BUGS' file from Red Hat Bugzilla.
	This is run whenever we do 'make dist' and deliberately stored in git.

2010-05-14  Richard Jones  <rjones@redhat.com>

	virt-df: Display domains in sorted order.

	Updated Spanish translations (RHBZ#592360).

	Ensure ordinary appliance is updated before trying to build supermin appliance.

	Version 1.3.12, update PO files.

2010-05-13  Richard Jones  <rjones@redhat.com>

	Unify supermin appliance building using febootstrap 2.7

2010-05-13  Richard Jones  <rjones@redhat.com>

	Improve errors from tar-in/tgz-in commands (RHBZ#591155 RHBZ#591250).
	This commit improves the error messages from the tar-in, tgz-in (etc)
	commands by capturing the stderr from the tar command in a file and
	sending that back in the error message.

	The method used for the error file is primitive, and there is a case
	for a more generic error file mechanism, but this will do for now.

	Sample error messages after this change:

	$ virt-tar -u /tmp/test1.img /tmp/not.tar /
	tar_in: tar subcommand failed on directory: /: tar: This does not look like a tar archive
	tar: Skipping to next header
	tar: Exiting with failure status due to previous errors at /home/rjones/d/libguestfs/tools/virt-tar line 247.

	$ virt-tar -u /tmp/test1.img /tmp/test.tar /
	tar_in: tar subcommand failed on directory: /: tar: access.log: Cannot open: Read-only file system
	tar: Exiting with failure status due to previous errors at /home/rjones/d/libguestfs/tools/virt-tar line 247.

2010-05-13  Richard Jones  <rjones@redhat.com>

	Combine common code in daemon/tar.c.
	This commit shouldn't result in any change in the semantics
	of the code.

2010-05-13  Richard Jones  <rjones@redhat.com>

	Fix FileIn cmds losing synch if both ends send cancel messages (RHBZ#576879).
	During a FileIn command (eg. upload, tar-in) if both sides
	experience errors, then both sides could send cancel messages,
	the result being lost synchronization.

	The reason for the lost synch was because the daemon was ignoring
	this case and sending an error message back which the library side
	(which had cancelled) was not expecting.

	Fix this by checking in the daemon for the case where the library
	also cancels during daemon cancellation, and not sending an error
	messages.

	This also includes an enhanced regression test which checks for this
	case.

	This extends the original fix in
	commit 5922d7084d6b43f0a1a15b664c7082dfeaf584d0.

	More details can be found here:
	https://bugzilla.redhat.com/show_bug.cgi?id=576879#c5

2010-05-13  Richard Jones  <rjones@redhat.com>

	guestfish: Fix build error in 'print_shell_quote' function.
	Amend commit 1c6ed48bd3cd471dc so the prototype of
	'print_shell_quote' function is correct.

	fish: Fix guestfish -N option when called with unknown image type.
	Previously it was falling off the end of the loop if you
	called it with an unknown image type.

	Improved error if virt-inspector cannot find OSes in image (RHBZ#591142).

	Fix error message in string-e command (RHBZ#588651).

2010-05-13  Richard Jones  <rjones@redhat.com>

	guestfish -i and virt-inspector work on filenames containing spaces (RHBZ#507810).
	This commit fixes a long-standing bug which prevented guestfish -i
	and virt-inspector from working on disk images which had a space
	in the filename (or other unsafe characters).  It works by ensuring
	that the strings passed between guestfish -i and virt-inspector are
	quoted correctly in both directions.

	Note that this commit adds a dependency from virt-inspector to
	the perl module String::ShellQuote.  We have previously used this
	module in virt-make-fs.

2010-05-12  Richard Jones  <rjones@redhat.com>

	Add version numbers to Perl modules (RHBZ#521674).
	Sys::Guestfs now contains a version number which reflects the
	ABI that we are compiled against, ie. '0.<MAX_PROC_NR>'.  This has
	the beneficial side effect of causing an error if the user tries
	to mix versions of the Perl module and the XS code.

	Sys::Guestfs::Lib now contains a synthetic version number which
	will reflect future changes in that module.

2010-05-12  Richard Jones  <rjones@redhat.com>

	Update PO files, including extra strings from Perl files.

2010-05-12  Richard Jones  <rjones@redhat.com>

	po: Include strings from Perl programs in the PO files (RHBZ#559963).
	xgettext will only recognize '*.pl' as being a Perl file (otherwise
	it treats it as a C file and does not correctly find any strings
	in it).

	This commit also fixes two actual bugs that xgettext found in the
	strings in our Perl programs.

2010-05-12  Richard Jones  <rjones@redhat.com>

	po: Don't generate po/Makevars file and include Perl keywords (RHBZ#559963).
	I don't see a reason to autogenerate po/Makevars, and in the
	earlier commit which changed this file to being autogenerated
	we accidentally lost the special Perl keywords, copyright notice
	and bug reporting address.  Fix all of that.

	This partially reverts commit febff9d2a35c4f40abbaf8943146476bdeac671e.

2010-05-12  Richard Jones  <rjones@redhat.com>

	Reduce imported functions in virt-df to ones which are actually used.

	New API: fill-pattern for creating files with predefined patterns.

	Run udev_settle() after swapon/swapoff (RHBZ#516096).

	fish: With both '-x' and '-i', pass through '-x' to inferior process.

2010-05-08  Richard Jones  <rjones@redhat.com>

	Version 1.3.11.

	virt-rescue: Add extra options.
	This commit adds the extra options '--append', '--memsize' and '--selinux'.

	virt-rescue: Refresh documentation.

	Revert "fish: Add 'please wait' message when launching (and interactive)."
	This reverts commit 01fedcde05c930c1413e9fe0909fa1da1f360cdf.

	fish: Add 'please wait' message when launching (and interactive).

	launch: Rearrange the code so config check is first.
	Move the config state check first in the guestfs_launch function,
	so that we don't reset g->launch_t or calculate the temporary
	directory in the case where the launch function will immediately
	return with an error.

	generator: FishAction is no longer used, remove this feature.

	fish: Make 'launch' function static.
	This commit makes the launch function static and private to
	'fish.c', and changes the generator so the function is no longer
	called for the 'run/launch' command.

	fish: In 'reopen' copy trace setting to new handle.

	Ignore test1.img file in directory.

	fish -N option unconditionally overwrites test*.img files.
	This is more convenient and makes it consistent with the
	'alloc' and 'sparse' commands.

	fish: Make '-x' option enable traces instead of using separate echo path.
	Previously we had separate code paths for echoing commands (-x)
	and tracing (guestfs_set_trace).  This just unifies that so that
	the guestfish -x option enables tracing.

2010-05-07  Richard Jones  <rjones@redhat.com>

	inspector: Support filesystem-on-image VMs (RHBZ#590167).
	$ virt-df /tmp/dbroot.img
	Filesystem                           1K-blocks       Used  Available  Use%
	/tmp/dbroot.img:/dev/vda               3096336     593628    2345424   20%

	daemon: Use 'error' instead of 'perror' before calling 'abort'.

	daemon: gnulib module 'error' is used directly by the daemon.

	daemon: Use parens around code section for safety.

	If qemu dies during launch, set an error message (RHBZ#588851).

	Version 1.3.10.

2010-05-07  Richard Jones  <rjones@redhat.com>

	daemon: Fix read-file so it fails gracefully for large files (RHBZ#589039).
	Pengzhen Cao noticed that read-file would fail for files
	larger than the protocol size; this is *not* the bug.  However
	it would also lose protocol synchronization after this.

	The reason was that functions which return RBufferOut in the
	generator must not 'touch' the *size_r parameter along error
	return paths.

	I fixed read-file and initrd-cat, and I checked that pread was
	doing the right thing.

	This also adds regression tests for read-file with various categories
	of large file.

2010-05-07  Richard Jones  <rjones@redhat.com>

	daemon: Fix wc* commands to work on absolute symbolic links (RHBZ#579608).

	daemon: Fix strings to work on absolute symbolic links (RHBZ#579608).

	daemon: Fix head and tail commands to work on absolute symbolic links (RHBZ#579608).

	daemon: Fix grep and related to work on absolute symbolic links (RHBZ#579608).

	daemon: Fix checksum to work on absolute symbolic links (RHBZ#579608).

	daemon: Fix hexdump to work on absolute symbolic links (RHBZ#579608).

2010-05-07  Richard Jones  <rjones@redhat.com>

	daemon: Fix for commands working on absolute symbolic links (RHBZ#579608).
	The original idea (suggested by Al Viro) was to fork and chroot
	into the sysroot and read the file from there.  Because of the
	separate process being chrooted, absolute links would be resolved
	correctly.  The slightly modified idea is to open the file in the
	daemon process (but temporarily chrooted, so symlinks resolve
	correctly), fork, and have the subprocess just be responsible for
	copying the file.  (Strictly speaking we don't need to fork, but
	this implementation is simpler).

	This commit just includes the changes needed to the command*()
	functions in daemon/guestfsd.c and adds an absolute symlink to
	the test ISO for testing it.  Later commits will fix the broken
	daemon commands themselves.

2010-05-07  Richard Jones  <rjones@redhat.com>

	daemon: Change command to abort() on resource problems.
	The comment in the code describes it thus:

	  /* Note: abort is used in a few places along the error paths early
	   * in this function.  This is because (a) cleaning up correctly is
	   * very complex at these places and (b) abort is used when a
	   * resource problem is indicated which would be due to much more
	   * serious issues - eg. memory or file descriptor leaks.  We
	   * wouldn't expect fork(2) or pipe(2) to fail in normal
	   * circumstances.
	   */

2010-05-07  Matthew Booth  <mbooth@redhat.com>

	Warn instead of dying if grub refers to non-existent kernel

2010-05-06  Richard Jones  <rjones@redhat.com>

	Update to latest gnulib.

2010-05-04  Richard Jones  <rjones@redhat.com>

	Use link-local addresses between appliance and host (RHBZ#588763).

2010-05-04  Richard Jones  <rjones@redhat.com>

	Change network configuration to use macros.
	Change the network configuration so everything is set using
	some macros at the top of src/guestfs.c.

	Also, rename the macros used in the daemon so they are not the
	same.  It was a very long time since these sets of macros had to
	match the ones defined in src/guestfs.c, despite what the comment
	said.

	Note that this commit should not change the semantics of the
	program at all.

2010-05-04  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translations (RHBZ#588733).

2010-04-30  Richard Jones  <rjones@redhat.com>

	tests: In verbose mode, print dashes between each test.
	Only affects tests when run with LIBGUESTFS_DEBUG=1.  Lets you easily
	see when each test starts and ends.

	Version 1.3.9.

	Document that guestfs_mount implies -o sync and performance problem (RHBZ#587582).

	contrib: Add dependency diagram of libguestfs ecosystem.

	contrib: Add header to README file.

	lvresize: Use --force so it can make LVs smaller (RHBZ#587484).
	This also adds a regression test for this bug.

	tools: Fix documentation for CurrentControlSet (thanks Yuval Kashtan).

2010-04-29  Richard Jones  <rjones@redhat.com>

	guestfs(3): Documentation on protocol gotchas.

2010-04-27  Richard Jones  <rjones@redhat.com>

	Version 1.3.8.

2010-04-26  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translation (RHBZ#585961).

2010-04-24  Richard Jones  <rjones@redhat.com>

	fish: Add 'man' command which opens the manual.

	docs: Routine refresh of the documentation for guestfs(3) and guestfish(1).

2010-04-23  Richard Jones  <rjones@redhat.com>

	Version 1.3.7 - note: fixes a segfault in guestfish 1.3.6.

	todo docs: Discuss shrinking filesystems and specifying sizes in guestfish.

	New API: checksums-out for checksumming many files.
	Useful API for verifying the integrity of virtual machines.

	generator: Update docs for checksum to point to checksum-device.

	daemon: Split out checksum type to program name mapping into function.
	This shouldn't change the semantics of the program.

	fish: Fix segfault in '-a' option.
	This fixes a segfault in the guestfish -a option which you would
	get when using guestfish 1.3.6.

	todo docs: Integrate with host intrusion detection systems.

	todo docs: Mapping filesystems to and from disk blocks.

2010-04-22  Richard Jones  <rjones@redhat.com>

	Version 1.3.6.

2010-04-22  Richard Jones  <rjones@redhat.com>

	fish: Add -N option for making prepared disk images.
	Previously you might have typed:

	$ guestfish
	><fs> alloc test1.img 100M
	><fs> run
	><fs> part-disk /dev/sda mbr
	><fs> mkfs ext4 /dev/sda1

	now you can do the same with:

	$ guestfish -N fs:ext4

	Some tests have also been updated to use this new
	functionality.

2010-04-22  Richard Jones  <rjones@redhat.com>

	fish docs: Be consistent about using I<-..> for options.

	fish docs: Use L</...> for internal links in the man page.

2010-04-22  Matthew Booth  <mbooth@redhat.com>

	Whitelist the loop kernel module
	loop is sometimes a module, for example on RHEL 5.

2010-04-21  Matthew Booth  <mbooth@redhat.com>

	Don't die during inspection if rpm -qa or dpkg-query fails
	If a problem in the package database prevented package enumeration from working,
	inspection would die. This change makes it emit a warning and continue.

	Don't die during inspection if initrd doesn't exist
	This fixes a problem where inspection would die if grub.conf referenced a
	non-existent initrd. Just return an empty initrd instead.

2010-04-20  Richard Jones  <rjones@redhat.com>

	Add zfs-fuse (ZFS via FUSE) support to the appliance.

	Remove checks for Test::Pod and Test::Pod::Coverage.
	Although these modules are optionally used by the Perl tests,
	they aren't necessary and won't break the build if they are not
	there.  These modules aren't available in RHEL 5.  Therefore
	remove these checks.

2010-04-20  Daniel Cabrera  <logan@fedoraproject.org>

	Updated Spanish translations (RHBZ#584038).

2010-04-20  Richard Jones  <rjones@redhat.com>

	Check user doesn't run configure, make or make check as root.
	(Thanks to Yufang Zhang for helping to debug this issue).

	Replace 'dd' in tests with use of guestfish 'sparse' command.
	'dd' is a very inefficient way to create files.  'truncate' is
	better, but unfortunately that command is not available in RHEL 5.
	So use the guestfish 'sparse' command instead (which also avoids
	allocating disk space).

2010-04-20  Richard Jones  <rjones@redhat.com>

	Document new version numbering policy.
	See discussion on mailing list:

	https://www.redhat.com/archives/libguestfs/2010-April/msg00005.html
	https://www.redhat.com/archives/libguestfs/2010-April/msg00057.html
	https://www.redhat.com/archives/libguestfs/2010-April/msg00058.html

2010-04-19  Richard Jones  <rjones@redhat.com>

	Document umask (RHBZ#582548, RHBZ#583554).

	docs: Clarify documentation for mknod (RHBZ#582948).

	Update PO files.

	Prepare for version 1.3.5.

	New APIs: base64-in and base64-out for uploading/downloading base64 content.

2010-04-19  Richard Jones  <rjones@redhat.com>

	New API: debug-upload (not a formal part of the API/ABI).
	Allow arbitrary files to be uploaded into the appliance, but
	only when --enable-debug-command is enabled.  This lets you
	run shell scripts, like this:

	  ><fs> debug-upload -<<EOF /tmp/script.sh 0700
	  #!/bin/sh -
	  # ...
	  EOF
	  ><fs> debug sh "/tmp/script.sh"

2010-04-19  Richard Jones  <rjones@redhat.com>

	fish: Allow -<<END as a syntax for uploading "heredocs".
	For example:

	    ><fs> upload -<<END /foo
	    some data
	    some more data
	    END
	    ><fs> cat /foo
	    some data
	    some more data

2010-04-19  Richard Jones  <rjones@redhat.com>

	todo docs: Feature for base64 uploads and scripts.

	docs: Add virt-resize(1) link to guestfish(1) manpage.

2010-04-17  Richard Jones  <rjones@redhat.com>

	Version 1.3.4

	todo documentation: Idea: List, mount filesystems by UUID and label.

	todo documentation: remove 'virt-grow/shrink', see virt-resize

	todo documentation: virt-rescue now uses $TERM from library, remove from todo list

	todo documentation: Remove old section on PPC bugs.
	No one cares for PPC, and if they do they should file these
	as bugs in the bug tracker.

	todo documentation: Remove old ideas for Python bindings.

	Documentation: Use 'g' instead of 'handle' in documentation.
	By convention we use 'g' for handles.  Copy this convention
	through to all the documentation.

	In guestfs(3), unmount "/" directory in the example.

	Add compilation/linking example to guestfs(3) man page.

	generator: Use shortname in check_state() call.
	Saves a tiny bit of space in the library.

	Build top-level directories in a more logical order.

	Rerun generator if images/test.iso does not exist or has been updated.
	The MD5 hash of this file is embedded in the output of the
	generator.

2010-04-17  Richard Jones  <rjones@redhat.com>

	Fix upload losing synchronization if root not mounted (RHBZ#576879).
	Modify the generator so that it can correctly handle early
	cancellation for Pathname|Device|.. parameters.  This fixes
	the upload command, but consequently we need to fix the
	parameters for tar_in and t?z_in commands.  This should also
	mean that 'win:' can now be used as the second argument of
	tar_in and t?z_in commands in guestfish, whereas previously
	this wouldn't have worked.

	Adds a regression test for the original problem.

2010-04-17  Richard Jones  <rjones@redhat.com>

	generator: Fix typo in a comment.

2010-04-17  Richard Jones  <rjones@redhat.com>

	Improved checking, documentation of modes (RHBZ#582901, RHBZ#582929).
	chmod: Disallow negative mode, document mode affected by umask.

	mkdir-mode: Disallow negative mode, document that filesystems
	may interpret the mode in different ways.

	mknod: Disallow negative mode, document mode affected by umask.

	umask: Check the range of umask mask value carefully.

2010-04-17  Richard Jones  <rjones@redhat.com>

	fish: Autocomplete 'sparse' command (RHBZ#582899).
	I also rechecked the list of built-in commands against
	the actual commands to make sure no others were omitted.

	New API: get-umask, returns the current umask (RHBZ#582891).

	Add a build test for the 'umask' command.

	fish: Print output from some commands in octal/hex as approp. (RHBZ#583242).

	Documentation: lvcreate should say 'logical volume' (RHBZ#582953)

2010-04-14  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translations (RHBZ#582252).

2010-04-14  Matthew Booth  <mbooth@redhat.com>

	Fix build error in fuse/guestmount.c.
	guestmount.c: In function 'main':
	guestmount.c:899: error: implicit declaration of function 'setlocale'
	[-Wimplicit-function-declaration]

	guestmount.c wasn't including locale.h.

2010-04-13  Richard Jones  <rjones@redhat.com>

	New API: Add aug-clear call for clearing an Augeas node.

2010-04-13  Richard Jones  <rjones@redhat.com>

	fish: Allow '-' prefix on command line to override exit on error (RHBZ#578407).
	Allow -cmd on the command line to mean that normal exit on error
	behaviour is overridden, ie. we will not exit.

	This allows you to do:

	  guestfish -- command : -command : command

	with the second command allowing errors.  (Note that '--' is required
	to stop getopt parsing -command as an option).

	Also this fixes the remote case which is what the original
	bug report was about.

2010-04-13  Richard Jones  <rjones@redhat.com>

	fish: Update documentation: Add another pipe example.

	fish: Update documentation: Using 'lcd' command to change local directory.

2010-04-12  Richard Jones  <rjones@redhat.com>

	Update PO files.

	Prepare for version 1.3.3.

	resize: Add --LV-expand option for expanding Linux LVs.

	New API: lvresize-free to extend LVs into percentage of free space.

	Fix time and timezone to be correct within the appliance.

	resize: Fix missing newline from end of print.

	resize: Fix regular expression to exactly match ^ext[234]$

	virt-resize: Mention alternate tools like gparted in the documentation.

2010-04-12  Daniel Cabrera  <logan@fedoraproject.org>

	Updated Spanish translation (RHBZ#581501).

2010-04-11  Richard Jones  <rjones@redhat.com>

	Documentation updates.
	Fix copyright years.
	Fix URLs to point to new PRC site.
	Make sure guestfish(1) and guestfs(3) manpages reference the
	current list of tools.

2010-04-10  Richard Jones  <rjones@redhat.com>

	Version 1.3.2

	New API: checksum-device for checksumming devices.
	Analogous to the usual 'checksum' call.

2010-04-10  Richard Jones  <rjones@redhat.com>

	virt-resize: Enhance virt-resize so it can expand partition content.
	Enhance virt-resize so it can expand "first level" partition
	content, including ext/2/3/4/ntfs filesystems and PVs.

	Also extensively update the documentation.

	This has been tested on a variety of Linux and Windows guests.

2010-04-10  Richard Jones  <rjones@redhat.com>

	virt-list-partitions: Add -t / --total option.
	This option lists out block devices separately:

	 $ virt-list-partitions -lht /tmp/WindowsResized.img
	 /dev/sda1 ntfs 100.0M
	 /dev/sda2 ntfs 11.9G
	 /dev/sda device 12.0G

2010-04-10  Richard Jones  <rjones@redhat.com>

	Bugfixes for virt-resize.
	 - copy more than 64 boot loader sectors across, since real boot
	   loaders (eg. for Windows) can be much larger than this
	 - copy bootable flag and ID byte to new partitions
	 - start the first partition on the new disk at the same sector
	   offset as on the old disk
	 - sync the disks before existing

	New partition APIs: part_del, part_get_bootable, part_get/set_mbr_id
	These APIs flesh out further the partitioning API.

	daemon: More reliable parsing of the output from 'parted print'.
	Previously we used strtok.  However this has the problem that
	strtok considers multiple delimiter characters to be like a single
	delimiter, eg. "1:::2" would be parsed the same as "1:2".  In
	other words, the previous code would skip over or fail if there
	are empty fields.

	daemon: Make the RUN_PARTED macro take an error statement.
	This allows us to make the RUN_PARTED macro do something else
	along the error path, other than just returning -1.

	Documentation: Clarify documentation on the bootable flag.

	New API: vgscan
	Implement vgscan to allow for a full rescan of all LVM
	PVs, VGs and LVs.

	New API: ntfsresize.
	This implements the ntfsresize operation, using the external
	program from ntfsprogs.

	virt-make-fs: Use Sys::Guestfs::Lib::feature_available helper function.

2010-04-09  Richard Jones  <rjones@redhat.com>

	Allow aug-ls to take Augeas variable as argument (RHBZ#580016).

2010-04-08  Richard Jones  <rjones@redhat.com>

	Remove warning "No grub default" (RHBZ#580650).

	If qemu dies during launch in "null vmchannel" mode, don't hang (RHBZ#579155).
	Detect if qemu dies during launch by wait(2)-ing for it, and
	then getting EOF on the qemu pipe.  This was broken in null
	vmchannel mode, causing a hang.

	Don't kill self accidentally.
	Always check that pid > 0 before calling kill (pid, 9).  The
	issue was that sometimes pid == 0, and this ends up killing
	ourselves.

2010-04-08  Richard Jones  <rjones@redhat.com>

	Fix for "warning: unexpected connection from UID ..."
	This warning is currently a fatal error.  The code attempts
	to retry the accept call, but because we don't reset sock = -1
	the retry doesn't happen and it dies anyway.

	Set sock = -1 so the retry attempt can happen.

2010-04-08  Richard Jones  <rjones@redhat.com>

	New API calls to upload/download txz files (RHBZ#580556).

	configure: Default to using Fedora 12 repo (was Fedora 11).
	Fedora 11 is almost EOL at this point.

	Version 1.3.1.

	New tool: virt-make-fs for creating filesystems on devices.

2010-04-08  Richard Jones  <rjones@redhat.com>

	Code cleanups related to RHBZ#580246.
	This includes various code cleanups:

	 (a) A regression test for RHBZ#580246.

	 (b) Use write instead of fwrite to write out the tar file.  This is
	     just because the error handling of write seems to be better
	     specified and easier to use.

	 (c) Use size_t instead of int for length.

	 (d) Clearer debug messages when in verbose mode.

2010-04-08  Richard Jones  <rjones@redhat.com>

	Fix tar-in command hangs when running out of disk space (RHBZ#580246).
	The problem was this sequence of events:

	 (1) File transfer goes through OK.

	 (2) pclose returns failure (because 'tar' subprocess failed)

	 (3) We try to cancel the transfer by calling cancel_receive.

	Step (3) fails because the transfer (as far as the library is
	concerned) has succeeded, so causing a hang.

	The more fundamental reason why we see steps (1) and (2) is that
	'tar' does NOT fail immediately if there is a write error.  Instead
	it continues reading and discarding the input until the end of the
	input before giving "Error exit delayed from previous errors".
	IMHO this is a bug with tar, since an ENOSPC write error should
	be fatal for tar.

2010-04-07  Richard Jones  <rjones@redhat.com>

	fish: Print extended help when the user types an unknown command first.
	$ guestfish /tmp/disk.img
	/tmp/disk.img: unknown command
	Did you mean to open a disk image?  guestfish -a disk.img
	For a list of commands:             guestfish -h
	For complete documentation:         man guestfish

2010-04-07  Richard Jones  <rjones@redhat.com>

	Check error returns from posix_fallocate (RHBZ#579664).
	posix_fallocate has a non-standard way to return error indications.
	Thus all our calls to posix_fallocate were effectively unchecked.  For
	example:

	  $ guestfish alloc test.img 1P
	  $ echo $?
	  0
	  $ ll test.img
	  -rw-rw-r--. 1 rjones rjones 0 2010-04-06 11:02 test.img
	  $ rm test.img

	With this change, errors are detected and reported properly:

	  $ ./fish/guestfish alloc test.img 1P
	  fallocate: File too large

	This is a fix for:
	https://bugzilla.redhat.com/show_bug.cgi?id=579664

2010-04-07  Richard Jones  <rjones@redhat.com>

	Signed/unsigned warning on 64 bit.

2010-03-31  Richard Jones  <rjones@redhat.com>

	New API: guestfs_zero_device to zero whole devices.

2010-03-30  Richard W.M. Jones  <rich@annexia.org>

	Prettier POD CSS.

2010-03-30  Richard Jones  <rjones@redhat.com>

	Update PO files.

	chmod +x virt-resize binary.

	Fix EXTRA_DIST rule.

	Prepare for 1.0.89.

	Improved version of virt-win-reg, supporting exporting and merging.

2010-03-30  Richard Jones  <rjones@redhat.com>

	virt-df: Match output with native (coreutils) 'df' command (RHBZ#578123).
	This commit fixes the 'Use%' field in the output so it matches what
	coreutils' 'df' command would print.

	Firstly we change the calculation to use the space available to root,
	not the space available to non-root.  This means it matches what 'df'
	when run as root in the guest would show.

	Secondly we display this rounded up to the next whole percent (ie. using
	ceil), which is also what 'df' does.

	Thirdly we change the regression test so it tests this.

	Note that even with these changes you are not guaranteed to get precisely
	the same figures from inside and outside the guest, as it depends on
	how quiescent the guest is and how recently the superblock was synced.

	Thanks: Rita Wu

2010-03-30  Richard Jones  <rjones@redhat.com>

	tools: Add basic tests for the virt-* tools.

	tools: Sectional header for manpages in Makefile.am

	tools: Rearrange list of tools in Makefile.am.

2010-03-30  Richard Jones  <rjones@redhat.com>

	daemon: Set TERM=dumb inside the daemon.
	Since commit 977edb3185fe8f we have been passing TERM from the
	library into the appliance (for the benefit of virt-rescue).
	However this changes the output of parted, which I would argue
	is a bug in parted:

	 TERM=xterm /sbin/parted -m -- /dev/sda unit b print 2>&1 | hexdump -C
	 00000000  1b 5b 3f 31 30 33 34 68  42 59 54 3b 0a 2f 64 65  |.[?1034hBYT;./de|

	Notice the escape-sequence junk before the official "BYT;"
	header.

	By setting TERM=dumb we avoid this.

2010-03-27  Richard Jones  <rjones@redhat.com>

	Fix the error message when reply body is too large (RHBZ#509597).

	tests: Move alarm(2) calls to the correct place in the tests.
	This is a re-fix for RHBZ#505329.

2010-03-26  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.88.

	rescue: Pass $TERM from library into the virt-rescue appliance.
	We set it on the kernel command line, then get it out from
	there when the rescue appliance boots.

	rescue: Sync disk on exit, and improve messaging.

2010-03-26  Jim Meyering  <jim@meyering.net>

	Const-correctness fix.

2010-03-26  Richard Jones  <rjones@redhat.com>

	appliance: Set $PATH instead of hard-coding paths to binaries everywhere.
	Change the appliance so PATH includes common directories.  Thus
	we don't need to hard-code paths to binaries (eg. "/sbin/fdisk")
	everywhere.

2010-03-25  Richard Jones  <rjones@redhat.com>

	perl: use newSVpvn for variable length strings.
	Previously we used newSVpv (str, len), but if len == 0 then
	this means Perl tries to calculate the string length using
	strlen(3).  This is not desirable when we know the length, in
	which case we should use newSVpvn instead.

	Update PO files.

2010-03-25  Daniel Cabrera  <logan@fedoraproject.org>

	Update Spanish translation of libguestfs (RHBZ#576876).

2010-03-24  Richard Jones  <rjones@redhat.com>

	Fix lvresize test on RHEL 5, by fixing guestfs_e2fsck_l.
	The problem is that mkfs was making an ext2 filesystem,
	which later we were checking with e4fsck.  e4fsck corrects
	an "error" on the filesystem:
	  /dev/VG/LV: Adding dirhash hint to filesystem.
	e4fsck returns 1 (errors corrected) which we were interpreting
	as an error return.

	Use ext4 dev tools on RHEL 5 (RHBZ#576688).

	Add support for minix filesystem (RHBZ#576689).

2010-03-23  Richard Jones  <rjones@redhat.com>

	Version 1.0.87.

2010-03-23  Richard Jones  <rjones@redhat.com>

	New tools: virt-resize and virt-list-partitions.
	Virt-resize is the main contribution here, a program which can
	be used to expand and shrink partitions in disk images.

	Virt-list-partitions is used as an ancillary tool for planning
	resize operations.

2010-03-23  Richard Jones  <rjones@redhat.com>

	New API: guestfs_copy_size to copy a fixed number of bytes.
	This is similar to 'guestfs_dd', but it copies just a fixed
	number of bytes from the source to the destination.  It's an
	error if the source is too short or if the destination is too
	small.

2010-03-23  Richard W.M. Jones  <rjones@redhat.com>

	Change some _exit(0|1) to _exit(EXIT_SUCCESS|EXIT_FAILURE).

2010-03-22  Richard Jones  <rich@koneko.home.annexia.org>

	Mac OS X: Fix configure-time tests for Ruby.
	For ARCHFLAGS change, see:
	http://www.ruby-forum.com/topic/129717#579065

	We also add a test for the <guestfs.h> header and include
	that header when testing the library.

2010-03-22  Richard Jones  <rich@koneko.home.annexia.org>

	guestfs.h: Include <stdint.h>.
	This allows programs to work if they just
	  #include <guestfs.h>
	and no other headers.  It's not useful in the general
	case, but fixes some configure-time tests, particularly
	the one for Ruby on OS X.

	ocaml examples: Fix linking line so it uses local library.

2010-03-22  Richard Jones  <rich@koneko.home.annexia.org>

	Mac OS X: Disable null vmchannel implementation.
	As far as I can tell, Darwin has no way to check the peer euid
	of a _loopback_ TCP socket.  This is required for the "null vmchannel"
	implementation to work securely.

	Therefore disable this - Darwin will use one of the other supported
	vmchannel implementations instead.

2010-03-22  Richard Jones  <rich@koneko.home.annexia.org>

	Mac OS X: 'xdr_uint32_t' is 'xdr_u_int32_t'

	Mac OS X: For PATH_MAX, include <limits.h>

	Mac OS X: setlocale function requires <locale.h> header file.

	Mac OS X: implement readline functions.
	OS X has an older version of readline with some differences
	in the names of functions.

	Mac OS X: provide alternate implementation of posix_fallocate.

	Mac OS X: include <rpc/types.h> before <rpc/xdr.h>
	In PortableXDR this is not included automatically so we
	have to include it explicitly to get definitions for the
	XDR types.

	Mac OS X: include <string.h> in guestfs-actions.c
	This is required because guestfs-actions.c uses 'memset'.

	Mac OS X: Fix HAVE_GNU_CALLOC so it works when __GLIBC__ is not defined.

	Mac OS X: strerror_r on Macs is not like GNU strerror_r.
	Really this should be turned into a configure-time test.
	Perhaps one exists already?

	Mac OS X: define MAX macro if not already defined.

	Mac OS X: kill(2) requires <signal.h>

	generator: Small fix for GODI users.
	GODI has an odd package layout, so the generator was unable to
	find xml-light.  Add the GODI directory to the search path.

	Ignore m4/intmax.m4

	Remove out-of-date comment.

	configure: Add --disable-daemon and --disable-appliance options.
	Use these on any platforms where you don't want or need to
	build the daemon/appliance combination.

	Run qemu with -nographic option.
	On Mac OS X this prevents a short "flash" as qemu opens a
	toplevel window.

	configure: Move host_cpu definition to earlier in the file.

2010-03-22  Richard Jones  <rjones@redhat.com>

	appliance: Run depmod to create modules.dep for the kernel.
	Since we disabled running new-kernel-pkg in febootstrap, this
	has meant that the normal appliance has not had a modules.dep
	file.  (Supermin was unaffected by this).

2010-03-22  Richard Jones  <rich@koneko.home.annexia.org>

	Mac OS X: Detect bindtextdomain.
	These are missing on Mac OS X.  I think you would need to install
	a gettext package to get these.

	Mac OS X: Use gnulib setenv module explicitly.
	See:
	https://www.redhat.com/archives/libguestfs/2010-March/thread.html#00094

2010-03-18  Richard Jones  <rjones@redhat.com>

	New APIs: Query the relationship between LVM objects.
	These calls allow you to query the relationship between
	LVM objects, for example, which PVs contain a VG, or which
	LVs are contained in a VG.

	See the example / test program 'regressions/test-lvm-mapping.pl'
	for an example of how to do this from Perl.

2010-03-18  Richard Jones  <rjones@redhat.com>

	daemon: Add a trim utility function.
	This function trims the whitespace from around a string.  It
	does this in-place, so it can be called for malloc'd strings.

2010-03-16  Richard Jones  <rjones@redhat.com>

	add_drive_ro adds readonly=on option if available.
	Change the add_drive_ro call so it adds the readonly=on option
	if qemu supports that.

	This just means that qemu will not try to open the drive with
	O_RDWR, and should not otherwise change the behaviour of qemu or
	libguestfs.  (In particular, writes to the read-only drive are
	still permitted, and are just discarded when the handle is closed).

	However it should alleviate RHBZ#571714 where udev was deciding
	to incorrectly relabel a device because we had opened the device
	for writing (even though we didn't actually write to it).

2010-03-16  Richard Jones  <rjones@redhat.com>

	Allow qemu_supports to run earlier.
	Reimplement qemu_supports() internal function.  Allow it to run
	before launch so we can test qemu features.  Document that you
	should run guestfs_set_qemu as early as possible to make sure
	these tests are reliable.

	Add minimal vim to the appliance for virt-rescue.
	virt-rescue lacks an editor.  Add vim-minimal (Fedora)
	or vim-tiny (Debian) to make up for this omission.

	tests: Don't use <guestfs-internal.h> in tests.
	It was failing when including this header, as a consequence
	of earlier commit 1f56debfcfdc35d6b0.

	guestfs.h: More adjustment to comments in the header file.

	guestfs.h: Move some internal functions to the internal header.
	Functions like guestfs__send were never exported through the public
	API (libguestfs.syms prevented that).  However they appeared in the
	public header.  Move them to the internal header.

	Rearrangement and comment changes in <guestfs.h> header file.
	There should be no substantive change.

2010-03-12  Richard Jones  <rjones@redhat.com>

	Prepare for version 1.0.86.

	Tab to space (whitespace fixes only).

	Docs: Change exit(1) -> exit(EXIT_FAILURE)

2010-03-12  Richard Jones  <rjones@redhat.com>

	Rewrite libguestfs-supermin-helper in C.
	libguestfs-supermin-helper was previously a shell script.  Although
	we had steadily optimized it, there were a number of intractable
	hot spots:

	  (1) cpio still reads input files in 512 byte chunks; this is *very*
	    pessimal behaviour, particularly when SELinux is enabled.
	  (2) the hostfiles globbing was done very inefficiently by the shell,
	    with the shell rereading the same directory over and over again.

	This is a rewrite of this shell script in C.  It is approximately
	3 times faster without SELinux, and has an even greater speed difference
	with SELinux.

	The main features are:

	  (a) It never frees memory, making it simpler.  The program is designed
	    to run and exit in sub-second times, so this is acceptable.
	  (b) It caches directory reads, making the globbing of host files much
	    faster (measured this as ~ 4 x speed up).
	  (c) It doesn't use external cpio, but instead contains code to write
	    newc format cpio files, which is all that the kernel can read.  Unlike
	    cpio, this code uses large buffers for reads and writes.
	  (d) Ignores missing or unreadable hostfiles, whereas cpio gave a
	    warning.
	  (e) Checks all return values from system calls.
	  (f) With --verbose flag, it will print messages timing itself.

	This passes all tests.

	Updated with feedback from Jim Meyering.

2010-03-12  Richard Jones  <rjones@redhat.com>

	guestfish: Use xstrtoll to parse Int params (RHBZ#569757 RHBZ#567567).
	Change guestfish so it uses xstrtoll to parse Int (31 bit)
	parameters.  This fixes two bugs on 32 bit platforms which
	failed when long = 32 bits.  long long = 64 bits on both.

2010-03-12  Richard Jones  <rjones@redhat.com>

	Special case hostfiles handling for libntfs-3g.so
	The ntfs-3g project keeps bumping their soname, and this causes
	dependency problems for the Fedora package.  The root of the problem
	is we depend on /lib/libntfs-3g.so.<N>, but if <N> keeps bumping,
	the dependency keeps breaking.

	This commit changes the hostfiles (and hence dependency) to be on
	/lib/libntfs-3g.so.* instead.  The downside to this is we could end
	up pulling more files into the appliance than are strictly required,
	but it will fix the Fedora packaging problems being felt by the
	Fedora maintainer of ntfs-3g.

	After applying this commit, the change to hostfiles looks like this:

	@@ -1489,7 +1489,7 @@
	 ./lib/libpam_misc.so.0
	 ./lib/libdmraid.so
	 ./lib/libidn.so.11
	-./lib/libntfs-3g.so.74
	+./lib/libntfs-3g.so.*
	 ./lib/libext2fs.so.2.*
	 ./lib/libpam.so.0
	 ./lib/libsepol.so.1
	@@ -1520,7 +1520,6 @@
	 ./lib/libnss_files-*.so
	 ./lib/libgio-2.0.so.0
	 ./lib/libpam_misc.so.0.*
	-./lib/libntfs-3g.so.74.*
	 ./lib/libanl.so.1
	 ./lib/libdevmapper-event-lvm2.so.2.*
	 ./lib/libpthread.so.0

2010-03-08  Richard Jones  <rjones@redhat.com>

	inspector: Read information about Windows guests from the Registry.
	This commit changes substantially the way that we get information
	about Windows guests.  We now use the Windows Registry to get
	information such as the version, product name and much else.

	This uses Win::Hivex (ie. the hivex library).  'reged' is no longer
	needed or used.

	As an incidental change, this also tries harder to search for
	%systemroot%, in the case when we cannot find boot.ini (ie.
	Windows Vista and more recent).  This ensures we can get more
	detail from those versions of Windows.

2010-03-08  Richard Jones  <rjones@redhat.com>

	inspector: Add product_name field to output.
	This is a free text string containing the "product name" of
	the OS.  It's mainly useful for Windows guests, and a forthcoming
	patch will get this field from the Windows Registry.

	inspector: Don't crash if $os->{kernels} does not exist.
	ie. on Windows.

	inspector: Sort application names.
	This ensures the list of applications is stable.

	Remove plymouth libraries from the appliance.

2010-03-03  Daniel Cabrera  <logan@fedoraproject.org>

	Spanish translation of libguestfs (RHBZ#570181).

2010-03-02  Richard Jones  <rjones@redhat.com>

	More complete fix for bash regexp quoting bug.
	Commit 457fccae1b665347 was not a complete fix, in that it
	didn't work properly on RHEL 5 era bash (3.2.x).  For example:

	  file=libntfs-3g.so.74
	  [[ "$file" =~ ^lib(.*)\.so\.([0-9]+)\. ]] && \
	    echo "lib${BASH_REMATCH[1]}.so.${BASH_REMATCH[2]}.*"

	would on those old shells print:

	  libntfs-3g.so.7.*

	It seems the final \. was being treated as a plain period (ie.
	match anything).

	The only way to work around this incompatibility is to assign the
	patterns to variables and match on those, ie:

	  p='^lib(.*)\.so\.([0-9]+)\.'
	  [[ "$file" =~ $p ]] && ...

	This works in both old and new shells.

2010-03-01  Richard Jones  <rjones@redhat.com>

	Prepare for version 1.0.85.
	Update PO files.

	fuse: Fix typo in test.

2010-03-01  Richard Jones  <rjones@redhat.com>

	build: Fix for bash quoting in supermin-split.sh.in (RHBZ#566511 RHBZ#566512)
	Bash changed how the =~ operator worked, see bash FAQ question
	E14 http://tiswww.case.edu/php/chet/bash/FAQ and
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487387#25
	(RHBZ#566511).

	This also stops stray "builddir" (yum database) files being
	incorporated into supermin hostfiles in Koji (RHBZ#566512).

2010-03-01  Piotr Drąg  <piotrdrag@gmail.com>

	Updated Polish translations (RHBZ#502533).

2010-02-25  Richard Jones  <rjones@redhat.com>

	Remove bogus msgstr from kn.po.

2010-02-24  Guido Günther  <agx@sigxcpu.org>

	List application in Debian based vm images
	Hi,
	attached patch adds the code to list applications installed in Debian
	based vm images.
	Cheers,
	 -- Guido

	>From 9427a14725b33415058a0713923c62bd231504ec Mon Sep 17 00:00:00 2001
	From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
	Date: Tue, 23 Feb 2010 21:05:02 +0100
	Subject: [PATCH 2/2] Add application listing for Debian

2010-02-24  Guido Günther  <agx@sigxcpu.org>

	Debian package format
	Hi,
	Minor nitpick: the Debian folks usually refer to deb as the package format not dpkg.
	Cheers,
	 -- Guido

	>From 7a9665d40e0a3109833de10f17831ae06fc8885a Mon Sep 17 00:00:00 2001
	From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
	Date: Tue, 23 Feb 2010 21:04:37 +0100
	Subject: [PATCH 1/2] Debina package format is called 'deb' not 'dpkg'

2010-02-24  Guido Günther  <agx@sigxcpu.org>

	check for grub/menu.lst too
	On Tue, Feb 23, 2010 at 08:07:14PM +0100, Guido Günther wrote:
	> On Tue, Feb 23, 2010 at 07:52:43PM +0100, Guido Günther wrote:
	> > Hi,
	> > attached patch makes virt-inspector find the kernels on Debian systems.
	> > Since there is no /etc/grub.conf it falls back to
	> > $grubpartition/grub/menu.lst.
	> Patch got somehow broken. New version fortchcoming. Sorry for the noise.
	Attached now. No idea where the 'if' went in the first version ;)
	 -- Guido

	>From d30b4946f017ff8bde9d4ff62f93c418a707d9e8 Mon Sep 17 00:00:00 2001
	From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
	Date: Tue, 23 Feb 2010 19:50:40 +0100
	Subject: [PATCH] Check for grub/menu.lst if /etc/grub.conf can't be found

2010-02-24  Guido Günther  <agx@sigxcpu.org>

	Use 'service' if installed
	Hi,
	attached patch should make:

	http://git.debian.org/?p=pkg-libvirt/libguestfs.git;a=blob;f=debian/patches/0003-appliance-Use-service-udev-start-instead-of-running-.patch;h=c9e6b8489807d4fb1247cb6a8b6f9799bad2a09e;hb=d3a21b5b6850fc3c6e7903d0f5cafa3eb4197d49
	http://git.debian.org/?p=pkg-libvirt/libguestfs.git;a=blob;f=debian/patches/0004-Ubuntu-Prefer-starting-udev-by-hand-instead-of-using.patch;h=64b65a971b186e6ab1c9351e94b46d6f5aa242e0;hb=d3a21b5b6850fc3c6e7903d0f5cafa3eb4197d49

	superflous. If there's an init script it uses 'service' or falls back to
	calling the init script directly if it isn't there, otherwise it starts
	udev directly. Tested on Debian only so far. The patch is based on
	Rich's above two patches.
	Cheers,
	 -- Guido

	From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
	Date: Tue, 23 Feb 2010 18:49:34 +0100
	Subject: [PATCH] Check for service and use it if it's there

	Based on Richard's two patches for the Ubuntu build.

2010-02-24  Richard Jones  <rjones@redhat.com>

	Update PO files.

2010-02-24  Shankar Prasad  <svenkate@redhat.com>

	Added Kannada translations (RHBZ#567860).

2010-02-22  Richard Jones  <rjones@redhat.com>

	Spin off hivex as a separate upstream project.
	This commit makes the semi-independent hivex library into a
	separate upstream project.  The git repo for hivex is now:

	http://git.annexia.org/?p=hivex.git;a=summary

	Downloads of hivex are available here:

	http://libguestfs.org/download/

	All questions, patches, bugs etc should be sent to the libguestfs
	mailing list and bug tracker.

2010-02-22  Guido Günther  <agx@sigxcpu.org>

	enable scrub on Debian

2010-02-19  Richard Jones  <rjones@redhat.com>

	hivexsh: Print hex bytes >= 0x80 correctly.
	These were being interpreted as signed chars, and thus printed
	as "ffffff80" etc.

	Remove unused Perl modules.
	These were 'use'd but not actually used.

2010-02-16  Richard Jones  <rjones@redhat.com>

	Update PO files.

2010-02-16  Rajesh Ranjan  <rranjan@redhat.com>

	Add Hindi translations (RHBZ#565759).

2010-02-15  Richard Jones  <rjones@redhat.com>

	Turn ProtocolLimitWarning into link to documentation section.

	initrd-cat: Needs ProtocolLimitWarning.

	Remove references to FTP, replace with FUSE.
	We originally intended to implement an FTP server (and before
	than, an NFS server).  But we didn't implement either.  We
	did however implement a FUSE service (guestmount) which takes
	the place of both.

	Remove some unused variables.
	Since we have to compile with -Wno-unused-variables, we don't
	spot unused variables in code.  I found these by compiling the
	code in Ubuntu.

	Distribute .gitignore files.
	These are useful for Debian since they keep the tarball unpacked
	in git.

	Add 'make quickcheck' rule to run a quick check.

2010-02-12  Richard Jones  <rjones@redhat.com>

	Version 1.0.84.

2010-02-12  Richard Jones  <rjones@redhat.com>

	daemon: Don't need to prefix error messages with the command name.
	The RPC stubs already prefix the command name to error messages.
	The daemon doesn't have to do this.  As a (small) benefit this also
	makes the daemon slightly smaller.

	Code in the daemon such as:

	  if (argv[0] == NULL) {
	    reply_with_error ("passed an empty list");
	    return NULL;
	  }

	now results in error messages like this:

	  ><fs> command ""
	  libguestfs: error: command: passed an empty list

	(whereas previously you would have seen ..command: command:..)

2010-02-12  Richard Jones  <rjones@redhat.com>

	generator: Don't prefix error messages with command name.
	The command name is already being added by the RPC stubs, so
	adding it again in Perl and C# just results in doubled error messages
	like:
	  foo: foo: the error

	Sys::Guestfs::Lib::open_guest: Add interface parameter.
	This allows you to override the default QEMU block device emulation.

2010-02-12  Richard Jones  <rjones@redhat.com>

	Sys::Guestfs::Lib::open_guest: Remove freeform parameters.
	Remove the ability to pass freeform parameters to Sys::Virt->new.
	We don't use it, it makes the code more complex to modify, and
	indeed there are no other args that Sys::Virt->new supports so
	this would never be used.

	Also change $readwrite to $rw to match parameter name.

2010-02-12  Richard Jones  <rjones@redhat.com>

	New APIs: add-drive{,-ro}-with-if allows you to set QEMU block emulation.
	The default if=... comes from configure time (currently it
	defaults to if=virtio).

	This change allows you to set the QEMU block emulation.

	We don't think this will be used very often, but virt-v2v
	requires it in order to work around a subtle problem with
	running 'mkinitrd' in an appliance attached to a guest.

2010-02-12  Richard Jones  <rjones@redhat.com>

	generator: 'interface' is a reserved word in Java.

	add_cdrom: Update docs for adding ISO images.
	See also RHBZ#563450 (NB: This commit does not fix the bug).

2010-02-10  Richard Jones  <rjones@redhat.com>

	Use mount-options instead of mount to avoid implicit -o sync.
	guestfs_mount adds -o sync implicitly.  This causes a very large
	performance problem for write-intensive programs (eg. virt-v2v).

	Document this as a "gotcha".

	Change the tests, guestfish, Sys::Guestfs::Lib, guestmount to use
	mount-options instead.

	(Note that this gotcha does not affect mount-ro).

	The source of the performance problem was first identified by
	Matthew Booth.

2010-02-09  Richard Jones  <rjones@redhat.com>

	Add -enable-kvm option to qemu command line.
	If the version of qemu being used supports -enable-kvm option,
	then check if /dev/kvm is openable and add this option.

	I have found this option makes no difference, although it is
	*supposed* to enable KVM (hardware virtualization) support.

2010-02-09  Richard Jones  <rjones@redhat.com>

	New API call: initrd-cat to list a file from an initrd.

2010-02-08  Richard Jones  <rjones@redhat.com>

	Remove invalid Plural-Forms header from ml.po.

	Documentation: Added a section on libguestfs gotchas.

	Make virtio block driver be the default for the appliance.
	Previously this caused a serious performance regression,
	but we believe this is now fixed:
	https://bugzilla.redhat.com/show_bug.cgi?id=509383

2010-02-08  Ani Peter  <apeter@redhat.com>

	Added Malayalam translations (RHBZ#562710).

2010-02-05  Richard Jones  <rjones@redhat.com>

	Distribute hivexsh.1.html HTML file.

	Update PO files.

2010-02-05  Richard W.M. Jones  <rjones@redhat.com>

	RHEL5: Keep old automake happy by defining docdir

2010-02-05  Richard Jones  <rjones@redhat.com>

	Add scripts to EXTRA_DIST.

	Update PO files.

	Prepare for version 1.0.83.

	Add files to EXTRA_DIST.

	hivex: example6: Don't double backslashes.

	hivex: example6: Hypothetical addition of keys for viostor.

	hivex: Fix handling of inline VKs.

	hivexsh: Set correct type for 'expandstring' values.

	hivex: Documentation and cleanups.

	hivex: Make limits into macros.

	hivexsh: Remove unused variable.
	This removes an unused variable left over by
	commit ab608f3948d903af64e814b2e67949a1a71d93a4.

	hivex: Complete the implementation of adding child nodes.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: More debugging around nk 'unknown2' field.

	hivex: Check hash fields in lf/lh records.

	hivexsh: del command: Fix error message.

	hivexsh: lsval: Remove stray quotation mark.

	hivexsh: cd command: fix error handling
	The error behaviour of hivex_node_get_child is subtle, so the 'cd'
	command wouldn't always report errors correctly.  This fixes it.

	hivex: allocate_block should update valid block bitmap.
	The internal allocate_block() function wasn't updating the bitmap,
	so if you revisited a block which you had allocated in the same
	session, you could get an EFAULT error.

	hivex: More debug messages.

	hivex: Documentation update.
	ntreg_lf_record can have id "lf" (old-style hashes) or "lh" (new-
	style hashes).

	hivex: Some missing le32toh endianness conversions.

	hivexsh: Document some peculiarities of the "cd" command.

	hivex: Implement deleting child nodes.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: Add flags argument to internal get_children() function.
	When we later call get_children to visit the intermediate
	ri/lf/lh records, we have already deleted the subkey nk-records,
	so checking that those nk-records are still valid is not very
	helpful.

	This commit adds a flag to turn these checks off.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: Don't die on valid registries which have bad declared data lengths.
	Some apparently valid registries contain value data length
	declarations which exceed the allocated block size for the
	value.

	Previously the code would return EFAULT for such registries.
	However since these appear to be otherwise valid registries,
	turn this into a warning and just use the allocated block size
	as the data length (in other words, truncate the value).

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: Minimal registry example.
	This is the smallest registry you can make and still have it
	load correctly in Windows regedit.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivexsh: Add 'setval' and 'commit' commands.
	This adds the 'setval' and 'commit' commands to the hivex shell.

	Also adds some example scripts showing use of these.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: Begin implementation of writing to hives.
	This implements hivex_node_set_values which is used to
	delete the (key, value) pairs at a node and optionally
	replace them with a new set.

	This also implements hivex_commit which is used to commit
	changes to hives back to disk.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivex: Add HIVEX_OPEN_WRITE flag to allow hive to be opened for writing.
	If this flag is omitted (as in the case for all existing callers)
	then the hive is still opened read-only.

	We add a 'writable' flag to the hive handle, and we change the way
	that the hive file (data) is stored.  The data is still mmapped if
	the file is opened read-only, since that is more efficient and allows
	us to handle larger hives.  However if we need to write to the file
	then we have to read it all into memory, since if we had to extend the
	file we need to realloc that data.

	Note the manpage section L</WRITING TO HIVE FILES> comes in a later
	commit.

2010-02-04  Richard Jones  <rjones@redhat.com>

	Tools for analyzing and reverse engineering hive files.
	This commit is not of general interest.  It contains the tools which
	I used to reverse engineer the hive format and to test changes.
	Keeping these with the rest of the code is useful in case in future
	we encounter a hive file that we fail to modify.

	Note that the tools are not compiled by default.  You have to compile
	each explicitly with:

	  make -C hivex/tools <toolname>.opt

	You will also need ocaml-extlib-devel and ocaml-bitstring-devel.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivexsh: Change some exit(1) -> exit(EXIT_FAILURE)

	hivexsh: Only print final \n when interactive.
	When hivexsh was called non-interactively, it would print an
	annoying extra line.  Only print this line if we are being
	used interactively.

2010-02-04  Richard Jones  <rjones@redhat.com>

	hivexsh: Change handling of prompt argument to rl_gets()
	Make the result of isatty into a global variable (is_tty).

	Change the rl_gets() function so it takes the prompt string
	instead of a "display prompt?" flag.  rl_gets() then consults
	the global to find out if it should display the prompt at all.

2010-02-04  Richard Jones  <rjones@redhat.com>

	Document that this flag is clear for default keys.

	Misc documentation and gitignore update.

	Move htole*/le*toh macros into a separate header file.
	This allows us to reuse these macros in hivexsh later.

2010-02-04  Sandeep Shedmake  <sshedmak@redhat.com>

	Add Marathi translations (RHBZ#561671).

2010-02-02  Piotr Drąg  <piotrdrag@gmail.com>

	Polish translations (RHBZ#502533).

2010-02-02  Richard Jones  <rjones@redhat.com>

	Update PO files.

	Add Gujarti translations (Sweta Kothari) (RHBZ#560918).

2010-02-01  Richard Jones  <rjones@redhat.com>

	Update Oriya translations (thanks Manoj Kumar Giri) (RHBZ#559498).

2010-01-29  Richard Jones  <rjones@redhat.com>

	hivex: Reimplement hivexget as a simple shell script.
	hivexget is currently a large C program.  Now that we have hivexsh
	(the shell) we can reimplement hivexget as a simple bash script that
	calls out to hivexsh.

	hivex: Add 'hivexsh' program (shell for navigating registry hives).

2010-01-29  Richard Jones  <rjones@redhat.com>

	Set locale in C programs so l10n works (RHBZ#559962).
	This commit adds the calls to setlocale &c to all of the current
	C programs.

	It also adds l10n support to hivexget and hivexml which lacked them
	previously.

	To test this, try:

	LANG=pa_IN.UTF-8 guestfish --cmd-help

	(You can only do this test after installing the package, or at
	least the 'pa.mo' mo-file in the correct place).

2010-01-29  Richard Jones  <rjones@redhat.com>

	Another unreadable file: /var/log/yum.log

	Update PO files.

	Add Tamil translation (RHBZ#559877) (thanks to I.Felix)

	Update Punjabi translation (RHBZ#559480) (thanks Jaswinder Singh)

2010-01-29  Richard Jones  <rjones@redhat.com>

	Fix regressions/rhbz557655.sh when debugging is enabled (v2).
	The previous fix didn't cope with ordinary warnings emitted by
	qemu (eg. "open /dev/kvm: No such file or directory").  This
	is a hopefully more complete fix for the problem.

	See also commit 3cd7ce75f1ce5048a4d9f6aeaf66aff3194e1096.

2010-01-28  Richard Jones  <rjones@redhat.com>

	Fix regressions/rhbz557655.sh when debugging is enabled.
	The regression test for RHBZ#557655 would fail if debugging was
	enabled, because debug output would get mixed up with the test
	output.

	To reproduce the error do:

	LIBGUESTFS_DEBUG=1 make -C regressions TESTS=rhbz557655.sh check

	This commit disables debug for just this test.

2010-01-28  Richard Jones  <rjones@redhat.com>

	Implement 'vgrename' and 'lvrename' APIs.

	Version 1.0.82.

	hivex: Const-correctness fix on header_checksum (thanks Jim Meyering).

	hivex: Update some previously unknown nk-record fields.
	Update these fields with what we found out from reverse engineering
	the file.  Also bring the unknownX field names into line with
	visualizer.ml.

	hivex: Fix calculation of block size for vk data blocks.

	hivex: Display incorrect block size as unsigned in an error message.

	hivex: display bad block offset in hex

	hivex: hive type in vk-record is an unsigned 32 bit int

	hivex: Add missing le32toh conversion around field access.
	This was missing.  It only worked because we test on a little
	endian platform.

	hivex: Clarify some more fields.
	Taken from sentinelchicken.com documentation.

2010-01-28  Richard Jones  <rjones@redhat.com>

	hivex: Modify children/values functions to return intermediate blocks.
	Modify the functions that return child subnodes and values so they
	can also be used to return a list of the intermediate blocks.  This
	is so we can delete those intermediate blocks (in a later commit).

	We also introduce an offset_list structure which is used for collecting
	lists of offsets, ie. lists of nodes, values or blocks.

	Note that this commit should not change the semantics of the code.

2010-01-28  Richard Jones  <rjones@redhat.com>

	hivex: Add value_any callback to the visitor.
	The visitor currently contains lots of value_* callbacks, such as
	value_string which is called back when the value has type string.

	This is fine but it makes it complicated to deal with the case where
	you just want to see 'a value', and don't care about its type.

	The value_any callback allows visitors to see values generically.

2010-01-28  Richard Jones  <rjones@redhat.com>

	hivex: Move header checksum code into a function.
	This function can be reused later.

	hivex: page 'offset_next' field is really 'page_size'.
	The documentation, as usual, is contradictory.  However this
	field is definitely the page size in all observed registries.
	Furthermore the following field marked 'unknown' is always
	zero, although this contradicts what the sentinelchicken.com
	paper says.

	hivex: Collect more statistics about registries.

	hivex: Store filename in hive handle.

	Added Oriya translations (RHBZ#559498).
	Translation by Manoj Kumar Giri.

	supermin: Add special case for libgcc_s-*.so.N
	Because this file contains the GCC version and a date, it frequently
	changes on the host.  Create a special case so that this file is
	matched using a wildcard for the version/date part of the name.

2010-01-28  Richard Jones  <rjones@redhat.com>

	Added translations for Punjabi (pa-IN) (RHBZ#559480).
	Translated by Jaswinder Singh.

	Also updated pot files.

2010-01-27  Richard Jones  <rjones@redhat.com>

	supermin: Prevent multilib corruption (RHBZ#558593).
	On some combination of installing, upgrading and removing the base
	libguestfs package on x86_64, multilib can corrupt libguestfs by
	leaving a copy of /usr/bin/libguestfs-supermin-helper around which
	references the wrong architecture (usually, contains links to the
	i386-based appliance, when the x86_64 appliance should be constructed).

	This commit changes libguestfs-supermin-helper so that the script is
	the same on all architectures.  Instead, the library passes the
	differences to the script (eg. $host_cpu).  Because the i386 and
	x86_64 libraries should be at different locations (/usr/lib vs
	/usr/lib64) this should prevent multilib from screwing things up.

	Related links:
	https://bugzilla.redhat.com/show_bug.cgi?id=558593
	http://rwmj.wordpress.com/2009/11/16/please-someone-shoot-multilib/#content
	https://bugzilla.redhat.com/show_bug.cgi?id=235752

2010-01-27  Richard Jones  <rjones@redhat.com>

	Added Telugu translations (RHBZ#559237).
	Also ran 'make -C po update-po' to update the POT file.

2010-01-25  Richard Jones  <rjones@redhat.com>

	supermin: Ignore more unreadable files found on RHEL 6.

	Sync to latest Gnulib.

2010-01-25  Richard Jones  <rjones@redhat.com>

	guestfish: Use xstrtol to parse integers (RHBZ#557655).
	Current code uses atoi to parse the generator Int type and
	atoll to parse the generator Int64 type.  The problem with the
	ato* functions is that they don't cope with errors very well,
	and they cannot parse numbers that begin with 0.. or 0x..
	for octal and hexadecimal respectively.

	This replaces the atoi call with a call to Gnulib xstrtol
	and the atoll call with a call to Gnulib xstrtoll.

	The generated code looks like this for all Int arguments:

	  {
	    strtol_error xerr;
	    long r;

	    xerr = xstrtol (argv[0], NULL, 0, &r, "");
	    if (xerr != LONGINT_OK) {
	      fprintf (stderr,
	               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
	               cmd, "memsize", "xstrtol", xerr);
	      return -1;
	    }
	    /* The Int type in the generator is a signed 31 bit int. */
	    if (r < (-(2LL<<30)) || r > ((2LL<<30)-1)) {
	      fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize");
	      return -1;
	    }
	    /* The check above should ensure this assignment does not overflow. */
	    memsize = r;
	  }

	and like this for all Int64 arguments (note we don't need the
	range check for these):

	  {
	    strtol_error xerr;
	    long long r;

	    xerr = xstrtoll (argv[1], NULL, 0, &r, "");
	    if (xerr != LONGINT_OK) {
	      fprintf (stderr,
	               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
	               cmd, "size", "xstrtoll", xerr);
	      return -1;
	    }
	    size = r;
	  }

	Note this also fixes an unrelated bug in guestfish handling of
	RBufferOut.  We were using 'fwrite' without checking the return
	value, and this could have caused silent failures, eg. in the case
	where there was not enough disk space to store the resulting file,
	or even if the program was interrupted (but continued) during the
	write.

	Replace this with Gnulib 'full-write', and check the return value
	and report errors.

2010-01-25  Richard Jones  <rjones@redhat.com>

	Add 'filesize' call.
	Returns the size of a file.  You can already do this with 'stat',
	but this call is good for scripting.

2010-01-21  Richard Jones  <rjones@redhat.com>

	Missing crc kernel module on RHEL 6 / Linux 2.6.32 (fixes RHBZ#557195)

2010-01-15  Richard Jones  <rjones@redhat.com>

	hivex: Various improvements in header parsing, thanks to better documentation.

	hivex: Print header fields.  Print all offsets in hex (in debug output).

	hivex: Reenable checksum calculations, but don't check result.

	hivex: Update documentation.

2010-01-14  Richard Jones  <rjones@redhat.com>

	hivex: Send all debug messages to stderr.

	hivex: Remove stray debugging message.

	hivex: Documentation: Add environment variables section.

	hivex: Whitespace change.

	hivex: Move STR* macros into C file.
	Don't pollute the public header file with these macros.

	hivex: Small updates to the documentation.

2010-01-13  Richard Jones  <rjones@redhat.com>

	Fix generation of HTML documentation for website.

	Add guestfs.pod and guestfish.pod to EXTRA_DIST.

	Prepare for version 1.0.81.

	Update to latest Gnulib.

2010-01-07  Richard Jones  <rjones@redhat.com>

	qemu: Upstream regression of -stdio serial option.
	Best explained by the comment in the code:

	    /* Newer versions of qemu (from around 2009/12) changed the
	     * behaviour of monitors so that an implicit '-monitor stdio' is
	     * assumed if we are in -nographic mode and there is no other
	     * -monitor option.  Only a single stdio device is allowed, so
	     * this broke the '-serial stdio' option.  There is a new flag
	     * called -nodefaults which gets rid of all this default crud, so
	     * let's use that to avoid this and any future surprises.
	     */

2010-01-06  Richard Jones  <rjones@redhat.com>

	inspector: Update example XML and RNG schema.
	This updates commit a59dcdbd1b0a28c960e3792165a13f2daf4f6c35.

2010-01-05  Richard Jones  <rjones@redhat.com>

	inspector: Make RPM application data more specific (RHBZ#552718).
	List applications with epoch, release and arch data.

	If epoch is 0, don't store this as an empty string, but as
	undefined, and don't output empty <epoch/> element in the XML.

2010-01-04  Richard Jones  <rjones@redhat.com>

	Use linker script to control visibility of symbols.

	generator: Move all library generation code together.

	generator: Print total lines of generated code.

	C#: Add documentation about experimental nature of these bindings.

2010-01-02  Richard Jones  <rich@koneko.local>

	Experimental C# bindings.
	Tested in only limited situations, with Mono on Linux.

2010-01-02  Richard Jones  <rjones@redhat.com>

	Update copyright years.

2009-12-31  Richard Jones  <rjones@redhat.com>

	Move guestfs(3) and guestfish(1) man pages into subdirectories.
	These manual pages have for a very long time 'lived' in the top
	source directory.

	Clean up this situation by moving those manual pages (plus associated
	generated files) into the src/ and fish/ subdirectories respectively.

2009-12-31  Richard Jones  <rjones@redhat.com>

	generator: Move src/guestfs-bindtests.c next to other src/ files.

	generator: Use Continuation Passing Style (CPS) in output_to function.
	This makes the code simpler, shorter and less error-prone.

	generator: Rename GPLv2 to GPLv2plus, LGPLv2 to LGPLv2plus.
	The licenses are "any later version", so reflect this in the
	naming of the parameter to generate_header.

	generated code: Set copyright years to 2009-xxxx when current year > 2009.

2009-12-31  Richard Jones  <rjones@redhat.com>

	Remove separate inspector_generator.ml, combine this with generator.ml.
	This commit combines the previously separate "inspector_generator.ml"
	program which generated bindings for virt-inspector.

	Having two separate programs caused no end of troubles for developers,
	so we now combine them into a single program.

	NOTE: OCaml xml-light is now *required* in order to rebuild the
	generated code.

2009-12-31  Richard Jones  <rjones@redhat.com>

	generator: Comment and whitespace changes only.

2009-12-18  Richard Jones  <rjones@redhat.com>

	daemon: Work around udevsettle issue (RHBZ#548121).

2009-12-16  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.80.

	Include latest Polish translations (Piotr Drąg, RHBZ#502533).

	Update PO files.

	build: Fix typo in filename.

	build: Remove references to old contrib/ files which were removed.

2009-12-16  Richard Jones  <rjones@redhat.com>

	appliance: Special case handling for libbfd in the supermin appliance.
	The libbfd library has a constantly changing, non-standard and
	very long name, eg:

	/usr/lib64/libbfd-2.20.51.0.2-7.fc13.so

	Just add a special case to deal with this.  This fixes the guestfs_strings
	command, which relies on the external strings binary which uses this
	library.

2009-12-16  Richard Jones  <rjones@redhat.com>

	appliance: Ignore unreadable dbus helper programs.

2009-12-07  Richard Jones  <rjones@redhat.com>

	lib: Link with $(LTLIBTHREAD), required by Gnulib lock module.
	This fixes commit cada248a53858341c91f70392e8f5b6e47d9b4fe.

2009-12-07  Matthew Booth  <mbooth@redhat.com>

	appliance: Fix code which gets list of kernels.
	The first 'ls' command was failing, so the second 'ls' command
	would never run at all.

2009-12-07  Jim Meyering  <jim@meyering.net>

	accommodate leading "+" in git submodule output
	* cfg.mk (_submodule_hash): Also filter out "+".
	* autogen.sh: Likewise.

2009-12-07  Richard Jones  <rjones@redhat.com>

	lib: Add thread-safety to global list of handles.
	This commit uses the Gnulib 'lock' module to implement a mutex on
	the global list of handles which is stored by the library.

	Note that Gnulib nicely avoids explicitly linking with -lpthread
	unless the application program itself links to -lpthread.  Locks
	are only enabled in multithreaded applications.

	$ ldd src/.libs/libguestfs.so.0.217.0
		linux-vdso.so.1 =>  (0x00007fffcb7ff000)
		libc.so.6 => /lib64/libc.so.6 (0x00007f96a4e6c000)
		/lib64/ld-linux-x86-64.so.2 (0x00007f96a544d000)

	Please enter the commit message for your changes. Lines starting

2009-12-07  Richard Jones  <rjones@redhat.com>

	daemon error handling: Define a new function reply_with_perror_errno.
	This allows you to save the errno from a previous call and
	pass it to reply_with_perror.

	For example, original code:

	  r = some_system_call ();
	  err = errno;
	  do_cleanup ();
	  errno = err;
	  if (r == -1) {
	    reply_with_perror ("failed");
	    return -1;
	  }

	can in future be changed to:

	  r = some_system_call ();
	  err = errno;
	  do_cleanup ();
	  if (r == -1) {
	    reply_with_perror_errno (err, "failed");
	    return -1;
	  }

2009-12-07  Richard Jones  <rjones@redhat.com>

	daemon error handling: recursive_mkdir shouldn't need to set errno.

2009-12-04  Richard Jones  <rjones@redhat.com>

	daemon error handling: Clear errno before calling stub functions.
	This just ensures that we accurately report errors, even if our
	error path code doesn't set errno.  We won't end up with a bogus
	errno left over from a previous call.

2009-11-27  Richard Jones  <rjones@redhat.com>

	Whitespace change.

2009-11-26  Richard Jones  <rjones@redhat.com>

	virt-rescue: Freshen documentation.

2009-11-26  Richard Jones  <rich@koneko.home.annexia.org>

	guestfish: Freshen documentation.

2009-11-26  Richard Jones  <rjones@redhat.com>

	daemon: Move prototypes around to keep functions grouped logically.

	Fix error handling in 'zero' function.

2009-11-26  Richard Jones  <rjones@redhat.com>

	daemon/Win32: Add contributed test script to test daemon using Wine.
	This test script allows you to test limited features of the
	Windows daemon by running it on a standard Fedora host using
	Wine.

	Read contrib/README and contrib/guestfsd-in-wine.sh in detail
	before using.

2009-11-26  Richard Jones  <rjones@redhat.com>

	Ignore guestfsd.exe (Windows daemon).

	Remove old contrib/febootstrap directory.

	Update PO files.

	Make realpath call optional, disable it for Windows.

	build: update gnulib submodule to latest

	daemon: program_name must be defined for Gnulib error module.

	daemon/Win32: use gnulib modules connect, socket and symlinkat (for readlinkat).

	daemon/Win32: provide htonl, htons, ntohl, ntohs functions.
	These functions are not available on Windows.

	daemon/Win32: Use Gnulib perror module.

2009-11-26  Richard Jones  <rjones@redhat.com>

	daemon: Link guestfs_protocol.[ch] into the daemon directory.
	Instead of doing a recursive call into the src/ directory to build
	the object files, hard link the source files into the daemon
	directory and build them separately.

	See:
	http://www.redhat.com/archives/libguestfs/2009-November/msg00254.html

	Thanks to Jim Meyering for noticing a typo in the original version.

2009-11-26  Richard Jones  <rjones@redhat.com>

	daemon: Typo generator_build -> generator_built

	daemon: Indent C macros to reflect nesting level.

	daemon/Win32: Win32 can't fork message moved to separate function (Jim Meyering)

2009-11-25  Richard Jones  <rjones@redhat.com>

	guestfs documentation: Missing space.

2009-11-25  Richard Jones  <rich@koneko.home.annexia.org>

	guestfs: Update architecture section of documentation.

2009-11-25  Richard Jones  <rjones@redhat.com>

	Update PO files.

	daemon: Fix build on Unix.

	daemon: Fix sync() call on Unix.

	daemon/Win32: update comment

	daemon/Win32: Supply MAX macro for challenged platforms.

	daemon/Win32: Windows can't daemonize.

	daemon/Win32: Windows replacement for umask.

	daemon/Win32: Replace setenv with Win32 equivalent.

	daemon/Win32: Use xdr_u_int for PortableXDR compatibility.
	PortableXDR didn't support xdr_uint32_t.  xdr_u_int is the same type.

	daemon/Win32: Don't bother blocking SIGPIPE on Win32.

	daemon/Win32: Use gnulib getaddrinfo module.

	daemon/Win32: Implement statvfs using GetDiskFreeSpaceEx.
	At the time of writing Gnulib didn't support Win32 for its
	fsusage API.  Therefore this patch uses GetDiskFreeSpaceEx
	if it's available (on Windows) otherwise falls back to using
	Gnulib fsusage.

	daemon: Move statvfs code into separate file.
	This makes no functional change to the code.  It just moves the
	statvfs-related code out of daemon/stat.c into a new file called
	daemon/statvfs.c.

2009-11-25  Richard Jones  <rjones@redhat.com>

	daemon: Use gnulib futimens module.
	Instead of checking for futimens support and falling back
	(incorrectly in one case) to using futimes, use gnulib's
	module.

	However the gnulib module does not yet support Win32, so
	this change is only really useful on platforms like RHEL 5.

2009-11-25  Richard Jones  <rjones@redhat.com>

	daemon/Win32: Use gnulib pread module.

	sync: Windows implementation of sync() call.
	Replace calls to sync() with calls to sync_disks() which supports
	Win32 via FlushFileBuffers.

	daemon: Alternate implementation of posix_fallocate.
	If the posix_fallocate function is not available [ie. Windows]
	use an alternate implementation that just loops and writes.

	dd: Missing include of <string.h>
	Breaks compilation on Windows.

	daemon/Windows: Define _WIN32_WINNT when compiling on Windows.

	build: update gnulib submodule to latest

	build: update gnulib submodule to latest

	supermin: Die with an error if no kernels found (RHBZ#539746).
	Updated with a suggestion from Jim Meyering to use the '-d'
	option to ls to avoid a future case of directories matching.

2009-11-24  Richard Jones  <rjones@redhat.com>

	New tool: virt-list-filesystems
	Use this program as a convenient way to list the filesystems
	available in a disk image or libvirt guest.

	Example:

	  $ virt-list-filesystems /dev/vg_trick/Debian5x64
	  /dev/debian5x64/home
	  /dev/debian5x64/root
	  /dev/debian5x64/tmp
	  /dev/debian5x64/usr
	  /dev/debian5x64/var
	  /dev/sda1

	This is designed to make it easier for novices to use guestfish
	and guestmount.  In particular with guestmount this acts as a way
	to get a list of filesystems to use with the '-m' option.  ie:

	  $ virt-list-filesystems unknowndisk.img
	  /dev/sda1
	  /dev/sda2
	  $ guestmount -a unknowndisk.img -m /dev/sda1 /mnt

2009-11-24  Richard Jones  <rjones@redhat.com>

	availability: Document how to check for single API calls
	This documents how to use autotools and dlopen(3) to test for
	the availability of single API calls at compile time and run time
	respectively.

	availability: Add a test for this call.
	Because all the tested groups are optional, there's not really
	a group we can reliably test, therefore test against the
	empty list (which should not fail).

	availability: Clarify and fix documentation.

	generator: Passing "" to StringList tests should turn into empty list.
	This is a bug in the generator which wasn't being tickled.  If
	you had a test which expected a StringList or DeviceList parameter,
	and you passed "" to that test, then you'd (probably) expect to be
	testing an empty list, but in fact you got a single element list
	containing an empty string.  This fixes it so you get an empty list.

	daemon: Fix return value from aug_defnode.
	Bug fix - the return value from this function was wrong
	in the no-Augeas case.

2009-11-23  Richard Jones  <rjones@redhat.com>

	Implement 'dd' command.

2009-11-22  Richard Jones  <rjones@redhat.com>

	Use STRPREFIX instead of STREQLEN.

	generator: second parameter to upload is Dev_or_Path, not String.

2009-11-21  Matthew Booth  <mbooth@redhat.com>

	build: Add missing dependencies in perl directory
	make all in the perl directory was missing a check that the library had been
	built.

	make check in the perl directory was missing a check that the appliance and test
	images had been built.

2009-11-21  Matthew Booth  <mbooth@redhat.com>

	build: Ensure building appliance depends on guestfsd
	Previously, only the update.sh rule checked the daemon had been built. update.sh
	is called directly from within make.sh, so in that path the dependency was never
	checked. This adds the daemon dependency explicitly to the rebuild-from-scratch
	path.

	build: Don't re-check generator.ml for each generator_built in daemon directory

	build: Rebuild the daemon as necessary from other directories
	This change ensure that making the appliance will always rebuild the daemon if
	required.

2009-11-21  Richard Jones  <rjones@redhat.com>

	Update TODO file.

2009-11-20  Richard Jones  <rjones@redhat.com>

	perl: Add Sys::Guestfs::Lib::feature_available
	This is a nicer Perl wrapper around $g->available call.

	Update the other code in Sys::Guestfs::Lib to use it before using
	LVM, Augeas.

2009-11-20  Richard Jones  <rjones@redhat.com>

	availability: Skip tests when functions are not available.

2009-11-20  Richard Jones  <rjones@redhat.com>

	availability: Add optional groups and implement guestfs_available call.
	The current groups are defined very conservatively using the
	following criteria:
	 (a) Would be impossible to implement on Windows because of
	     sheer architectural differences (eg: mknod).
	 (b) Already optional (augeas, inotify).
	 (c) Not currently optional but not implemented on older RHEL and
	     Debian releases (ntfs-3g.probe, scrub, zerofree).

	The optional groups I've defined according to these criteria are:

	 . augeas
	 . inotify
	 . linuxfsuuid
	 . linuxmodules
	 . linuxxattrs
	 . lvm2
	 . mknod
	 . ntfs3g
	 . scrub
	 . selinux
	 . zerofree

	(Note that these choices don't prevent us from adding more
	optional groups in future.  On the other hand to avoid breaking
	ABIs we would not wish to change the above groups).

	The rest of this large commit is really just implementation:

	Each optional function is classified using Optional "group"
	flag in the generator.

	The daemon has to implement a function

	  int optgroup_<name>_available (void);

	for each optional group.  Some of these functions are fixed at
	compile time, and some do simple run-time tests.

	The do_available implementation in the daemon looks up the correct
	function in a table and runs it.

	We document the optional groups in the guestfs(3) man page.

	Also: I added a NOT_AVAILABLE macro in order to unify all the
	existing places where we had a message equivalent to
	"function __func__ is not available".

2009-11-20  Richard Jones  <rjones@redhat.com>

	availability: Add guestfs_available.
	Start a new API allowing groups of functions to be tested for
	availability.

	There are two reasons for this:

	(1) If libguestfs is built with missing dependencies (eg. no Augeas lib)
	then the corresponding functions are disabled in the appliance.  Up till
	now there has been no way to test for this except to speculatively
	issue commands and check for errors.

	(2) When we port the daemon to Win32 it is likely that major pieces of
	functionality won't be available (eg. LVM support).  This API gives
	a way to test for that.

	There is no change for existing clients: you still have to check for
	errors from individual API calls.

	For new clients, you will be able to test for availability of particular
	APIs.

	Usage scenario (A): An LVM editing tool which requires
	both the LVM API and inotify in order to function at all:

	  char *apis[] = { "inotify", "lvm2", NULL };
	  r = guestfs_available (g, apis);
	  if (r == -1) {
	    /* print an error and exit */
	  }

	Usage scenario (B): A general purpose tool which optionally provides
	configuration file editing, but this can be disabled, the result
	merely being reduced functionality:

	  char *apis[] = { "augeas", NULL };
	  r = guestfs_available (g, apis);
	  enable_config_edit_menus = r == 0;

2009-11-20  Richard Jones  <rjones@redhat.com>

	daemon/Win32: Use gnulib modules for first porting to Win32.

2009-11-20  Matthew Booth  <mbooth@redhat.com>

	build: Add missing dependency libguestfs.la->guestfs_protocol.h

2009-11-20  Jim Meyering  <jim@meyering.net>

	build: correct sed transformation to work also on .git-module-status
	My patch was wrong.
	I kept the sed transformation the same in the two places,
	but it wasn't strict enough to also work on the file contents.
	Sorry about that.  This fixes it.

	>From 93927cc7b9f63c414e5bfeb7eba393fde3295601 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Fri, 20 Nov 2009 16:23:17 +0100
	Subject: [PATCH libguestfs] build: correct sed transformation to work also on .git-module-status

	* autogen.sh: Use a more strict sed transformation so it works also
	on the contents of .git-module-status, which has no prefix.
	* cfg.mk (_submodule_hash): Use a stricter sed regexp.

2009-11-20  Jim Meyering  <jim@meyering.net>

	build: make autogen.sh update .git-module-status, as it should
	I ran autogen.sh, but then make was always failing like this:

	    $ make
	    cfg.mk:141: *** gnulib update required; run ./autogen.sh first.  Stop.

	Here's the fix:

	>From f743f32079fea2e8a17c7f5b59305e584c75dba0 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Fri, 20 Nov 2009 14:29:55 +0100
	Subject: [PATCH libguestfs] build: make autogen.sh update .git-module-status, as it should

	* autogen.sh: Without this, "make" would always say "gnulib update
	required; run ./autogen.sh first", even after you'd run autogen.sh
	successfully.

2009-11-20  Jim Meyering  <meyering@redhat.com>

	maint: use EXIT_* symbol (not constant, 2) to indicate key/path not found
	* hivex/hivexget.c (EXIT_NOT_FOUND): Define.
	(main): Use exit (EXIT_NOT_FOUND), not "exit (2)".

	maint: use EXIT_SUCCESS and EXIT_FAILURE, not 0 and 1 in "usage", too
	Convert by running these commands:
	perl -pi -e 's/\b(usage ?)\(1\)/$1(EXIT_FAILURE)/' \
	  fish/fish.c fuse/guestmount.c
	perl -pi -e 's/\b(usage ?)\(0\)/$1(EXIT_SUCCESS)/' \
	  fish/fish.c fuse/guestmount.c
	* fish/fish.c (main): Replace 0/1 with EXIT_SUCCESS/EXIT_FAILURE.
	* fuse/guestmount.c (main): Likewise.

2009-11-20  Jim Meyering  <meyering@redhat.com>

	maint: use EXIT_SUCCESS and EXIT_FAILURE, not 0 and 1 to exit
	Convert all uses automatically, via these two commands:
	git grep -l '\<exit *(1)' \
	  | grep -vEf .x-sc_prohibit_magic_number_exit \
	  | xargs --no-run-if-empty \
	    perl -pi -e 's/\b(exit ?)\(1\)/$1(EXIT_FAILURE)/'
	git grep -l '\<exit *(0)' \
	  | grep -vEf .x-sc_prohibit_magic_number_exit \
	  | xargs --no-run-if-empty \
	  perl -pi -e 's/\b(exit ?)\(0\)/$1(EXIT_SUCCESS)/'
	* .x-sc_prohibit_magic_number_exit: New file.

	Edit (RWMJ): Don't change Java code.

2009-11-20  Jim Meyering  <meyering@redhat.com>

	maint: remove unnecessary include of openat.h
	* daemon/realpath.c: Don't include "openat.h".  not used.

2009-11-20  Richard Jones  <rjones@redhat.com>

	build: update gnulib submodule to latest

	daemon/gnulib: Include glob module.

	daemon/Win32: Don't include missing headers.
	This is a partial fix for code in guestfsd.c where many of these
	header files are missing on Win32.

2009-11-20  Richard Jones  <rjones@redhat.com>

	daemon/Win32: make some functions and fields optional.
	inotify: Make this optional on platforms that don't have this interface.

	mknod, mkfifo etc.: Make these optional on non-Unix platforms.

	readdir: If d_type field is missing on the platform, set the corresponding
	field to 'u'.

	stat: st_blocks and st_blksize are missing on non-Unix platforms, so
	set these fields to -1 in the corresponding structures.

2009-11-20  Richard Jones  <rjones@redhat.com>

	daemon/Win32: NAME_MAX does not exist on Windows, use FILENAME_MAX instead.

	daemon: Missing #includes revealed by cross-compiling.

	daemon/Win32: Ignore mingw32-config.cache.
	The Fedora Windows cross-compiler 'mingw32-configure' script always
	uses a configure cache.  Ignore that file.

2009-11-19  Richard Jones  <rjones@redhat.com>

	generator: open Unix module by default.
	Add:

	  open Unix

	at the top of the generator, which means that we don't need to
	prefix any 'Unix.foo' symbols (we can just use 'foo' instead).

	Unfortunately the Unix module shadows one symbol in Pervasives
	(the Pervasives module is opened by default in OCaml code).  That
	symbol is 'stdout'.  So we replace this with 'Pervasives.stdout'
	in two places.  Still a net reduction in code size.

2009-11-19  Richard Jones  <rjones@redhat.com>

	syntax-check: Fix tab-vs-space issue in the generator.

	Update PO files.

	Update TODO file.

2009-11-19  Matthew Booth  <mbooth@redhat.com>

	build: Fix parallel build of haskell bindings
	ghc isn't clever enough not to stomp on itself when building dependencies. This
	change makes the 1 dependency explicit.

	It also adds a dependency on src/libguestfs.la.

2009-11-19  Matthew Booth  <mbooth@redhat.com>

	build: Fix inter-directory dependencies
	This change adds an explicit dependency on generator.ml for every file it
	generates, except java files. Java is left for another time because it's
	considerably trickier.

	It also adds a build rule for src/libguestfs.la so it can be rebuilt as required
	from other directories.

	It does this by creating a top level make file, subdir-rules.mk, which can be
	included from sub-directories. sub-directories need to define 'generator_built'
	to include local files which are built by generator.ml, and they will be updated
	automatically.

	This fixes parallel make, and will automatically re-create generated files when
	make is run from any directory.

	It also fixes the problem which efad4f53 was targetting. Specifically,
	src/guestfs_protocol.(c|h) had an erroneous dependency on stamp-generator, and
	therefore generator.ml, despite not being directly created by it. This caused
	them to be recreated every time generator.ml ran rather than only when
	src/guestfs_protocol.x was updated, which cascaded into a daemon and therefore
	appliance update.

	This patch also changes the contents of the distribution tarball by including
	files created by rpcgen.

2009-11-19  Richard Jones  <rjones@redhat.com>

	generator: Acquire lock to prevent two parallel runs of the generator.
	This commit acquires a lock on a file to prevent two parallel runs of
	the generator from stomping on each other.  The second run will wait
	for the first to complete before starting.

	The lock is acquired on the "HACKING" file because it's convenient --
	we are already checking this file exists to make sure that we don't
	start off in the wrong directory.

	Tested by adding some artificial sleeps in the code to observe
	locking behaviour between two parallel runs.

2009-11-19  Jim Meyering  <jim@meyering.net>

	syntax-check: expand TABs in generator.ml
	Jim Meyering wrote:
	>>From 6f128e90afb055f9899011c4a592eb289e678936 Mon Sep 17 00:00:00 2001
	> From: Jim Meyering <meyering@redhat.com>
	> Date: Thu, 19 Nov 2009 11:39:10 +0100
	> Subject: [PATCH libguestfs] syntax-check: expand TABs in generator.ml
	>
	> * src/generator.ml: Expand leading TABs to spaces.

	That was incomplete.
	Please use the following instead.
	With it, now, "make syntax-check" now passes once again.

	>From 716a30d0b692972aac8fbea1fb7ad3318ab3a0d8 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Thu, 19 Nov 2009 11:39:10 +0100
	Subject: [PATCH libguestfs] syntax-check: expand leading TABs

	* src/generator.ml: Expand leading TABs to spaces.
	* fuse/test-fuse.sh: Likewise.

2009-11-19  Jim Meyering  <meyering@redhat.com>

	syntax-check: exempt *.pod from no-trailing-blank prohibition
	* .x-sc_trailing_blank: Exempt *.pod.

2009-11-18  Richard Jones  <rjones@redhat.com>

	BUILT_SOURCES now depends on running the generator.
	This completely reverts commit efad4f53923dcca94613e193d6383bd032e70498.

2009-11-18  Richard Jones  <rjones@centos5x32.home.annexia.org>

	daemon/RHEL: Choose correct udev settle script.
	On RHEL/CentOS 5.4, udevadm settle command does not work.  This didn't
	affect us before, but now that we're using parted for partitioning, we
	*do* need to wait for udev to settle (because parted isn't waiting for
	this, unlike sfdisk).

	This commit chooses the correct program to run.

2009-11-18  Richard Jones  <rjones@centos5x32.home.annexia.org>

	fuse/RHEL: Don't require UTIME_{NOW,OMIT} to be defined.
	These macros don't exist on RHEL/CentOS 5.4.  If the feature
	is missing then just don't implement it in the FUSE layer.

2009-11-18  Richard Jones  <rjones@redhat.com>

	appliance: Print uptime.
	Print the uptime just before the init script runs the daemon, so we
	have a good idea of how long the kernel boot + init script takes to run.

	recipes: Fix git URL.

	Prepare for version 1.0.79.

	fuse: Add test-fuse.sh to EXTRA_DIST.

2009-11-18  Richard Jones  <rjones@redhat.com>

	generator: Fix API of functions that return RBufferOut
	(NB: The API / ABI doesn't actually change here - it's just made much
	simpler to use).

	The API for RBufferOut functions was unexpectedly hard to use in the
	case where a zero-length buffer might be returned.  For discussion on
	this see:

	https://www.redhat.com/archives/libguestfs/2009-November/thread.html#00115

	This commit ensures that in the zero-length buffer case, the return
	value is never NULL.  Thus code is now able to just check if the return
	value == NULL to indicate an error, which is simpler for all concerned.

	The implementation of this is, however, more complex because we have
	to be careful about this case inside both the daemon and the library
	code, which is what this commit does.

	This has passed a full round of tests.

2009-11-17  Richard Jones  <rjones@redhat.com>

	fuse: Add tests for guestmount.
	This script contains non-exhaustive tests for the system calls
	implemented by guestmount.

	fuse: Fix read for empty files.
	Error handling for the guestfs_pread call was incorrect, which
	meant that empty files could produce spurious error messages.

2009-11-17  Richard Jones  <rjones@redhat.com>

	fish: Improve output of guestfish -h cmd
	Display this output like a short manual page.

	Don't put <..> around the parameters to the command.

2009-11-17  Richard Jones  <rjones@redhat.com>

	New API call: fill - fill a file with octets

	fuse: Fix cache invalidation in rename operation.
	We need to invalidate both parameters, otherwise the old (moved)
	file can appear that it still exists after the move.

	fuse: Fix hard link creation.
	The parameters were swapped.  We also need to invalidate the
	cache for both parameters.

	fuse: Fix symlink creation (RHBZ#538069).
	The parameters were swapped, preventing symlinks from being created.

	virt-df: Ignore domains which have ID 0.
	This is the remainder of the fix for RHBZ#538041.  Domains
	which have ID 0 are special domains.  libvirt defines it as
	the "control plane OS".  Only Xen and HyperV have this
	behaviour, and in both cases we should ignore those domains
	for the purposes of virt-df (user can just run "df" if they
	need that information for the dom0).

	virt-df: Turn errors into warnings when listing all domains.
	This is a partial fix for RHBZ#538041.  When listing all domains,
	don't die just because one domain fails, but keep trying for the
	rest.

2009-11-13  Richard W.M. Jones  <rjones@redhat.com>

	Docs: copyediting

	Docs: Add documentation about other language bindings to API overview.

	Docs: line folding in example.

	Docs: group preformatted sections of text together.

	Docs typo: limited -> limits

	Docs: Add section on using multiple threads.
	This section was missing from the previous documentation.

	Docs: Add/extend API overview.

	Docs: Remove incorrect statement from man page.
	The low-level event-based API never existed so this statement
	in the man page is wrong.  If you want an asynchronous API, use
	threads.

2009-11-12  Jim Meyering  <meyering@redhat.com>

	build: revive the ocaml package tests
	* autogen.sh: Generalize the ocaml-package-existence test.
	Remove the git-related part of the old test.

2009-11-11  Matthew Booth  <mbooth@redhat.com>

	Generate guestfs_protocol.x when stamp-generator updates
	This partially reverts efad4f53923dcca94613e193d6383bd032e70498.
	guestfs_protocol.x wasn't being generated when building from a clean checkout.

2009-11-11  Richard Jones  <rjones@redhat.com>

	autogen.sh: Remove test for ocaml etc from this script.
	This test seems to cause a lot of trouble.  We need to go back to
	the drawing-board on this one.

	Set cpio blocksize to 64K.
	See:
	https://www.redhat.com/archives/fedora-devel-list/2009-November/thread.html#00523

2009-11-10  Richard Jones  <rjones@debian5x64.home.annexia.org>

	Debian: don't depend on gfs-tools since these have depsolving problems.

2009-11-10  Richard Jones  <rjones@redhat.com>

	Update PO files for release.

	Check for ocaml-xml-light-devel (xml-light.cmxa)
	Also unquote $pkg since OCaml package names can never contain
	spaces or other unfriendly characters.

	Prepare for version 1.0.78

2009-11-10  Jim Meyering  <meyering@redhat.com>

	tell "make syntax-check" that examples/to-xml.c is exempt from some tests
	* .x-sc_prohibit_strcmp: Exempt examples/to-xml.c.
	* .x-sc_prohibit_strcmp_and_strncmp: Likewise.

2009-11-10  Richard Jones  <rjones@redhat.com>

	examples: Don't use STREQ etc in the to-xml.c example.

	Don't export STREQ and friends in <guestfs.h>
	Move these to private header file(s) and other places as required
	since these aren't part of the public API.

	Fix problems found by 'make syntax check'

	Print timestamped messages during appliance launch.
	In verbose mode, print timestamped messages during guestfs_launch
	so we can see how long each step takes.

2009-11-10  Richard Jones  <rjones@redhat.com>

	Record time of guest launch.
	The guest handle field start_t was previously used (when we
	had the wait_ready call), but had fallen into disuse.  Note
	that it could never be accessed through the API.

	Rename this field as launch_t, convert it to a timeval, and
	use it to measure the time since guestfs_launch was called
	so that we can start profiling guest launch.

2009-11-10  Richard Jones  <rjones@redhat.com>

	appliance: Prefix kernel messages with timestamp.

2009-11-10  Richard Jones  <rjones@redhat.com>

	Generic partition creation interface.
	This commit introduces a generic partition creation interface
	which should be future-proof and extensible, and partially
	replaces the old sfdisk-based interface.

	The implementation is based on parted but is hopefully not too
	dependent on the particulars of parted.

	The following new calls are introduced:

	  guestfs_part_init:
	    Initialize a disk with a partition table.  Unlike the sfdisk-
	    based interface, we also support GPT and other partition
	    types, which is essential to scale to devices larger than 2TB.

	  guestfs_part_add: Add a partition to an existing disk.

	  guestfs_part_disk:
	    Convenience function which combines part_init & part_add,
	    creating a single partition that covers the whole disk.

	  guestfs_part_set_bootable:
	  guestfs_part_set_name:
	    Set various aspects of existing partitions.

	  guestfs_part_list:
	    List partitions on a device.  This returns a programming-friendly
	    list of partition structs (in contrast to sfdisk-l which cannot
	    be parsed).

	  guestfs_part_get_parttype:
	    Return the partition table type, eg. "msdos" or "gpt".

	The following calls are planned, but not added currently:

	  guestfs_part_get_bootable
	  guestfs_part_get_name
	  guestfs_part_set_type
	  guestfs_part_get_type

2009-11-10  Richard Jones  <rjones@redhat.com>

	Add ata_piix to kernel module whitelist (RHBZ#533886).

	Fix compilation if readline library is not present.

	Fix compilation when Augeas is not present.
	It would complain that NEED_AUG macro was defined but not used.

2009-11-10  Jim Meyering  <meyering@redhat.com>

	avoid "syntax-check" failure: hide cast of argument to free
	* fuse/guestmount.c (fg_readlink): Perform cast in a
	 separate statement to hide it from "make syntax-check".

	build: die early if we lack ocaml, ocamlfind or ocaml-xml-light
	* autogen.sh: Ensure that we fail very early when not building
	from a tarball and when one of those is not installed.

2009-11-09  Jim Meyering  <meyering@redhat.com>

	tests: enable strcmp-related syntax-check tests
	* cfg.mk (local-checks-to-skip): Don't skip these checks:
	sc_prohibit_strcmp_and_strncmp, sc_prohibit_strcmp.

	change strncasecmp() == 0 to STRCASEEQLEN()
	git grep -l 'strncasecmp *([^=]*== *0'|xargs \
	  perl -pi -e 's/\bstrncasecmp( *\(.*?\)) *== *0\b/STRCASEEQLEN$1/g'

	change strncasecmp() == 0 to STRCASENEQLEN()
	git grep -l 'strncasecmp *([^=]*!= *0'|xargs \
	  perl -pi -e 's/\bstrncasecmp( *\(.*?\)) *!= *0\b/STRCASENEQLEN$1/g'

	use STREQ, not strcmp: part 2
	git grep -l 'strcmp *([^=]*!= *0'|xargs \
	  perl -pi -e 's/\bstrcmp( *\(.*?\)) *!= *0\b/STRNEQ$1/g'

	use STREQ, not strcmp: part 1
	git grep -l 'strcmp *([^=]*== *0'|xargs \
	  perl -pi -e 's/\bstrcmp( *\(.*?\)) *== *0/STREQ$1/g'

	change strncmp() == 0 to STREQLEN()
	git grep -l 'strncmp *([^=]*== *0'|xargs \
	  perl -pi -e 's/\bstrncmp( *\(.*?\)) *== *0\b/STREQLEN$1/g'

	change strncmp(...) != 0 to STRNEQLEN(...)
	git grep -l 'strncmp *([^=]*!= *0'|xargs \
	  perl -pi -e 's/\bstrncmp( *\(.*?\)) *!= *0/STRNEQLEN$1/g'

	convert strcasecmp(...) != 0 to STRCASENEQ(...)
	git grep -E -l 'strcasecmp *\(.*!= ?0\b'|xargs \
	  perl -pi -e 's/\bstrcasecmp( ?\(.*?\)) != 0/STRCASENEQ$1/g'

	convert uses of strcasecmp to STRCASEEQ
	git grep -l 'strcasecmp *([^=]*== *0'| xargs \
	  perl -pi -e 's/\bstrcasecmp( *\(.*?\)) *== *0/STRCASEEQ$1/'

	define STREQ, STRNEQ, STREQLEN, STRCASEQ, etc.
	* src/guestfs.h: Define STREQ and company.
	* daemon/daemon.h: Likewise.
	* hivex/hivex.h: Likewise.

	indent with spaces, not TABs
	* HACKING: Expand indentation TABs.
	* configure.ac: Likewise.
	* daemon/daemon.h: Likewise.
	* daemon/guestfsd.c: Likewise.
	* fuse/guestmount.c: Likewise.
	* hivex/LICENSE: Likewise.
	* src/generator.ml: Likewise.
	* tools/virt-win-reg: Likewise.

	fix doc typo
	* fuse/guestmount.pod: Avoid "the the".

	placate 'make syntax-check'
	* hivex/hivex.c: Remove unused "#include <assert.h>".

	avoid syntax-check warning about isdigit use in example program
	* .x-sc_avoid_ctype_macros: New file.

2009-11-09  Richard Jones  <rjones@redhat.com>

	appliance: Enhance mkfs to support many more filesystem types.
	This fixes support for NTFS, and adds support for:
	 - reiserfs
	 - btrfs
	 - GFS and GFS2
	 - JFS
	 - HFS and HFS+
	 - NILFS
	 - OCFS2 (disabled)

	We don't enable OCFS2 by default, because it pulls in about
	140 extra packages into the appliance.

	GFS & GFS2 default to single node (no lock manager etc).

2009-11-09  Richard Jones  <rjones@redhat.com>

	Fix prototype of commandv to match prototype of commandrv.

2009-11-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Always reflect command stderr to stderr when debugging.
	When debugging (ie. LIBGUESTFS_DEBUG=1 & verbose flag set in daemon)
	always reflect any stderr output from commands that we run to
	stderr of the daemon, so it is visible.

	Previously if stderror == NULL in command*, stderr output was
	just eaten and discarded which meant useful error messages could
	be lost.

2009-11-09  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Add flags argument to command*() functions.
	This adds new variations of the command*() functions which
	take a 'flags' argument.  Currently the only flag available
	is defined as follows:

	 COMMAND_FLAG_FOLD_STDOUT_ON_STDERR: For broken external commands
	 that send error messages to stdout (hello, parted) but that don't
	 have any useful stdout information, use this flag to capture the
	 error messages in the *stderror buffer.  If using this flag,
	 you should pass stdoutput as NULL because nothing could ever be
	 captured in that buffer.

	This patch also adds some documentation for command*()
	function.

2009-11-09  Richard Jones  <rjones@redhat.com>

	haskell: Disambiguate truncate symbol.
	This is a hack, but GHC doesn't like it if we have a symbol
	with the same name as one in the Haskell Prelude.  Therefore
	we much hide the corresponding symbol in the Prelude when
	building this module.

	ocaml: Update dependencies file.

2009-11-06  Richard W.M. Jones  <rjones@redhat.com>

	ocaml: Sort the dependencies so they are stable between machines.

	ocaml: General improvements to generated code.

	Fixes for compiling on 32 bit.

2009-11-05  Richard Jones  <rjones@redhat.com>

	Don't update appliance after running generator.
	I'm not sure why these dependencies exist, but they cause the
	appliance to be updated every time the generator runs, which
	appears to be unnecessary.

	appliance: Add xfsprogs to list of packages

2009-11-04  Richard Jones  <rjones@redhat.com>

	fish: Allow <nn>P and <nn>E for petabyte and exabyte allocations.

	fish: Allow <nn>T for terabyte allocations.

2009-11-04  Richard Jones  <rjones@redhat.com>

	fish: New command 'sparse', like 'alloc' but to generate sparse files.
	With sparse you can make sparse files, which is fun because you
	can experiment with really large devices:

	  ><fs> sparse /tmp/test.img 100G
	  ><fs> run
	  ><fs> sfdiskM /dev/vda ,
	  ><fs> mkfs ext2 /dev/vda1    # very long pause here ...
	  ><fs> mount /dev/vda1 /

	To see the real (ie. allocated) size of the sparse file, use the du
	command, eg:

	  ><fs> !du -h /tmp/test.img
	  1.6G -rw-rw-r-- 1 rjones rjones 100G 2009-11-04 17:40 /tmp/test.img

2009-11-04  Richard Jones  <rjones@redhat.com>

	daemon: Build daemon with AC_SYS_LARGEFILE.

2009-11-04  Richard Jones  <rjones@debian5x64.home.annexia.org>

	Debian: Use /bin/bash as the shell for regression test scripts.
	/bin/sh on Debian is a minimal shell called 'dash' which doesn't
	support some features we need such as the particular 'function'
	syntax used by regressions/test-stringlist.sh, and therefore
	this script was failing on Debian.

	Change all of these scripts to use #!/bin/bash explicitly to avoid
	these sorts of problems.

2009-11-04  Richard Jones  <rjones@debian5x64.home.annexia.org>

	daemon: When running external commands, open stdin as /dev/null
	Previously when we ran external commands from the daemon, stdin
	(ie. fd 0) was closed.  This caused a problem when running the
	external hexdump command which seems to break if stdin is closed.

	This patch opens stdin on /dev/null.

2009-11-04  Richard Jones  <rjones@debian5x64.home.annexia.org>

	Debian: Include ISOFS driver in the kernel.

	Debian: Ignore Debian appliance root when looking for translatable files.

	debian: Ignore some generated debirf files.

2009-11-04  Richard Jones  <rjones@redhat.com>

	configure: Fix summary messages.
	The following 3 summary messages in the configure output
	always displayed "yes" even if they were not actually
	enabled.

	Haskell bindings .................... yes
	virt-inspector ...................... yes
	virt-* tools ........................ yes

	Fixed by correcting the code that tests if the automake
	conditional is set.

2009-11-04  Jim Meyering  <jim@meyering.net>

	hivex: fail upon integer overflow
	* hivex/hivex.c (windows_utf16_to_utf8): Avoid overflow and a
	potential infloop.

2009-11-04  Richard Jones  <rjones@redhat.com>

	hivex: Check unchecked calloc (Jim Meyering).

2009-11-03  Richard Jones  <rjones@redhat.com>

	Update PO files.

	Fix EXTRA_DIST line in fuse/Makefile.am.

	Add make.sh.in to EXTRA_DIST.

	Comment out code which provokes strange gcc optimization error.

	Prepare for 1.0.77.

2009-11-03  Richard Jones  <rjones@redhat.com>

	FUSE filesystem support.
	This implements FUSE filesystem support so that any libguestfs-
	accessible disk image can be mounted as a local filesystem.

	Note: file writes (ie. write(2) system call) is not yet implemented.

	The API needs more test coverage, particularly lesser-used system
	calls.

	The big unresolved issue is UID/GID mapping between guest filesystem
	IDs and the host.  It's not easy to automate this because you need
	extra details about the guest itself in order to get to its
	UID->username map (eg. /etc/passwd from the guest).

2009-11-03  Richard Jones  <rjones@redhat.com>

	Allow callers to disable the recovery process.

2009-11-02  Richard Jones  <rjones@redhat.com>

	New API call: pread
	guestfs_pread lets you do partial file reads from arbitrary
	places within a file.  It works like the pread(2) system call.

	New API calls: lstatlist, lxattrlist, readlinklist.
	These three functions are very specifically designed for FUSE
	support, so we can list directories efficiently.  Instead of
	making lots of lstat, lgetxattr and readlink calls, we can make just
	three calls per directory to grab all the attributes (which we
	then cache briefly).

2009-11-02  Richard Jones  <rjones@redhat.com>

	New API calls: truncate, truncate_size, mkdir_mode, utimens, lchown.
	truncate, truncate_size: Used to truncate files to a particular
	size, or to zero bytes.

	mkdir_mode: Like mkdir but allows you to also specify the
	initial permissions for the new directory.

	utimens: Set timestamp on a file with nanosecond accuracy.

	lchown: Corresponding to lchown(2) syscall (we already have chown).

	The implementation is complicated by the fact that we had to
	add an Int64 parameter type to the generator.

2009-11-02  Richard Jones  <rjones@redhat.com>

	examples/to-xml.c: Don't depend on Gnulib function.
	Since this program is just an example, it shouldn't require
	the Gnulib c-ctype functions.

2009-11-02  Richard Jones  <rjones@redhat.com>

	appliance: Don't rebuild the appliance every time configure runs.
	config.status touches make.sh each time it runs, even if the
	resulting script would not change.  This causes the appliance
	to get rebuilt much more frequently than is necessary.

	There's no way to stop configure running, but we can move the
	config.status command into a Makefile rule to stop this
	undesirable behaviour.

2009-11-02  Richard Jones  <rjones@redhat.com>

	guestfish: Fix a third indentation problem.

	guestfish: Another indentation fix.

2009-11-02  Richard Jones  <rjones@redhat.com>

	guestfish: Fix printing of buffers in structs.
	Somehow an 'indent' string crept in there, so it was printing:

	  <char><indent><char><indent><char>...

	instead of:

	  <char><char><char>...

2009-11-02  Richard Jones  <rjones@redhat.com>

	Fix rstructs_used handling in guestfish generated code.
	rstructs_used wasn't correctly generating code for guestfish
	because guestfish doesn't make all functions visible.  Since the
	calculation of rstructs_used was over all functions (including
	ones not available in guestfish) it could have generated
	unnecessary functions.

	In fact this error didn't affect us before - but I discovered
	it when I added some extra struct-returning functions (future
	commit).

2009-11-02  Richard Jones  <rjones@redhat.com>

	daemon: Don't warn on -Wunsafe-loop-optimizations.
	Ignore -Wunsafe-loop-optimizations, same as in the top level
	configure file.

2009-10-29  Richard Jones  <rjones@redhat.com>

	Add hivex* documentation to website.

	Add HTML documentation to website.

	Prepare for 1.0.76.

	Fix misspelling in previous commit.

	RHEL 5: Also add le{16,64}toh functions

	RHEL 5: Detect endianness functions and supply them.

	Add virt-win-reg to toplevel Makefile.am, fix POTFILES.in

	Prepare for version 1.0.75.

2009-10-29  Richard Jones  <rjones@redhat.com>

	Support for Windows Registry.
	In hivex/:  This mini-library allows us to extract Windows
	Registry binary files ("hives").

	There are also two tools: hivexml converts a hive to a
	self-describing XML format.  hivexget can be used to extract
	single subkeys from a hive.

	New tool: virt-win-reg.  This is a wrapper around the library
	functionality allowing you to pull out data from the registries
	of Windows guests.

2009-10-26  Richard Jones  <rjones@redhat.com>

	New API: vfs_type - get the Linux VFS driver for a mounted device.

	Modify Sys::Guestfs::Lib::resolve_windows_path to use case_sensitive_path.

2009-10-26  Richard Jones  <rjones@redhat.com>

	guestfish: Add win: prefix to use Windows paths.
	Add a win: prefix for path arguments in guestfish:

	><fs> file win:c:\windows\system32\config\system.log
	MS Windows registry file, NT/2000 or above

2009-10-26  Richard Jones  <rjones@redhat.com>

	daemon: Change chdir to use openat/fdopendir.
	Uses Gnulib implementation of openat which should be portable.

2009-10-26  Richard Jones  <rjones@redhat.com>

	New API: case-sensitive-path to return case sensitive path on NTFS 3g fs
	This function handles an annoyance/peculiarity of the Linux
	NTFS 3g driver, which is that it exports NTFS filesystems with
	names case sensitive, even though under Windows they would be
	case insensitive.

	This causes problems because the location of (eg.) c:\windows
	might appear as /windows or /WINDOWS (etc) depending on the
	inconsequential details of how it was originally created.

	Example of this problem on a real Windows guest:

	  ><fs> file /windows/system32/config/system.log
	  libguestfs: error: file: access: /windows/system32/config/system.log: No such file or directory
	  ><fs> case-sensitive-path /windows/system32/config/system.log
	  /WINDOWS/system32/config/system.LOG
	  ><fs> file /WINDOWS/system32/config/system.LOG
	  MS Windows registry file, NT/2000 or above

2009-10-26  Richard Jones  <rjones@redhat.com>

	inspector: Remove inaccurate paragraph from documentation.

2009-10-25  Richard Jones  <rjones@redhat.com>

	Include HFS (Mac OS X) driver.

2009-10-21  Richard Jones  <rjones@redhat.com>

	Set LC_ALL=C before running qemu.

2009-10-21  Matthew Booth  <mbooth@redhat.com>

	init: Check that start_udev succeeded
	If start_udev fails for any reason, notice and fall through to manual /dev
	creation.

	Patch from Charles Duffy <charles@dyfis.net>

2009-10-20  Richard Jones  <rjones@redhat.com>

	Version 1.0.74.

	Tab to space fixes, now passes 'make syntax-check'

	guestfs_find: Fix memory leak of sysrootdir.

	virt-ls: Modify to use find0 instead of find.
	find0 is more scalable than find.  virt-ls will no longer
	crash if asked to recursively list / on a Linux guest.

2009-10-20  Richard Jones  <rjones@redhat.com>

	New API: find0 (unlimited version of find)
	This adds a new API call guestfs_find0, which is like guestfs_find
	but mainly doesn't suffer from the protocol limit of the earlier
	command.  The earlier command is not deprecated because it is
	still very useful.

	guestfs_find0 uses a FileOut parameter and writes the results to
	an external file.  The filenames in the output are separated by
	ASCII NUL characters (so a bit like "find -print0").

	There is also the addition of a regression test for this command.

2009-10-20  Richard Jones  <rjones@redhat.com>

	guestfs_find: Document protocol limits for this API call.
	guestfs_find has to send the complete list of files in a single
	protocol message (hence, limited to 2-4 MB).  Unfortunately on
	a typical Linux guest, guestfs_find ("/") will exceed this limit
	resulting in an error.

	Therefore we should add an unlimited version of this call in a
	future commit.  This commit just documents the current limit.

2009-10-20  Richard Jones  <rjones@redhat.com>

	New tool: virt-ls
	This tool makes available the functionality of "ls", "ll", and "find"
	in a slightly simpler to use form.

	Examples:

	  virt-ls -l myguest /tmp

2009-10-20  Richard Jones  <rjones@redhat.com>

	New tool: virt-tar
	This adds a new tool call virt-tar which is a general purpose
	archive and uploading tool.  It doesn't add any functionality
	which wasn't previously possible using guestfish, but makes it
	simpler to access for some users.

	Examples:

	 virt-tar -zx myguest /home home.tar.gz
	 virt-tar -zu myguest uploadstuff.tar.gz /tmp

2009-10-19  Richard Jones  <rjones@redhat.com>

	tools: Make warnings about running on live guests more prominent.
	Add prominent warnings to the man pages about how it is dangerous
	to run these tools against live guests.

2009-10-19  Richard Jones  <rjones@redhat.com>

	Move virt tools (virt-cat, virt-edit etc) into tools/ subdirectory.
	This moves the tool programs into a single directory:
	  cat/* -> tools/virt-cat
	  df/* -> tools/virt-df
	  edit/* -> tools/virt-edit
	  rescue/* -> tools/virt-rescue

	This in itself simplifies the build process because we only need
	one Makefile and one copy of 'run-locally'.

	'run-*-locally' has become just 'run-locally' and takes an extra
	parameter which is the name of the tool, eg:
	  run-locally cat [virt-cat params...]

	virt-inspector stays in its own directory, because this contains
	more than just a single Perl script.

2009-10-19  Richard Jones  <rjones@redhat.com>

	Comment: Describe the build order requirements for toplevel directories.

2009-10-14  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.73.

	Add some missing EXTRA_DIST files.

2009-10-13  Richard Jones  <rjones@trick.home.annexia.org>

	inspector: Generate language bindings for OCaml.
	This commit adds a generic mechanism for deriving language bindings
	for virt-inspector, and implements one concrete binding, for OCaml.

	The bindings are generated from the RELAX NG schema (virt-inspector.rng)
	which is supposed to be a correct and always up to date description
	of the XML that the virt-inspector program can generate.

	From the RNG we generate a set of types to describe the output of
	virt-inspector for the language, plus an XML parser, plus some
	glue code to actually run an external instance of virt-inspector
	and parse the resulting XML.

	At runtime, an external 'virt-inspector --xml <name>' command runs
	and the XML is parsed into language-specific structures.

	This has been tested on the four example files (inspector/example?.xml)

	The only particular difficulty about the OCaml binding is the use of
	Obj.magic, which is naughty but works because of the isomorphism
	between the representation of tuples and records in OCaml.  This
	seems to cause no problems in my test program.  Apart from this, the
	OCaml binding is straightforward and could be adapted easily for any
	other languages that want type-safe virt-inspector bindings.

	It's important to keep virt-inspector.rng up to date with changes
	to virt-inspector's XML output format.

2009-10-05  Jim Meyering  <meyering@redhat.com>

	build: avoid parallel ocaml/... build failure
	A parallel build could fail due to the use in ocaml/examples
	of ocaml/guestfs.cmi before it was built.
	* Makefile.am (SUBDIRS): Add both ocaml and ocaml/examples,
	to ensure they're built in this order, and not in parallel.
	* ocaml/Makefile.am (SUBDIRS): Don't define.

2009-10-05  Piotr Drąg  <piotrdrag@gmail.com>

	Updated Polish translation

2009-10-02  Richard Jones  <rjones@trick.home.annexia.org>

	inspector: Fix inspector/Makefile.am
	Accidentally pushed the older version of the patch in
	commit 9d25e82491ddcf495e1d30694327e4bfd3a23445.

	This includes Jim Meyering's suggested changes from
	https://www.redhat.com/archives/libguestfs/2009-October/msg00017.html

2009-10-02  Jim Meyering  <meyering@redhat.com>

	build: fix compile error
	Link demo scripts with just-build library, not the installed one.
	* ocaml/examples/Makefile.am (OCAMLFINDFLAGS): New variable.
	(lvs, viewer): Use it.
	This fix is based on a suggestion from Rich Jones.
	This addresses RHBZ#526917.

2009-10-02  Richard Jones  <rjones@trick.home.annexia.org>

	inspector: Add tests for RELAX NG schema.

	inspector: Add RELAX NG schema for virt-inspector --xml output.

	configure: Update comment about viewer.ml.

2009-10-01  Richard Jones  <rjones@trick.home.annexia.org>

	inspector: Canonicalize device names (fix RHBZ#526717).
	Make filesystem device names canonical, so they are /dev/sd*
	instead of /dev/vd*.

	run-*-locally: The programs are now virt-[tool], not virt-[tool].pl
	This fixes commit b488436cc54288fcae8988493749f2e6c87f274c.

2009-10-01  Richard Jones  <rjones@trick.home.annexia.org>

	inspector: Don't bomb if no kernels detected.
	If $os->{kernels} wasn't defined, virt-inspector would exit with
	an error, leaving partial XML output.

	Change the code so it doesn't die in this case, instead just
	leaves out the <kernels> section.

2009-09-30  Richard Jones  <rjones@trick.home.annexia.org>

	OCaml viewer: Use ocamlduce to replace xpath code.

2009-09-29  Richard Jones  <rjones@trick.home.annexia.org>

	OCaml viewer: Handle exceptions properly.

2009-09-29  Richard Jones  <rich@koneko.home.annexia.org>

	OCaml example: graphical disk usage viewer.
	This is an example of how to write an app which uses libguestfs
	and libvirt, and has a responsive user interface (using threads).
	It is a Gtk-based "graphical virt-df".

	Read the top of the 'viewer.ml' file first for instructions on
	how to compile.  This program is not compiled by default.

2009-09-24  Richard Jones  <rjones@trick.home.annexia.org>

	virt-df: Add note about parsing CSV.

2009-09-24  Jim Meyering  <meyering@redhat.com>

	avoid use of all ctype macros
	* cfg.mk (disable_temporarily): Don't disable sc_avoid_ctype_macros.
	* fish/tilde.c: Remove unnecessary inclusion of ctype.h.
	* bootstrap: Add gnulib's c-ctype module to the list.
	* daemon/m4/gnulib-cache.m4: Likewise.
	* daemon/ext2.c: Include "c-ctype.h", not <ctype.h>.
	Use c_isspace, etc, rather than isspace.
	* daemon/guestfsd.c: Likewise.
	* daemon/lvm.c: Likewise.
	* daemon/proto.c: Likewise.
	* fish/fish.c: Likewise.
	* fish/tilde.c: Likewise.
	* src/generator.ml: Likewise.
	* src/guestfs.c: Likewise.
	* examples/to-xml.c: Likewise.
	* examples/Makefile.am (to_xml_CPPFLAGS): Add -I$(top_srcdir)/gnulib/lib
	so inclusion of "c-ctype.h" works.
	(to_xml_CPPFLAGS): Rename from to_xml_CFLAGS.

	maint: prune dead wood from list of skipped syntax-check rules
	* cfg.mk (local-checks-to-skip): Remove now-passing and
	no-longer-relevant rule names.

2009-09-24  Jim Meyering  <meyering@vv.meyering.net.meyering.net>

	maint: use spaces, not TABs for indentation
	"make syntax-check" was failing.  This fixes it.
	* HACKING: Indent with spaces, not TABs.
	* configure.ac: Likewise.
	* rescue/virt-rescue: Likewise.
	* src/generator.ml: Likewise.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Prepare for 1.0.72.
	Also update PO files.

	More HTMLFILES.

	Include virt tools in EXTRA_DIST.
	Partially revert b488436cc54288fcae8988493749f2e6c87f274c.
	It turns out that automake doesn't automatically place bin_SCRIPTS
	in EXTRA_DIST.

	Rename virt-[tool].pl as virt-[tool]

	Check return value from readlink.

	Create manpage atomically.
	Don't fail with a partial file if disk full, etc.

	Replace @...@ with $(...) in these common Makefile.am files.

	guestfish: Update 'SEE ALSO' section of the manpage.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	New tool: virt-edit
	Edit any file in a guest.  This was possibly previously
	using guestfish, but having a separate command makes it
	simpler.

	The usage is simply:

	  virt-edit mydomain /some/file

	It runs $EDITOR or vi on the file, and if the user changes
	it, uploads the result back to the VM.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	virt-cat: Remove some unused Perl module includes.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Add 'virt-rescue' command.
	This command runs a "rescue appliance" against a virtual machine
	or disk image.  This is useful for making ad-hoc interactive
	changes to virtual machines.

	  $ virt-rescue --ro /dev/vg_trick/F11x64

	  Welcome to virt-rescue, the libguestfs rescue shell.

	  Note: The contents of / are the rescue appliance.
	  You have to mount the guest's partitions under /sysroot
	  before you will be able to examine them.

	  bash: cannot set terminal process group (-1): Inappropriate ioctl for device
	  bash: no job control in this shell
	  ><rescue> mount /dev/vg_f11x64/lv_root /sysroot
	  EXT4-fs (dm-0): barriers enabled
	  kjournald2 starting: pid 269, dev dm-0:8, commit interval 5 seconds
	  EXT4-fs (dm-0): internal journal on dm-0:8
	  EXT4-fs (dm-0): delayed allocation enabled
	  EXT4-fs: file extents enabled
	  EXT4-fs: mballoc enabled
	  EXT4-fs (dm-0): mounted filesystem with ordered data mode
	  ><rescue> ls /sysroot/
	  bin   dev  home  lib64       media  opt   root  selinux  sys  usr
	  boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var
	  ><rescue> exit

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Add direct appliance mode flag and implementation.
	When the g->direct flag is set, the appliance stdin/stdout
	are not connected to the library.  Instead they inherit the
	stdin/stdout of the caller.

	This is used to implement virt-rescue.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Tidy up appliance rescue code.
	The appliance shouldn't run the daemon after we leave the
	rescue shell.  It should just exit instead.

2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Rejig configure.ac tests for qemu vmchannel support.
	vmchannel is no longer required, so we shouldn't test for it.
	However we should test instead for user mode networking support.

	Also fix up the documentation / error messages.

	Always test for vmchannel and user mode networking support in
	qemu.  This gives us more troubleshooting information if people
	report bugs.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Prepare for 1.0.71.
	Update version number and update PO files.

	Put latest version and release date on the website front page.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Change handling of spaces on Linux kernel command line.

	Update documentation of qemu / vmchannel.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Implement "null vmchannel" - no vmchannel needed!
	This commit removes the requirement for vmchannel, although retaining
	support for it.

	In this configuration, known as "null vmchannel", the library
	listens on a random loopback port.  It passes the number of this
	port to the appliance (guestfs_vmchannel=tcp:10.0.2.2:12345), and
	the daemon then connects back.  The library, instead of connecting,
	listens and accepts the connection during guestfs_launch.

	QEMU SLIRP (user mode networking) is still required to make this
	work: SLIRP forwards the TCP connection transparently (instead of
	explicitly as with guestfwd) to 127.0.0.1:<port>

	There is a window in which any other local process on the machine
	could see the port number in the qemu command line and try to
	connect to it.  This would be a devastating security hole, because
	any local process could pretend to be the daemon and feed back
	malicious replies to our remote procedure calls.  To prevent this,
	we check the UID of the other side of the TCP connection.  If
	the UID is different from the library's EUID, then we reject the
	connection.  To do this we have to parse /proc/net/tcp.  (On Solaris
	we could use getsockopt (SO_PEERCRED), but this doesn't work on
	Linux TCP sockets).

	Other vmchannel(s) are still supported.  This is important, because
	we can't in general be sure the qemu will always support SLIRP.
	In particular, in recent versions of qemu it is possible to compile
	out SLIRP.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Gnulib: Add arpa-inet and netinet-in modules.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Flexible guestfs_vmchannel parameter for future appliances.
	This reimplements parts of commit da0a4f8d1f6ddd302ceba028d87c6e009589e503
	in a different, but compatible way.

	We pass guestfs_vmchannel=tcp:<ip>:<port> on the command line.  This
	is intended to be used as follows (now and in future versions):

	  tcp:10.0.2.4:6666    for guestfwd vmchannel
	  tcp:10.0.2.2:<port>  for future "no vmchannel" implementation
	  /dev/vcon4           for future virtio-console vmchannel*

	It also accepts the old-style guestfs=10.0.2.4:6666 parameter which
	is sent by older libraries, and turns this transparently into the
	correct format above.

	If no guestfs_vmchannel is passed, then this defaults to the guestfwd
	vmchannel which older libraries would expect.

	* Maybe this last one should be dev:/dev/vcon4 or file:/dev/vcon4, but
	we don't need to decide that now.

2009-09-22  Richard Jones  <rjones@trick.home.annexia.org>

	Rearrange and tidy up code in guestfsd.c
	This just tidies up the main() function in the daemon.  There is
	no longer a huge fixed-sized buffer used for the kernel command
	line.  Variables are moved closer to where they are used.  Some
	local variables turned out to be unused - these are removed.  Finally
	the part that reads the kernel command line is moved into a separate
	function.

	There is only minimal functional change here (it now prints out
	the kernel command line).

	Literal '4' replaced with 'sizeof' expression, at Jim Meyering's
	suggestion during patch review.

2009-09-21  Richard Jones  <rjones@trick.home.annexia.org>

	Make GUESTFWD_PORT into a string.

	Remove unnecessary extra space from qemu command line.

2009-09-21  Richard Jones  <rjones@trick.home.annexia.org>

	Remove guestfs_wait_ready (turn it into a no-op).
	This commit changes guestfs_launch so that it both launches
	the appliance and waits until it is ready (ie. the daemon communicates
	back to us).

	Since we removed the pretence that we could implement a low-level
	asynchronous API, the need to call launch() followed by wait_ready()
	has looked a bit silly.

	Now guestfs_wait_ready() is basically a no-op.  It is left in the
	API for backwards compatibility.  Any calls to guestfs_wait_ready()
	can be removed from client code.

2009-09-21  Richard Jones  <rjones@trick.home.annexia.org>

	Combine temporary buffers.
	buf[], append[] and memsize_str[] were all temporary buffers
	used in non-overlapping code.

	Combine them to use a single buffer (buf[]).

2009-09-21  Richard Jones  <rjones@trick.home.annexia.org>

	Rearrange qemu command line order (no functional change).

2009-09-18  Richard Jones  <rjones@trick.home.annexia.org>

	Enable new-style -chardev ... guestfwd command line.
	Newer versions of qemu have changed the command line format
	(again).  '-net channel' is now deprecated.  Instead we use:

	    -chardev socket,id=guestfsvmc,path=/path/to/sock,server,nowait
	    -net user,vlan=0,net=10.0.2.0/8,guestfwd=tcp:10.0.2.4:6666-chardev:guestfsvmc
	    -net nic,model=ne2k_pci,vlan=0

	The old style format is still used if the new style is not
	detected at runtime.

2009-09-17  Richard Jones  <rjones@trick.home.annexia.org>

	Fix code which looked for leaked FDs between each command.
	This code was not checking the return value from system()
	so it failed if uncommented.  Add ignore_value() around the
	call to system.  However, leave the code still disabled.

2009-09-17  Richard Jones  <rjones@trick.home.annexia.org>

	Remove explicit guestfs=10.0.2.4:6666 kernel command line parameter.
	Since we control the appliance tightly, we can just specify
	that it will always use a particular host and port, and we
	don't need to pass it on the command line each time.

	Also the VMCHANNEL_* constants are only relevant to the
	particular guestfwd vmchannel implementation, so we rename
	them as GUESTFWD_*.

2009-09-17  Richard Jones  <rjones@trick.home.annexia.org>

	Daemon: fix handling of errors from xread and xwrite.
	If xread or xwrite returns -1, that indicates an error and we
	should exit.  Note that xread/xwrite has already printed the
	error message.

2009-09-17  Richard Jones  <rjones@trick.home.annexia.org>

	Fix verbose packet dumping functions.
	Add the configure parameter --enable-packet-dump so that this
	code can be enabled without editing the source.

	This code is normally commented out, because it is too verbose
	unless you happen to be debugging the underlying protocol.  Because
	it is normally commented out, I found it had bit-rotted slightly.
	This commit also fixes the obvious problems.

2009-09-17  Richard Jones  <rjones@trick.home.annexia.org>

	'len' should be an unsigned 32 bit int.
	This only happened to work by accident before because 'unsigned len'
	happens to be 32 bit on all platforms we support.

	Disable -Wunsafe-loop-optimizations
	This warning indicates that GCC could not do a particular sort
	of loop optimization.  It pops up randomly in certain forms of
	looping code, and seems safe to ignore.

2009-09-15  Richard Jones  <rjones@trick.home.annexia.org>

	Update PO files (no functional change).

	Prepare for version 1.0.70.

	Update PO files.

2009-09-15  Richard Jones  <rjones@trick.home.annexia.org>

	Set minimum gettext version to 0.17.
	This fixes the problem that the 1.0.69 tarball would fail in
	the po/ subdirectory when installing:

	make[1]: Entering directory `/builddir/build/BUILD/libguestfs-1.0.69/po'
	/bin/sh @MKINSTALLDIRS@ /builddir/build/BUILDROOT/libguestfs-1.0.69-1.fc11.x86_64/usr/share
	/bin/sh: @MKINSTALLDIRS@: No such file or directory
	make[1]: Leaving directory `/builddir/build/BUILD/libguestfs-1.0.69/po'

	RHEL 5.3 has gettext 0.14.6.  However the tarball will still
	build (since it includes all the required code).  This may cause
	a problem if RHEL users want to build from the git repository.

2009-09-15  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Fix comparison between signed and unsigned (for RHEL 5).

2009-09-14  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Move decl out for C99 compliance.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Update PO files.

	Move guestfs-internal-actions.h to EXTRA_DIST.

	Prepare for 1.0.69.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Remove main loop.
	This commit removes the external main loop, which never worked
	and caused a number of bugs.  Requests are now done synchronously,
	and if the user wants to have requests issued in the background
	or to have a responsive GUI, then they'll just have to use threads.

	The big change is to push all reads and writes through two
	functions called send_to_daemon (for writes) and recv_from_daemon
	(for reads) which operate synchronously.  These functions
	read/write whole messages, and also handle checking for EOF
	(ie. daemon died) and asynchronous log message events from
	qemu (eg. from debug / dmesg printed by the guest).  A more
	complete description of how these work can be found in the code.

	This code passes a complete run of the tests.

	Bugs believed to be fixed by this commit:

	  https://bugzilla.redhat.com/show_bug.cgi?id=501888
	  internal error: reply callback called twice

	  https://bugzilla.redhat.com/show_bug.cgi?id=504418
	  In virt-inspector: "download: guestfs_download reply failed, see earlier error messages"

	I have tried to avoid reintroducing this:

	  https://bugzilla.redhat.com/show_bug.cgi?id=508713
	  libguestfs: error: write: Broken pipe (guestfish only)

	One other benefit of this is that 'set_busy/end_busy' calls
	no longer appear in traces.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Don't enable trace in set_trace test.
	This leaves trace enabled afterwards, resulting in some
	ugly test messages.

	Fix type punning warning about use of CMSG_DATA in Rawhide.

2009-09-14  Matthew Booth  <mbooth@redhat.com>

	guestfish: Enable grouping in string lists
	This change adds the ability to group entries in a string list with single
	quotes. So the string:
	  "'foo bar'"
	becomes 1 token rather than 2. Consequently single quotes must now be escaped:
	  "\'"
	resolves to a literal single quote.

	Incidentally, this change also alters another, probably unintentional behaviour
	of the previous implementation, in that tokens are separated by any amount of
	whitespace rather than a single whitespace character. I.e.:
	  "a  b"
	resolves to:
	  'a' 'b'
	rather than:
	  'a' '' 'b'
	That last syntax can be used if an empty argument is still desired. Whitespace
	is now also defined to include tabs.

	parse_string_list can also now fail if it contains an unmatched open quote.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Ignore localrepo/ directory.
	This can be used by people building from source and packagers for
	their own purposes.

	Add command trace functionality.
	Enable this by calling guestfs_trace (handle, 1) or by
	setting the LIBGUESTFS_TRACE=1 environment variable.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Non-daemon actions indirect through generated code.
	Previously non-daemon actions were called directly by
	user code, eg:

	/* Non-generated */
	int
	guestfs_set_verbose (guestfs_h *g, int v)
	{
	  g->verbose = !!v;
	  return 0;
	}

	This changes these actions so they go indirectly via
	some generated code, eg:

	/* Generated */
	int guestfs_set_verbose (guestfs_h *g,
			int verbose)
	{
	  return guestfs__set_verbose (g, verbose);
	}

	/* Non-generated */
	int
	guestfs__set_verbose (guestfs_h *g, int v)
	{
	  g->verbose = !!v;
	  return 0;
	}

	The aim is to have a place in the generated code where
	we can add debug or tracing information for these non-
	daemon calls.

2009-09-14  Matthew Booth  <mbooth@redhat.com>

	guestfish: Redirect stdout when executing remote commands
	guestfish --listen necessarily redirects its stdout to /dev/null so as not to
	interfere with eval. The remote protocol doesn't contain any other provision for
	collecting stdout for the caller, so executing guestfish --remote will never
	generate any output.

	This patch fixes that by forwarding the caller's STDOUT to the listener over the
	unix socket connection. The listener redirects its STDOUT to the caller's STDOUT
	for the duration of the command, then closes it again.

2009-09-14  Richard Jones  <rjones@trick.home.annexia.org>

	Update TODO list

	Add diffutils package.
	On Fedora 12, /usr/bin/cmp is not pulled in unless we explicitly
	add the diffutils package.

2009-09-14  Matthew Booth  <mbooth@redhat.com>

	Add echo_daemon command
	echo_daemon is a simple echo which can be used to test connectivity between the
	client and daemon.

2009-09-11  Matthew Booth  <mbooth@redhat.com>

	generator.ml: Fix string list memory leak
	Parsed string lists are allocated by malloc, but were never freed.

2009-09-09  Richard Jones  <rjones@trick.home.annexia.org>

	Ignore some more m4 files.

	Don't include gnulib files in POTFILES.in.

2009-09-04  Jim Meyering  <meyering@redhat.com>

	avoid build-from-scratch failure due to missing daemon/configure
	* bootstrap: Don't use autoreconf's --norecursive
	option.  We require the default --recursive behavior in order
	to create daemon/configure.  Reported by Matthew Booth.

2009-08-31  Jim Meyering  <meyering@redhat.com>

	maint: guestfs.c: avoid warning about possible NULL deref from llvm/clang
	* src/guestfs.h (guestfs_abort_cb): Declare with attribute noreturn.

	maint: guestfs.c: remove unnecessary initialization
	* src/guestfs.c (guestfs__receive_file_sync): Don't set "r",
	only to ignore it.

2009-08-28  Jim Meyering  <meyering@redhat.com>

	generator.ml: avoid a warning about signed overflow in tests.c
	* src/generator.ml: Emit "unsigned long int n_failed;" rather than
	"int failed;", to avoid warning from gcc about "assuming signed
	overflow does not occur when simplifying conditional to constant".

	generator.ml: avoid defined-but-not-used warnings in guestfs_c_actions.c
	* src/generator.ml (emit_ocaml_copy_list_function): New function.
	Emit a function definition only if it will be used.

	generator.ml: avoid warnings in generated ocaml/guestfs_c_actions.c
	* src/generator.ml: Emit prototypes for ocaml_guestfs_* functions,
	to avoid warnings from gcc -Wmissing-prototypes.  Normally we'd put
	these somewhere else, but in this unusual case, they're not needed
	anywhere else.  Handle the >5-argument case, too, for these:
	ocaml_guestfs_test0_byte, ocaml_guestfs_sfdisk_byte,
	ocaml_guestfs_sfdisk_N_byte.

2009-08-27  Jim Meyering  <meyering@redhat.com>

	build: enable gcc warnings in capitests/ and ocaml/
	* capitests/Makefile.am: Use $(WARN_CFLAGS) and $(WERROR_CFLAGS).
	* ocaml/Makefile.am:: Likewise.

	ocaml/guestfs_c.c: avoid warning about missing prototypes
	* ocaml/guestfs_c.c (ocaml_guestfs_create, ocaml_guestfs_close): Declare.

	ocaml/guestfs_c.c: avoid warning about initialization discarding "const"
	* ocaml/guestfs_c.c (guestfs_custom_operations): Add a cast.

	ocaml/guestfs_c.c avoid signed/unsigned-comparison warning
	* ocaml/guestfs_c.c (ocaml_guestfs_strings_val): Declare index as
	unsigned int.

2009-08-25  Jim Meyering  <meyering@redhat.com>

	build: use only one m4/ directory
	* Makefile.am (ACLOCAL_AMFLAGS): Specify only one include dir: m4.
	* bootstrap: Tell gnulib-tool to put .m4 files in m4/, not gnulib/m4.
	* autogen.sh: Move autoreconf from here into...
	* bootstrap: ...here, so that it is run only when gnulib-tool is.
	Also, tell it to skip the usual autopoint and libtoolize runs.
	* m4/.gitignore: Update.

	build: invoke autopoint with --force
	* bootstrap: Invoke autopoint with --force, to avoid warning
	about existing build-aux/config.rpath.
	Invoke libtoolize before gnulib-tool, to avoid spurious warnings.
	* autogen.sh: Add comments.
	Remove build-aux/config.rpath before running autoreconf.

	build: update gnulib submodule to latest
	* .gnulib: Update to latest.

2009-08-24  Jim Meyering  <meyering@redhat.com>

	build: don't define _GNU_SOURCE manually
	Now that we're using gnulib in earnest, any manual definition
	would provoke a redefinition warning.
	* fish/fish.c (_GNU_SOURCE): Don't define.
	* fish/destpaths.c (_GNU_SOURCE): Likewise.
	* src/guestfs.c (_GNU_SOURCE): Likewise.
	* bootstrap (modules): Add asprintf, strchrnul, strerror, strndup
	and vasprintf.
	* fish/fish.c (main): Set argv[0] to sanitized program_name, so
	functions like getopt_long that use argv[0] use the clean name.

	guestfish: diagnose stdout write failure
	Use gnulib's closeout module to ensure any failure to write to
	stdout is detected and reported.
	* fish/fish.c: Include "closeout.h".
	(main): Call atexit (close_stdout);
	* bootstrap (modules): Add closeout.

	guestfish: don't try to diagnose getopt failure
	* fish/fish.c: ... getopt_long already does that.  Instead, suggest
	"Try `guestfish --help' for more information."

	guestfish: write --help to stdout, use gnulib's progname module
	* fish/fish.c: Include "progname.h".
	(main): Call set_program_name to initialize.
	Don't hard-code guestfish everywhere.  Use program_name.
	However, be careful when modifying argv[0], since it is used
	in the hopes that it is an absolute file name.
	(usage): Don't spew all of --help for a mis-typed option.
	Split long lines.

	build: avoid some autoconf warnings
	* configure.ac: Move gl_EARLY and gl_INIT to be earlier.

2009-08-24  Richard Jones  <rjones@trick.home.annexia.org>

	Todo: ntfsclone.

2009-08-22  Richard Jones  <rjones@trick.home.annexia.org>

	Add waitpid along guestfs_close path (RHBZ#518747).

2009-08-21  Jim Meyering  <meyering@redhat.com>

	fish/: enable -Werror and all of gcc's warning options
	* fish/Makefile.am: Use $(WARN_CFLAGS) $(WERROR_CFLAGS).

	generator.ml: avoid signed/unsigned-comparison warning in fish/cmds.c
	* src/generator.ml (emit_print_list_function): Emit code that doesn't
	evoke warnings.  s/int/unsigned int/
	(emit print_*_indent): Likewise, s/int/unsigned int/

	destpaths.c: avoid signed/unsigned-comparison warning
	* fish/destpaths.c (free_words): Change param type: s/int/size_t/.

	fish.c: don't perform arithmetic on void* pointers
	* fish/fish.c (xwrite): Use char*.

	fish.c: avoid signed/unsigned-comparison warning
	* fish/fish.c (script): Change type of index to "unsigned int".

	fish.c: avoid "assignment discards qualifiers..." warning
	* fish/fish.c (main): Cast-away-const.
	* fish/fish.h (bad_cast): Define.  Safer than using an actual cast.

	tilde.c: avoid a warning
	* fish/tilde.c (find_home_for_username): Change param type: s/int/size_t/
	(try_tilde_expansion): Adjust caller.

	fish.c: avoid warnings
	* fish/rc.c (UNIX_PATH_MAX): Remove unused definition.
	* fish/fish.h (rc_listen): Declare with __attribute__((noreturn)).

	edit.c: avoid warning about signed/unsigned comparison
	* fish/edit.c (load_file): Change type of param from int to size_t.
	(do_edit): Adjust caller.

2009-08-20  Richard Jones  <rjones@trick.home.annexia.org>

	Remove virt-v2v.  New repo: http://gitorious.org/virt-v2v/

2009-08-20  Jim Meyering  <meyering@redhat.com>

	daemon: diagnose socket write failure
	* daemon/proto.c (send_chunk): Don't ignore socket-write error.
	* daemon/proto.c (send_file_end): Return "int", not void,
	so we can propagate send_chunk failure to caller.
	* daemon/daemon.h (send_file_end): Update prototype.
	* daemon/tar.c (do_tar_out, do_tgz_out): Update uses of send_file_end.
	* daemon/upload.c (do_download): Likewise.

2009-08-19  Richard W.M. Jones  <rjones@redhat.com>

	tests: Found three more references to the squashfs, replaced with ISO.

2009-08-19  Richard Jones  <rjones@trick.home.annexia.org>

	tests: namemax on ISO devices is 255
	Was 256 for the old squashfs device.

2009-08-19  Matthew Booth  <mbooth@redhat.com>

	Cleanup initialisation of hash entries in Lib.pm

2009-08-19  Richard Jones  <rjones@debian5x64.home.annexia.org>

	tests: Use ISO instead of squashfs.
	The squashfs format changes too much.  Use an ISO file for
	the tests instead.

2009-08-19  Richard W.M. Jones  <rjones@redhat.com>

	mke2fs: Use e4fsprogs programs if available.
	On RHEL 5, mke2fs is ancient, and there is a non-standard "mke4fs"
	binary which acts like the more recent mke2fs on Fedora.  Since there
	are several annoyances and actual bugs in the ancient RHEL 5 mke2fs,
	use mke4fs instead if it's available.

	tests: modprobe fat instead of ext2 module.
	On RHEL 5, ext2 is compiled into the kernel, so trying to modprobe
	it will fail.  I've checked that fat.ko is always a module on the
	platforms we care about (RHEL 5, Fedora 11, Debian), so use that
	to test instead.

2009-08-19  Richard W.M. Jones  <rjones@redhat.com>

	tests: Conditionally skip UUID tests.
	More tests introduced which break with old e2fsprogs that didn't
	support UUIDs.  Skip those tests when the old platform is
	detected.

	Also tidy up this code a little.

2009-08-19  Jim Meyering  <meyering@redhat.com>

	avoid build failure due to Haskell keyword clash
	* src/generator.ml: Fix this particular problem by
	renaming the "module" parameter to "modulename".
	Avoid the general problem by ensuring that no parameter name is
	in the set of nearly all Haskell, OCaml and C reserved words.
	(zfile): Adjust one more offender: s/method/meth/.

2009-08-19  Matthew Booth  <mbooth@redhat.com>

	Export inspect_linux_kernel in Lib.pm

	Add boot/grub_fs to output
	If present, this gives the mount point of the filesystem which contains grub.
	All entries in grub.conf will be relative to this filesystem.

2009-08-19  Jim Meyering  <meyering@redhat.com>

	guestfish: detect more failed syscalls
	* fish/fish.c (issue_command): Detect/diagnose more failed syscalls.

2009-08-19  Richard Jones  <rjones@trick.home.annexia.org>

	Prepare for version 1.0.68.

	guestfs_launch: Correct checks for dup failure.

	Updated PO files.

	build: Comment out some unused macros.
	GCC 4.4.1 warns about some unused macros.  Comment these out
	while they are not used.

2009-08-18  Jim Meyering  <meyering@redhat.com>

	build: new configure-time option: --enable-gcc-warnings
	* configure.ac: Define/configure it.
	* src/Makefile.am: Use new variables.

	suppress warnings from -Wmissing-noreturn
	Even though these functions are marked as "not implemented yet",
	and they will surely return a value once implemented, ...
	* src/guestfs.c (select_add_timeout): Declare with noreturn attribute.
	(select_remove_timeout): Likewise.

	suppress a warning from -Wswitch-default
	* src/guestfs.c (guestfs_end_busy): Add a "default:" label.

	suppress signed/unsigned-comparison warnings
	* src/guestfs.c [struct guestfs_h] (msg_in_size, msg_in_allocated):
	(msg_out_size, msg_out_allocated): Change type from int to unsigned int.

	build: don't perform arithmetic on void* pointers
	* src/guestfs.c (receive_file_data_sync, xread, xwrite): Use char*.

	generator.ml: suppress signed/unsigned-compare warnings
	* src/generator.ml (check_reply_header): Emit parameter declarations
	that are unsigned, so as to avoid signed/unsigned-compare warnings.

	build: suppress an ignored-dup-return-value warning
	* src/guestfs.c (guestfs_launch): Handle dup failure.

	build: suppress an ignored-write-return-value warning
	* bootstrap (modules): Add ignore-value.
	* src/guestfs.c: Include "ignore-value.h".
	(stdout_event): Ignore failure to write to stderr.
	Also, prefer STDERR_FILENO over the literal "2".
	* src/Makefile.am (libguestfs_la_CPPFLAGS): Include gnulib's .h files.
	(libprotocol_la_CFLAGS): Remove -Wall -Wno-unused.

2009-08-18  Matthew Booth  <mbooth@redhat.com>

	New 'modprobe' command.
	Allow kernel modules to be loaded into the appliance.

2009-08-18  Jim Meyering  <meyering@redhat.com>

	avoid compiler warnings about unused vars in generated code
	* fish/Makefile.am: Compile rc_protocol.c into a convenience library,
	so it can have its own CFLAGS, and link that into guestfish.

	generator.ml: Use TABs, not spaces for indentation.

2009-08-18  Richard Jones  <rjones@trick.home.annexia.org>

	generator: Small code rearrangement.
	Move code which updates pod2text memo file into a separate function.

2009-08-18  Jim Meyering  <meyering@redhat.com>

	generator.ml: do not emit unused print_* functions
	* src/generator.ml: Do not emit functions like print_xattr,
	print_lvm_vg, print_inotify_event, that are not used.

	generator.ml: do not emit unused print_*_list functions
	* src/generator.ml (emit_print_list_function): New function.
	Emit a function definition only if it will be used.

	generator.ml: avoid warnings in generated tests.c
	* src/generator.ml: Avoid warnings in generated tests.c, regarding
	print_strings, and in exercising any function that takes a StringList
	or DeviceList parameter.
	(print_strings): Change param type to "char *const *s".
	Declare fully-const initializer for each list-taking function use.
	Cast *List argument to "(char **)".

	avoid compiler warnings about unused vars in generated code
	* src/Makefile.am: Compile protocol.c into a convenience library, so it
	can have its own CFLAGS, and link that with the destination one.

2009-08-18  Richard Jones  <rjones@trick.home.annexia.org>

	Implement 'debug ls' and 'debug ll' commands.
	These commands can be used to list files in the appliance.

2009-08-17  Jim Meyering  <meyering@redhat.com>

	generator.ml: Use TABs, not spaces for indentation.

2009-08-17  Richard W.M. Jones  <rjones@redhat.com>

	Ignore manywarnings.m4 / warnings.m4.

	java: Small fix to Java bindings.
	Missing declaration of local variable 'i'.

	HACKING: Document make targets and ./configure --enable-gcc-warnings.

	Remove redundant macro.

2009-08-17  Jim Meyering  <meyering@redhat.com>

	indent with spaces, not TABs

	daemon: enable -Werror and many gcc warnings when --enable-gcc-warnings
	* daemon/m4/gnulib-cache.m4: Add two modules: manywarnings, warnings.
	* daemon/configure.ac: Implement --enable-gcc-warnings, and selectively
	disable a few warning options that are either not useful or that provoke
	too many warnings for now.
	Define and AC_SUBST WARN_CFLAGS and WERROR_CFLAGS.
	* daemon/Makefile.am (guestfsd_CFLAGS): Use $(WARN_CFLAGS)
	and $(WERROR_CFLAGS), rather than just -Wall.

	xattr.c: avoid warning about comparison between signed and unsigned
	* daemon/xattr.c (getxattrs): Use an unsigned index.

	guestfsd: don't ignore failed write-to-socket
	* daemon/proto.c (reply): Fix typo that would cause us to ignore
	failed write-to-socket.

	daemon.h: avoid warning about possible noreturn function
	* daemon/daemon.h (main_loop): Use "noreturn" attribute.

	sfdisk.c, fallocate.c: use a string literal as format
	* daemon/fallocate.c (do_fallocate): Format was not a string literal.
	* daemon/sfdisk.c (sfdisk): Likewise.

	wc, blockdev: avoid warnings about discarding "const" qualifiers
	* daemon/wc.c (wc): Make "flag" param const.
	* daemon/blockdev.c (call_blockdev): Likewise, for "switc".

	daemon/zero: don't ignore write and close errors
	* daemon/zero.c (do_zero): Detect write and close errors.

	guestfsd.c: don't perform arithmetic on void pointers
	* daemon/guestfsd.c (xread, xwrite): Use char* pointers instead.

	command.c: avoid shadowing a global function
	* daemon/command.c (do_sh_lines, do_sh): Do not shadow global "command".

	avoid warning about old-style no-param function definition
	* daemon/df.c (do_df, do_df_h): Add "void".
	* sync.c (do_sync): Likewise.

	generator.ml: emit slightly prettier code
	* src/generator.ml: Emit a few omitted newlines.

	python: avoid "_POSIX_C_SOURCE" redefinition warning
	* src/generator.ml: Include <Python.h> *before* <stdio.h>
	to avoid redefinition warning about "_POSIX_C_SOURCE".

	adjust const "**" pointers to avoid warnings
	Also, ...
	* src/generator.ml: Add DeviceList type, and propagate that change
	out to all calling/interface code.

2009-08-16  Richard Jones  <rjones@trick.home.annexia.org>

	test-tool: Recognize '-t timeout' as an option.

2009-08-15  Richard W.M. Jones  <rjones@redhat.com>

	New commands: mkfs-b, mke2journal*, mke2fs-J*
	mkfs-b: Pass the -b (blocksize) parameter to mkfs.

	mke2journal and friends: Lets you create external ext2 journals on
	devices.

	mke2fs-J and friends: Lets you create ext2/3/4 filesystems with
	external journals.

2009-08-15  Richard W.M. Jones  <rjones@redhat.com>

	generator: Generate the UUIDs for tests randomly.
	Adds a uuidgen function which gets the random UUID from the
	uuid program.  Uses this for tests.

2009-08-14  Jim Meyering  <meyering@redhat.com>

	Merge branch '226-elide'

	build: avoid "make sytnax-check" failure
	* daemon/configure.ac: Change a leading TAB to 8 spaces.

	generator.ml: don't emit unused functions
	* src/generator.ml: Use "rstructs_used" to emit definitions only for
	put_TYPE_list functions that are used.

	generator.ml: factor out a function
	* src/generator.ml (emit_put_list_function): New function.

2009-08-14  Richard W.M. Jones  <rjones@redhat.com>

	Work out which RStruct/RStructList structs are really used, and how.

2009-08-13  Richard Jones  <rjones@trick.home.annexia.org>

	guestfish: Add --selinux option.

	Version 1.0.67.

2009-08-13  Jim Meyering  <meyering@redhat.com>

	tests: increase likelihood that heap abuse triggers failure
	* regressions/Makefile.am (TESTS_ENVIRONMENT): Always set
	MALLOC_PERTURB_ to a random value in 1..255.

2009-08-13  Richard Jones  <rjones@trick.home.annexia.org>

	appliance: Remove /usr/sbin/tcpd - it's unreadable on RHEL 5.4.

	appliance: Replace LANG=C with LC_ALL=C

	umount: Enable device name translation for device parameter.

	mount: Check mountpoints are absolute paths.

2009-08-13  Richard Jones  <rjones@centos5x32.home.annexia.org>

	selinux: Don't fail if libselinux is not found.

2009-08-13  Richard Jones  <rjones@trick.home.annexia.org>

	Misc parameters which are String but should be Pathname.

	In rmmountpoint, have to explicitly check for ABS_PATH (*not* NEED_ROOT).

	inotify-add-watch does not need to explicitly check for ABS_PATH.

	cp/cp-a/mv parameters marked as Pathname.

	do_equal does not need to explicitly check for NEED_ROOT/ABS_PATH.

2009-08-13  Jim Meyering  <meyering@redhat.com>

	generator.ml: convert leading TABs to spaces

	sfdisk: guard against buffer overflow
	* daemon/sfdisk.c (sfdisk): Don't let outrageous "extra_flag"
	or "device" strings overflow a fixed-size buffer.

	do_umount: don't use RESOLVE_DEVICE anymore
	* daemon/mount.c (do_umount): Don't use RESOLVE_DEVICE here,
	now that the caller always invokes REQUIRE_ROOT_OR_RESOLVE_DEVICE.

	generator.ml: factor out "pr_args n" function

	generator.ml: finish adding Dev_or_Path support
	* src/generator.ml: Update all rules to handle Dev_or_Path.
	(the above changes to generator.ml are mostly mechanical)
	Emit a use of REQUIRE_ROOT_OR_RESOLVE_DEVICE.
	* daemon/upload.c (do_download): Remove use of
	REQUIRE_ROOT_OR_RESOLVE_DEVICE, now that it's automatically done
	in calling code.
	* daemon/file.c (do_file): Likewise.

	generator.ml: add type: Dev_or_Path
	* src/generator.ml (file, download): Use it.

	generator.ml: constify do_mkdtemp
	* daemon/dir.c (do_mkdtemp): Rewrite for a "const" parameter.
	* src/generator.ml (mkdtemp): Declare parameter to be of type Pathname.

	generator.ml: move String/Device decls "down" to definition

	generator.ml: use new "Pathname" designation
	Nearly every file-related function in daemons/*.c is affected:
	Remove this pair of statements from each affected do_* function:
	-  NEED_ROOT (return -1);
	-  ABS_PATH (dir, return -1);
	and change the type of the corresponding parameter to "const char *".
	* src/generator.ml: Emit NEED_ROOT just once, even when there are two or
	more Pathname args.

	generator.ml: new type, "Pathname"
	* src/generator.ml: Emit NEED_ROOT and ABS_PATH into generated
	stubs.c, rather than requiring they be added manually at the start
	of each and every do_* function that operates on a "path" parameter.
	Update grammar: Pathname is just a String, with the above exception.
	Do not update augeas "path" parameters, since they are not file names,
	but rather ":"-separated search paths.  Except aug_init, for which
	"path" *is* a file name.

	generator.ml: emit "const char *" for Device and String params
	* src/generator.ml: Emit "const char *", not "char *" for Device and
	String params, now that the non-const code is hoisted into the calling
	code in stubs.c.

	fix daemon.h's use of NEED_ROOT-in-#define

	update all NEED_ROOT uses
	run this command:
	  git grep -l -w NEED_ROOT|xargs perl -pi -e \
	    's/(NEED_ROOT) \((.*?)\)/$1 (return $2)/'

	* src/generator.ml: Change all `String "device"' to `Device "device"'.
	Then update each affected function, removing each uses of RESOLVE_DEVICE,
	now that it's generated in caller from stub.c.
	* daemon/blockdev.c (call_blockdev): Remove use of RESOLVE_DEVICE.
	* daemon/devsparts.c (do_mkfs): Likewise.
	* daemon/ext2.c (do_e2fsck_f, do_get_e2label, do_get_e2uuid): Likewise.
	(do_resize2fs, do_set_e2label, do_set_e2uuid, do_tune2fs_l): Likewise.
	* daemon/fsck.c (do_fsck): Likewise.
	* daemon/grub.c (do_grub_install): Likewise.
	* daemon/lvm.c (do_lvremove, do_pvcreate, do_pvremove): Likewise.
	(do_pvresize): Likewise.
	* daemon/mount.c (do_mount_vfs): Likewise.
	* daemon/ntfs.c (do_ntfs_3g_probe): Likewise.
	* daemon/scrub.c (do_scrub_device): Likewise.
	* daemon/sfdisk.c (sfdisk, sfdisk_flag): Likewise.
	* daemon/swap.c (do_mkswap, do_mkswap_L, do_mkswap_U): Likewise.
	(do_swapoff_device, do_swapon_device): Likewise.
	* daemon/zero.c (do_zero): Likewise.
	* daemon/zerofree.c (do_zerofree): Likewise.

	update generator to emit each RESOLVE_DEVICE call
	* src/generator.ml: Emit RESOLVE_DEVICE (device, goto done);
	just before each Device-enabled do_$FUNCTION.

	s/NEED_ROOT_OR_IS_DEVICE/REQUIRE_ROOT_OR_RESOLVE_DEVICE/

	guestfsd.c: correct s/IS_DEVICE/RESOLVE_DEVICE/ in another comment

	manually adjust ABS_PATH uses for new semantics
	* daemon/file.c (do_cat): fix an ABS_PATH use

	update all uses of ABS_PATH
	run this command:
	  git grep -l -w ABS_PATH|xargs perl -pi -e \
	    's/(?:ABS_PATH)( \(.*?,) (.*?)\)/ABS_PATH$1 return $2)/'

	propagate semantic changes to NEED_ROOT, NEED_ROOT_OR_IS_DEVICE
	changing IS_DEVICE semantics leads to changing semantics of
	NEED_ROOT_OR_IS_DEVICE and NEED_ROOT, too.
	* daemon/daemon.h: Update definitions.

	convert the last few, manually

	change almost all uses: s/IS_DEVICE/RESOLVE_DEVICE/
	Use this command:
	  git grep -l -w IS_DEVICE|xargs perl -pi -e \
	    's/\b(?:IS_DEVICE)\b( \(.*?,) (.*?)\)/RESOLVE_DEVICE$1 return $2)/'

	* daemon/daemon.h (RESOLVE_DEVICE): Rename from IS_DEVICE.
	Change parameter from "errcode" (which would be returned) to "fail_stmt"
	so that a caller can specify e.g., "goto done" upon failure.

	generator.ml: define new String-like type: "Device"

2009-08-13  Matthew Booth  <mbooth@redhat.com>

	Don't assume grub is on a separate boot filesystem
	Paths in grub.conf are relative to the filesystem containing it. grub parsing
	currently assumes that it is on /boot, and will fail if it isn't, for example
	because a guest only has a single partition.

	This patch makes grub parsing work harder to work out what grub paths are
	relative to. Firstly, it looks for a previous detected 'linux-grub' filesystem.
	If this isn't found, it tries to work out which filesystem contains
	/boot/grub/menu.lst and uses that.

2009-08-13  Richard W.M. Jones  <rjones@redhat.com>

	add_drive: Don't use cache=off if not supported by underlying filesystem.
	If you use the guestfs_add_drive function, then currently it
	generates a qemu command line element like:

	  -drive ...,cache=off,...

	This causes qemu to try to open the device with O_DIRECT.
	Unfortunately some filesystems don't support this flag, notably tmpfs,
	which means you can't use libguestfs in conjunction with tmpfs.  On
	some systems /tmp is a tmpfs filesystem.

	This patch fixes this so that if the filesystem doesn't support
	O_DIRECT, then we omit the cache=off parameter.  This seems reasonable
	from a reliability point of view, because if you're using tmpfs then
	you probably didn't expect reliability in the case where your system
	suddenly powers off.

2009-08-13  Richard Jones  <rjones@trick.home.annexia.org>

	Add 'setcon', 'getcon' commands to set and get the SELinux context.

2009-08-12  Richard Jones  <rjones@trick.home.annexia.org>

	Return error if allocations fail.

	Add documentation for SELinux configuration.
	Also use L</...> to link between sections.

	Spelling fix: labelled -> labeled.

	If using SELinux, mount /selinux in the appliance.
	If selinux=1 on the Linux kernel command line, then we mount
	/selinux in the appliance.  We will also bind-mount this
	directory into guests when we run commands.

	Allow selinux=? kernel flag to be controlled.
	Adds new API calls to set and get this flags.

2009-08-12  Jim Meyering  <meyering@redhat.com>

	fish: don't read freed memory
	* fish/rc.c (rc_remote): Close file handle only *after* xdr_destroy,
	because that latter may flush its file handle (implicated via
	xdrstdio_create).  FYI, this failure is triggered for me only when
	MALLOC_PERTURB_ is set to nonzero < 256 in my environment.

	doc: improve emacs snippets
	* HACKING: Make (setq indent-tabs-mode nil) apply to nearly all
	files, not just C-mode ones.

2009-08-12  Richard Jones  <rjones@trick.home.annexia.org>

	Fix regression test rhbz503169c10.sh.
	'll' command has changed semantics very slightly
	(see commit 6727e7c8bdf1cb39264a9de6333d228b51c39956).
	We need to fix this test so it doesn't try to run
	the ll command without a mounted disk.

2009-08-11  Richard Jones  <rjones@trick.home.annexia.org>

	Add contents of /proc/mounts to the debugging information.

2009-08-11  Jim Meyering  <meyering@redhat.com>

	daemon/ls: make do_ll require root, like all the rest
	* ls.c (do_ll): Do invoke "NEED_ROOT" here, and add a FIXME to
	provide a "debug ll" command with the semantics we're removing.

2009-08-10  Jim Meyering  <meyering@redhat.com>

	build: avoid first-time configure-from-clone failure
	* bootstrap: Run autopoint before using the file it creates,
	po/Makevars.template.  Reported by Richard Jones.  Details here:
	https://www.redhat.com/archives/libguestfs/2009-August/msg00135.html

	build: enable automake's silent rules option
	* configure.ac: Use AM_SILENT_RULES([yes]).
	Those who want verbose build output may configure with
	--disable-silent-rules or use "make V=1".
	* daemon/configure.ac: Likewise.

2009-08-10  Jim Meyering  <meyering@redhat.com>

	build: daemon/do_debug: parameters aren't always unused
	* daemon/debug.c (MAYBE_UNUSED): Define.
	(do_debug): Mark parameters as unused only when they really
	are unused.  Spotted by Richard Jones.

	SCALAR(0xdd8370)
	prefer sizeof *VAR sizeof TYPE (no semantic change)

2009-08-10  Jim Meyering  <meyering@redhat.com>

	build: avoid warnings in daemon/inotify.c
	Avoid "comparison between signed and unsigned integer expressions"
	warnings.  If it's at all hard or risky to avoid this type of warning,
	then it's not worthwhile.  Here, it's easy and safe.
	* daemon/inotify.c (inotify_posn): Declare local to be of unsigned type.
	(do_inotify_read, do_inotify_files): Likewise.

	build: avoid warnings in daemon/guestfsd.c
	* daemon/guestfsd.c (print_arginfo, print_shell_quote): Mark each
	"info" parameter as unused.

	build: avoid warnings in daemon/debug.c
	* daemon/debug.c (do_debug): Mark parameters as unused.

	define ATTRIBUTE_UNUSED
	* daemon/daemon.h (__attribute__, ATTRIBUTE_UNUSED): Define.

	daemon/file.c: remove duplicate absolute-path check
	* daemon/file.c (do_file): Remove redundant use of ABS_PATH.
	It's redundant because the preceding line invokes NEED_ROOT_OR_IS_DEVICE,
	which also invokes ABS_PATH.

2009-08-07  Richard Jones  <rjones@trick.home.annexia.org>

	Tidy up generation of java/Makefile.inc.
	(Just whitespace and comment changes, and small restructuring
	of the code).

2009-08-07  Richard Jones  <rjones@trick.home.annexia.org>

	Debug: Improve the way the qemu command line is printed.
	Change the way the qemu command is displayed to look like
	this:

	/usr/bin/qemu-kvm \
	    -drive file=/tmp/test.img,cache=off,if=virtio \
	    -m 500 \
	    -no-reboot \
	    -kernel /tmp/libguestfsHBJHRh/kernel \
	    -initrd /tmp/libguestfsHBJHRh/initrd \
	    [...]

	This allows the command line to be copied and pasted directly
	into the shell, and also makes it simpler to read.

2009-08-07  Richard Jones  <rjones@trick.home.annexia.org>

	Allow network interface to be configured.
	Add ./configure --with-net-if=(virtio|ne2k_pci) option.

	This lets you workaround the following virtio_net bug:

	https://bugzilla.redhat.com/show_bug.cgi?id=516022

2009-08-07  Richard Jones  <rjones@trick.home.annexia.org>

	Tests: swapon_device test mkswap /dev/sda1 instead of /dev/sdb.
	On RHEL 5, mkswap /dev/sdb fails, even with the '-f' option
	(contradictory to what the manual page says).

	This commit adds a new 'InitPartition' initialization which
	just creates /dev/sda1, and then does the swap test on that.

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	Always pass mkswap -f parameter.
	Otherwise mkswap will give a silly error if you ask it to
	swap on a whole device.

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	Tests: Don't test block size in statvfs test.
	The block size changes between kernel releases, causing
	a false failure in the tests.  The error was:

	test_statvfs_0: bsize was 65536, expected 131072

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.66

	RHEL 5: inotify_init1 call did not exist on RHEL 5.

	Fix: segfault in tab completion (RHBZ#516024).
	Actually this fixes two bugs: 'strs' was not being freed on every
	path, and the tab completion segfault described in the bug report.

2009-08-06  Matthew Booth  <mbooth@redhat.com>

	Fix errno check in readdir in devsparts.c

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	Add ne2k-pci driver to the appliance.
	This allows people to use the ne2k-pci network driver, for those
	situations where the virtio_net driver is broken (cough 516022 cough).

	Make user network numbering explicit.
	Use:
	 -net user,vlan=0,net=10.0.2.0/8
	just to make the (already implicit) 10.0.2.x network explicit.

	appliance: More debug added to /init.

2009-08-06  Matthew Booth  <mbooth@redhat.com>

	Exclude daemon/lib and daemon/tests from being added to po/POTFILES.in

2009-08-06  Jim Meyering  <meyering@redhat.com>

	build: remove bootstrap's --gnulib-srcdir option
	...because it probably didn't work, and even if it did, we've
	discovered that using a separate git repo like that can lead
	to subtle mix-ups.
	Also, fix invocation of gnulib-tool in daemon/.

	build: fix build failure
	* bootstrap (gnulib_tool): Create lib and tests directories
	under daemon/ before running gnulib-tool there.

	daemon: use gnulib
	* daemon/Makefile.am (SUBDIRS): Define.
	(AM_CPPFLAGS): Define, to include from gnulib's lib/
	(LDADD): Define, to link with gnulib's libgnu.a.
	* daemon/configure.ac: Use AC_CONFIG_AUX_DIR([build-aux]),
	gl_EARLY and gl_INIT.
	(AC_CONFIG_FILES): Add lib/Makefile and tests/Makefile
	* daemon/m4/gnulib-cache.m4: New file, generated by running
	../.gnulib/gnulib-tool --import --with-tests hash
	* daemon/.gitignore: Ignore all of the imported files.
	build: tell bootstrap about daemon/
	* bootstrap: Run gnulib-tool --update in daemon/.
	Remove bootstrap's --gnulib-srcdir option, because it probably
	didn't work, and even if it did, we've discovered that using
	a separate git repo like that can lead to subtle mix-ups.

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	appliance: Include more debug output in the /init script.
	Output more debugging information from this script, to enhance the
	usefulness of LIBGUESTFS_DEBUG output.

2009-08-06  Matthew Booth  <mbooth@redhat.com>

	Recognise cd-rom devices in devsparts.c
	Also:
	* Un-duplicate device detection code by creating a common mapping function.
	* Add some more comments.

2009-08-06  Matthew Booth  <mbooth@redhat.com>

	Fix test failures in upload and download (RHBZ#515764)
	The tests hardcoded an MD5 of the test file, COPYING.LIB, whose contents had
	change. This change causes it to compute the MD5 rather than hardcoding it.

	OCaml provided by rjones.

2009-08-06  Richard Jones  <rjones@trick.home.annexia.org>

	Add copyright and license notice to regressions/test-noexec-stack.pl

2009-08-05  Matthew Booth  <mbooth@redhat.com>

	Add some newly-untracked files to .gitignore

2009-08-05  Matthew Booth  <mbooth@redhat.com>

	Fix swapon_label test
	The swapon label test has a side-effect, in that it creates a new partition.
	This causes the later failure of the list_partitions test.

	This change causes the swapon_label test to zero /dev/sdb after the test, and
	then re-read the partition table.

2009-08-05  Matthew Booth  <mbooth@redhat.com>

	Add resultant change to po/POTFILES.in
	I missed this when committing 7e9cb884492aec243337ffc8e4432a9ff2690956

	Add a test for an executable stack in resultant binaries

2009-08-05  Jim Meyering  <meyering@redhat.com>

	build: generate some just-removed files in po/
	* bootstrap: Generate po/Makevars and po/LINGUAS.

2009-08-04  Jim Meyering  <meyering@redhat.com>

	build: remove trailing blank lines; enable the syntax-check rule
	* cfg.mk (disable_temporarily): Remove sc_prohibit_trailing_blank_lines.
	* appliance/Makefile.am: Remove trailing blank line(s).
	* appliance/debian/modules/y0_install-guestfsd: Likewise.
	* appliance/make.sh.in: Likewise.
	* appliance/packagelist.in: Likewise.
	* appliance/update.sh.in: Likewise.
	* haskell/run-bindtests: Likewise.
	* ocaml/run-bindtests: Likewise.
	* python/run-python-tests: Likewise.
	* recipes/squashfs.example: Likewise.
	* ruby/run-ruby-tests: Likewise.

	build: exempt symlinks from trailing-blank-line prohibition
	* cfg.mk (sc_prohibit_trailing_blank_lines): Exempt symlinks.

	build: enable syntax-check: TAB-only indentation in Makefiles
	* cfg.mk (disable_temporarily): Remove sc_makefile_TAB_only_indentation.

	build: tweak HACKING so we pass "make syntax-check"
	* HACKING: Convert leading TABs.

	build: remove trailing blanks, enable syntax-check
	* regressions/test-cancellation-download-librarycancels.sh:
	* src/generator.ml:
	* cfg.mk (disable_temporarily): Remove sc_trailing_blank.
	* .x-sc_trailing_blank: New file.

	maint: use COPYING.LIB version 2.1
	* COPYING.LIB: Update to 2.1.
	* .x-sc_TAB_in_indentation: Also exempt COPYING.LIB.

	build: don't emit trailing blanks, remove generated file
	* ocaml/Makefile.am (.depend): Don't redirect directly to $@.
	Filter out trailing blanks.
	* ocaml/.depend: Regenerate.

	build: remove more files added by ./autogen.sh
	* po/LINGUAS: Remove file.
	* po/Makefile.in.in: Likewise.
	* po/Makevars: Likewise.
	* po/Rules-quot: Likewise.
	* po/boldquot.sed: Likewise.
	* po/en@boldquot.header: Likewise.
	* po/en@quot.header: Likewise.
	* po/insert-header.sin: Likewise.
	* po/quot.sed: Likewise.
	* po/remove-potcdate.sin: Likewise.

	build: tell aclocal to search gnulib/m4, too
	* Makefile.am (ACLOCAL_AMFLAGS): Append "-I gnulib/m4".

2009-08-03  Jim Meyering  <meyering@redhat.com>

	Document and enforce the new spaces-only indentation policy.
	* cfg.mk (disable_temporarily): Remove sc_TAB_in_indentation,
	to enable the "make syntax-check" that enforces this.
	* .x-sc_TAB_in_indentation: New file.  Exceptions.
	* HACKING: Document the policy, with tips on how to conform.

2009-08-03  Jim Meyering  <meyering@redhat.com>

	Convert all TABs-as-indentation to spaces.
	Do it by running this command:
	[exempted files are matched via .x-sc_TAB_in_indentation]

	  git ls-files \
	    | pcregrep -vf .x-sc_TAB_in_indentation \
	    | xargs pcregrep -l '^ *\t' \
	    | xargs perl -MText::Tabs -ni -le \
	      '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'

2009-08-03  Jim Meyering  <meyering@redhat.com>

	Remove files imported via autogen.sh.
	* m4/.gitignore: Ignore these files.
	* m4/codeset.m4: Remove file.
	* m4/gettext.m4: Likewise.
	* m4/glibc2.m4: Likewise.
	* m4/glibc21.m4: Likewise.
	* m4/iconv.m4: Likewise.
	* m4/intdiv0.m4: Likewise.
	* m4/intl.m4: Likewise.
	* m4/intldir.m4: Likewise.
	* m4/intlmacosx.m4: Likewise.
	* m4/intltool.m4: Likewise.
	* m4/inttypes-pri.m4: Likewise.
	* m4/inttypes.m4: Likewise.
	* m4/inttypes_h.m4: Likewise.
	* m4/isc-posix.m4: Likewise.
	* m4/lcmessage.m4: Likewise.
	* m4/lib-ld.m4: Likewise.
	* m4/lib-link.m4: Likewise.
	* m4/lib-prefix.m4: Likewise.
	* m4/lock.m4: Likewise.
	* m4/longdouble.m4: Likewise.
	* m4/longlong.m4: Likewise.
	* m4/nls.m4: Likewise.
	* m4/po.m4: Likewise.
	* m4/printf-posix.m4: Likewise.
	* m4/progtest.m4: Likewise.
	* m4/signed.m4: Likewise.
	* m4/size_max.m4: Likewise.
	* m4/stdint_h.m4: Likewise.
	* m4/uintmax_t.m4: Likewise.
	* m4/ulonglong.m4: Likewise.
	* m4/visibility.m4: Likewise.
	* m4/wchar_t.m4: Likewise.
	* m4/wint_t.m4: Likewise.
	* m4/xsize.m4: Likewise.

	allow use of #if HAVE_CONFIG_H, for example code
	* .x-sc_prohibit_have_config_h: New file, to exempt examples.

	guestfs: fix typo in my recent change
	* src/guestfs.c (guestfs_perrorf): Rename former err to errnum,
	to avoid compilation error.

	Guard #inclusion of config.h in examples.
	* examples/hello.c [HAVE_CONFIG_H]: Include <config.h> conditionally.
	* examples/to-xml.c: Likewise.

	build: reenable "syntax-check" rule: sc_const_long_option
	* cfg.mk (disable_temporarily): Remove sc_const_long_option.
	* daemon/guestfsd.c (main): Declare long_options to be "const".
	* fish/fish.c (main): Likewise.
	* test-tool/test-tool.c (main): Likewise.

	build: temporarily disable failing "syntax-check" rules
	* cfg.mk (disable_temporarily): Define.

	maint: use a git submodule for gnulib
	* .gitmodules: New file, to track gnulib.
	* .gnulib: Submodule directory.
	* Makefile.am (EXTRA_DIST): Don't list config.rpath or
	gitlog-to-changelog.
	* autogen.sh: Adapt to use the new submodule.
	* cfg.mk: New file.
	(SUBDIRS): Add gnulib/lib and gnulib/tests.
	(dist-hook): Reflect new location of getlog-to-changelog.
	* configure.ac: Set build-aux/ as AUX_DIR.
	Invoke gl_EARLY and gl_INIT.
	(AC_CONFIG_FILES): Add gnulib/lib/Makefile and gnulib/tests/Makefile.

	always include <config.h>
	* ocaml/guestfs_c.c: Include <config.h>.
	* examples/to-xml.c: Likewise.
	* examples/hello.c: Likewise.

	build: add -I option to get config.h.
	* ocaml/Makefile.am (AM_CPPFLAGS): Define.
	(guestfs_c.o, guestfs_c_actions.o): Use it.

	guestfs: don't fault upon failed vasprintf
	* src/guestfs.c (guestfs_perrorf): Handle failed vasprintf.

2009-08-03  Matthew Booth  <mbooth@redhat.com>

	Cleanup whitespace warnings in Lib.pm

2009-08-03  Matthew Booth  <mbooth@redhat.com>

	Use grub entries to find Linux kernels
	This change adds grub parsing to Lib.pm. It adds the following structure to $os:
	  {boot}
	  ->{configs}
	    ->[0]
	      ->{title}   = "Fedora (2.6.29.6-213.fc11.i686.PAE)"
	      ->{kernel}  = \kernel
	      ->{cmdline} = "ro root=/dev/mapper/vg_mbooth-lv_root rhgb"
	      ->{initrd}  = \initrd
	  ->{default} = 0

	The kernel and initrd entries are just references to their top level entries
	under kernels and initrd_modules respectively.

	It also changes the way Linux kernels and initrd are discovered. Instead of
	searching /lib/modules and /boot for files with matching names, kernels and
	initrds are scanned as they are discovered in grub.conf.

	Additionally, the following attributes are added to the kernels top level entry:
	* path
	    The path to the kernel's vmlinuz file.
	* package
	    The name of the package which installed the kernel.

	The xml output of virt-inspector is updated to reflect all of the above changes.

2009-07-31  Richard W.M. Jones  <rjones@redhat.com>

	guestfish: Display RStructList results more pleasantly.

	Add interface to Linux 'inotify' API.

2009-07-31  Richard W.M. Jones  <rjones@redhat.com>

	lib: Add selinux=0 to default kernel command line.
	SELinux exists in a very disturbed state if it is enabled at
	boot time, but no policy is loaded.  In particular, it messes
	up the security.selinux extended attributes on files in a
	not-very-useful way.

	We can't enable SELinux because we don't know what policy
	can or should be loaded.  Therefore it's best to disable it
	completely.

2009-07-31  Matthew Booth  <mbooth@redhat.com>

	Update incorrect comment in Lib.pm
	Related: change the name of the function the comment describes to be more
	accurate.

2009-07-31  Richard W.M. Jones  <rjones@redhat.com>

	Improve warnings about missing tests.
	Don't warn where a command just has no tests.

	Instead check other commands' tests so we get a definitive
	(and much smaller) list of commands that are not tested anywhere.

2009-07-31  Richard W.M. Jones  <rjones@redhat.com>

	New commands: swapon-*, swapoff-*, mkswap-file.
	swapon-device
	swapoff-device
	swapon-file
	swapoff-file
	swapon-label
	swapoff-label
	swapon-uuid
	swapoff-uuid
	mkswap-file

	New command: 'fallocate' to (pre-)allocate sized files.

	New commands: 'ln', 'ln-f', 'ln-s', 'ln-sf' and 'readlink'.
	These commands can be used to make hard and symbolic links.  The
	readlink command is used to read existing symbolic links.

	Add 'realpath' command.

	Ignore failure of 'mv' commands in appliance Makefile.
	A lot of people report these as 'errors' when they are not.
	Hide the error messages.

2009-07-30  Jim Meyering  <jim@meyering.net>

	configure.ac: more quoting
	Also, prohibit an invalid value of $JAVA_HOME,
	since it must be used unquoted below.

2009-07-30  Richard Jones  <rjones@trick.home.annexia.org>

	build: If guestfwd test fails, need to print AC_MSG_RESULT 'no'

2009-07-30  Jim Meyering  <jim@meyering.net>

	build: fix test for --nocompress option
	Richard W.M. Jones wrote:
	> On Wed, Jul 29, 2009 at 10:50:44PM +0200, Jim Meyering wrote:
	>> The test for febootstrap-to-initramfs' --nocompress option
	>> was always failing for me on F11.  Here's why:
	> [...]
	>
	> Ouch that's obscure.  I've applied this patch and the previous
	> one you sent too.  Thanks!

	Our messages crossed.
	Rebasing my fixed patch and adjusting the log:

	>From 9e7846da50ceeee57187f703835bd3975e789719 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Wed, 29 Jul 2009 16:33:02 -0400
	Subject: [PATCH] build: quote the other option test similarly

	* configure.ac: Quote properly.

2009-07-30  Jim Meyering  <jim@meyering.net>

	build: fix test for --nocompress option
	The test for febootstrap-to-initramfs' --nocompress option
	was always failing for me on F11.  Here's why:

	  $ bash                               ~/w/co/libguestfs:210-comment-fix
	  $ t=`febootstrap-to-initramfs 2>&1`
	  [Exit 1]
	  $ if ! echo $t|grep -sq -- --nocompress; then echo not found; fi
	  not found

	Notice: without quotes, the [--nocompress] term expands to "k",
	because I happen to have a temporary file named "k":

	  $ echo $t
	  Usage: febootstrap-to-initramfs [--files=filelist] k DIR Please read
	  febootstrap-to-initramfs(8) man page for more information.
	  $ echo "$t"
	  Usage: febootstrap-to-initramfs [--files=filelist] [--nocompress] DIR
	  Please read febootstrap-to-initramfs(8) man page for more information.

	a simpler example gives a clue:

	  $ touch a b c
	  $ echo [--z]
	  a b c
	  $ echo [--a]
	  a
	  $ echo [--b]
	  a b

	it's interpreting [--nocompress] as a range: "-" through "n", plus
	the other characters, ocmpres.  "k" falls in the --n range.

	Anyhow, here's the fix:

	>From 84855642ed41828d01d55123cfab8d8dede759c1 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Wed, 29 Jul 2009 16:33:02 -0400
	Subject: [PATCH] build: fix test for --nocompress option

	* configure.ac: Fix underquoting bug that would cause the test
	for febootstrap-to-initramfs' --nocompress option always to fail
	with certain-letter-named files in the top directory.

2009-07-30  Jim Meyering  <meyering@redhat.com>

	fix comments; move declarations
	* daemon/devsparts.c (do_list_devices, do_list_partitions):
	Remove stray words in comments.
	Move declarations down to definition.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	Whitespace and comment changes.

	df: Fix alignment of columns.

	guestfish: Make more strings translatable.
	However this doesn't yet attempt to translate the POD
	command documentation.  We need a plan to do that.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	tests: Use squashfs for static data where possible.
	Instead of creating a new InitBasicFS for just about every test,
	where a test doesn't need to write to the filesystem it is far
	faster to use prepared data on an InitSquashFS instead.

	This commit changes as many tests as possible to make this so,
	making the tests much faster.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	tests: Fix read_file test.
	The test ignored the fact that this function returns a (char *, size_t)
	pair, and just treated the char * as a string.  This of course would
	fail if the string didn't happen to be nul-terminated.

	The tests are updated to add a new TestOutputBuffer type which should
	be used with functions that return RBufferOut.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	Implement '*grep*' family of commands.

	Updated Polish translations (Piotr Drąg).

	Version 1.0.65.

	Updated PO files.

2009-07-29  Jim Meyering  <jim@meyering.net>

	build: avoid locale-specific changes in generated, VC'd file
	When I build with LC_ALL=C in my environment,
	the all-local rule generates po/POTFILES.in that
	is sorted differently from the on that is checked in:

	    diff --git a/po/POTFILES.in b/po/POTFILES.in
	    index ca01b3d..154915a 100644
	    --- a/po/POTFILES.in
	    +++ b/po/POTFILES.in
	    @@ -63,12 +63,11 @@ fish/tilde.c
	     fish/time.c
	     inspector/virt-inspector.pl
	     java/com_redhat_et_libguestfs_GuestFS.c
	    -ocaml/guestfs_c_actions.c
	     ocaml/guestfs_c.c
	    +ocaml/guestfs_c_actions.c
	     perl/bindtests.pl
	    -perl/Guestfs.c
	    -perl/lib/Sys/Guestfs/Lib.pm
	     perl/lib/Sys/Guestfs.pm
	    +perl/lib/Sys/Guestfs/Lib.pm
	     python/guestfs-py.c
	     ruby/ext/guestfs/_guestfs.c
	     src/guestfs-actions.c

	If we generate that file so that sort always uses the C locale, then,
	this type of difference will not arise.  Here's the patch to fix the
	rule as well as to reflect the change in the generated file:

	>From 609e1d1840da25614a7c9e8954e5356050c9f2ad Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Wed, 29 Jul 2009 08:13:35 -0400
	Subject: [PATCH] build: avoid locale-specific changes in generated, VC'd file

	* Makefile.am (all-local): Use LC_ALL=C to sort in C locale.
	* po/POTFILES.in: Regenerate.

2009-07-29  Richard W.M. Jones  <rjones@redhat.com>

	On RHEL 5, 'file' command prints 'AMD x86-64' for 'x86-64' arch.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	Run cpio with --quiet option so it doesn't print 'xx blocks'

2009-07-29  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Lib.pm: Skip tests if perl-libintl module is not available.

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	Lib.pm: Use Perl backtick instead of slurp (Aron Griffis).

2009-07-29  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Don't show empty CD devices (RHBZ#514505).

2009-07-29  Richard Jones  <rjones@trick.home.annexia.org>

	ocaml: Rebuild the tests from source if the main library changes.

	inspector: Determine guest architecture.
	This commit adds kernel and userspace architecture detection
	(fully for Linux, partially for Windows).  It adds an architecture
	for each kernel detected, and an architecture for each root (ie.
	userspace) found.

	Lib.pm: Add file_architecture command.
	This command detects the architecture of some types of binaries,
	libraries, kernel modules and initrd images.

	Lib: Document the $ro parameter for mount_operating_system properly.

	Mention related tools in the manual page.

2009-07-28  Richard Jones  <rjones@trick.home.annexia.org>

	Whitespace: indent some names in images/Makefile.am correctly.

	Lib.pm: Use 'file' as replacement for 'zfile'.

	Pass '-z' parameter to 'file' command so it looks inside compressed files.
	Also we deprecate the old 'zfile' command.

	Add DeprecatedBy flag to mark functions which are deprecated.

	Need to declare asprintf_nowarn as inline to avoid gcc complaining.

2009-07-28  Richard Jones  <rjones@trick.home.annexia.org>

	Replace shell_quote function with %Q and %R printf specifiers.
	%Q => simple shell quoted string
	%R => path will be prefixed by /sysroot

	eg. snprintf (cmd, sizeof cmd, "cat %R", path); system (cmd);

2009-07-27  Richard Jones  <rjones@trick.home.annexia.org>

	Add InitSquashFS test type, for tests that just use the squashfs (/dev/sdd).
	This also speeds up those tests because we don't have to wait
	to create a filesystem which is never used.

2009-07-24  Matthew Booth  <mbooth@redhat.com>

	Make read-only optional in mount_operating_system()

2009-07-24  Richard W.M. Jones  <rjones@redhat.com>

	More ideas on a quick Perl one-liner syntax for TODO file.

	guestfish -iv should print virt-inspector command (for debugging).

	Reformat the TODO file.

2009-07-24  Richard Jones  <rjones@trick.home.annexia.org>

	Pass cgroup_disable=memory, saves ~ 5MB of RAM.

2009-07-23  Richard Jones  <rjones@trick.home.annexia.org>

	get_append call can return NULL, but bindings didn't handle it.
	It's not a good idea because there is no way to return an error
	indication.  However at least this means it won't segfault.

	RHEL 5 thinks squashfs is HFS+ filesystem, unless we specify the type explicitly.

	Remove hard-coded qemu-kvm, replace with $QEMU.

	Version 1.0.63

2009-07-22  Richard Jones  <rjones@trick.home.annexia.org>

	Add libguestfs-test-tool.
	This is an end-user testing tool, designed to test basic functionality
	of libguestfs/qemu/kernel combination on the end-user's final host
	machine.

	It does not perform a thorough test, but should be enough to find
	most booting issues.

	Also this is intended to be used when reporting bugs.

2009-07-22  Richard Jones  <rjones@trick.home.annexia.org>

	Fix typo in error message.

	Revert "Add 'set-kernel'/'get-kernel'/LIBGUESTFS_KERNEL to override appliance kernel."
	This reverts commit 34d2df41626f1ee4172a6d40b06d72d6ed9d6348.

	set-append and set-kernel parameters are both nullable.
	(So are the return values, but leave that bug for another day).

	Add 'set-kernel'/'get-kernel'/LIBGUESTFS_KERNEL to override appliance kernel.
	This allows you to override the appliance kernel with an easy
	command or environment variable.

	Todo: Suggestion for 'replace' command.

2009-07-21  Richard W.M. Jones  <rjones@redhat.com>

	Add commented-out support for alternate guestfwd syntax.
	This commit just moves code around.  The new support is not enabled
	because it doesn't work.  See qemu-devel, subject
	"guestfwd option doesn't allow supplementary ,server,nowait"

	configure: Detect new-style guestfwd support (RHBZ#512957)
	However new qemu 0.10.5 still doesn't work.

	Library: Pass more options on the Linux kernel command line.
	Always pass:
	  noapic             (APIC causes problems for lots of people)
	  udevtimeout=300    (for very slow qemu using softemu)
	  acpi=off           (ACPI is troublesome and unnecessary, so turn it off)

2009-07-21  Matthew Booth  <mbooth@redhat.com>

	Split $os->{version} into $os->{major_version} and $os->{minor_version}

2009-07-21  Richard W.M. Jones  <rjones@redhat.com>

	Allow TMPDIR to override directory used for temporary files (RHBZ#512905).

2009-07-21  Richard W.M. Jones  <rjones@redhat.com>

	Generator: Implement RBufferOut and "read-file" call.
	This commit implements the RBufferOut type for returning
	arbitrary 8 bit data from calls.

	We also implement the guestfs_read_file call to read a
	whole file that can contain any 8 bit content, but up to
	a limit of ~ 2 MB.

2009-07-21  Richard W.M. Jones  <rjones@redhat.com>

	Docs: Fully document the guestfs_readdir ftyp return field.

	Docs: Add "API Overview" section to guestfs(3) manpage.
	This section collects together related API calls, to provide
	more coherent documentation about different ways to carry
	out actions such as uploading and downloading.

2009-07-20  Richard Jones  <rjones@trick.home.annexia.org>

	Generator: Improve accuracy of a comment.

2009-07-20  Richard Jones  <rjones@trick.home.annexia.org>

	virt-inspector --fish: Fix incorrect '-a' parameter (RHBZ#512709)
	virt-inspector --fish dom
	virt-inspector --ro-fish dom

	Both of the above commands give incorrect results if run on a
	libvirt domain, eg:

	$ virt-inspector --ro-fish RHEL54Betax64
	==> --ro -a RHEL54Betax64 -m /dev/VolGroup00/LogVol00:/ -m /dev/sda1:/boot
	            ^^^^^^^^^^^^^

	This is because the current code just prints back the original @ARGV
	parameters.

	This patch fixes this by getting the image names instead.

2009-07-20  Matthew Booth  <mbooth@redhat.com>

	Replace 'distrofamily' with feature tags
	It turns out that the distribution hierarchy is not as reliable concept as you
	might think. This patch removes distrofamily again.

	Instead of distrofamily, we will add feature tags. This patch adds 2 feature
	tags for Linux distributions:

	package_format (eg rpm/dpkg)
	package_management (eg rhn/yum/apt)

	This change is reflected in the output of virt-inspector

2009-07-18  Guido Günther  <agx@sigxcpu.org>

	add nls_base.ko and nls_cp437.ko for vfat

2009-07-18  Richard Jones  <rjones@trick.home.annexia.org>

	Make /sysroot path configurable.
	Currently /sysroot is hard-coded throughout the daemon code.

	This patch turns the path into a variable so that we can change
	it in future, for example to allow standalone mode to be implemented.

	This patch was tested by running all the C API tests successfully.

2009-07-17  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.62.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

2009-07-17  Richard W.M. Jones  <rjones@redhat.com>

	RHEL 5.4 fix: Check for qemu-kvm binary in /usr/libexec

2009-07-17  Matthew Booth  <mbooth@redhat.com>

	Differentiate 'distro' and 'distrofamily' in Sys::Guestfs::Lib
	Change distro in the output formally known as virt-inspector to reflect the
	actual distro. Possible values are now: fedora, rhel, centos, scientific,
	debian.

	Add new distrofamily entry which is one of: redhat, debian. Currently all
	distros except 'debian' are in the redhat family.

	This allows you to, for example, select a RHEL/CentOS/Scientific Linux specific
	kernel for installation rather than assuming they're all the same.

	Note this also changes the behaviour of virt-inspector --query. It will now only
	return rhel=yes for RHEL.

2009-07-17  Richard Jones  <rjones@trick.home.annexia.org>

	cat: Example of finding DHCP IP address of a VM.

	Fix non-srcdir builds: Ignore perl/Makefile-pl.old

	Fix non-srcdir builds: further fixes to OCaml build rules.

2009-07-16  Richard Jones  <rjones@trick.home.annexia.org>

	Fixes for non-srcdir builds: Only include POTFILES from SUBDIRS directories.

	Fix non-srcdir builds: fix OCaml build rules.

	Fix non-srcdir builds: Files generated by configure should be in the tarball.

	Fix non-srcdir builds: Don't include generated *_protocol.c files in POTFILES.

	Don't clean up some non-generated files.

	Fix for non-srcdir builds: more misc fixes.

	Fix for non-srcdir builds: Run src/generator.ml from the srcdir.
	Note that files generated by src/generator.ml are stored in
	the srcdir, *not* the builddir.  The reason is so that they
	can be included in the tarball and will appear in the srcdir
	for tarball builds.

	More misc fixes to non-srcdir builds.

	More misc fixes for non-srcdir builds.

	Miscellaneous fixes for non-srcdir builds.

2009-07-15  Richard W.M. Jones  <rjones@redhat.com>

	New commands: 'mkmountpoint' and 'rmmountpoint'
	These specialized commands are used to create additional mountpoints
	before mounting filesystems.  They are only used where you want to
	mount several unrelated or read-only filesystems together, and need
	additional care to use correctly.

	Here is how to use these calls to unpack the "Russian doll" nest
	of a Fedora 11 live CD:

	 add-ro Fedora-11-i686-Live.iso
	 run
	 mkmountpoint /cd
	 mkmountpoint /squash
	 mkmountpoint /ext3
	 mount /dev/sda /cd
	 mount-loop /cd/LiveOS/squashfs.img /squash
	 mount-loop /squash/LiveOS/ext3fs.img /ext3

	The inner filesystem is now unpacked under the /ext3 mountpoint.

2009-07-15  Richard W.M. Jones  <rjones@redhat.com>

	New command: 'mountpoints' which returns a hash of device -> mountpoint.

2009-07-15  Richard Jones  <rjones@trick.home.annexia.org>

	Build fix: perl-libintl is not required for the basic Perl bindings.

	Version 1.0.61

2009-07-15  Richard Jones  <rjones@trick.home.annexia.org>

	New tool virt-cat: display a file in a virtual machine.
	This script is just a simpler way to cat a file from a VM.  It
	is otherwise equivalent to using guestfish.

	 virt-cat someguest /etc/fstab

	 virt-cat someguest /var/log/messages | tail

2009-07-15  Richard Jones  <rjones@trick.home.annexia.org>

	Make Perl strings translatable using perl-libintl.
	All Perl strings are now marked as translatable using __"string"
	or __x("string {placeholder}", placeholder => $_).  Perl strings
	now get copied to the PO files.

	The po/POTFILES.in file is now updated automagically whenever we
	add new *.c, *.pl or *.pm files into the repository.

2009-07-15  Richard Jones  <rjones@trick.home.annexia.org>

	guestfish: Add tilde expansion for paths (RHBZ#511372).
	This commit adds tilde expansion for local users in guestfish:

	  ><fs> echo "~"
	  ~
	  ><fs> echo ~
	  /home/rjones
	  ><fs> echo ~foo
	  ~foo
	  ><fs> echo ~rjones/bar
	  /home/rjones/bar
	  ><fs> echo ~roo
	  ~roo
	  ><fs> echo ~root/foo
	  /root/foo
	  ><fs> echo ~root
	  /root

2009-07-14  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.0.60.

	java/Makefile.inc: Include this generated file.
	We have to include this generated file because it is part of
	the build system, thus required to exist before the generator
	runs.

	File missing from tarball: rc_protocol.x

	Version 1.0.59.

	RHEL 5: header was called <sys/xattr.h>

	Fix: daemon/xattr.c can now compile even when no xattr support.

2009-07-14  Richard Jones  <rjones@trick.home.annexia.org>

	Guestfish feature: remote control of guestfish over a pipe.
	The use case is to have a long-running guestfish process in
	a shell script, and thus to avoid the overhead of starting
	guestfish each time.  Do:

	 eval `guestfish --listen`

	 guestfish --remote somecmd
	 guestfish --remote someothercmd
	 guestfish --remote exit

	This patch also supports having multiple guestfish processes
	at the same time.

	The protocol is simple XDR messages over a Unix domain socket.

2009-07-14  Richard W.M. Jones  <rjones@redhat.com>

	Removed getfattr/setfattr from TODO list, since now implemented.

2009-07-14  Richard W.M. Jones  <rjones@redhat.com>

	Support for Linux extended attributes.
	This commit adds six calls to support Linux extended attributes.
	They are:
	  getxattrs     list all extended attributes for a file or directory
	  setxattr      add/replace an extended attribute
	  removexattr   remove an extended attribute
	  lgetxattrs    \
	  lsetxattr     (same as above, but operate on symbolic links)
	  lremovexattr  /

	See attr(5) for more information.

	This also adds support for the FBuffer field type, which maps to
	an XDR opaque<> or a C (int, char *) pair.

2009-07-14  Richard Jones  <rjones@trick.home.annexia.org>

	virt-inspector: Ignore swap partitions marked as "none".

2009-07-14  Richard Jones  <rjones@trick.home.annexia.org>

	Improve launch error message.
	The previous error message was confusing for new users:

	  libguestfs: error: guestfs_mount: call launch() before using this function

	The new error message explains the action that the user must take,
	especially if they are using guestfish:

	  ><fs> mount /dev/sda1 /
	  libguestfs: error: guestfs_mount: call launch before using this function
	  (in guestfish, don't forget to use the 'run' command)

2009-07-14  Richard Jones  <rjones@trick.home.annexia.org>

	Add reiserfs module to kernel whitelist.

2009-07-13  Richard Jones  <rjones@trick.home.annexia.org>

	Only allow virt-v2v to be run on single root guests (ie. no multi-boot).

	Ignore old-style initrd which is a compressed ext2 filesystem.
	'cpio' chokes on these, taking ages to decide that they are
	not cpio files, and producing masses of messages.  This was
	causing virt-inspector to be very slow (many minutes) on
	RHEL 3 guests.  With this fix, speed is back to normal.

	Implement new 'zfile' command, to show file type inside compressed files.

	Ignore java/Makefile.inc (generated file).

2009-07-13  Matthew Booth  <mbooth@redhat.com>

	Automatically generate list of built java sources

2009-07-13  Matthew Booth  <mbooth@redhat.com>

	Revert "Fix checking of generator being run from the right directory."
	This reverts commit 35c646965a21d452cf74ef3683612210a653c36d.

	As well as reverting this change, add a comment explaining that
	configure must run first.

2009-07-13  Richard Jones  <rjones@trick.home.annexia.org>

	Move BUILT_SOURCES so the comment is back in the right place.

	Order alphabetically the options in guestfish.1 manpage.

2009-07-11  Richard W.M. Jones  <rjones@redhat.com>

	Guestfish: implement -x option, echo commands before executing them.

	Fix: '-D' was not recognized as a parameter to guestfish.

	Regression test: Test reopening the handle in the same process.

	Guestfish: Add 'reopen' command to reopen the libguestfs handle.

	Add missing documentation for "more" command in guestfish help output.

	Add tests to many non-daemon functions.
	Tests are added to the following functions:
	  get_qemu get_path get_append get_autosync
	  is_ready is_config is_launching is_busy
	  set_memsize get_memsize get_pid

	Add TestOutputIntOp, CompareWithIntOp.
	These constructors allow enhanced tests where we compare
	the result of a test against some operator, eg. >= 1 or < 5

	Test for "version" command should be InitNone.

	Add comment to the code about InitNone and InitEmpty.
	These two constructors are treated as identical, but they
	should be distinct concepts.

2009-07-11  Richard W.M. Jones  <rjones@redhat.com>

	Fix UPDATES and host_cpu in configure.ac.
	UPDATES does not need to be propagated into config.h.

	host_cpu was AC_DEFINE'd twice.

2009-07-11  Richard Jones  <rjones@trick.home.annexia.org>

	Documentation for virt-v2v.

	V2V outline program.

2009-07-10  Richard W.M. Jones  <rjones@redhat.com>

	Don't list Java files explicitly, since these files are auto-generated.

	Version 1.0.58.

	Proposal to add BufferIn and RBufferOut types (not implemented).

	Sys::Guestfs::Lib: Exit with error if a libvirt domain appears to have no disks.

	virt-df: Recognise libvirt domains with file-backed disks.
	File-backed disks (<source file="...">) didn't get recognised
	before.  This patch fixes the problem.

2009-07-10  Richard Jones  <rjones@trick.home.annexia.org>

	Add --version options to virt-df, virt-inspector and virt-v2v.

	Add 'version' call to get true library version number.
	This patch also changes the way that the version is specified
	in configure.ac.  It is now made out of four parts (major, minor,
	release and extra) and constructed for AC_INIT.

	Move 'use File::Temp' from virt-inspector program to Sys::Guestfs::Lib.

	Version 1.0.57.

	Update PO files.

	Additional C files for POTFILES.in.

	Rename internal subroutines with leading underscore character.
	Otherwise Pod::Coverage in the tests will complain that the
	internal subroutines are undocumented.

	Working version of virt-df.

2009-07-10  Richard Jones  <rjones@trick.home.annexia.org>

	Fix for returning structures (hashes) from Perl calls.
	Calls such as stat and statvfs which returned a single structure
	were returning an array of values instead of a full hash of keys +
	values.

	Fix this by pushing the key names on the stack too.

2009-07-10  Richard Jones  <rjones@trick.home.annexia.org>

	'$_' should be marked as a local variable in Sys::Guestfs::Lib::open_guest.

2009-07-10  Richard Jones  <rjones@trick.home.annexia.org>

	Properly close fds and unregister handlers in guestfs_close.
	This caused a segfault if you tried to repeatedly open and close
	a guestfs handle in the same program.  The reason is that the
	old handler remained registered (not always - it was racey).

	This adds proper cleanup to the guestfs_close path, also for file
	descriptors.

2009-07-10  Richard Jones  <rjones@trick.home.annexia.org>

	Added framework for 'virt-df' command.

	Ignore any file called 'localconfigure'.
	Developers should put their custom parameters for configure/autogen.sh
	into a script called ./localconfigure, and this script will be ignored
	by git and the build system.

	Added outline of the virt-v2v script.

2009-07-09  Richard Jones  <rjones@trick.home.annexia.org>

	Remove virt-inspector --force option - it didn't do anything.

	Sys::Guestfs::Lib minor documentation clean-up.

2009-07-09  Richard Jones  <rjones@trick.home.annexia.org>

	Move the inspection analysis code into Sys::Guestfs::Lib library.
	Creates new functions:
	  inspect_all_partitions
	  inspect_partition
	  inspect_operating_systems
	  mount_operating_system
	  inspect_in_detail

	Includes far more documentation for the process.

2009-07-09  Richard Jones  <rjones@trick.home.annexia.org>

	Move 'resolve_windows_path' to Sys::Guestfs::Lib.

	Move 'get_partitions' call into Sys::Guestfs::Lib.

2009-07-09  Richard Jones  <rjones@trick.home.annexia.org>

	Add Sys::Guestfs::Lib - useful functions for using libguestfs from Perl.
	This adds an extra Perl module called Sys::Guestfs::Lib which
	adds useful functions for using libguestfs from Perl.

	The intention is that common code shared between virt-inspector,
	virt-df and virt-v2v will move into this library.

	This patch also changes virt-inspector to use this library.

2009-07-09  Richard Jones  <rjones@trick.home.annexia.org>

	Just whitespace changes in the generator code.

2009-07-08  Richard Jones  <rjones@trick.home.annexia.org>

	Update with links to the new mailing list.

2009-07-07  Richard W.M. Jones  <rjones@redhat.com>

	Fix checking of generator being run from the right directory.
	Originally it was looking for 'config.status', but this file
	might not exist until configure has been run.  Make it look for
	HACKING instead.

	Version 1.0.56.

2009-07-07  Richard Jones  <rjones@centos5x32.home.annexia.org>

	RHEL 5: Mount squashfs with explicit type.

	RHEL 5: Skip 'scrub' test if command is not in the initramfs.

	RHEL 5: 'mkswap -U' not supported, check before testing it.

	Update ocaml/.depend.

	RHEL 5: RHEL kernels don't have $arch at the end, so look for non-arch kernels too.

	RHEL 5: $(builddir) did not exist with this old autoconf/automake, so workaround.

	RHEL 5: for (int i = ...) is not permitted with this old version of GCC.

	Merge branch 'master' of git://git.et.redhat.com/libguestfs

2009-07-07  Richard Jones  <rjones@trick.home.annexia.org>

	Generate structs and struct lists generically.
	This modifies the way that struct and struct lists are generated
	(for return values) so that there is no need to add an explicit
	new type when adding a new structure.

	All tests pass, and the C API should be compatible.

	I have also inspected the changes that are made to the generated
	code by hand.

2009-07-07  Richard Jones  <rjones@trick.home.annexia.org>

	Fix for 349814e9d912c4: Get correct path when building Ruby bindings.

2009-07-06  Richard Jones  <rjones@trick.home.annexia.org>

	Test two (of four) cancellation paths.

	Add a debug message to the library cancellation path.

2009-07-06  Richard Jones  <rjones@trick.home.annexia.org>

	Introduce regression tests for various qemu failures.
	Test failure of qemu and recovery of the library:
	 - mid-command
	 - between commands
	 - during launch [test not working yet]
	 - explicitly killed by guestfs_kill_subprocess

	Also this patch cleans up the other tests in this directory
	and disables the long-winded test-bootbootboot test.

2009-07-06  Richard Jones  <rjones@trick.home.annexia.org>

	guestfish: Always fflush stdout between commands.

	Whitespace change in ocaml/.depend file.

	Add 'get-pid' command.
	This is used to get the PID of the qemu subprocess, mainly for
	debugging and testing purposes.

	Todo: Remote-control guestfish through a pipe.

	Sort the .gitignore file (no semantic change).

	Remove files generated by autoreconf (Guido Gunter and Matthew Booth).

2009-07-05  Richard Jones  <rjones@trick.home.annexia.org>

	Don't die if reply message is oversized (RHBZ#509597).

2009-07-04  Guido Günther  <agx@sigxcpu.org>

	use 'stupid_simple' instead of 'nested' initramfs
	speeds up start of the appliance

	select proper kernel by architecture

2009-07-03  Matthew Booth  <mbooth@redhat.com>

	Make it possible to build in a separate directory
	This patch allows you to do:
	mkdir build
	cd build
	../configure ...
	make

	This will output all generated files to the build directory. Given that
	autogen automatically runs configure, you can also do:

	BUILDDIR=./build ./autogen.sh

	which will do the right thing.

	Also:

	* Fix a dependency bug which means that guestfs_protocol.h
	  isn't automatically rebuilt.
	* Re-running autogen.sh with no arguments won't blow away your previous
	  configure arguments.

2009-07-03  Jim Meyering  <meyering@redhat.com>

	generate slightly more "const-correct" code
	* src/generator.ml: Add a few "const" attributes.

	avoid leak upon failed realloc
	* daemon/guestfsd.c (commandrv): Free original buffer (rather
	than leaking it) if realloc fails.

	remove trailing blanks

	daemon/readdir: avoid a small leak
	* daemon/readdir.c (do_readdir): Free both p and v.name, in case
	only one of the allocations failed.

2009-07-03  Guido Günther  <agx@sigxcpu.org>

	touch fakeroot.log
	indicationg we're done creating the appliance

	remove superflous debirf scripts

2009-07-03  Richard W.M. Jones  <rjones@redhat.com>

	Guestfish tab-completion on destination paths, fixed this time.
	Tab-completion on destination paths should now work correctly.

	Don't keep rebuilding debirf module symlinks.

	'readdir-and-stat' call is now effectively implemented.

2009-07-03  Richard W.M. Jones  <rjones@redhat.com>

	Add Debian appliance directory to the distfile.
	'make dist' won't copy symlinks into the output file, so we
	have to add a rule to the Makefile to copy these.

	(Issue reported by Guido Gunther).

2009-07-03  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git+ssh://192.168.122.1/home/rjones/d/libguestfs

2009-07-02  Jim Meyering  <meyering@redhat.com>

	use safe_malloc and safe_calloc in generated code
	* src/generator.ml (safe_malloc): Define to guestfs_safe_malloc.
	(safe_calloc): Define to guestfs_safe_calloc.
	[most generated code]: Fail immediately upon failure of otherwise-
	unchecked malloc and calloc calls.
	* src/guestfs.c: Include <stddef.h>.
	(xalloc_oversized): Define.
	* src/guestfs.h (guestfs_safe_calloc): Declare.

	prefer sizeof *VAR over sizeof TYPE (no semantic change)
	* src/generator.ml: Slightly safer, in case the
	declared type ever changes.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Prepare for 1.0.55.  PO files also updated.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Add 'sfdiskM' command.
	This command is a saner interface to partitioning.

	All partition sizes are specified in megabytes (not cylinders).
	You don't need to specify the cyls/heads/secs parameters.

	All the test code has been updated to use this, so it is now
	CHS-independent (eg. when CHS changes as between IDE and virtio).

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Remove generated files guestfs_protocol.[ch].
	These generated files were accidentally left in when we
	removed the other generated files in cset
	b3cb0b04eb2d38ba32c160a83d8e3894b376907b.

	Don't rebuild the whole appliance if just the /init script has been changed.

	Improve virtio-blk performance (RHBZ#509383).

	Add ./configure --with-drive-if=(ide|scsi|virtio)
	With this flag the packager can decide to default to a particular
	qemu drive model.  The current default is 'ide', however note that
	we intend to change this in future to 'virtio' once some upstream
	regressions are fixed.  Packagers can force a particular drive
	model if they wish.

	Add the guestfish 'time' command.
	 ><fs> time sfdisk /dev/sda 0 0 0 ,
	 elapsed time: 6.12 seconds

	Add list of function_names to the daemon.
	Messages which include the proc_nr can now also include the
	name of the actual function being called.

	In verbose mode, daemon will display the time elapsed for each command.

	Ignore generated file appliance/debian/debirf.conf

2009-07-02  Guido Günther  <agx@sigxcpu.org>

	Build Debian based appliance using debirf

	add debirf files

	unconditionally load dm module
	needed for device mapper (LVM)

	add missing module
	for modularized Debian kernels

2009-07-02  Jim Meyering  <meyering@redhat.com>

	avoid automake failure
	* daemon/configure.ac: Use AM_PROG_CC_C_O, not AC_PROG_CC_C_O.

	arrange to build some generated sources
	* src/Makefile.am (BUILT_SOURCES): Define.
	($(BUILT_SOURCES)): Depend on stamp-generator.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Re-add src/MAX_PROC_NR (generated file).
	This file is required by configure, so we need to add it so
	it is available after the git checkout.

	Memoize the output of pod2text function in the generator.
	This speeds up the generator greatly.

	Updated PO files.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Remove generated code from git.
	Git users now require the OCaml compiler in order to regenerate
	the generated code after a checkout.

	Generated code will remain in the tarball, so users of the
	source tarball will not need the OCaml compiler.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Generator now runs automatically when it has changed.

2009-07-02  Richard W.M. Jones  <rjones@redhat.com>

	Add 'readdir' call.
	This adds a readdir call (mostly intended for programs).  The
	return value is a list of guestfs_dirent structures.

	This adds the new types 'struct guestfs_dirent' and
	'struct guestfs_dirent_list', along with all the code to
	return these in the different language bindings.

	Also includes additional tests for OCaml and Perl bindings
	to test this.

2009-07-01  Jim Meyering  <meyering@redhat.com>

	fish: handle some out-of-memory conditions
	* fish/destpaths.c (xalloc_oversized): Define.
	(complete_dest_paths_generator): Use size_t as type for a few
	variables, rather than int.
	Don't deref NULL or undef on failed heap alloc.
	Don't leak on failed realloc.
	Detect theoretical overflow when count_strings returns a very
	large number of strings.
	Handle asprintf failure.
	(APPEND_STRS_AND_FREE): Rewrite as do {...}while(0), so that each use
	can/must be followed by a semicolon.  Better for auto-formatters.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	Call 'udevadm settle' after operations which add/remove device nodes.
	Because udev operates asynchronously, we found errors which were
	caused by a previous command (eg. sfdisk or pvremove) creating
	or removing a device, and that change not having happened by the
	time the next command was run.

	This patch adds calls to '/sbin/udevadm settle' after any commands
	which can add or remove device nodes.

	If udev is not being used or not available, this should have no
	effect.  The command fails and this is silently ignored.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	All instances of 'pclose' now check for return value != 0.
	We are generally interested that the subcommand ran without
	error, ie. had exit status of 0.  'pclose' returns the exit
	status, so we now check that pclose (fp) != 0.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	Fix error handling of external sfdisk command.
	Should use 'pclose' instead of 'fclose' (although fclose happens
	to work because of glibc internals).

	The result of pclose is the exit status of the command, so we
	need to test this is != 0.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	Generated code for the virtio_blk change.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	Change to use virtio_blk (virtio block device) by default.
	virtio_blk is the fast, virt-native block device driver
	supported by qemu and KVM.  Note that virtio_blk device
	names are called /dev/vd*.

	Existing scripts should continue working because device name
	translation will silently change device names of the form
	/dev/sd* to /dev/vd* as required.

	See also:
	http://libguestfs.org/guestfs.3.html#block_device_naming

2009-07-01  Jim Meyering  <meyering@redhat.com>

	Don't dereference or free undefined "msg" upon OOM.
	* src/guestfs.c (guestfs_error): Handle failing vasprintf.

2009-07-01  Richard W.M. Jones  <rjones@redhat.com>

	Add libguestfs(3) as an alias manpage for guestfs(3).

	Updated PO files.

	Reorder the environment variables alphabetically in the documentation.

	Document the $PAGER environment variable.

	Document the LIBGUESTFS_MEMSIZE environment variable.

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Change statvfs test so it doesn't depend on device size.
	Current statvfs test depended on a lot of filesystem details
	which can change if the CHS of the underlying block device
	changes (eg. with the switch from IDE -> virtio).  These are
	not really necessary to test the call, so instead just check
	for filesystem features.

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Clean up the output of the C API test code.
	Set output mode to unbuffered so that we see ordinary output
	messages and errors at the same time.

	Align "skipped" messages.

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Todo: getfattr, setfattr.

2009-06-30  Guido Günther  <agx@sigxcpu.org>

	Whitelist kernel modules for hardware emulated by QEMU
	(Modified from Guido's original patch to use a wildcard to
	specify all virtio modules - RWMJ).

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Generated code for mknod, mkfifo, mknod_b, mknod_c, umask.

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	New commands: mknod, mkfifo, mknod_b, mknod_c and umask.
	These commands are used to create block and char device
	nodes or FIFOs (named pipes) in the filesystem.

	The umask command is required also because the permissions
	used by mknod are masked by the umask.

	Also document and guarantee that the umask starts as 022.

2009-06-30  Richard W.M. Jones  <rjones@redhat.com>

	Use octal numbers for modes in the test suite.
	We have to use the OCaml convention (0o...).  Note that in
	OCaml 0777 is a _decimal_ number.  It'll catch you out.

	Generated code for 'set_memsize'/'get_memsize' calls.

	Add 'set_memsize'/'get_memsize' calls.
	Allow the qemu memory size to be specified either by API
	calls or by setting the LIBGUESTFS_MEMSIZE environment
	variable.

2009-06-30  Guido Günther  <agx@sigxcpu.org>

	Use udev if available (Guido Gunter).
	Added support for Fedora's udev (Richard Jones).

	define REDHAT and DEBIAN
	so we can preprocess packagelist.in

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Todo: Suggest an environment variable for memsize configuration.

	Generated code for the 'mkswap*' commands.

	Implement 'mkswap', 'mkswap_L' and 'mkswap_U' commands.
	These commands are used to make Linux swap devices.  The mkswap_L
	command makes one with a label.  The mkswap_U command makes one
	with a known UUID.

	Todo: Allow memsize to be configured.

	Todo: Investigations into 'binarch' command.

	Rearrange guestfish commands in the manpage.

	Add missing documentation for new 'more' and 'less' commands in guestfish.

	Version 1.0.54

	Check for XML::Writer dependency for virt-inspector.

	Remove generated files in make clean.

2009-06-29  Matthew Booth  <mbooth@redhat.com>

	Merge commit 'et/master'

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Fix for 'broken pipe' error when qemu dies (RHBZ#508713).

	Generated code for mount-loop command.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Add mount-loop command (RHBZ#508668).
	Loop device mounts don't work for the generic 'mount' commands
	because the first parameter should be a file not a device.

	We want to separate out files parameters from device parameters
	in the long term, so this adds a new mount-loop command for this
	purpose.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Fix memory leak in daemon/mount.c:do_mount_vfs.

2009-06-29  Matthew Booth  <mbooth@redhat.com>

	Output the config filename containing a modprobe alias in XML
	This change affects the XML output:

	/operatingsystems/operatingsystem/modprobealiases/alias/text() =>
	/operatingsystems/operatingsystem/modprobealiases/alias/modulename/text()

	Additionally there are two new elements:

	/operatingsystems/operatingsystem/modprobealiases/alias/augeas
	/operatingsystems/operatingsystem/modprobealiases/alias/file

	These contain information about the location of the alias directive.
	/augeas is an augeas path. /file is the path of the file containing the
	directive.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Todo list: More suggestions.

	Generated code for 'initrd-list'.

	Add 'initrd-list' command to list contents of initrd images.
	Add 'initrd-list' command to list the files inside (new-style)
	initrd images.  Update virt-inspector to use this instead of
	the less efficient download/unpack locally method.

2009-06-29  Matthew Booth  <mbooth@redhat.com>

	Add a comment to device naming heuristic

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Generated code for 'du' command.

	Added 'du' command.
	This command estimates file usage for files and directories.

	Generated code for df / df-h.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Add 'df' and 'df-h' commands.
	df and df-h commands can be used interactively to show disk
	space usage.

	Use existing statvfs command from programs.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Todo: Removed suggestion for short form for pipes.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Implement "more" and "less" commands in guestfish.
	Use commands such as:
	  more /etc/passwd
	  less /etc/fstab

	These commands are specific to guestfish.

2009-06-29  Richard W.M. Jones  <rjones@redhat.com>

	Todo list: Pipes now implemented, so remove from list.

	Generated code for head/tail commands.

	Implement "head", "head-n", "tail", "tail-n" commands.
	These commands let you view parts of a large file without
	passing the whole file over the network connection.

	Prevent 'n' being used as a parameter name.
	Parameters named 'n' sometimes break the Perl bindings, so
	check for this in the generator and prevent it.

	Generated code for 'wc_*' commands.

	Todo: wc command done.

	Implementation of 'wc_c', 'wc_w' and 'wc_l' commands.
	These commands count characters, words and lines in a file respectively.

	Implement TEST_ONLY environment variable to run selected tests only.
	To run just selected tests, do:
	  TEST_ONLY="hexdump mkfs" make -C capitests check

	Add large test files with standard content for the C API test.
	Large test files with standard content for the C API test, and
	add a regression test for previous hexdump failure on large files.

	Todo: RUN_ONLY_FOR

	Todo: 'wc' command.

2009-06-28  Richard W.M. Jones  <rjones@redhat.com>

	Guestfish pipes.

	Haskell bindings: Implement bindtests.

	Haskell bindings: Int and Int64 return types.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

	Haskell bindings: fix boolean arguments.

	Haskell bindings: Fix integer arguments.

2009-06-27  Matthew Booth  <mbooth@redhat.com>

	Clean up XML output
	This change makes XML use XML::Writer, and modifies the output in the
	following 2 ways:

	* /operatingsystems/operatingsystem/os is renamed to
	  /operatingsystems/operatingsystem/name

	* /operatingsystems/kernels/version becomes an attribute of
	  /operatingsystems/kernel for consistency with initrds

2009-06-25  Matthew Booth  <mbooth@redhat.com>

	Make virt-inspector look in more places for module aliases
	Specifically:
	/etc/conf.modules
	/etc/modules.conf
	/etc/modprobe.conf
	/etc/modprobe.d/*

	Add yaml output for virt-inspector

	Make run-inspector-locally try to work out where it is installed
	This change means that you can run run-inspector-locally from any
	directory. You can also symlink to it and it'll do the right thing. This
	means you can put a symlink to run-inspectory-locally in your path
	called 'virt-inspector', and 'guestfish -i' will work.

2009-06-24  Richard W.M. Jones  <rjones@redhat.com>

	More TODO items for future work.

	Allow guestfish -i / virt-inspector on live domains, in limited circumstances.

	Fix detection of optional libvirt support in virt-inspector.

	Document the guestfish --version option in the manual page.

	Clarify documentation for mkdtemp.

	Generated code for 'mkdtemp' command.

	Add mkdtemp command.

	Version 1.0.53.

	Fix libvirt integration in virt-inspector.

	Fix permissions on generated scripts in the appliance/ directory.

	Version 1.0.52.

	Quote command line arguments to virt-inspector.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

	Added guestfish -i option to run virt-inspector.
	You can invoke guestfish with:
	 guestfish -i libvirt-domain
	 guestfish -i disk-image(s)

2009-06-24  Matthew Booth  <mbooth@redhat.com>

	Fix dependencies in perl so it doesn't always rebuild

2009-06-24  Richard W.M. Jones  <rjones@redhat.com>

	Implement guestfish -f option to allow guestfish scripts.
	New '-f' option allows scripts to be written using:
	 #!/usr/bin/guestfish -f

	Incorrect assignment on glob error path.

	Todo items: guestfish options -i and -f.

2009-06-23  Richard W.M. Jones  <rjones@redhat.com>

	Implement libtool library versioning.
	Use maximum proc_nr (MAX_PROC_NR) as a surrogate for the
	library ABI version, resulting in version numbers such as
	libguestfs.so.0.<MAX_PROC_NR>.0 for the final library.

	Add ABI guarantee to the documentation.

2009-06-23  Matthew Booth  <mbooth@redhat.com>

	Make the supermin helper look for any x86 kernel
	If you've got a non-PAE kernel installed on an i686 machine, the kernel
	architecture is i586. This change makes sure that supermin finds the
	installed kernel.

2009-06-23  Richard W.M. Jones  <rjones@redhat.com>

	Generated code for 'scrub-*' commands.

	Added 'scrub-*' commands for securely scrubbing filesystems.

	Bump up default guest size to 500M.

	Updated Polish translation (RHBZ#502533).

	Command line argument handling.

	'-no-kqemu' option is no longer necessary to avoid a warning.

2009-06-22  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.51

	Add whitespace to the init script (no functional change).

	Issue MAKEDEV commands in a loop (RHBZ#507374).

	Check parameter types in Ruby bindings (RHBZ#507346).

	Improve error message when appliance doesn't match library.

	Missing \n character in Ruby bindings.

	Make CHROOT_IN/OUT macros should loudly if the syscall fails.

	Include the lsof package.

	Check return value from close() call.

	The 'debug sh' command now uses a real shell.

	test-boot-realistic rule should boot the rescue shell.

	Rebuild supermin appliance when the daemon is updated.

	Version 1.0.50.

	Add 'glob' command for guestfish.

	Generated code for 'glob-expand'.

	Add 'glob-expand' command.

	Generated code for 'sh' and 'sh-lines' commands.

	Add 'sh' and 'sh-lines' commands.

2009-06-20  Richard W.M. Jones  <rjones@redhat.com>

	Check return value from waitpid call in command*() functions.

	Add strong note about deprecation of functions which take either device names or filenames.

	Check return value from pclose.

2009-06-19  Richard W.M. Jones  <rjones@redhat.com>

	Update to-do list.

	Generated files for 1.0.49.

	Prepare for version 1.0.49.

	Supermin: choose newest available kernel.

	Move init script into a separate file.

	Move distro package list to a separate packagelist.in file.

2009-06-18  Richard Jones  <rjones@trick.home.annexia.org>

	Add tab-completion of guest filenames (currently disabled).

2009-06-18  Guido Günther  <agx@sigxcpu.org>

	check for Debian tools

2009-06-18  Richard Jones  <rjones@trick.home.annexia.org>

	Remove unreadable binaries that give warnings in supermin appliance.

	Rename guestfs-supermin-helper -> libguestfs-supermin-helper.

2009-06-16  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.48.

	Don't compress the supermin base initramfs.

	Reverse sense of whitelist test.

	Fix build_supermin_appliance to return kernel / initrd names.

2009-06-15  Richard Jones  <rjones@trick.home.annexia.org>

	Missing files in previous release, so version 1.0.47

	Missing files from previous release.

	Generated files for 1.0.46 release.

	Prepare for 1.0.46.

	Experimental implementation of the supermin appliance (passes most tests).

	Check for febootstrap-to-initramfs --files option.

	Add --enable-supermin option.

	Documentation for the supermin appliance.

	Move kernel module list to a separate whitelist file.

2009-06-13  Richard Jones  <rjones@trick.home.annexia.org>

	Update status of libguestfs in Debian.

	Remove /lib/kbd (keyboard maps) from the appliance.

	Remove firmware from the appliance.

	make.sh calls update.sh directly.
	Combine the common tail of make.sh and update.sh so that make
	just calls update at the end directly.  The effect is the same.

	Rename (make|update)-initramfs.sh.in -> (make|update).sh.in

2009-06-12  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.45

2009-06-11  Richard Jones  <rjones@redhat.com>

	Add guestfs_rescue=1 appliance option to start a rescue shell.

	Catching hanging qemu in tests (RHBZ#505329).

	More TODO-list suggestions and a summary of PPC situation.

2009-06-10  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git://git.et.redhat.com/libguestfs

2009-06-10  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.44.

	Remove obsolete comment from generator.

2009-06-10  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git+ssh://192.168.2.134/home/rjones/d/libguestfs

2009-06-10  Richard Jones  <rjones@redhat.com>

	Remove obsolete comment from generator.

	Specify type of squashfs filesystem.

2009-06-10  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git+ssh://192.168.2.134/home/rjones/d/libguestfs

2009-06-10  Richard Jones  <rjones@redhat.com>

	Allow HFS+, UFS and XFS filesystems (add to kmod whitelist).

2009-06-10  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git+ssh://192.168.2.134/home/rjones/d/libguestfs

2009-06-10  Richard Jones  <rjones@redhat.com>

	CentOS fix: Skip checksum test if no squashfs module.

2009-06-10  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Merge branch 'master' of git://git.et.redhat.com/libguestfs

2009-06-10  Richard Jones  <rjones@redhat.com>

	CentOS fix: skip ntfs-3g.probe tests if no binary.

	Done: Device independent naming feature.

	Implement device name translation.  Remove device name hacks in tests.

	In the daemon, change all const char * parameters to char *.

	Fix #2

	Fix device tests.

	Implement device name translation.  Remove device name hacks in tests.

	Fix small sfdisk bug.

	In the daemon, change all const char * parameters to char *.

	Add IS_DEVICE checks for all calls which take a device parameter.

2009-06-09  Richard Jones  <rjones@redhat.com>

	Describe the standard naming scheme and translation algorithm.

	Added more to-do items to the list.

	New website, change et.redhat.com references to libguestfs.org

	Prepare for 1.0.43.

	Add support for decoding the Windows registry.

2009-06-08  Richard Jones  <rjones@redhat.com>

	Generated code for ntfs_3g_probe command.

	Add 'ntfs_3g_probe' command so we can probe the "mountability" of an NTFS partition.

	Todo: qemu options.

	Add missing documentation for guestfish 'lcd' command.

	More TODO items.

	Added 'lcd' command to guestfish.

2009-06-06  Richard Jones  <rjones@redhat.com>

	Prepare for 1.0.42

	Parse /etc/modprobe.conf and initrd to give us a closer understanding of what the guest will actually boot on.

	Added query mode to virt-inspector.

2009-06-05  Richard Jones  <rjones@redhat.com>

	Modules are *.o in Linux 2.4 kernels.

2009-06-04  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.41.

	Fix RHBZ#503169 comment 13 (regression) and add a regression test.

	Added regression test for RHBZ503169#c10

	Move pure regression tests to their own subdirectory.

	Generated code for the 'sleep' command.

	Added 'sleep' command.

	Prepare for version 1.0.40.

	Add missing /dev devices (bug 503169 comment 10).

	Generated PO files for 1.0.39.

	Prepare for version 1.0.39.

2009-06-04  Charles Duffy  <cduffy@messageone.com>

	Use --rbind rather than --bind for bind mounting /dev (to get /dev/pts).

	mount /dev via tmpfs before MAKEDEV invocation. This ensures that /dev can be bind-mounted when running commands, as initramfs cannot be bind-mounted.

2009-06-02  Charles Duffy  <cduffy@messageone.com>

	use add_drive_ro for --mount parameters from guestfish when called with --ro
	To prevent writes (such as ext3 journal replay) from occuring even when --ro is
	passed, guestfish should use add_drive_ro() for any drives specified on the
	command line with --add if --ro is also passed.

	As we need to look through the entire command line for --ro before adding any
	drives, we move the add process out of the argument-parsing loop and into its
	own function, patterned off mount_mps().

2009-06-02  Richard Jones  <rjones@trick.home.annexia.org>

	No parallel make in ocaml/ directory (RHBZ#502309).

	Version 1.0.38

	Generated code for 'add_drive_ro' call.

	Add 'add_drive_ro' call. Fix up documentation. Plus a couple of minor code improvements in the tests.

2009-05-29  Richard W.M. Jones  <rjones@redhat.com>

	Squashfs recipe.

	Correctly handle malloc/realloc(0)  - malloc and realloc(0) are valid requests.  Some implementations    may return NULL for these, which would not indicate an error.

	Prepare for version 1.0.37

	Use a squashfs attached as /dev/sdd during the C API tests.

	Add cramfs and squashfs kernel modules (RHBZ#503135).

	Fix the rule which rebuilds make-initramfs.sh.

	Fix mkdir-p if directory exists (RHBZ#503133).

2009-05-28  Richard W.M. Jones  <rjones@redhat.com>

	Rerun generator to update tests.

	Version 1.0.36

	Fix path to COPYING.LIB

	To-do: Note that we need to finish the bindings tests.

	Distribute bindtests.rb in the tarball.

	Distribute bindtests.pl with the tarball.

	Distribute bindtests file.

	Fix path to guestfish in test-bootbootboot script.

	Fix permissions on ocaml/run-bindtests

	Add tests for bindings parameters, fix several broken bindings.

	Add the test0* functions, used to test language bindings.

	Move C API tests out of root build dir into 'capitests' subdir.

	Move the appliance and build scripts into new appliance/ subdirectory.

2009-05-27  Richard Jones  <rjones@trick.home.annexia.org>

	Updated PO files.

	Removed contrib/*.spec files.

	Version 1.0.34.

2009-05-27  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Back to GNU gettext 0.14 for RHEL 5.

	abs_top_builddir doesn't exist in old RHEL 5 automake, use top_builddir instead.

	Removed these old/obsolete specfiles.  For replacements see contrib/README.  (for Charles Duffy).

2009-05-27  Richard Jones  <rjones@trick.home.annexia.org>

	Version 1.0.33

	Improve javadoc (RHBZ#501883).

	Guestfish built-in commands auto-complete (RHBZ#501878).

	Fix Java configure tests (RHBZ#501885).

	To-do item.

	README, TODO and HACKING files are now shown on the website.

	Allow more ext filesystem kmods (Charles Duffy).

	Improve documentation in README file.

2009-05-26  Richard Jones  <rjones@trick.home.annexia.org>

	Fix bug links.

	Version 1.0.32

	Added Polish translation (Piotr Drąg) (fixes RHBZ#502533).

2009-05-24  Richard Jones  <rjones@debian5x64.home.annexia.org>

	(Commented out) Overwrite /sbin/init

	Print a message when /init starts.

	Small documentation bug in configure script.

2009-05-22  Richard Jones  <rjones@trick.home.annexia.org>

	In daemon, set PATH, SHELL and LANG environment variables.

	Add 'debug env' command to print environment.

2009-05-21  Richard Jones  <rjones@redhat.com>

	Updated POT file.

	Prepare for 1.0.31.

	Individual tests can be skipped by setting SKIP_TEST_<CMD>[_<N>]=1

	Updated POT file.

	Prepare for version 1.0.30.  Reduce boot loop script to 10 boots.

	Add test-bootbootboot.sh script to EXTRA_DIST.

	Version 1.0.29

	Generated code for e2fsck-f command.

	Add e2fsck_f command, and modify lvresize test to use it (RHBZ 502018).

	Fix pvremove, vgremove, lvremove tests (RHBZ 502007).

	Ignore generated file.

	Version 1.0.28

	Gettextize the source, make library strings translatable.

	Intltoolize the source.

	Bugs have been moved to Red Hat Bugzilla.

2009-05-20  Richard Jones  <rjones@trick.home.annexia.org>

	Bug about Fedora specfile.

2009-05-19  Richard Jones  <rjones@trick.home.annexia.org>

	To-do list for virt-inspector.

	Prepare for 1.0.27

	test-bootbootboot.sh is a test, not a source file.

	Skip 'zerofree' test if the command doesn't exist in the appliance.

	virt-inspector now lists installed modules.

	Generated code for 'find' command.

	Added 'find' command.

	Fix a memory leak in handling of tar files.

	Inspect kernels for Linux OSes.

	Base appliance on Fedora 11 (by default - may be overriden by configure).

2009-05-18  Richard Jones  <rjones@redhat.com>

	Generated code for lvresize, resize2fs.

	Add: lvresize, resize2fs commands.

	Version 1.0.26.

	Add vg-activate{,-all} commands, and resize recipe.

	Ignore old make-initramfs file.

2009-05-16  Richard Jones  <rjones@redhat.com>

	To-do: Explain the situation with resizing block devices.

2009-05-15  Richard W.M. Jones  <rjones@redhat.com>

	Add: pvresize, sfdisk-N, sfdisk-l, sfdisk-kernel-geomtry, sfdisk-disk-geometry commands.  Pass --no-reread flag to sfdisk.

	To-do: zerofree done, Haskell bindings need to be completed.

2009-05-14  Richard W.M. Jones  <rjones@redhat.com>

	Add support for zerofree command.

	To-do: zerofree

	Enable run-time conditional test prerequisites.

	Add test prerequisites.

	Added a couple of bugs related to test code.

2009-05-13  Richard W.M. Jones  <rjones@redhat.com>

	Bugs related to OptString handling.

	Don't stash strings in the handle.  - makes it impossible to write bindings for set_{path,qemu,append}    functions

	Add 'append', LIBGUESTFS_APPEND to set additional kernel options.

2009-05-13  Richard Jones  <rjones@redhat.com>

	Allow number of loops to be set on command line.

	Tidy-up of test script.

	Exit early from script on error.

	Increase the wait time for vmchannel socket to appear (fix for slow / heavily-loaded) machines.

	Test booting repeatedly to track down qemu boot hangs.

2009-05-12  Richard Jones  <rjones@redhat.com>

	Version 1.0.25

	test-command is not an actual test program.

	Prepare for version 1.0.24

	Refactor line splitting code in the daemon, and fix it so it works.

	Test the 'command' and 'command_lines' functions thoroughly.

	Remove Perl from appliance - fixes large appliance problem on Rawhide builds.

	Remove the specfile from the tarball.  Include contrib/ dir.

2009-05-11  Richard Jones  <rjones@redhat.com>

	Version 1.0.23

	Depend on new febootstrap 2.0, and use febootstrap-install.

	Perl bindings fix: Not enough memory was allocated for array params.

2009-05-10  Richard Jones  <rjones@redhat.com>

	Partial Haskell bindings.

	Handle EINTR, EAGAIN in select main loop.

2009-05-09  Richard Jones  <rjones@redhat.com>

	Note about using FUSE / mountlo code.

	Version 1.0.22

	Valgrind now implemented - remove from TODO list

	Add 'make valgrind' target to run tests under valgrind.

	Fix four memory leaks in guestfs.c revealed by valgrind.

	Fix memory leak in error return path.

2009-05-08  Richard Jones  <rjones@redhat.com>

	Experimental febootstrap install script.

	To-do: Use valgrind.

	Bug: Segfault in Perl bindings.

	List installed applications (NOT WORKING).

	Generated code to support last 3 commits.

	Add test script to test recovery from qemu failure.

	Implement -command (to ignore errors) in guestfish, and allow recovery from qemu process failure.

	Allow recovery from guest failure.

	Generated code to support previous 2 commits.

	Implement 'strings' and 'hexdump' commands.

	Bug: write_file doesn't work with strings containing ASCII NUL.

	Note another bug found when testing on Koji.

	Missing BRs in spec file.

	Version 1.0.21

	Change memory calculation to choose a generous amount of memory.

	Merge branch 'master' of git+ssh://192.168.122.141/home/rjones/d/libguestfs

2009-05-08  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Added RHEL/CentOS example spec file.

2009-05-08  Richard Jones  <rjones@redhat.com>

	Force qemu quit when kernel panics (Charles Duffy).

2009-05-07  Richard Jones  <rjones@redhat.com>

	Update date in changelog line.

	Update %changelog in the specfile.

	Prepare for version 1.0.20.

	Fix leak in realloc failure (Jim Meyering).

	Use unsigned type for lengths.

	Handle EINTR and EAGAIN in reads.

	Specify prototyping behaviour for Perl XSUBs.

	Create daemon/m4 subdirectory if it doesn't exist already.

2009-05-07  Richard Jones  <rjones@centos5x32.home.annexia.org>

	Set mandir (as in RHEL 5).

	Version 1.0.19

	Misc changes to make tests pass in RHEL 5.

	Include /usr/sbin on the $PATH (for RHEL 5).

	Need to keep and modprobe dm_mod module for device-mapper support on RHEL 5.

	/dev/hd* is also a block device on RHEL 5.

2009-05-07  Richard Jones  <rjones@redhat.com>

	Add BR on ncurses-devel (needed for RHEL 5).

	Augeas is now completely optional.

2009-05-06  Richard Jones  <rjones@redhat.com>

	Added TODO item.

	Merge branch 'master' of git+ssh://rich@hakodate/home/rich/d/libguestfs

2009-05-06  Richard Jones  <rich@hakodate.home.annexia.org>

	Note bug about chroot not found.

2009-05-06  Richard Jones  <rjones@redhat.com>

	Note Augeas support should be optional (TODO).

2009-05-06  Richard Jones  <rich@hakodate.home.annexia.org>

	Fix missing futimens bug.

	AC_CHECK_FUNCS for multiple functions.

	RARRAY_LEN macro for Ruby < 1.9.  Small strictness fix for OCaml < 3.10.

	Backport CAMLreturnT for OCaml <= 3.10

	Missing include <ctype.h>

	virt-inspector configure bug.

	Added bugs noted by Charles Duffy.

2009-05-01  Richard W.M. Jones  <rjones@redhat.com>

	Another TODO item.

	Typo in documentation.

	Implement !local in guestfish.

2009-05-01  Richard Jones  <rjones@redhat.com>

	Version 1.0.18

2009-05-01  Richard W.M. Jones  <rjones@redhat.com>

	Generated code for 'equal' command.

	Added 'equal' command to compare files.

	Generated code for ping-daemon command.

	Added ping-daemon command.

	Generated code for dmesg command.

	Added dmesg command.

	Generated code for drop-caches command.

	Added drop-caches command.

	Generated code for cp, cp-a and mv commands.

	Add cp, cp-a and mv commands.

	Always look for qemu-kvm, even on non-x86_64 platform.

	Check fakechroot >= 2.9

2009-04-30  Richard Jones  <rjones@redhat.com>

	Version 1.0.17

	Generated code for grub-install command.

	Add grub-install command.

	Replace rtl8139 network card with virtio-net.

	Add documentation for the 'edit' and 'echo' commands.

	Added guestfish 'echo' command.

	Added a comment syntax to guestfish (# ...).

	Prepare for version 1.0.16.

	Added notes to the 'fsck' command documentation.

	Added 'zero' command to wipe partition tables and superblocks.

	Correct the path to /sbin/fsck.

	Enable parallel builds (Jim Meyering).

	Add generated code for 'fsck' command.

	Added 'fsck' command.

	Bind-mount /dev, /proc and /sys into chroot when running commands.

	Autosync now runs umount-all; sync

	Fix umount_all command so it unmounts filesystems in the correct order.

2009-04-30  Jim Meyering  <jim@meyering.net>

	build: don't tell "make clean" to remove my '~' backup files
	Hi Rich,

	automake's policy on what to remove via "make clean" is reasonable:
	if running build rules creates it, then "make clean" can and should remove it.
	However, even if build rules happen
	to create backup files, please remove only the specific ones
	they can create, not all of the ones in a directory.  Just in case
	someone relies on those and expect them to hang around...

	>From 1e8be391ac17b4ddcf9671e8413d2660844e6993 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Thu, 30 Apr 2009 15:47:52 +0200
	Subject: [PATCH] build: don't tell "make clean" to remove my '~' backup files

	* Makefile.am (CLEANFILES): Don't remove '~' backup files.
	* daemon/Makefile.am: Ditto.
	* examples/Makefile.am: Ditto.
	* fish/Makefile.am: Ditto.
	* images/Makefile.am: Ditto.
	* inspector/Makefile.am: Ditto.
	* java/Makefile.am: Ditto.
	* ocaml/Makefile.am: Ditto.
	* ocaml/examples/Makefile.am: Ditto.
	* perl/Makefile.am: Ditto.
	* python/Makefile.am: Ditto.
	* ruby/Makefile.am: Ditto.
	* src/Makefile.am: Ditto.

2009-04-30  Richard Jones  <rjones@redhat.com>

	Safer way to copy RPMs in no-net builds (Jim Meyering).

	Updated the generator so it only overwrites files if they've changed.

	Correction to 366a86fb6097ab0f704443f0a6ae2addbc3745d5:   The code in fish/completion.c is generated, so update the generator instead.

2009-04-30  Jim Meyering  <jim@meyering.net>

	* fish/completion.c (commands): Declare with a 2nd "const".
	It's a const array of const strings.

	>From 70c53d3169ae53fc4874e00975893d33387c51e6 Mon Sep 17 00:00:00 2001
	From: Jim Meyering <meyering@redhat.com>
	Date: Thu, 30 Apr 2009 14:33:01 +0200
	Subject: [PATCH] * fish/completion.c (commands): Declare with a 2nd "const".

2009-04-30  Richard Jones  <rjones@redhat.com>

	Use AC_PROG_CC_STDC because we really need an ISO C compiler (Jim Meyering).

	Use safe_malloc and/or check returns from malloc (Jim Meyering).

	Fix unchecked malloc (Jim Meyering).

	Fix unchecked malloc & realloc in 'commandv' func (Jim Meyering).

	Check return value from realloc call (Jim Meyering).

	Rename tune2fs.c -> ext2.c

2009-04-28  Richard Jones  <rjones@redhat.com>

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

	[PATCH] add dependency to ensure make-initramfs.sh is rebuilt when (Jim Meyering)

	Resync with proposed Fedora specfile.

	Build virt-inspector HTML for the website.

	Prepare for 1.0.15.

	XML output.

	Perl output.

	--fish and --ro-fish options working.

	Added virt-inspector program from virt-v2v.

	s/builddir/top_builddir/ (Luciano Miguel Ferreira Rocha).

	Fix perl hanging during configure (thanks to Luciano Miguel Ferreira Rocha).

2009-04-27  Richard Jones  <rjones@redhat.com>

	Generated code for ext2 UUID and label functions.

	Functions for getting and setting the ext2 UUID and label.

2009-04-26  Richard Jones  <rjones@redhat.com>

	Version 1.0.14

	Add --version option (show version) to guestfish.

	Added the --ro option (readonly) to guestfish.

	Update BUGS with latest status.

	Get ready for version 1.0.13.

	Multiple callbacks during file transfers could cause data corruption - FIXED.

	Check for multiple callback in RPC code.

	More checks.

	Include UTF-8 NLS.

	Use ferror to check for error conditions in pipe.

	Carefully check return values from xwrite.

	Don't echo output in scripts.

	Added rpmqa example.

	Document qemu wrappers.

2009-04-25  Richard Jones  <rjones@redhat.com>

	Documentation fix.

	Note about bugs.

	Clean up *~ files in recipes/

	New recipe: iso2tar.

	Include UDF driver (for CD/DVDs).

	Include the right RPMs and kernel modules for NTFS & VFAT mkfs and mounts.

	Generated code for lvremove, vgremove, pvremove.

	Implement lvremove, vgremove, pvremove.

	Better generation of recipes page.

	export2tar recipe

	Improve CSS on recipes page.

	Added guestfish recipes.

	If LIBGUESTFS_PATH is set, guestfish shouldn't modify the path.

	Added configure test for qemu vmchannel support.

2009-04-24  Richard Jones  <rjones@redhat.com>

	Experimental recovery process should help with not cleaning up qemu.

	Remove the debug mode from make-initramfs.sh.

	Add support for ext4 to examples/to-xml.c

	chmod /sysroot (also makes it known to fakeroot)

	Resync specfile with proposed specfile in Fedora RR.

	Ruby bindings didn't NULL-terminate an array, resulting in segfault.

	Added bug about qemu not being cleaned up after segfault.

	Get ready for version 1.0.12.

2009-04-24  Richard W.M. Jones  <rjones@redhat.com>

	Don't allocate file chunks on the stack.

	Don't use large message buffer on the stack (fixes Java/i386 segfault).

2009-04-23  Richard Jones  <rjones@redhat.com>

	Fix 64 bit memsize overhead.

2009-04-23  Richard W.M. Jones  <rjones@redhat.com>

	catsprintf leaks, use open_memstream instead.

	Remove the 'debug mem' command, it's never going to work.

	Reduce the amount of memory allocated to guests based on some testing.

	Implement 'debug sh' and 'debug fds' commands.

	Implement extensible strings with catprintf.

	Use AC_GNU_SOURCE in daemon.  Don't need _GNU_SOURCE in C files any more.

	Fix buffer overrun in guestfish command-line parsing.

	Generated code for debug command.

	Add outline of 'debug' command.

	Automatically generate ChangeLog file from the git log (thanks: Jim Meyering).

	Substitute '-' in command names in guestfish documentation.

	Fix Java tests by passing correct library path to JVM.

	Configure script tests for Perl modules.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

2009-04-23  Richard Jones  <rjones@redhat.com>

	Avoid a cast warning on 32 bit.

2009-04-23  Richard W.M. Jones  <rjones@redhat.com>

	Instructions on running KVM as non-root (Robert P. J. Day).

2009-04-22  Richard Jones  <rjones@redhat.com>

	Version 1.0.10

	Generated code for new mount_* commands.

	Add mount_ro, mount_options, mount_vfs.  Fix small bug in OCaml generator.

	Get ready for 1.0.9.

	Force a specific network NIC model (allows to work with latest qemu from SVN).

	Fix infinite loop encountered when reading Windows disk in example program.

	Added pkgconfig file (libguestfs.pc).

	Version 1.0.7

	Fix quoting of list args in guestfish manpage.

	Resync specfile to Fedora RR.

	Create /tmp directory in the initramfs.

	Include fuse.ko module in image.

	Version 1.0.6.

	Note, but don't fix, javadoc bug.

	qemu runtime done - remove from TODO list.

	Allow qemu binary to be overridden at runtime.

	Allow selection of qemu using --with-qemu

	Error message about using --with-java-home=no to disable Java support.

2009-04-21  Richard Jones  <rjones@redhat.com>

	Fixes for Java.

	Add extra kernel modules required for ext4 support.

	Updated documentation, prepare for 1.0.5 release.

	Another Java test.

	Testing the Java bindings.

	Java bindings compile, not tested.

	Add summary message, fix libruby detection.

	More notes in the TODO list.

	Basic Java build environment.

2009-04-20  Richard Jones  <rjones@redhat.com>

	Various fixes to build and test in Koji.

	Fixes for CDPATH being set.

	Use standard names for the OCaml/Perl/Python/Ruby subpackages.

	Ruby also supported

	Include the __cplusplus header magic so API really callable from C++.

	Version 1.0.3.

	Removed TODO item, now implemented.

	Added tar-in, tar-out, tgz-in, tgz-out commands.

	Various fixes to the daemon:  - make sure SIGPIPE doesn't kill us  - warn not to use macros in FileIn functions  - add shell_quote function

	Some fixes to daemon upload command:  - don't leak the file descriptor along error paths  - can't use those macros in FileIn functions

	Make daemon cancellation really work.

	Add tests for the upload and download commands.

	Prepare for version 1.0.2.

	Avoid warning: Don't generate read_reply label unless needed.

	Fix file descriptor leak in daemon.

	Generated code for 'checksum' command.

	Add 'checksum' command.

	Implement upload and download commands.

2009-04-19  Richard Jones  <rjones@redhat.com>

	Use GUESTFS_LAUNCH_FLAG in the daemon, and use correct uint32_t.

	Document initial message.

	Document the internal protocol.

	Implement NEED_ROOT_OR_IS_DEVICE macro.

	Implement _send_sync, _send_file_sync and _receive_file_sync.

2009-04-18  Richard Jones  <rjones@redhat.com>

	Begin to add the upload and download commands.

	Add ruby/ directory, add more warnings.

	Split out send and reply operations into separate callbacks.

	guestfs_send -> guestfs__send, in case we want a future command called "send".

	Separate out the high-level API actions.  - Split out the high-level API actions so that they are in a    separate file, and use the defined guestfs C API, instead of    fiddling around with internal structures.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

	Rewrite of main loop impl, start of FileIn/FileOut support.

	Merge branch 'master' of git+ssh://g-rjones@et.redhat.com/git/libguestfs

	Version 1.0.1

2009-04-16  Richard W.M. Jones  <rjones@redhat.com>

	Allow Ruby bindings to build correctly even if libguestfs not installed.

2009-04-16  Richard Jones  <rjones@redhat.com>

	Fix spec file.

	Ruby bindings.

	Resync with proposed Fedora specfile.

	Missing free() on return path (thanks: Steve Grubb).

	TODO list updated.

	Note slow kernel boot times for F11/12.

	Updated TODO, BUGS.

	Added Python documentation.

	Really needs qemu 0.10 for vmchannel support.

2009-04-15  Richard Jones  <rjones@redhat.com>

	0.9.9 for final cleanups before 1.0 release.

	'guestfish edit' commands and several bugfixes.

	Started BUGS list.

	Move guestfish 'alloc' command to a separate file.

	Version 0.9.3.

	Show byte sizes in example.

	Generated code for blockdev_* calls, RInt64, enhanced tests.

	Added blockdev_* calls.  RInt64 type.  Enhanced tests.

	Be strict about commands which don't test themselves, warn about missing tests.

	Version 0.9.2.

	Display ext2/3 details, and some bug fixes.

	Correctly free memory in RHashtable binding for OCaml & Python.

	Generated code for tune2fs-l command and RHashtable return type.

	Added tune2fs-l command and RHashtable return type.

	Added to-xml program.

	Remove 'df' program from examples - didn't ever work.

	Generated code for stat/lstat/statvfs changes.

	Added stat, lstat, statvfs and associated stat structures.

2009-04-14  Richard Jones  <rjones@redhat.com>

	Quoting in guestfish.

	Version 0.9.1

	Added bindings for GNU readline.

	Better handling of trailing \n problem.

	Typos and documentation updates.

	Generated changes to perl XS bindings.

	Add 'command' and 'command-lines'. Fix args freeing in Perl bindings.

	Fix 'file(1)' command to work on /dev devices.

2009-04-13  Richard Jones  <rjones@redhat.com>

	Generated files for file(1) command.

	Added file(1) command.

	Note a bug.

	guestfs -> GuestFS

	Python files.  Add $QUICK_RPMBUILD flag to avoid running tests.

	Install guestfs.py

	Missing dependency.

	Describe all available bindings.

	Need to package generator.ml -- oops.

	Prepare for 0.9 release.

	Extra CLEANFILES.

	Additional test programs for Perl, Python, OCaml bindings.

	Lots, mainly Python bindings.

	Stricter checks on short descriptions.

	OCaml bindings build using the installed, not built, library.

	Old versions of augeas lack aug_load, aug_defvar, aug_node.  Check for those calls.

	Version 0.8.1

2009-04-12  Richard Jones  <rjones@redhat.com>

	Distribute TODO file.

	Fix looping bug in parse_string_list, and remove debug message.

	More BuildRequires.

	More TODO items.

	Add BR qemu (required to run the tests).

	Added some ideas in TODO file.

2009-04-11  Richard Jones  <rjones@redhat.com>

	Minor adjustments for 0.8 release.

	Don't delete examples/Makefile.

	Added test suite.

2009-04-10  Richard Jones  <rjones@redhat.com>

	Added test framework, no tests implemented yet.

	Need to set LD_LIBRARY_PATH so we pick up the right C library.

	Generated files for previous commands.

	New commands: rm rmdir rm-rf mkdir mkdir-p chmod chown

	CHROOT_OUT must preserve errno.

	Fix off-by-one error in Augeas wrapper code.

	Change Err -> RErr for consistency with other return types.

	Documentation fix.

	Code cleanup.

	Add more function checking.

	Just use plain lists for argument representation.

	Documentation fixes.

	Correction in the aug-ls documentation.

2009-04-09  Richard Jones  <rjones@redhat.com>

	Remove *~ files when doing 'make clean'.

	Documentation update.

	Bumped version number.

	Added aug-ls (generated code).

	Add aug-ls command (non-generated code).

	No need for mirror, add HTML docs to subpackages.

	Distribute the pod.css file.

	Generate webpages.

	Added Augeas support.

	Updated HACKING notes about debugging.

2009-04-08  Richard Jones  <rjones@redhat.com>

	Generated code for new guestfs_read_lines API call.

	Definition and implementation of new guestfs_read_lines API call.

	Version 0.6

	Added OCaml examples.

	OCaml bindings compile.

	Many non-daemon functions are now auto-generated.

	Version 0.5: Numerous small fixes to make rpmbuild work again.

	Added more Perl bindings tests.

	Bug fix: Trailing whitespace from 'pvs' command.

	Fixed Perl bindings, they now work properly.

	Ignore perl/Guestfs.bs file.

	Updated generated files.

	Mention OCaml & Perl bindings in introduction.  Error handlers must copy 'msg' if they want to stash it.

	File was removed, updated dependencies.

	Need to distribute OCaml bits even if OCaml not found.

	First version of Perl bindings, compiled but not tested.

	Added a note that I'm not going to do Python bindings for now.

2009-04-07  Richard Jones  <rjones@redhat.com>

	Outline OCaml bindings.

	Added guestfish(1) manpage.

	Fix: "aclocal: couldn't open directory `m4': No such file or directory"

	Added framework for the language bindings.

	New header file.

	Remove unnecessary kernel drivers.  Big reduction in image size.

	Fix incorrect realloc size which was causing 'ls' command to fail on large directories.

	Implement simple lvs/vgs/pvs commands.

	Rename pvs -> pvs-full (etc), so we can add simple pvs (etc) commands.

	pvs/vgs/lvs commands working now.

2009-04-06  Richard Jones  <rjones@redhat.com>

	Implement list-devices and list-partitions.

	Implementations of 'cat', 'ls', and some cleanups.

	Debugging tips.

2009-04-04  Richard Jones  <rjones@redhat.com>

	Fix incorrect short description of 'cat' command

	Implement RString and RStringList return types.  - implement 'll' command.  - outlines for 'ls' and 'cat' commands.

	Implement the alloc shell command.

	guest_add_{drive,cdrom} now test if the files exist.

	Add %post and %postun.

	Fix parsing of paths with more than one element.

	LIBGUESTFS_PATH implementation.

	Document --add and --mount options.

	Mostly working spec file.

	Implemented autosync, make it the default for guestfish.

	Generate actions section in guestfs.3 man page.

	Implemented running actions in guestfish.

	More tidy up of messages.

	Command line, help.

	Command line and interactive shell parsing, prompts etc.

2009-04-03  Richard Jones  <rjones@redhat.com>

	Added outline of shell command, added generator support.

	Small updates to the generator.

	Implemented 'mount' and 'touch' commands.

	Added a HACKING file.

	Added images/ directory for test images, and one image.

	Parses return values and returned errors properly.

	Make the partition configurable.

	Added README file for examples directory.

	No verbose.  User can enable by setting LIBGUESTFS_DEBUG=1 if they want.

	Pass -no-kqemu parameter to avoid warning about kqemu.

	Makes a series of non-trivial calls.

	Daemon and library are mostly talking to each other now.

	Remove initramfs/fakelog.root if make-initramfs fails.

	Remove NFS support - we will probably use FTP instead.

	Lots more auto-generation.

	Set up ethernet interface.

	Start the generated code and code generator.

	Add the first version of the guestfsd daemon.

	Add update-initramfs.sh.in so we don't need to rebuild initramfs for small changes in the daemon.

	Updated to newer GPLv2 document.

2009-04-02  Richard Jones  <rjones@redhat.com>

	Correctly handle the case when select runs out of filehandles.

	Code to handle the daemon communications socket.

	Guest boots, and basic select/callbacks work.

	Ignore generated manual page.

	More documentation updates.

	More documentation.

2009-04-01  Richard Jones  <rjones@redhat.com>

	Documentation of low-level API.

	Add test-boot-realistic target.

	Correct permissions problem in root filesystem by using febootstrap-run properly.

	Various fixes to the build system, add 'make test-boot-image' target.

	Run autoreconf with -i parameter.

	More files to ignore.

	Print size of kernel, don't need to delete gnome/help any more.

	Moved .cvsignore -> .gitignore.

2009-03-24  rjones  <rjones>

	Build the initramfs.

	Now using febootstrap.

2009-03-04  rjones  <rjones>

	Starts up QEMU now

2009-03-03  rjones  <rjones>

	Running qemu as a subprocess.

	Final fixes to build environment, and added autogen.sh.

	Build environment set up for libguestfs.
