diff mbox

Mark drmServerInfo.debug_print with printf attribute

Message ID 1386796627-29167-1-git-send-email-keithp@keithp.com
State New, archived
Headers show

Commit Message

Keith Packard Dec. 11, 2013, 9:17 p.m. UTC
I stole the conditional for _X_ATTRIBUTE_PRINTF from xproto and
changed the name to _DRM_ATTRIBUTE_PRINTF to avoid future conflicts.

Signed-off-by: Keith Packard <keithp@keithp.com>
---
 xf86drm.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Alan Coopersmith Dec. 12, 2013, 4:01 a.m. UTC | #1
On 12/11/13 01:17 PM, Keith Packard wrote:
> I stole the conditional for _X_ATTRIBUTE_PRINTF from xproto and
> changed the name to _DRM_ATTRIBUTE_PRINTF to avoid future conflicts.
>
> Signed-off-by: Keith Packard <keithp@keithp.com>
> ---
>   xf86drm.h | 9 ++++++++-
>   1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/xf86drm.h b/xf86drm.h
> index 1e763a3..0bf205f 100644
> --- a/xf86drm.h
> +++ b/xf86drm.h
> @@ -92,8 +92,15 @@ extern "C" {
>   typedef unsigned int  drmSize,     *drmSizePtr;	    /**< For mapped regions */
>   typedef void          *drmAddress, **drmAddressPtr; /**< For mapped regions */
>
> +/* Added in X11R6.9, so available in any version of modular xproto */

You should drop that line - those comments are used for us to figure out which
xproto version to list in the pkg-config requirements when using newer _X_* 
macros out of Xfuncproto.h, so doesn't make sense here.

Also be warned that using a macro name starting with an _ will cause you to get
complaints about violating the "reserved for the implementation" rule in the
ANSI/ISO C standards from people who consider the implementation to solely be
the compiler, not the OS.  https://bugs.freedesktop.org/show_bug.cgi?id=70686
for example.
Keith Packard Dec. 12, 2013, 6:42 a.m. UTC | #2
Alan Coopersmith <alan.coopersmith@oracle.com> writes:

> You should drop that line - those comments are used for us to figure out which
> xproto version to list in the pkg-config requirements when using newer _X_* 
> macros out of Xfuncproto.h, so doesn't make sense here.
>
> Also be warned that using a macro name starting with an _ will cause you to get
> complaints about violating the "reserved for the implementation" rule in the
> ANSI/ISO C standards from people who consider the implementation to solely be
> the compiler, not the OS.  https://bugs.freedesktop.org/show_bug.cgi?id=70686
> for example.

Thanks for the suggestions; both easy to adopt.
diff mbox

Patch

diff --git a/xf86drm.h b/xf86drm.h
index 1e763a3..0bf205f 100644
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -92,8 +92,15 @@  extern "C" {
 typedef unsigned int  drmSize,     *drmSizePtr;	    /**< For mapped regions */
 typedef void          *drmAddress, **drmAddressPtr; /**< For mapped regions */
 
+/* Added in X11R6.9, so available in any version of modular xproto */
+#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 203)
+# define _DRM_ATTRIBUTE_PRINTF(x,y) __attribute__((__format__(__printf__,x,y)))
+#else /* not gcc >= 2.3 */
+# define _DRM_ATTRIBUTE_PRINTF(x,y)
+#endif
+
 typedef struct _drmServerInfo {
-  int (*debug_print)(const char *format, va_list ap);
+  int (*debug_print)(const char *format, va_list ap) _DRM_ATTRIBUTE_PRINTF(1,0);
   int (*load_module)(const char *name);
   void (*get_perms)(gid_t *, mode_t *);
 } drmServerInfo, *drmServerInfoPtr;