From 55fb2fc38fbdd9ea39da0ab84ed4748f16ab9b73 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 5 Jan 2015 20:07:34 -0800 Subject: [PATCH] tar: port wordsplit attribute to Sun C Reported by Ted Carr in: http://lists.gnu.org/archive/html/bug-tar/2015-01/msg00002.html * lib/wordsplit.h (__WORDSPLIT_ATTRIBUTE_FORMAT): New macro, taken from Gnulib. (struct wordsplit): Use it. * lib/wordsplit.c (_wsplt_error): Use it. --- lib/wordsplit.c | 2 +- lib/wordsplit.h | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/wordsplit.c b/lib/wordsplit.c index 21807cd..bda64d3 100644 --- a/lib/wordsplit.c +++ b/lib/wordsplit.c @@ -61,7 +61,7 @@ _wsplt_alloc_die (struct wordsplit *wsp) abort (); } -static void __attribute__ ((__format__ (__printf__, 1, 2))) +static void __WORDSPLIT_ATTRIBUTE_FORMAT ((__printf__, 1, 2)) _wsplt_error (const char *fmt, ...) { va_list ap; diff --git a/lib/wordsplit.h b/lib/wordsplit.h index d64cf2f..25d556d 100644 --- a/lib/wordsplit.h +++ b/lib/wordsplit.h @@ -22,6 +22,12 @@ #include +#if 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define __WORDSPLIT_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define __WORDSPLIT_ATTRIBUTE_FORMAT(spec) /* empty */ +#endif + struct wordsplit { size_t ws_wordc; @@ -34,9 +40,9 @@ struct wordsplit const char *ws_escape; void (*ws_alloc_die) (struct wordsplit * wsp); void (*ws_error) (const char *, ...) - __attribute__ ((__format__ (__printf__, 1, 2))); + __WORDSPLIT_ATTRIBUTE_FORMAT ((__printf__, 1, 2)); void (*ws_debug) (const char *, ...) - __attribute__ ((__format__ (__printf__, 1, 2))); + __WORDSPLIT_ATTRIBUTE_FORMAT ((__printf__, 1, 2)); const char **ws_env; const char *(*ws_getvar) (const char *, size_t, void *); -- 2.45.2