From 9e170a88cd5696e4b254ec4c90437d041e56ae18 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Fri, 16 Mar 2007 15:03:21 +0000 Subject: [PATCH] * qemud/conf.c qemud/driver.h qemud/internal.h src/internal.h src/sexpr.h src/test.c src/xm_internal.c src/xml.c src/xml.h: applied patch from Richard Jones adding check to printf-like functions and fixing the problems raised Daniel --- ChangeLog | 7 +++++++ qemud/conf.c | 4 ++-- qemud/driver.h | 3 ++- qemud/internal.h | 7 ++++--- src/internal.h | 39 ++++++++++++++++++++------------------- src/sexpr.h | 5 ++++- src/test.c | 2 +- src/xm_internal.c | 2 +- src/xml.c | 10 +++++----- src/xml.h | 4 +++- 10 files changed, 49 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index a137bad26f..1a3be6c8a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Mar 16 16:01:54 CET 2007 Daniel Veillard + + * qemud/conf.c qemud/driver.h qemud/internal.h src/internal.h + src/sexpr.h src/test.c src/xm_internal.c src/xml.c src/xml.h: + applied patch from Richard Jones adding check to printf-like + functions and fixing the problems raised + Fri Mar 16 15:55:01 CET 2007 Daniel Veillard * src/xml.c tests/sexpr2xmltest.c tests/xmconfigtest.c: avoid diff --git a/qemud/conf.c b/qemud/conf.c index a18b3aa5b6..e654cd54d5 100644 --- a/qemud/conf.c +++ b/qemud/conf.c @@ -1622,14 +1622,14 @@ static int qemudSaveNetworkConfig(struct qemud_server *server, towrite = strlen(xml); if (write(fd, xml, towrite) != towrite) { qemudReportError(server, VIR_ERR_INTERNAL_ERROR, - "cannot write config file %s", + "cannot write config file %s: %s", network->configFile, strerror(errno)); goto cleanup; } if (close(fd) < 0) { qemudReportError(server, VIR_ERR_INTERNAL_ERROR, - "cannot save config file %s", + "cannot save config file %s: %s", network->configFile, strerror(errno)); goto cleanup; } diff --git a/qemud/driver.h b/qemud/driver.h index 8c6e7c302e..c438a9da96 100644 --- a/qemud/driver.h +++ b/qemud/driver.h @@ -28,7 +28,8 @@ #include "internal.h" void qemudReportError(struct qemud_server *server, - int code, const char *fmt, ...); + int code, const char *fmt, ...) + ATTRIBUTE_FORMAT(printf,3,4); int qemudGetCPUInfo(unsigned int *cpus, unsigned int *mhz, unsigned int *nodes, unsigned int *sockets, diff --git a/qemud/internal.h b/qemud/internal.h index 015a04b0db..8e8be2c86b 100644 --- a/qemud/internal.h +++ b/qemud/internal.h @@ -37,7 +37,7 @@ #include #endif #ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED __attribute__((unused)) +#define ATTRIBUTE_UNUSED __attribute__((__unused__)) #endif #ifndef ATTRIBUTE_FORMAT #define ATTRIBUTE_FORMAT(args...) __attribute__((__format__ (args))) @@ -332,12 +332,13 @@ int qemudStartNetworkDaemon(struct qemud_server *server, int qemudShutdownNetworkDaemon(struct qemud_server *server, struct qemud_network *network); -void qemudLog(int priority, const char *fmt, ...); +void qemudLog(int priority, const char *fmt, ...) + ATTRIBUTE_FORMAT(printf,2,3); #ifdef ENABLE_DEBUG #define qemudDebug(...) qemudLog(QEMUD_DEBUG, __VA_ARGS__) #else -#define qemudDebug(fmt, ...) do { } while(0); +#define qemudDebug(fmt, ...) do {} while(0) #endif static inline int diff --git a/src/internal.h b/src/internal.h index 6c2bc58d45..fae93b2dfc 100644 --- a/src/internal.h +++ b/src/internal.h @@ -26,33 +26,33 @@ extern "C" { #define _N(str) dgettext(GETTEXT_PACKAGE, (str)) #define gettext_noop(str) (str) +#ifdef __GNUC__ +#ifdef HAVE_ANSIDECL_H +#include +#endif + /** * ATTRIBUTE_UNUSED: * * Macro to flag conciously unused parameters to functions */ -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif #ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED __attribute__((unused)) +#define ATTRIBUTE_UNUSED __attribute__((__unused__)) #endif -#else -#define ATTRIBUTE_UNUSED + +/** + * ATTRIBUTE_FORMAT + * + * Macro used to check printf/scanf-like functions, if compiling + * with gcc. + */ +#ifndef ATTRIBUTE_FORMAT +#define ATTRIBUTE_FORMAT(args...) __attribute__((__format__ (args))) #endif -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __format__ format -# define __printf__ printf -# endif +#else +#define ATTRIBUTE_UNUSED +#define ATTRIBUTE_FORMAT(...) #endif /** @@ -211,7 +211,8 @@ void __virRaiseError(virConnectPtr conn, const char *str1, const char *str2, const char *str3, - int int1, int int2, const char *msg, ...); + int int1, int int2, const char *msg, ...) + ATTRIBUTE_FORMAT(printf, 12, 13); const char *__virErrorMsg(virErrorNumber error, const char *info); /************************************************************************ diff --git a/src/sexpr.h b/src/sexpr.h index 6c9048715c..89c9205093 100644 --- a/src/sexpr.h +++ b/src/sexpr.h @@ -13,6 +13,8 @@ #ifndef _LIBVIR_SEXPR_H_ #define _LIBVIR_SEXPR_H_ +#include "internal.h" + #include enum sexpr_type { @@ -45,6 +47,7 @@ void sexpr_free(struct sexpr *sexpr); /* lookup in S-Expressions */ const char *sexpr_node(struct sexpr *sexpr, const char *node); -const char *sexpr_fmt_node(struct sexpr *sexpr, const char *fmt, ...); +const char *sexpr_fmt_node(struct sexpr *sexpr, const char *fmt, ...) + ATTRIBUTE_FORMAT(printf,2,3); struct sexpr *sexpr_lookup(struct sexpr *sexpr, const char *node); #endif diff --git a/src/test.c b/src/test.c index 33625d0282..7b9f6cac80 100644 --- a/src/test.c +++ b/src/test.c @@ -1306,7 +1306,7 @@ char * testDomainDumpXML(virDomainPtr domain, int flags ATTRIBUTE_UNUSED) uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]); - virBufferVSprintf(buf, " %d\n", con->domains[domidx].info.maxMem); + virBufferVSprintf(buf, " %lu\n", con->domains[domidx].info.maxMem); virBufferVSprintf(buf, " %d\n", con->domains[domidx].info.nrVirtCpu); virBufferVSprintf(buf, " %s\n", testRestartFlagToString(con->domains[domidx].onReboot)); virBufferVSprintf(buf, " %s\n", testRestartFlagToString(con->domains[domidx].onPoweroff)); diff --git a/src/xm_internal.c b/src/xm_internal.c index 99f00c0e26..864ddbac3b 100644 --- a/src/xm_internal.c +++ b/src/xm_internal.c @@ -952,7 +952,7 @@ char *xenXMDomainFormatXML(virConnectPtr conn, virConfPtr conf) { if (vnc) { virBufferVSprintf(buf, - " = 5900) - virBufferVSprintf(buf, "(vncdisplay %d)", port - 5900); + virBufferVSprintf(buf, "(vncdisplay %ld)", port - 5900); xmlFree(vncport); } if (vnclisten != NULL) { @@ -318,7 +318,7 @@ static int virDomainParseXMLGraphicsDescVFB(virConnectPtr conn ATTRIBUTE_UNUSED, if (port == -1) virBufferAdd(buf, "(vncunused 1)", 13); else if (port >= 5900) - virBufferVSprintf(buf, "(vncdisplay %d)", port - 5900); + virBufferVSprintf(buf, "(vncdisplay %ld)", port - 5900); xmlFree(vncport); } if (vnclisten != NULL) { @@ -418,11 +418,11 @@ virDomainParseXMLOSDescHVM(virConnectPtr conn, xmlNodePtr node, virBufferPtr buf if (boot_dev) { if (xmlStrEqual(boot_dev, BAD_CAST "fd")) { - virBufferVSprintf(buf, "(boot a)", (const char *) boot_dev); + virBufferVSprintf(buf, "(boot a)" /*, (const char *) boot_dev*/); } else if (xmlStrEqual(boot_dev, BAD_CAST "cdrom")) { - virBufferVSprintf(buf, "(boot d)", (const char *) boot_dev); + virBufferVSprintf(buf, "(boot d)" /*, (const char *) boot_dev*/); } else if (xmlStrEqual(boot_dev, BAD_CAST "hd")) { - virBufferVSprintf(buf, "(boot c)", (const char *) boot_dev); + virBufferVSprintf(buf, "(boot c)" /*, (const char *) boot_dev*/); } else { /* Any other type of boot dev is unsupported right now */ virXMLError(conn, VIR_ERR_XML_ERROR, NULL, 0); diff --git a/src/xml.h b/src/xml.h index 2828935b18..9d1b1134ad 100644 --- a/src/xml.h +++ b/src/xml.h @@ -6,6 +6,7 @@ #define __VIR_XML_H__ #include "libvirt/libvirt.h" +#include "internal.h" #ifdef __cplusplus extern "C" { @@ -27,7 +28,8 @@ struct _virBuffer { virBufferPtr virBufferNew(unsigned int size); void virBufferFree(virBufferPtr buf); int virBufferAdd(virBufferPtr buf, const char *str, int len); -int virBufferVSprintf(virBufferPtr buf, const char *format, ...); +int virBufferVSprintf(virBufferPtr buf, const char *format, ...) + ATTRIBUTE_FORMAT(printf, 2, 3); int virBufferStrcat(virBufferPtr buf, ...); char *virDomainParseXMLDesc(virConnectPtr conn, const char *xmldesc, char **name, int xendConfigVersion); -- 2.47.2