[Libguestfs] [PATCH 4/5] Avoid "function 'asprintf_nowarn' can never be inlined because it uses variable argument lists".

Richard W.M. Jones rjones at redhat.com
Mon Nov 9 23:02:14 UTC 2015


Move this to a separate compilation unit and don't inline it.
---
 daemon/Makefile.am |  1 +
 daemon/daemon.h    | 24 +-----------------------
 daemon/format.c    | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 po/POTFILES        |  1 +
 4 files changed, 52 insertions(+), 23 deletions(-)
 create mode 100644 daemon/format.c

diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 1a23cda..8055235 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -118,6 +118,7 @@ guestfsd_SOURCES = \
 	findfs.c \
 	fill.c \
 	find.c \
+	format.c \
 	fs-min-size.c \
 	fsck.c \
 	fstrim.c \
diff --git a/daemon/daemon.h b/daemon/daemon.h
index 820e9cb..7fbb2a2 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -154,29 +154,7 @@ extern int random_name (char *template);
 
 extern char *get_random_uuid (void);
 
-/* This just stops gcc from giving a warning about our custom printf
- * formatters %Q and %R.  See guestfs-hacking(1) for more
- * info about these.  In GCC 4.8.0 the warning is even harder to
- * 'trick', hence the need for the #pragma directives.
- */
-#if defined(__GNUC__) && GUESTFS_GCC_VERSION >= 40800 /* gcc >= 4.8.0 */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
-#endif
-static inline int
-asprintf_nowarn (char **strp, const char *fmt, ...)
-{
-  int r;
-  va_list args;
-
-  va_start (args, fmt);
-  r = vasprintf (strp, fmt, args);
-  va_end (args);
-  return r;
-}
-#if defined(__GNUC__) && GUESTFS_GCC_VERSION >= 40800 /* gcc >= 4.8.0 */
-#pragma GCC diagnostic pop
-#endif
+extern int asprintf_nowarn (char **strp, const char *fmt, ...);
 
 /* Use by the CLEANUP_* macros. */
 extern void cleanup_free (void *ptr);
diff --git a/daemon/format.c b/daemon/format.c
new file mode 100644
index 0000000..2ccc24b
--- /dev/null
+++ b/daemon/format.c
@@ -0,0 +1,49 @@
+/* libguestfs - the guestfsd daemon
+ * Copyright (C) 2010-2015 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "daemon.h"
+
+/* This just stops gcc from giving a warning about our custom printf
+ * formatters %Q and %R.  See guestfs-hacking(1) for more
+ * info about these.  In GCC 4.8.0 the warning is even harder to
+ * 'trick', hence the need for the #pragma directives.
+ */
+#if defined(__GNUC__) && GUESTFS_GCC_VERSION >= 40800 /* gcc >= 4.8.0 */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
+#endif
+int
+asprintf_nowarn (char **strp, const char *fmt, ...)
+{
+  int r;
+  va_list args;
+
+  va_start (args, fmt);
+  r = vasprintf (strp, fmt, args);
+  va_end (args);
+  return r;
+}
+#if defined(__GNUC__) && GUESTFS_GCC_VERSION >= 40800 /* gcc >= 4.8.0 */
+#pragma GCC diagnostic pop
+#endif
diff --git a/po/POTFILES b/po/POTFILES
index d87d668..09a8425 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -49,6 +49,7 @@ daemon/file.c
 daemon/fill.c
 daemon/find.c
 daemon/findfs.c
+daemon/format.c
 daemon/fs-min-size.c
 daemon/fsck.c
 daemon/fstrim.c
-- 
2.5.0




More information about the Libguestfs mailing list