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.
This commit is contained in:
Richard W.M. Jones
2015-11-08 21:53:28 +00:00
parent 120b658ccc
commit 52e517c570
4 changed files with 52 additions and 23 deletions

View File

@@ -118,6 +118,7 @@ guestfsd_SOURCES = \
findfs.c \
fill.c \
find.c \
format.c \
fs-min-size.c \
fsck.c \
fstrim.c \

View File

@@ -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);

49
daemon/format.c Normal file
View File

@@ -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

View File

@@ -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