X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fdaemon.h;h=489c38d4bd6636199bb2d641eef2b1c91ec639b1;hb=d469db9398942723d2e2ae27989de63bce9cff8d;hp=77ee6281a13418e3b9e4d6a85ed301e7d9222727;hpb=4b91462bad010a0b214e808f94a916002be65b91;p=libguestfs.git diff --git a/daemon/daemon.h b/daemon/daemon.h index 77ee628..489c38d 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -134,6 +134,9 @@ extern int e2prog (char *name); /* Massive hack for RHEL 5. */ /*-- in lvm.c --*/ extern int lv_canonical (const char *device, char **ret); +/*-- in lvm-filter.c --*/ +extern void copy_lvm (void); + /*-- in proto.c --*/ extern void main_loop (int sock) __attribute__((noreturn)); @@ -191,6 +194,36 @@ extern void pulse_mode_start (void); extern void pulse_mode_end (void); extern void pulse_mode_cancel (void); +/* Return true iff the buffer is all zero bytes. + * + * Note that gcc is smart enough to optimize this properly: + * http://stackoverflow.com/questions/1493936/faster-means-of-checking-for-an-empty-buffer-in-c/1493989#1493989 + */ +static inline int +is_zero (const char *buffer, size_t size) +{ + size_t i; + + for (i = 0; i < size; ++i) { + if (buffer[i] != 0) + return 0; + } + + return 1; +} + +/* Helper for building up short lists of arguments. Your code has to + * define MAX_ARGS to a suitable value. + */ +#define ADD_ARG(argv,i,v) \ + do { \ + if ((i) >= MAX_ARGS) { \ + fprintf (stderr, "%s: %d: internal error: exceeded MAX_ARGS (%zu) when constructing the command line\n", __FILE__, __LINE__, (size_t) MAX_ARGS); \ + abort (); \ + } \ + (argv)[(i)++] = (v); \ + } while (0) + /* Helper for functions that need a root filesystem mounted. * NB. Cannot be used for FileIn functions. */