[Libguestfs] [PATCH 1/4] daemon: Allow ADD_ARG macro to be used everywhere.

Richard W.M. Jones rjones at redhat.com
Sat Feb 4 14:59:06 UTC 2017


This is a simple macro with no dependencies.  Allow it to be used from
any program.
---
 daemon/daemon.h            | 12 ------------
 lib/guestfs-internal-all.h | 17 ++++++++++++++++-
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/daemon/daemon.h b/daemon/daemon.h
index 3af5c0e..8097bfc 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -340,18 +340,6 @@ is_zero (const char *buffer, size_t size)
   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.
  */
diff --git a/lib/guestfs-internal-all.h b/lib/guestfs-internal-all.h
index dbf9735..0c841ff 100644
--- a/lib/guestfs-internal-all.h
+++ b/lib/guestfs-internal-all.h
@@ -1,5 +1,5 @@
 /* libguestfs
- * Copyright (C) 2013 Red Hat Inc.
+ * Copyright (C) 2013-2017 Red Hat Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -58,6 +58,21 @@
 #define STRCASEPREFIX(a,b) (strncasecmp((a),(b),strlen((b))) == 0)
 #define STRSUFFIX(a,b) (strlen((a)) >= strlen((b)) && STREQ((a)+strlen((a))-strlen((b)),(b)))
 
+/* A simple (indeed, simplistic) way to build up short lists of
+ * arguments.  Your code must define MAX_ARGS to a suitable "larger
+ * than could ever be needed" value.  (If the value is exceeded then
+ * your code will abort).  For more complex needs, use something else
+ * more suitable.
+ */
+#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)
+
 #ifndef SOCK_CLOEXEC
 #define SOCK_CLOEXEC 0
 #endif
-- 
2.10.2




More information about the Libguestfs mailing list