]> git.sesse.net Git - vlc/commitdiff
* ./include/vlc_messages.h: msg_* functions now use the same argument type
authorSam Hocevar <sam@videolan.org>
Wed, 18 Dec 2002 11:47:35 +0000 (11:47 +0000)
committerSam Hocevar <sam@videolan.org>
Wed, 18 Dec 2002 11:47:35 +0000 (11:47 +0000)
    checks as printf. Only works with gcc 3.2 it seems.

configure.ac.in
include/vlc_common.h
include/vlc_messages.h
include/vlc_threads_funcs.h
src/misc/messages.c

index 9b68b0c669b3ece19e442263b1f8a0a22ae9dd73..d65dd369c83c1ea5a30914f066617e58eccac2a8 100644 (file)
@@ -663,6 +663,19 @@ if test "x${ac_cv_c_attribute_aligned}" != "x0"; then
         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
 fi
 
+dnl Checks for __attribute__(format()) directive
+AC_CACHE_CHECK([__attribute__ ((format ())) support with function pointers],
+    [ac_cv_c_attribute_format],
+    [ac_cv_c_attribute_format=no
+        CFLAGS="${CFLAGS_save} -Werror"
+        AC_TRY_COMPILE([],
+        [static void (*pf_printf)(const char *, ...) __attribute__ ((format(printf,1,2)));(void)pf_printf;],
+        [ac_cv_c_attribute_format=yes])
+        CFLAGS="${CFLAGS_save}"])
+if test "x${ac_cv_c_attribute_format}" != "xno"; then
+    AC_DEFINE(HAVE_ATTRIBUTE_FORMAT, 1, Support for __attribute__((format())) with function pointers)
+fi
+
 dnl
 dnl  Check the CPU
 dnl
index 2cd46cd6d3deec5b66154d9b4e62a227c819c920..b869a8638bf105ce87ee49c4e06c29e995db9c17 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of useful common types and macros definitions
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vlc_common.h,v 1.44 2002/12/14 21:32:41 fenrir Exp $
+ * $Id: vlc_common.h,v 1.45 2002/12/18 11:47:35 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -13,7 +13,7 @@
  * 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
@@ -440,6 +440,13 @@ static inline uint64_t U64_AT( void * _p )
 #   define ntoh64(i)   U64_AT(&i)
 #endif
 
+/* Format string sanity checks */
+#ifdef HAVE_ATTRIBUTE_FORMAT
+#   define ATTRIBUTE_FORMAT(x,y) __attribute__ ((format(printf,x,y)))
+#else
+#   define ATTRIBUTE_FORMAT(x,y)
+#endif
+
 /* Alignment of critical static data structures */
 #ifdef ATTRIBUTE_ALIGNED_MAX
 #   define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align)))
index e32cf71ae2e9e97a1399703dde4cdddada005d93..2b4a6328a599ad9819d0d54069ca3d6b5efce2b1 100644 (file)
@@ -4,7 +4,7 @@
  * interface, such as message output.
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: vlc_messages.h,v 1.7 2002/11/13 15:28:24 sam Exp $
+ * $Id: vlc_messages.h,v 1.8 2002/12/18 11:47:35 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -13,7 +13,7 @@
  * 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
@@ -97,11 +97,11 @@ struct msg_subscription_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-VLC_EXPORT( void, __msg_Generic, ( vlc_object_t *, int, const char *, const char *, ... ) );
-VLC_EXPORT( void, __msg_Info,    ( void *, const char *, ... ) );
-VLC_EXPORT( void, __msg_Err,     ( void *, const char *, ... ) );
-VLC_EXPORT( void, __msg_Warn,    ( void *, const char *, ... ) );
-VLC_EXPORT( void, __msg_Dbg,    ( void *, const char *, ... ) );
+VLC_EXPORT( void, __msg_Generic, ( vlc_object_t *, int, const char *, const char *, ... ) ATTRIBUTE_FORMAT( 4, 5 ) );
+VLC_EXPORT( void, __msg_Info,    ( void *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Err,     ( void *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Warn,    ( void *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Dbg,    ( void *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
 
 #ifdef HAVE_VARIADIC_MACROS
 
index e2346c6972904a79d9b3628112103adbb9d7f230..c3996b6e00baff055d2b1a613c242392e2fab63c 100644 (file)
@@ -3,7 +3,7 @@
  * This header provides a portable threads implementation.
  *****************************************************************************
  * Copyright (C) 1999, 2002 VideoLAN
- * $Id: vlc_threads_funcs.h,v 1.10 2002/12/08 00:41:06 massiot Exp $
+ * $Id: vlc_threads_funcs.h,v 1.11 2002/12/18 11:47:35 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
@@ -14,7 +14,7 @@
  * 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
@@ -618,7 +618,7 @@ static inline int __vlc_cond_wait( char * psz_file, int i_line,
         {
             msg_Warn( p_condvar->p_this,
                       "thread %d: possible deadlock detected "
-                      "in cond_wait at %s:%d (%s)", pthread_self(),
+                      "in cond_wait at %s:%d (%s)", (int)pthread_self(),
                       psz_file, i_line, strerror(i_result) );
         }
         else break;
@@ -702,4 +702,4 @@ static inline int __vlc_cond_wait( char * psz_file, int i_line,
  * vlc_thread_join: wait until a thread exits
  *****************************************************************************/
 #define vlc_thread_join( P_THIS )                                           \
-    __vlc_thread_join( VLC_OBJECT(P_THIS), __FILE__, __LINE__ ) 
+    __vlc_thread_join( VLC_OBJECT(P_THIS), __FILE__, __LINE__ )
index e92cdd7faa74cf74e22e94fb959775d421d555ce..2f0b02f2db825a567d2bdc09a690cc58c10d30ff 100644 (file)
@@ -4,7 +4,7 @@
  * modules, especially intf modules. See config.h for output configuration.
  *****************************************************************************
  * Copyright (C) 1998-2002 VideoLAN
- * $Id: messages.c,v 1.25 2002/11/25 12:08:58 sam Exp $
+ * $Id: messages.c,v 1.26 2002/12/18 11:47:35 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -13,7 +13,7 @@
  * 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
@@ -209,7 +209,7 @@ void __msg_Unsubscribe( vlc_object_t *p_this, msg_subscription_t *p_sub )
  * These functions queue a message for later printing.
  *****************************************************************************/
 void __msg_Generic( vlc_object_t *p_this, int i_type, const char *psz_module,
-                    const char *psz_format, ... )
+                    const char *psz_format, ... ) ATTRIBUTE_FORMAT( 4, 5 )
 {
     va_list args;
 
@@ -221,6 +221,7 @@ void __msg_Generic( vlc_object_t *p_this, int i_type, const char *psz_module,
 /* Generic functions used when variadic macros are not available. */
 #define DECLARE_MSG_FN( FN_NAME, FN_TYPE ) \
     void FN_NAME( void *p_this, const char *psz_format, ... ) \
+         ATTRIBUTE_FORMAT( 2, 3 ) \
     { \
         va_list args; \
         va_start( args, psz_format ); \