diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2010-11-03 15:49:36 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2010-11-03 18:48:56 +0000 |
commit | 2066805a5d93b62beaf6653324715f0b62b06a05 (patch) | |
tree | 393ec11feb514069cf5cfb102b24a4d3a75d7e40 /daemon | |
parent | d859c283c469b9d9124d90d0ac32024671372ed5 (diff) | |
download | libguestfs-2066805a5d93b62beaf6653324715f0b62b06a05.tar.gz libguestfs-2066805a5d93b62beaf6653324715f0b62b06a05.tar.xz libguestfs-2066805a5d93b62beaf6653324715f0b62b06a05.zip |
lib: Expose errno through new API guestfs_last_errno.
If either the daemon sends back an errno, or a system call
fails in the library, save the errno in the handle and then
make it available to callers through the guestfs_last_errno
function.
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/Makefile.am | 21 | ||||
-rw-r--r-- | daemon/configure.ac | 5 |
2 files changed, 24 insertions, 2 deletions
diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 2b585c27..ee1959f5 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -37,6 +37,8 @@ BUILT_SOURCES = \ $(generator_built) \ guestfs_protocol.c \ guestfs_protocol.h \ + errnostring_gperf.c \ + errnostring_gperf.gperf \ errnostring.c \ errnostring.h @@ -62,6 +64,22 @@ $(libsrcdir)/guestfs_protocol.c: force $(libsrcdir)/guestfs_protocol.h: force $(MAKE) -C $(libsrcdir) guestfs_protocol.h +# Build the errnostring perfect hash code. The generated code has lots +# of warnings so we must compile it in a separate mini-library. +noinst_LIBRARIES += liberrnostring.a +liberrnostring_a_SOURCES = \ + errnostring_gperf.c \ + errnostring.h \ + errnostring.c +liberrnostring_a_CFLAGS = + +errnostring_gperf.c: errnostring_gperf.gperf + rm -f $@ + $(GPERF) -t $< > $@-t + mv $@-t $@ +errnostring_gperf.gperf: $(libsrcdir)/errnostring_gperf.gperf + rm -f $@ + ln $< $@ errnostring.c: $(libsrcdir)/errnostring.c rm -f $@ ln $< $@ @@ -91,8 +109,6 @@ guestfsd_SOURCES = \ dropcaches.c \ du.c \ echo_daemon.c \ - errnostring.h \ - errnostring.c \ ext2.c \ fallocate.c \ file.c \ @@ -148,6 +164,7 @@ guestfsd_SOURCES = \ zero.c \ zerofree.c guestfsd_LDADD = \ + liberrnostring.a \ libprotocol.a \ lib/libgnu.a \ $(GETADDRINFO_LIB) \ diff --git a/daemon/configure.ac b/daemon/configure.ac index 27bb997c..2be84a86 100644 --- a/daemon/configure.ac +++ b/daemon/configure.ac @@ -137,6 +137,11 @@ AC_STRUCT_ST_BLOCKS AC_CHECK_MEMBER([struct stat.st_blksize],[ AC_DEFINE([HAVE_STRUCT_STAT_ST_BLKSIZE],[1],[Define to 1 if 'st_blksize' is a member of 'struct stat'])]) +dnl Check for gperf. +AC_CHECK_PROG([GPERF],[gperf],[gperf],[no]) +test "x$GPERF" = "xno" && + AC_MSG_ERROR([gperf must be installed]) + dnl Check for Augeas (now optional). AC_CHECK_LIB([augeas],[aug_match],[ LIBS="-laugeas $LIBS" |