From 52e517c570f2e9a682e620deb5b4eedcb331d7b6 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 8 Nov 2015 21:53:28 +0000 Subject: [PATCH] Avoid "function 'asprintf_nowarn' can never be inlined because it uses variable argument lists". Move this to a separate translation 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 1a23cda48..8055235a9 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 820e9cbc4..7fbb2a2bd 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 000000000..2ccc24bb2 --- /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 + +#include +#include +#include + +#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 d87d668e5..09a842519 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