From 22e21f268beda472621bdf3d5cbc56e51499a2c9 Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Tue, 16 Sep 2003 18:06:49 +0000 Subject: [PATCH] Add gcc format-string checking. --- src/libCom/Makefile | 1 + src/libCom/error/errlog.h | 9 +++++---- src/libCom/osi/epicsStdio.h | 3 ++- src/libCom/osi/os/default/compilerDefs.h | 21 +++++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 src/libCom/osi/os/default/compilerDefs.h diff --git a/src/libCom/Makefile b/src/libCom/Makefile index 9553ab414..4e9ee9758 100644 --- a/src/libCom/Makefile +++ b/src/libCom/Makefile @@ -165,6 +165,7 @@ INC += osiWireFormat.h INC += epicsReadline.h INC += epicsMessageQueue.h INC += epicsStdio.h +INC += compilerDefs.h INC += devLib.h diff --git a/src/libCom/error/errlog.h b/src/libCom/error/errlog.h index 25f9cab2e..e7dcee370 100644 --- a/src/libCom/error/errlog.h +++ b/src/libCom/error/errlog.h @@ -15,6 +15,7 @@ #include #include "shareLib.h" +#include "compilerDefs.h" #ifdef __cplusplus extern "C" { @@ -39,11 +40,11 @@ epicsShareExtern char * errlogSevEnumString[]; #endif epicsShareFunc int errlogPrintf( - const char *pformat, ...); + const char *pformat, ...) EPICS_PRINTF_STYLE(1,2); epicsShareFunc int errlogVprintf( const char *pformat,va_list pvar); epicsShareFunc int errlogSevPrintf( - const errlogSevEnum severity,const char *pformat, ...); + const errlogSevEnum severity,const char *pformat, ...) EPICS_PRINTF_STYLE(2,3); epicsShareFunc int errlogSevVprintf( const errlogSevEnum severity,const char *pformat,va_list pvar); epicsShareFunc int epicsShareAPI errlogMessage( @@ -66,7 +67,7 @@ epicsShareFunc void epicsShareAPI errlogFlush(void); /*other routines that write to log file*/ epicsShareFunc void errPrintf(long status, const char *pFileName, - int lineno, const char *pformat, ...); + int lineno, const char *pformat, ...) EPICS_PRINTF_STYLE(4,5); epicsShareExtern int errVerbose; @@ -74,7 +75,7 @@ epicsShareExtern int errVerbose; * the message to appear twice on the console */ epicsShareFunc int errlogPrintfNoConsole( - const char *pformat, ...); + const char *pformat, ...) EPICS_PRINTF_STYLE(1,2); epicsShareFunc int errlogVprintfNoConsole( const char *pformat,va_list pvar); diff --git a/src/libCom/osi/epicsStdio.h b/src/libCom/osi/epicsStdio.h index 021e3c29a..88ef55d61 100644 --- a/src/libCom/osi/epicsStdio.h +++ b/src/libCom/osi/epicsStdio.h @@ -15,13 +15,14 @@ #include #include "shareLib.h" +#include "compilerDefs.h" #ifdef __cplusplus extern "C" { #endif epicsShareFunc int epicsShareAPI epicsSnprintf( - char *str, size_t size, const char *format, ...); + char *str, size_t size, const char *format, ...) EPICS_PRINTF_STYLE(3,4); epicsShareFunc int epicsShareAPI epicsVsnprintf( char *str, size_t size, const char *format, va_list ap); epicsShareFunc FILE * epicsShareAPI epicsTempFile ( void ); diff --git a/src/libCom/osi/os/default/compilerDefs.h b/src/libCom/osi/os/default/compilerDefs.h new file mode 100644 index 000000000..7e9783082 --- /dev/null +++ b/src/libCom/osi/os/default/compilerDefs.h @@ -0,0 +1,21 @@ +/*************************************************************************\ +* Copyright (c) 2003 The University of Chicago, as Operator of Argonne +* National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +#ifndef _EPICS_COMPILERDEFS_H +#define _EPICS_COMPILERDEFS_H + +/* + * Compiler-specific definitions + */ + +#ifdef __GNUC__ +# define EPICS_PRINTF_STYLE(f,a) __attribute__((format(printf,f,a))) +#else +# define EPICS_PRINTF_STYLE(f,a) +#endif + +#endif /* _EPICS_COMPILERDEFS_H */