2009-09-23  Richard Jones  <rjones@trick.home.annexia.org>

	Prepare for 1.0.72.
	Also update PO files.

	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.
