Add compiler warnings for some common incorrect usage of functions, such as forgetting to cast null pointers to variadic functions

darcs-hash:20061019151947-ac50b-4043638a7a830fa80fd918f92365f5afe3ff208a.gz
This commit is contained in:
axel 2006-10-20 01:19:47 +10:00
parent ea998b03f2
commit 2d05b1c1b4
6 changed files with 18 additions and 8 deletions

View file

@ -106,6 +106,7 @@ extern wchar_t *program_name;
*/
#define N_(wstr) wstr
/**
Take an array_list_t containing wide strings and converts them to a
single null-terminated wchar_t **. The array is allocated using
@ -193,7 +194,7 @@ wchar_t *wcsdupcat( const wchar_t *a, const wchar_t *b );
Returns a newly allocated concatenation of the specified wide
character strings. The last argument must be a null pointer.
*/
wchar_t *wcsdupcat2( const wchar_t *a, ... );
__sentinel wchar_t *wcsdupcat2( const wchar_t *a, ... );
/**
Test if the given string is a valid variable name
@ -256,7 +257,7 @@ const wchar_t *wsetlocale( int category, const wchar_t *locale );
\return zero is needle is not found, of if needle is null, non-zero otherwise
*/
int contains_str( const wchar_t *needle, ... );
__sentinel int contains_str( const wchar_t *needle, ... );
/**
Call read while blocking the SIGCHLD signal. Should only be called

View file

@ -92,6 +92,15 @@ AC_SUBST( optbindirs, $optbindirs )
# Tell autoconf to create config.h header
AC_CONFIG_HEADERS(config.h)
AH_BOTTOM([#if __GNUC__ >= 3
#define __warn_unused __attribute__ ((warn_unused_result))
#define __sentinel __attribute__ ((sentinel))
#else
#define __warn_unused
#define __sentinel
#endif])
# Set up various programs needed for install
AC_PROG_CC
AC_PROG_CPP

4
env.h
View file

@ -80,8 +80,8 @@ void env_destroy();
*/
int env_set( const wchar_t *key,
const wchar_t *val,
int mode );
const wchar_t *val,
int mode );
/**

4
exec.h
View file

@ -51,8 +51,8 @@ void exec( job_t *j );
\return the status of the last job to exit, or -1 if en error was encountered.
*/
int exec_subshell( const wchar_t *cmd,
array_list_t *l );
__warn_unused int exec_subshell( const wchar_t *cmd,
array_list_t *l );
/**

View file

@ -139,7 +139,7 @@ enum
\param out The list to which the result will be appended.
\return One of EXPAND_OK, EXPAND_ERROR, EXPAND_WILDCARD_MATCH and EXPAND_WILDCARD_NO_MATCH. EXPAND_WILDCARD_NO_MATCH and EXPAND_WILDCARD_MATCH are normal exit conditions used only on strings containing wildcards to tell if the wildcard produced any matches.
*/
int expand_string( void *context, wchar_t *in, array_list_t *out, int flag );
__warn_unused int expand_string( void *context, wchar_t *in, array_list_t *out, int flag );
/**
expand_one is identical to expand_string, except it will fail if in

2
util.h
View file

@ -607,7 +607,7 @@ void sb_append_char( string_buffer_t *, wchar_t );
Do not forget to cast the last 0 to (void *), or you might encounter errors on 64-bit platforms!
*/
void sb_append2( string_buffer_t *, ... );
__sentinel void sb_append2( string_buffer_t *, ... );
/**
Append formated string data to the buffer. This function internally