Tim Perfitt
2019-Jul-21 16:31 UTC
[Libguestfs] Missing hivex.h error when compiling on macOS 10.14 (Mojave)
I am attempting to compile Hivex (v1.3.18) and am getting a "handle.c:47:10: fatal error: 'hivex.h' file not found" error. I see that hivex.h is not included in the source and I suspect it is created during the configure phase. Full build log below. Any ideas of how this file is created and why it wasn't created? I was able to compile it before on earlier versions of macOS but it seems that something has changed (it has been over a year since I last compiled it). mdscentral-6:hivex tperfitt$ CPPFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 ./configure --disable-perl --disable-python --disable-ruby --without-readline checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... build-aux/install-sh -c -d checking for gawk... no checking for mawk... no checking for nawk... no checking for awk... awk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking whether make supports the include directive... yes (GNU style) checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... gcc3 checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking whether _XOPEN_SOURCE should be defined... no checking for Minix Amsterdam compiler... no checking for ar... ar checking for ranlib... ranlib checking build system type... x86_64-apple-darwin18.6.0 checking host system type... x86_64-apple-darwin18.6.0 checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... no checking for ld used by gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no checking for shared library run path origin... done checking 32-bit host C ABI... no checking for the common suffixes of directories in the library search path... lib,lib checking whether imported symbols can be declared weak... no checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking for pthread_kill in -lpthread... yes checking for multithread API to use... posix checking for pthread_rwlock_t... yes checking whether pthread_rwlock_rdlock prefers a writer to a reader... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking for _set_invalid_parameter_handler... no checking for fcntl... yes checking for symlink... yes checking for getdtablesize... yes checking for getprogname... yes checking for getexecname... no checking for mprotect... yes checking for strerror_r... yes checking for __xpg_strerror_r... no checking for strndup... yes checking for vasnprintf... no checking for snprintf... yes checking for ftruncate... yes checking for gettimeofday... yes checking for isblank... yes checking for lstat... yes checking for pipe... yes checking for pthread_sigmask... yes checking for setenv... yes checking for sigaction... yes checking for sigaltstack... yes checking for siginterrupt... yes checking for sleep... yes checking for catgets... yes checking for shutdown... yes checking for usleep... yes checking for sys/socket.h... yes checking for unistd.h... (cached) yes checking for getopt.h... yes checking for sys/cdefs.h... yes checking for limits.h... yes checking for wchar.h... yes checking for stdint.h... (cached) yes checking for inttypes.h... (cached) yes checking for sys/mman.h... yes checking for features.h... no checking for crtdefs.h... no checking for arpa/inet.h... yes checking for sys/stat.h... (cached) yes checking for sys/time.h... yes checking for netdb.h... yes checking for netinet/in.h... yes checking for semaphore.h... yes checking for sys/select.h... yes checking for sys/param.h... yes checking for sys/wait.h... yes checking for sys/ioctl.h... yes checking for sys/uio.h... yes checking whether // is distinct from /... no checking whether the preprocessor supports include_next... yes checking whether system header files limit the line length... no checking for complete errno.h... yes checking whether strerror_r is declared... yes checking for strerror_r... (cached) yes checking whether strerror_r returns char *... no checking for working fcntl.h... no (bad O_NOATIME) checking for pid_t... yes checking for mode_t... yes checking whether getdtablesize is declared... yes checking for getopt.h... (cached) yes checking for getopt_long_only... yes checking whether getopt is POSIX compatible... no checking for iconv... yes checking for working iconv... yes checking how to link with libiconv... -liconv checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.... no checking for wint_t... yes checking whether wint_t is too small... no checking for unsigned long long int... yes checking for long long int... yes checking whether stdint.h conforms to C99... yes checking whether stdint.h predates C++11... no checking whether stdint.h has UINTMAX_WIDTH etc.... no checking for inttypes.h... (cached) yes checking whether the inttypes.h PRIxNN macros are broken... no checking for a sed that does not truncate output... /usr/bin/sed checking whether malloc, realloc, calloc are POSIX compliant... yes checking for mmap... yes checking for MAP_ANONYMOUS... yes checking whether memchr works... yes checking for sigset_t... yes checking for ssize_t... yes checking for uid_t in sys/types.h... yes checking for stdbool.h that conforms to C99... yes checking for _Bool... yes checking for wchar_t... yes checking whether strerror(0) succeeds... no checking for C/C++ restrict keyword... __restrict checking whether strndup is declared... yes checking whether strnlen is declared... yes checking for inttypes.h... yes checking for stdint.h... yes checking for intmax_t... yes checking where to find the exponent in a 'double'... word 1 bit 20 checking whether snprintf returns a byte count as in C99... yes checking for snprintf... (cached) yes checking for strnlen... yes checking for wcslen... yes checking for wcsnlen... yes checking for mbrtowc... yes checking for wcrtomb... yes checking whether _snprintf is declared... no checking whether <wchar.h> uses 'inline' correctly... yes checking whether <sys/socket.h> is self-contained... yes checking for shutdown... (cached) yes checking whether <sys/socket.h> defines the SHUT_* macros... yes checking for struct sockaddr_storage... yes checking for sa_family_t... yes checking for struct sockaddr_storage.ss_family... yes checking if environ is properly declared... no checking whether stat file-mode macros are broken... no checking for nlink_t... yes checking whether getcwd (NULL, 0) allocates memory for result... yes checking for getcwd with POSIX signature... yes checking for struct timeval... yes checking for wide-enough struct timeval.tv_sec member... yes checking for IPv4 sockets... yes checking for IPv6 sockets... yes checking whether lstat correctly handles trailing slash... no checking for stdlib.h... (cached) yes checking for GNU libc compatible malloc... yes checking whether <sys/select.h> is self-contained... yes checking for inline... inline checking for library containing setsockopt... none needed checking whether select supports a 0 argument... yes checking whether select detects invalid fds... yes checking whether alarm is declared... yes checking for O_CLOEXEC... yes checking for promoted mode_t type... int checking whether strerror_r is declared... (cached) yes checking whether setenv is declared... yes checking search.h usability... yes checking search.h presence... yes checking for search.h... yes checking for tsearch... yes checking for struct timespec in <time.h>... yes checking whether unsetenv is declared... yes checking for alloca as a compiler built-in... yes checking byteswap.h usability... no checking byteswap.h presence... no checking for byteswap.h... no checking whether // is distinct from /... (cached) no checking whether dup2 works... yes checking for error_at_line... no checking whether fcntl handles F_DUPFD correctly... yes checking whether fcntl understands F_DUPFD_CLOEXEC... yes checking whether conversion from 'int' to 'long double' works... yes checking whether getdtablesize works... yes checking whether program_invocation_name is declared... no checking whether program_invocation_short_name is declared... no checking whether __argv is declared... no checking whether __progname is defined in default libraries... yes checking whether INT32_MAX < INTMAX_MAX... yes checking whether INT64_MAX == LONG_MAX... yes checking whether UINT32_MAX < UINTMAX_MAX... yes checking whether UINT64_MAX == ULONG_MAX... yes checking for pthread_rwlock_t... (cached) yes checking whether pthread_rwlock_rdlock prefers a writer to a reader... (cached) yes checking whether program_invocation_name is declared... (cached) no checking whether program_invocation_short_name is declared... (cached) no checking for raise... yes checking for sigprocmask... yes checking for volatile sig_atomic_t... yes checking for sighandler_t... no checking for stdint.h... (cached) yes checking for SIZE_MAX... yes checking for ssize_t... (cached) yes checking for good max_align_t... yes checking whether NULL can be used in arbitrary expressions... yes checking which flavor of printf attribute matches inttypes macros... system checking for working strndup... yes checking for working strnlen... yes checking for strtoll... yes checking for strtoull... yes checking for ptrdiff_t... yes checking for vasprintf... yes checking for stdint.h... (cached) yes checking for long long int... (cached) yes checking whether fdopen sets errno... yes checking for getpagesize... yes checking whether getpagesize is declared... yes checking whether gettimeofday clobbers localtime buffer... no checking for gettimeofday with POSIX signature... yes checking for library containing inet_pton... none required checking whether inet_pton is declared... yes checking whether byte ordering is bigendian... no checking for ioctl... yes checking for ioctl with POSIX signature... no checking for mmap... (cached) yes checking for MAP_ANONYMOUS... yes checking for library containing nanosleep... none required checking for working nanosleep... no (mishandles large arguments) checking whether <netinet/in.h> is self-contained... yes checking whether open recognizes a trailing slash... no checking whether perror matches strerror... yes checking whether pthread_sigmask works without -lpthread... yes checking whether pthread_sigmask returns error numbers... yes checking whether pthread_sigmask unblocks signals correctly... guessing yes checking for putenv compatible with GNU and SVID... no checking whether _putenv is declared... no checking whether select supports a 0 argument... (cached) yes checking whether select detects invalid fds... (cached) yes checking whether setenv validates arguments... yes checking for struct sigaction.sa_sigaction... yes checking for sigprocmask... (cached) yes checking whether sleep is declared... yes checking for working sleep... yes checking for socklen_t... yes checking whether stat handles trailing slashes on files... no checking for struct stat.st_atim.tv_nsec... no checking for struct stat.st_atimespec.tv_nsec... yes checking for struct stat.st_birthtimespec.tv_nsec... yes checking for working stdalign.h... yes checking for mmap... (cached) yes checking for MAP_ANONYMOUS... yes checking whether symlink handles trailing slash correctly... no checking whether <sys/ioctl.h> declares ioctl... yes checking for nlink_t... (cached) yes checking for pthread_atfork... yes checking for unsetenv... yes checking for unsetenv() return type... int checking whether unsetenv obeys POSIX... yes checking for useconds_t... yes checking whether usleep allows large arguments... yes checking for sched_yield in -lrt... no checking for sched_yield in -lposix4... no checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 196608 checking how to convert x86_64-apple-darwin18.6.0 file names to x86_64-apple-darwin18.6.0 format... func_convert_file_noop checking how to convert x86_64-apple-darwin18.6.0 file names to toolchain format... func_convert_file_noop checking for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for archiver @FILE support... no checking for strip... strip checking for ranlib... (cached) ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dsymutil... dsymutil checking for nmedit... nmedit checking for lipo... lipo checking for otool... otool checking for otool64... no checking for -single_module linker flag... yes checking for -exported_symbols_list linker flag... yes checking for -force_load linker flag... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... yes checking for gcc option to produce PIC... -fno-common -DPIC checking if gcc PIC flag -fno-common -DPIC works... yes checking if gcc static flag -static works... no checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... darwin18.6.0 dyld checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for gcc option to accept ISO C99... none needed checking for gcc option to accept ISO Standard C... (cached) none needed checking how to run the C preprocessor... gcc -E checking for function prototypes... yes checking for special C compiler options needed for large files... (cached) no checking for _FILE_OFFSET_BITS value needed for large files... (cached) no checking size of long... 8 checking for byteswap.h... (cached) no checking endian.h usability... no checking endian.h presence... no checking for endian.h... no checking libintl.h usability... no checking libintl.h presence... no checking for libintl.h... no checking for mmap... (cached) yes checking for bindtextdomain... no checking for pod2man... pod2man checking for pod2text... pod2text checking whether NLS is requested... yes checking for msgfmt... /usr/local/opt/gettext/bin/msgfmt checking for gmsgfmt... /usr/local/opt/gettext/bin/msgfmt checking for xgettext... /usr/local/opt/gettext/bin/xgettext checking for msgmerge... /usr/local/opt/gettext/bin/msgmerge checking for CFPreferencesCopyAppValue... yes checking for CFLocaleCopyCurrent... yes checking for GNU gettext in libc... no checking for iconv... (cached) yes checking for working iconv... (cached) yes checking how to link with libiconv... -liconv checking for GNU gettext in libintl... no checking whether to use NLS... no checking for pkg-config... /usr/local/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for libxml-2.0... yes checking for open_memstream... yes checking for ocamlc... ocamlc OCaml version is 4.07.0 OCaml library path is /usr/local/lib/ocaml checking for ocamlopt... ocamlopt checking for ocamlc.opt... ocamlc.opt checking for ocamlopt.opt... ocamlopt.opt checking for ocamldep... ocamldep checking for ocamlmktop... ocamlmktop checking for ocamlmklib... ocamlmklib checking for ocamldoc... ocamldoc checking for ocamlbuild... no checking for ocamlfind... no checking for perl... perl checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating extra-tests/Makefile config.status: creating generator/Makefile config.status: creating gnulib/lib/Makefile config.status: creating gnulib/tests/Makefile config.status: creating hivex.pc config.status: creating images/Makefile config.status: creating lib/Makefile config.status: creating lib/tools/Makefile config.status: creating ocaml/Makefile config.status: creating ocaml/META config.status: creating perl/Makefile config.status: creating perl/Makefile.PL config.status: creating python/Makefile config.status: creating po/Makefile.in config.status: creating regedit/Makefile config.status: creating ruby/Makefile config.status: creating ruby/Rakefile config.status: creating sh/Makefile config.status: creating xml/Makefile config.status: creating python/run-python-tests config.status: creating ruby/run-ruby-tests config.status: creating run config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands config.status: executing libtool commands config.status: executing po-directories commands config.status: creating po/POTFILES config.status: creating po/Makefile ------------------------------------------------------------ Thank you for downloading hivex 1.3.18 This is how we have configured the optional components for you today: -n OCaml bindings ...................... no -n Perl bindings ....................... no -n Python bindings ..................... no -n Ruby bindings ....................... no If any optional component is configured 'no' when you expected 'yes' then you should check the preceeding messages. Please report bugs back to the mailing list: http://www.redhat.com/mailman/listinfo/libguestfs Next you should type 'make' to build the package, then 'make check' to run the tests. ------------------------------------------------------------ mdscentral-6:hivex tperfitt$ make /Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive Making all in gnulib/lib GEN alloca.h GEN byteswap.h GEN fcntl.h GEN getopt.h GEN getopt-cdefs.h GEN inttypes.h GEN limits.h GEN signal.h GEN stdint.h GEN stdio.h GEN stdlib.h GEN string.h GEN sys/types.h GEN unistd.h GEN wchar.h /Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive CC c-ctype.lo CC dirname-lgpl.lo CC basename-lgpl.lo CC stripslash.lo CC exitfail.lo CC fd-hook.lo CC full-read.lo CC full-write.lo CC getprogname.lo CC glthread/lock.lo CC progname.lo CC safe-read.lo CC safe-write.lo CC glthread/threadlib.lo CC unistd.lo CC xsize.lo CC xstrtol.lo CC xstrtoul.lo CC xstrtol-error.lo CC asnprintf.lo CC error.lo CC getopt.lo CC getopt1.lo CC printf-args.lo CC printf-parse.lo CC strerror.lo CC strerror-override.lo CC vasnprintf.lo CC xstrtoll.lo CC xstrtoull.lo CCLD libgnu.la /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(c-ctype.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(fd-hook.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(getprogname.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(threadlib.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(unistd.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(xsize.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(c-ctype.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(fd-hook.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(getprogname.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(threadlib.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(unistd.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libgnu.a(xsize.o) has no symbols Making all in generator make[2]: Nothing to be done for `all'. Making all in lib Making all in tools make[3]: Nothing to be done for `all'. CC libhivex_la-handle.lo handle.c:47:10: fatal error: 'hivex.h' file not found #include "hivex.h" ^~~~~~~~~ 1 error generated. make[3]: *** [libhivex_la-handle.lo] Error 1 make[2]: *** [all-recursive] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 mdscentral-6:hivex tperfitt$ git branch * (HEAD detached at v1.3.18) master mdscentral-6:hivex tperfitt$ auto mdscentral-6:hivex tperfitt$ ./auto autogen.sh autom4te.cache/ mdscentral-6:hivex tperfitt$ ./autogen.sh # Ensure that whenever we pull in a gnulib update or otherwise change to a # different version (i.e., when switching branches), we also rerun ./bootstrap. curr_status=.git-module-status t=$(git submodule status) git submodule status if test "$t" = "$(cat $curr_status 2>/dev/null)"; then : # good, it's up to date else echo running bootstrap... ./bootstrap && echo "$t" > $curr_status fi cat $curr_status 2>/dev/null CONFIGUREDIR=. # Run configure in BUILDDIR if it's set if [ ! -z "$BUILDDIR" ]; then mkdir -p $BUILDDIR cd $BUILDDIR CONFIGUREDIR=.. fi # Rerun the generator (requires OCaml interpreter). This is *not* for # anything that is required at configure-time when configure is run # from a distribution tarball. From those, nothing ocaml-related is # required. mkdir -p perl/lib/Win ./generator/generator.ml File "compiler internals", line 1: Error: Unbound module Stdlib mdscentral-6:hivex tperfitt$
Pino Toscano
2019-Jul-22 08:38 UTC
Re: [Libguestfs] Missing hivex.h error when compiling on macOS 10.14 (Mojave)
Hi Tim, On Sunday, 21 July 2019 18:31:58 CEST Tim Perfitt wrote:> I am attempting to compile Hivex (v1.3.18) and am getting a "handle.c:47:10: fatal error: 'hivex.h' file not found" error. I see that hivex.h is not included in the source and I suspect it is created during the configure phase. Full build log below. Any ideas of how this file is created and why it wasn't created?lib/hivex.h is generated by the OCaml generator, see generator/generator.ml. However, the files generated by that tool are statically shipped in the release tarballs to avoid requiring OCaml to build hivex. It looks to me you are not building a release tarball -- perhaphs you are building some autogenerated source tarball from github? If so, do not use them. -- Pino Toscano
Richard W.M. Jones
2019-Jul-22 09:05 UTC
Re: [Libguestfs] Missing hivex.h error when compiling on macOS 10.14 (Mojave)
On Mon, Jul 22, 2019 at 10:38:19AM +0200, Pino Toscano wrote:> Hi Tim, > > > On Sunday, 21 July 2019 18:31:58 CEST Tim Perfitt wrote: > > I am attempting to compile Hivex (v1.3.18) and am getting a "handle.c:47:10: fatal error: 'hivex.h' file not found" error. I see that hivex.h is not included in the source and I suspect it is created during the configure phase. Full build log below. Any ideas of how this file is created and why it wasn't created? > > lib/hivex.h is generated by the OCaml generator, see > generator/generator.ml. However, the files generated by that tool are > statically shipped in the release tarballs to avoid requiring OCaml to > build hivex. > > It looks to me you are not building a release tarball -- perhaphs you > are building some autogenerated source tarball from github? If so, > do not use them.In addition to what Pino said above, you can also generate those files by running the generator: ./generator/generator.ml It doesn't run automatically in hivex. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html