Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > 55161afa1daa936cf7437ef119f98cc2 > files > 7

libguestfs-devel-1.2.2-1.fc13.i686.rpm

2010-04-12  Richard Jones  <rjones@redhat.com>

	Fix time and timezone to be correct within the appliance. (cherry picked from commit 508f1ee87e816bf6b6fc8e629ccbb2d61a971169)

	virt-resize: Mention alternate tools like gparted in the documentation.
	Note for stable-1.2:
	Cherry picked from development commit c53e64a and rebased
	against stable-1.2 tree.

	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.

	(cherry picked from commit 9a608a1516bd339dc6d5ebe9952d3bced273c416)

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

	New partition APIs: part_del, part_get_bootable, part_get/set_mbr_id
	These APIs flesh out further the partitioning API.

	Note for stable-1.2 branch:
	Cherry picked from b68c030adfdbefe65bc9 and modified
	to apply against stable-1.2.  We need these new APIs
	in order to support bugfixes in virt-resize.

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

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

	Documentation: Clarify documentation on the bootable flag. (cherry picked from commit 30752ac7ca042f533b8d0c4c6144400a8532b154)

	Allow aug-ls to take Augeas variable as argument (RHBZ#580016). (cherry picked from commit d1dd00606d0b5b1430598e5092b017aa15d9ee11)

2010-04-08  Richard Jones  <rjones@redhat.com>

	Update PO files.

	Prepare for stable version 1.2.1.

	Remove warning "No grub default" (RHBZ#580650). (cherry picked from commit 3765f97898a1194d96ab4124e1eb46e25701b3b2)

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

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

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

	configure: Default to using Fedora 12 repo (was Fedora 11).
	Fedora 11 is almost EOL at this point.
	(cherry picked from commit 0ce9b2bb9bcac61f7fb5dd2811d9b3b621f8309b)

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

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

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

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

2010-04-08  Richard W.M. Jones  <rich@annexia.org>

	Prettier POD CSS. (cherry picked from commit fb0375a0984efca96db1277398f9fe50ecdd578d)

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.