Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 1865ace6332ce4a9446ba04e7afbcd0b > files > 7

libguestfs-devel-1.10.12-1.fc15.i686.rpm

2011-12-22  Richard W.M. Jones  <rjones@redhat.com>

	df: Disable part of virt-df test.
	See:
	https://www.redhat.com/archives/libguestfs/2011-November/msg00051.html
	(cherry picked from commit 6e6b3ff35f9baafb22d5459ca13c112b1e00ae1b)

	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.

	Cherry picked from commit 615924abaa968398d6529529fa2f31ae23de825b and
	rebased for old libguestfs branches that had separate
	daemon/configure.ac.

	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>
	(cherry picked from commit 9a5f784d511a8f00a8386f316eab41fe660430db)

2011-11-10  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.11.

2011-11-09  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.
	(cherry picked from commit 6011b1f803ba7308c6a94b9bf6b7212cfccb9f42)

2011-10-31  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.10.

	Update to latest gnulib for stable-1.10 branch.

2011-10-31  Jim Meyering  <meyering@redhat.com>

	bootstrap: use --libtool (cherry picked from commit 343ba6d482643882c3ab3a529f3d882ee1ba36f9)

2011-10-31  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.
	(cherry picked from commit 365885dab2ae6dcdf0b2c45d0adeb803ade03f63)

	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'.
	(cherry picked from commit 3814680423984b3c46c2f99e944c2a71862bde9f)

	appliance: udev-174 moves udevd to /lib/udev/udevd (instead of /sbin/udevd) (cherry picked from commit fef0ff3d869d2ebdb48eea0c538270fc98f5952d)

2011-09-16  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.9.

	Version 1.10.9.

	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.
	(cherry picked from commit 99624d29226ece1abbbdd921183b360f5f80de91)

	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.
	(cherry picked from commit 8ab2b85b2a67270b8cc5a91bb62a70c84cd6a02c)

	daemon: Factor out name of virtio serial channel.
	This is just code motion.
	(cherry picked from commit 73be6db9bf1c0ae96262a5f4fa9328bb4e648637)

	Create /sys directory if it doesn't exist already.
	Ubuntu 10.04 LTS packages don't create /sys.
	(cherry picked from commit 5b012024c49672cc69635ff01f9b9e4f87de1c65)

	ruby: Check Ruby callback exists before we call it (RHBZ#733297). (cherry picked from commit 1a4f1df77eecee053eaae35d5544f151d37342e2)

	ruby: Use a regular C array to pass the arguments through rb_rescue. (cherry picked from commit 675f336319058fdbaf11ee004968b4543a5a9815)

	ruby: Append newline character after printing exception in callback. (cherry picked from commit 0cd5b9ac15c62eb570ec74d19b4aebde4990fd82)

2011-09-16  Hilko Bengen  <bengen@hilluzination.de>

	python: Newer versions want parentheses around arguments of "print" (cherry picked from commit 54911bdd325393d1f7f2861f298463c364b45469)

2011-09-16  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.
	(cherry picked from commit 4fb3b23fb69e4274f434f9258e38f185426298f7)

	Coverity: fix memory leak along error path. (cherry picked from commit ce18be33cd5279a8d4120eedd037400c275585c0)

	Coverity: Initialize msg buffer.
	msg_flags was not being initialized and would have been passed to
	sendmsg with a random value.
	(cherry picked from commit a31ac8fc32297cc9185fd20a5578d2bc81cc1bce)

	Coverity: fix memory leak in guestfish. (cherry picked from commit c38cb92ec478c4dca83e4d38963720f463d52314)

	Coverity: in daemon, free struct in RStruct, RStructList functions. (cherry picked from commit b2edcbe1b9c9d161e96cb56d0efd944e84d84526)

	pclose: Fix other places where we only tested pclose == -1.
	pclose can return > 0 when the status of the command was non-zero.
	(cherry picked from commit 631faad97171d7c1238b2e413c663cf61476f440)

	test_qemu: pclose may return any != 0 on error.
	In particular pclose returns a status > 0 if the command fails.
	(cherry picked from commit a24652c7b27e8494268ccb6c9a5a2e5541ba5efd)

	qemu detection: Free up previous qemu help/version strings if they exist. (cherry picked from commit 2ace9be4cd69e84cd88e5b0fd74de861a4973c91)

	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.
	(cherry picked from commit 08e77ad8cb4e8ac70d4217ebd5d236eba81645b5)

	Coverity: Check guestfs_inspect_get_product_name() != NULL before using. (cherry picked from commit fa44536b0ff12102c72ae0337e51d272f0fc2353)

	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.
	(cherry picked from commit 00fef9eed6a53e10a975814beef775483ff0b3dd)

	Coverity: Ignore return value from guestfs_launch in virt-rescue.
	We expect guestfs_launch to fail in this program.
	(cherry picked from commit 9bab154d48e367702b65852c3c822341b474ffd2)

	Coverity: Check return value from sscanf in bindtests calls. (cherry picked from commit 4c76aaa391d591c5917a06b0277fb9eb7d6d790f)

	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}"
	(cherry picked from commit a4db75521d6026410425187fc2c5c9cb931a69b5)

	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.
	(cherry picked from commit e4cba8f2b1a68e7361ce342ff659cccb0490446e)

	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.
	(cherry picked from commit 06019bc82e107f7715ebc59e491610e06dad1e39)

2011-08-17  Richard W.M. Jones  <rjones@redhat.com>

	Vesion 1.10.8.

	ruby: Fix typo in Ruby bindings file. (cherry picked from commit 44c3a300265ef7bfa5d49d2b9a2a8faccd9db2de)

	Note that additional memory may be required to typecheck Augeas lenses (RHBZ#729887). (cherry picked from commit 7739d7f471f9575828bd32489695d92dde005a9c)

	fish: Document that remote run in cmd substitution context hangs.
	This documents bug 592910.
	(cherry picked from commit 6cabc1cd02e181063596b48df55c3f6db51a6bb9)

	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
	(cherry picked from commit b9838001015a06a69a08b69d9f013d82f0ea3139)

	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).

	Cherry picked from commit 2c57305f72cd6181d1849ae6e1b892aa01c7f844
	and backported to stable-1.10 branch.

	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.

	Cherry picked from commit f7d18c84dde596699ffc5100fec2cf7b0d582450
	and backported to stable-1.10 branch.

	fish: Add fish-cmds.h to generator_built.
	This updates commit 3064277680ad11f887691646d0fa17bb35f38c19.
	(cherry picked from commit 85efbc6aa70d522af066a38fd1aae05b790c46d3)

	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.

	Cherry picked from commit 3064277680ad11f887691646d0fa17bb35f38c19
	and backported to stable-1.10 branch.

2011-08-07  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.7.

	docs: Fix function names in deprecation notices. (cherry picked from commit 60adf092a8900323c048c94f3f0934be416a3eb6)

	docs: guestfs_set_out_of_memory_handler returns void, not int.
	It always has done.  The documentation was wrong.
	(cherry picked from commit 70f44cc0ea0bcdd025ed657461e07f6778be44ba)

	debian: bash is required to run libtool replacement script.
	This was failing on Debian where $(SHELL) is the minimal dash shell.
	(cherry picked from commit 6a98ed953b1e3b0d3251385f0ca2dd1dee80b63d)

	configure: Fix info about virt-resize when OCaml bindings are disabled. (cherry picked from commit e1c6d1738a2b9123dd08fb4ecff8176daf558f35)

	debian: Add gawk to packagelist.
	It's already included, but implicitly.
	(cherry picked from commit 5f9c168d9135fa81ee2f3a15461467fe04c26888)

	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.
	(cherry picked from commit 995b3fecb9af7a8bd52b238bad2a631a1193c83a)

	Change link, since PostgreSQL switched to using git. (cherry picked from commit 3cf31c2fe0b356ea5c04117c5235b0a3cfe34971)

	Don't fail if HOSTNAME field is missing on Red Hat guests (RHBZ#726739). (cherry picked from commit bad3f4b54a959685f3c0697238fc5753096834fb)

2011-07-27  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.6.

	perl: Fix another place where qw() was used as parentheses.
	This is a fix for Perl 5.14.

	See previous commit 5c3c7e8825341e18c9449976f8a321a04cc78d79.
	(cherry picked from commit c70532ab4b3d977ed7484e473107808b22d90a2a)

	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.

	(Cherry picked from commit 2b8b3f9794ceb43eabd3083e225c669896d8b186).

	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.
	(cherry picked from commit 01f6bce19dbfaf42fa4908683f3cc8785585d023)

	test-tool: Print FEBOOTSTRAP_* environment variables (RHBZ#671082). (cherry picked from commit 15289d4b726d7c38702794df23c61ae40879a46c)

	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.
	(cherry picked from commit 8386a57458aceb768f0e59aa090a15a544f7466e)

	build: Redirect ./configure errors in general to config.log. (cherry picked from commit 71eb0bf45649eefa1f0cd4b1372cfc2653c8e7a5)

	build: Send failed Perl test configure output to config.log. (cherry picked from commit 610642491a4846f45c7b233060ffde46f6ca09f0)

	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"
	(cherry picked from commit 806b6e01506dea4eae68ac3e468d9398d63cafcb)

	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.
	(cherry picked from commit 1d0f398d8e3c74ce6a70cbbb8d9b8ae07c6d7ef6)

	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.
	(cherry picked from commit 168fd4ad5d1e5da93e11388095d41aaa8f804ceb)

	appliance: Capture stderr from qemu to the event system. (cherry picked from commit 8b2e60ce4b46e86da093ee64d4e0b0ae3c998d55)

	appliance: Document pipe fds. (cherry picked from commit 70daccfe4e9939078436c2830928d8e53432dd84)

	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.
	(cherry picked from commit 5dec7842655dd872bb0fd9fe07f6a9eab6b13bfd)

	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.
	(cherry picked from commit d82438431c1551610eb7d9945fa76d6387534582)

	Add missing reference to guestfs-perl(3) to guestfs(3). (cherry picked from commit a548c9668315844763456c15e89e35e9702b851a)

	fish: Add is_interactive flag.
	Decide early (before launch) if this is going to be an interactive
	session, and set the is_interactive flag.
	(cherry picked from commit e187aa8431ccf0436d9aee03ee1e80b79f148217)

	guestfs.h: Add missing extern keyword before event functions. (cherry picked from commit 4b53a3737b76cad7aca407a0d9e37fed1d42ef69)

	mkfs: Don't die if mke2fs is not available.
	Allow other types of filesystems to be created.
	(cherry picked from commit c6340f45007b0ab7e1c5391cf78afc10a816553f)

2011-07-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.5.

	appliance: Add systemd to get /sbin/reboot for virt-rescue (RHBZ#661280). (cherry picked from commit aa8a9ebf29b7fdc97467e911560a1a7a774e9e1f)

	part-get-bootable: Fix when partitions are missing or unordered (RHBZ#602997). (cherry picked from commit 511c82df46f5c6f4a7f984fdb81d4691038ed6da)

	Document that ntfsresize cannot be used multiple times (RHBZ#685009). (cherry picked from commit 2ba2ddf2113db7bb2afe3f739dc3cbaa5416a4ba)

	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.
	(cherry picked from commit 0344248af55802bbbd816b349ec1ba9305996f6e)

	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).
	(cherry picked from commit f7a11c60437afa700775eaa86a9be1a543427959)

	Add caution subdirectory containing safety and liveness tests.
	Not that I'm paranoid about qemu breaking snapshots of anything like
	that ...
	(cherry picked from commit f3ada2c7653866f2529c9f18aaa99f76cd984844)

	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.

	(Cherry picked and backported from
	commit 5f26270c343bf543a7bf20cf3e6f182f6282f8ea)

	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.
	(cherry picked from commit adb5db58d850ce6d15380177a63c68276f863c98)

	inspector: Fix comment in virt-inspector.rng.
	The comment referred to the command line syntax of the old
	virt-inspector.
	(cherry picked from commit ea96c7acf7a332c08c2214796add647224a2ede0)

	Revert "Lib.pm: unknown filesystem label SWAP-sda2 (RHBZ#666578)"
	This reverts commit 5cab0d6c807d8a3bf9690375c663d11a10e21656.
	(cherry picked from commit 123610f1b5133a9e541a245467f60d065ea96575)

	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.
	(cherry picked from commit 56b94f5f6aa7981533ad867cc908c6e9cca2ba42)

	perl: Ignore MYMETA.yml.
	This file is created by one of the build tools used by Perl 5.14.
	(cherry picked from commit cabfaa857fbd325bd0303fa56b28df8ce52aab33)

	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.
	(cherry picked from commit 5c3c7e8825341e18c9449976f8a321a04cc78d79)

2011-06-13  Richard W.M. Jones  <rjones@redhat.com>

	Version 1.10.4.

	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
	(cherry picked from commit 4ee190628bc05f0c8fad1f6d9c3e85619a91e8b8)

2011-06-13  Jim Meyering  <jim@meyering.net>

	build: include <string.h> for src/match.c's use of strlen (cherry picked from commit daf55c07978cd29fe6675911bf76da0b056fdae1)

2011-06-13  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Keep Coverity happy by ignoring some return values. (cherry picked from commit f5096dd546ac43c7288b3ab7aec1562f070f78f6)

	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.
	(cherry picked from commit 29453a58d818df24c238d0a08a68886ebe4029dd)

	Coverity: Missing return on error path. (cherry picked from commit 7a091a11d7aeddc170e4d1b833fd9d7d18c00841)

	Coverity: Ensure fp is closed along all error paths. (cherry picked from commit 346c5b0ebf58c81f657540eeb72abaa41bfc4e3f)

	Coverity: Close directory handle along error paths. (cherry picked from commit 7c020a14802255c966b2b402b983551b86a08bba)

	Coverity: Don't leak argv arrays. (cherry picked from commit 869c11b30c72c57e48dd63c4641087a06abe80d5)

	Coverity: Don't leak error strings. (cherry picked from commit 3135b8c378f9f98ae66e37fd79d305764334980d)

	Coverity: Check return value of sysroot_path.
	For some reason we were checking the parameter!
	(cherry picked from commit 7fae594df719d1d81a043c4d0280b359f750facb)

	Coverity: Check return value of malloc. (cherry picked from commit 3a5bd5aba23583e64bfaabc906ca95b0f9d37578)

	Coverity: Don't close fd_cwd if fd_cwd == -1. (cherry picked from commit 76dfb74324fa0daa343d7edf89bd05e1fe7b4db0)

	Coverity: Avoid calling sort_strings (NULL, 0) on empty list. (cherry picked from commit 3ed8d5122026f37dd96cc7e8503c4f3ecf0afbb7)

	Coverity: Don't call free_strings (NULL). (cherry picked from commit 48ebf50f3136ac27f4252662e351230ffa2b15e5)

	Coverity: Remove unreachable code. (cherry picked from commit 9160eec4fbf12643d8d5fa13465066822b2fed92)

	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.
	(cherry picked from commit bfc02f78f36d88543f8435e450e28c986b667a94)

	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.
	(cherry picked from commit 2f73ea343cc4a3433f20e99a7835152767a70f80)

	Only include date, not time, in BUGS file.
	This is so the file does not change so often when using 'make dist'.
	(cherry picked from commit cdd11b758f2601f7eeda4fca684638b0335d531a)

	virt-ls: Refactor mode selection code.
	This is just code motion.
	(cherry picked from commit bb965ded274f911fb5d7889f88db9adaad1d2a52)

	virt-ls: Small fix for output of --help option. (cherry picked from commit 7177340a6f0e3ac1f238c69b0ad5267e18252fe2)

	Ubuntu: Fix compilation of virt-resize if old libguestfs already installed. (cherry picked from commit 418842518bf856144e2ab33abb6de417d1b60753)

2011-06-13  Nikita A Menkovich  <menkovich@gmail.com>

	daemon: Fix error message. (cherry picked from commit 08bc8e40cea750bd35493ecab514e8e37c883a0a)

	debian: Add build dependencies: dpkg-dev, devscripts, gperf. (cherry picked from commit b85b4fafe1e23dc99d10647f6d35cd37b0a3f02a)

2011-06-13  Richard W.M. Jones  <rjones@redhat.com>

	daemon: Make sysroot_len be size_t instead of int. (cherry picked from commit 4b91462bad010a0b214e808f94a916002be65b91)

	guestfs-examples(3): Remove link to OCaml homepage. (cherry picked from commit 95368927219f2888aeb1232c7ec950dde538bc39)

	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.
	(cherry picked from commit ef6f877b9df261fad1fbf361b8ce7af1055dfbb7)

	fuse: Add note about allowing other users to see filesystem (RHBZ#705200). (cherry picked from commit b777a5a64926e9bf9b7109a0e4fb1332b20fa37f)

	generator: Mark sfdisk functions as deprecated.
	Point to the part-* API calls as replacements.
	(cherry picked from commit 12414ddc020f94e75a791815d2c1ac2b0d76eaf1)

	generator: Mark mount as deprecated.
	Callers should use 'mount_options' or 'mount_vfs' instead.

	See also:
	http://libguestfs.org/guestfs.3.html#libguestfs_gotchas
	(cherry picked from commit 4ec8fd189dc8404e713c00bcfc36de358f5cdca3)

	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.
	(cherry picked from commit 31de91f6d2605899b3a797b73b358eec9c0b1196)

	generator: Check the flags fields. (cherry picked from commit b43482964a8c7e19f47943506872cd58601c28e9)

	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.
	(cherry picked from commit 8c0aca8d9280fb87027826fe89d70cc2701e7f8b)

	lib: Add GCC version macro to the header file.
	This will be used to internally enable various GCC enhancements.
	(cherry picked from commit 33adb59b60b1358656439a757f319ba8ce81e26c)

	lib: Add vertical space between each function in <guestfs.h>. (cherry picked from commit 36b236fc97880c04e2ceeac502ff07a5e9993e28)

	appliance: Use qemu -machine option where available (RHBZ#700369).
	(Cherry picked from commit 64841fe8957f798df12a38bd81843c7011f2c278)

	debian: Note that libconfig-dev ought to be required.
	However it doesn't appear to be in Debian at the moment.
	(cherry picked from commit e95671d69e697f5b44775f797f1ef9fc0829d313)

	debian: Include debian/ directory in tarball.
	This makes it simpler to build Debian and Ubuntu packages from the
	tarballs.
	(cherry picked from commit 91ea9c1805112233140a463256c89072121fc182)

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

	Version 1.10.3.

	build: Sort EXTRA_DIST into lexicographic order. (cherry picked from commit 48c91ac03cb0a6ac351822fe70200abb8ac7f761)

	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.
	(cherry picked from commit 5ce759bfdc70c97121ef34ab4d5c918d568f2474)

	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.
	(cherry picked from commit 607aa95de927b5b8e4b212655c71bf21acbba372)

	configure: Sort output files in AC_CONFIG_FILES section. (cherry picked from commit 8ee0ad0caf2f90f4883909cd9b61c4dd6f9cffbf)

	doc: Use I<-...> for cross-references to command line options.
	This is now used consistently across all the documentation.
	(cherry picked from commit c49fc3831d12788c27b90d12f06a1cd69a88e3be)

	df: Refresh virt-df(1) man page.
	Add examples.

	Refresh description.

	Use I<...> to refer to command line options.
	(cherry picked from commit 988a8784647a66adbece3c9fb470c06a4cce3cdd)

	guestfs(3): Note that host file size limits affect guest disk limits. (cherry picked from commit 805e6dbc15eae5a4f85eea3c37e295aefaefeb69)

	guestfs(3): Refresh documentation for private data area keys. (cherry picked from commit 40f2b698ac765128bfcda5f0db893c95d09ae89a)

	guestfs(3): Referenced section is above, not below. (cherry picked from commit 108d7a134c5d26b967fa7162d9b80b40112c2869)

	guestfs(3): Refresh autosync gotcha documentation. (cherry picked from commit a5e421570cc840f70f2931e24b3df40c9a14cd2d)

	guestfs(3): Writing to a file descriptor, not just a pipe. (cherry picked from commit 470e373eea218c8d46b0c63dda93ee9ece48940f)

	guestfs(3): Refresh documentation for guestfs_create, guestfs_close. (cherry picked from commit dd86183f3f6d4d5ad28e1f12c56ba920934e7ad0)

	internal: Use size_t instead of int for command line size. (cherry picked from commit 10167cea98f93a74abe63f0a54d3a662997e7489)

	guestfs_close: Move local variables close to code that uses them.
	This is just code motion.
	(cherry picked from commit 478b2d80ed1d613f621e89a97a0b140004ebac29)

	guestfs_close: Remove unused local variable. (cherry picked from commit b2f8627ab59daeb03f036dde6c66fb9da736950c)

	guestfs(3): Document limits. (cherry picked from commit c0f96e9c6eda77e5e99de862dd4366010e4a1ab8)

	zero: Disable file test because of bug in file command.
	See: https://bugzilla.redhat.com/show_bug.cgi?id=705499
	(cherry picked from commit f55b32b2db83495fc0987f0fe0e979818704dff1)

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

	Version 1.10.2.

	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.
	(cherry picked from commit 16da7589e91b0030fb5564553447f80b97c0b18c)

	perl: Decrement refcount in $g->delete_event_callback.
	This updates commit bc468c87d04b34faacd208c49cca4a5096e5103c.
	(cherry picked from commit 3acf732c2f23d8508f692efb2b222169914bfcdc)

	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.
	(cherry picked from commit 0da6f55a6745686ca056c6bc8ebf647f111cb8e8)

	list-applications: If software hive is missing, this is an error.
	virt-inspector would exit silently if list-applications failed along
	this error path.
	(cherry picked from commit 782f3a36469ca396dbf998ea82af2699153be3ed)

	inspect: "centos" and "scientificlinux" are now separate distros.
	Previously we returned "rhel" for these, which was not accurate.
	(cherry picked from commit 2b0ca7e7b8d369a42a51b1feec72ae8f17257c78)

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

	Version 1.10.1

	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.
	(cherry picked from commit 08dc4a87b92435678780e9c49fe3bc1e7465d99f)

	fish: --rw option will be mandatory in 1.12 not 1.10. (cherry picked from commit a3cce465570bf192e993a67feedfbab7e662c75a)

	fish: Fix typo in guestfish man page (--format option). (cherry picked from commit 4c2bb8b301970e8853a8feaa95e3698224640fba)

	inspector: Refresh the virt-inspector(1) manpage. (cherry picked from commit 34d9fed24ad6a2d2e13bb817820e31373f6756e1)

	run script: Don't depend on libtool being installed.
	Also use 'exec' to run the program.
	(cherry picked from commit 5d139fa8a4a7f9ff65e7b936fd7376f661c72f48)

	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.
	(cherry picked from commit 33a2c184e12c0bdbf061a9f36c87d76c28444712)

	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.
	(cherry picked from commit 5790f5bfafb12cc2ed9365461bf66e0fdfde7150)

	inspector: Handle write failures when creating example-*.xml. (cherry picked from commit 0108d7861d4cc9a1f0d87d89080d1be7750e54b5)

	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.

	Cherry picked from commit 67493bfca44d436143d825b155bf2bc38990ea82
	and backported to stable-1.10 branch.

	inspector: Include <hostname> in output. (cherry picked from commit 36d3a4ce53317b104d48b60c9fe1ed679065d1d4)

	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.
	(cherry picked from commit a986e8dadb0c70634f6d1d89dd3e7bb5d9af3078)

	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
	(cherry picked from commit 3336b5448f12c9eb25bf7a0cecda1315c4cf07ea)

	inspect: Move shared PCRE match functions to separate file.
	This is just moving code around.
	(cherry picked from commit 439a42efdb052748c8457f866b2c68a581034826)

	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.
	(cherry picked from commit 3c1f762abed92f7a358f3bc93e3396d0606b18ad)

	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.
	(cherry picked from commit 70975981bed8e0c01b5966c10b507bb82086e5f8)

2011-04-18  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.
	(cherry picked from commit 6740028b333840eec5e8e46e8512f8155728b037)

	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.
	(cherry picked from commit ace1795d1045be96f92a68e6b61ffdee60431fef)

2011-04-18  Nikita A Menkovich  <menkovich@gmail.com>

	debian: Add dependency on libpcre-ocaml-dev. (cherry picked from commit 173c374bd01e84deafdaf1f9aa65b0f623e86470)

2011-04-18  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.
	(cherry picked from commit 0db662eae54b21fccadabe817afbc0fa89d980b2)

	Avoid warning about implicit declaration of strlen.
	* src/events.c: Include <string.h>, for use of strlen.
	(cherry picked from commit a53833fdd21cd573fe8fd02d7a11a3a5e9764ce0)

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

	debian: libguestfs-test-tool-helper no longer exists. (cherry picked from commit 6ec2ed20cbbad871a8b48389cbe5785bb929c99f)

	resize: Include stamp file for manpage in CLEANFILES. (cherry picked from commit 0d9f2c7311b005b2cfe2ecb3ff9fb57d4576ef7b)

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

	Version 1.10.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.

	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.

	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.

	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>

	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.

	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.

	Rename resolve_windows_path_silently to case_sensitive_path_silently.
	A more accurate description of what this function does.

	This is just code motion.

	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.

	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.

	daemon: When running commands, restart select if we receive a signal.

	daemon: Reset SIGPIPE to default before running subprocesses.

	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).

	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
	   */

	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.

	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.

	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.

	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

	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" "/"

	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.

	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.

	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).

	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.

	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).

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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>.

	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.

	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.

	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.

	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.

	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).

	daemon: Remove -f (don't fork) option.
	This option was not being used.

	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

	daemon: change to root directory
	Ensure the daemon always starts with current directory == root.

	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.

	lib: Move appliance launching to separate function.
	This is just code motion.

	php: Ignore another generated file in php/extension directory.

	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

	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.

	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.

	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.

	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]

	Version 1.9.5

	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.

	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.

	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.

	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

	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.

	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.

	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

	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

	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).

	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

	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.

	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.

	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

	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.

	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.

	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.

	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'

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	Version 1.7.15.

	build: Add several missing shell scripts to dist.

	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

	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.

	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).

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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

	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).

	fish: Suggest safer form of eval.
	eval "$(guestfish --listen)"

	instead of various other forms.

	(Thanks Eric Blake).

	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).

	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.

	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.

	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.

	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.

	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

	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.

	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.

	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.

	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.

	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.

	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.

	daemon: Fix /dev/mapper paths from mounts and mountpoints (RHBZ#646432).
	Make the LV paths returned by these two commands canonical.

	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.

	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.

	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/

	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.

	/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

	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

	rescue: Add --network option.
	This enables networking in the rescue shell.

	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.

	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.

	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.

	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).

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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.

	regressions: Test just-built guestfish.
	Instead of testing the installed /usr/bin/guestfish.

	This fixes commit ddda0f7bd00a37274dae38f4ce93955b8cfdf7d7.

	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.

	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.

	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).

	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).

	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).

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	generator: Don't use real uuidgen for UUIDs.
	This was one reason why capitests/tests.c changed every time the
	generator was run.

	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.

	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.

	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.

	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.

	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.

	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.

	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 ...
	[########################################------------------------------------]

	perl: bindings to progress callback.

	ocaml: bindings to progress callback.

	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.

	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).

	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.

	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

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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'

	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.

	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.

	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.

	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.

	Move variable initialization close to variable use.

	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.

	generator: Make documentation inside guestfish match man page.

2010-07-21  Richard Jones  <rjones@redhat.com>

	Version 1.5.1.

	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).

	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.

	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.

	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.

	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

	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

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	touch: Restrict touch to regular files only (RHBZ#582484).

	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.

	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.

	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.

	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.

	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

	daemon: count_strings function returns size_t

	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.

	resize2fs: Document this command also works with ext4 (thanks Yufang Zhang).

	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

	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.

	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).

	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

	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.

	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

	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).

	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.

	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.

	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.

	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.

	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.

	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).

	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.

	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

	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)

	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

	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.

	Combine common code in daemon/tar.c.
	This commit shouldn't result in any change in the semantics
	of the code.

	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

	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).

	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.

	Update PO files, including extra strings from Perl files.

	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.

	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.

	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.

	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.

	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).

	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.

	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).

	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.

	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.

	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).

	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.

	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"

	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

	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.

	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.

	generator: Fix typo in a comment.

	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.

	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.

	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.

	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.

	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.

	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

	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.

	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.

	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.

	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.

	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

	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

	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.

	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

	tools: Add basic tests for the virt-* tools.

	tools: Sectional header for manpages in Makefile.am

	tools: Rearrange list of tools in Makefile.am.

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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)

	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.

	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.

	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.

	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.

	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

	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'

	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

	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.

	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:..)

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	hivex: Minimal registry example.
	This is the smallest registry you can make and still have it
	load correctly in Windows regedit.

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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).

	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)

	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.

	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.

	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.

	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.

	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.

	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

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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

	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;
	  }

	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.

	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.

	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.

	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.

	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.

	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.

	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

	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.

	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.

	availability: Skip tests when functions are not available.

	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".

	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;

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	fish: Improve output of guestfish -h cmd
	Display this output like a short manual page.

	Don't put <..> around the parameters to the command.

	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.

	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.

	appliance: Prefix kernel messages with timestamp.

	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

	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).

	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.

	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.

	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

	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.

	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.

	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.

	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).

	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).

	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.

	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.

	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.

	guestfish: Fix a third indentation problem.

	guestfish: Another indentation fix.

	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>...

	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).

	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.

	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.

	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

	daemon: Change chdir to use openat/fdopendir.
	Uses Gnulib implementation of openat which should be portable.

	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

	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.

	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.

	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.

	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

	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.

	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.

	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.

	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.

	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.

	virt-cat: Remove some unused Perl module includes.

	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

	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.

	Tidy up appliance rescue code.
	The appliance shouldn't run the daemon after we leave the
	rescue shell.  It should just exit instead.

	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.

	Change handling of spaces on Linux kernel command line.

	Update documentation of qemu / vmchannel.

	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.

	Gnulib: Add arpa-inet and netinet-in modules.

	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.

	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.

	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.

	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[]).

	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.

	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_*.

	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.

	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.

	'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.

	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.

	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.

	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.

	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.

	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.

	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.

	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)

	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).

	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.

	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

	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.

	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

	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.

	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

	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.

	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.

	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 : $_'

	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

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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.

	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.

	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.

	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

	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

	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.

	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.

	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".

	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)

	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

	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.

	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.

	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.

	'$_' should be marked as a local variable in Sys::Guestfs::Lib::open_guest.

	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.

	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.

	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.

	Move 'resolve_windows_path' to Sys::Guestfs::Lib.

	Move 'get_partitions' call into Sys::Guestfs::Lib.

	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.

	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.

	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.

	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.

	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.

	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.

	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).

	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.

	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.

	Generator now runs automatically when it has changed.

	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.

	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.

	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.

	Generated code for the virtio_blk change.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	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.

	Todo: Removed suggestion for short form for pipes.

	Implement "more" and "less" commands in guestfish.
	Use commands such as:
	  more /etc/passwd
	  less /etc/fstab

	These commands are specific to guestfish.

	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.