checks as printf. Only works with gcc 3.2 it seems.
[${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
* 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>
* 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
# 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)))
* 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>
* 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
/*****************************************************************************
* 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
* 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>
* 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
{
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;
* 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__ )
* 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>
* 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
* 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;
/* 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 ); \