From: Stephen D. <sd...@us...> - 2005-06-11 20:00:57
|
Update of /cvsroot/naviserver/naviserver/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6586/include Modified Files: ns.h nscheck.h Log Message: * include/nscheck: Add new attribute NS_GNUC_SENTINEL which ensures that a NULL is passed as the last arg to a varargs function. Also, make sure that the format arg in a printf-like function is non-NULL. * include/ns.h: Markup up with NS_GNUC_SENTINEL. * nsd/urlspace.c: * nsd/nslog.c: Say NULL rather than 0 when talking about null pointers. Index: nscheck.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/include/nscheck.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nscheck.h 10 Jun 2005 07:29:19 -0000 1.1 --- nscheck.h 11 Jun 2005 20:00:48 -0000 1.2 *************** *** 47,80 **** ! #if __GNUC_PREREQ(2,96) ! # define NS_GNUC_MALLOC __attribute__((__malloc__)) ! # define NS_GNUC_PURE __attribute__((__pure__)) ! # define NS_GNUC_CONST __attribute__((__const__)) #else ! # define NS_GNUC_MALLOC ! # define NS_GNUC_PURE ! # define NS_GNUC_CONST #endif ! #if __GNUC_PREREQ(2,7) ! # define NS_GNUC_UNUSED __attribute__((__unused__)) ! # define NS_GNUC_NORETURN __attribute__((__noreturn__)) ! # define NS_GNUC_PRINTF(fmtarg, firstvararg) \ ! __attribute__((__format__ (__printf__, fmtarg, firstvararg))) ! # define NS_GNUC_SCANF(fmtarg, firstvararg) \ ! __attribute__((__format__ (__scanf__, fmtarg, firstvararg))) #else ! # define NS_GNUC_UNUSED ! # define NS_GNUC_NORETURN ! # define NS_GNUC_PRINTF(fmtarg, firstvararg) ! # define NS_GNUC_SCANF(fmtarg, firstvararg) #endif ! #if __GNUC_PREREQ(2,8) ! # define NS_GNUC_FORMAT(fmtarg) __attribute__((__format_arg__ (fmtarg))) #else ! # define NS_GNUC_FORMAT(fmtarg) #endif --- 47,72 ---- ! #if __GNUC_PREREQ(3,5) ! # define NS_GNUC_SENTINEL __attribute__((__sentinel__)) #else ! # define NS_GNUC_SENTINEL #endif ! #if __GNUC_PREREQ(3,3) ! # define NS_GNUC_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__))) ! # define NS_GNUC_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) ! # define NS_GNUC_MAYALIAS __attribute__((__may_alias__)) #else ! # define NS_GNUC_NONNULL(...) ! # define NS_GNUC_WARN_UNUSED_RESULT ! # define NS_GNUC_MAYALIAS #endif ! #if __GNUC_PREREQ(3,2) ! # define NS_GNUC_DEPRECATED __attribute__((__deprecated__)) #else ! # define NS_GNUC_DEPRECATED #endif *************** *** 87,105 **** ! #if __GNUC_PREREQ(3,2) ! # define NS_GNUC_DEPRECATED __attribute__((__deprecated__)) #else ! # define NS_GNUC_DEPRECATED #endif ! #if __GNUC_PREREQ(3,3) ! # define NS_GNUC_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__))) ! # define NS_GNUC_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) ! # define NS_GNUC_MAYALIAS __attribute__((__may_alias__)) #else ! # define NS_GNUC_NONNULL(...) ! # define NS_GNUC_WARN_UNUSED_RESULT ! # define NS_GNUC_MAYALIAS #endif --- 79,110 ---- ! #if __GNUC_PREREQ(2,8) ! # define NS_GNUC_FORMAT(m) __attribute__((__format_arg__ (m))) #else ! # define NS_GNUC_FORMAT(m) #endif ! #if __GNUC_PREREQ(2,7) ! # define NS_GNUC_UNUSED __attribute__((__unused__)) ! # define NS_GNUC_NORETURN __attribute__((__noreturn__)) ! # define NS_GNUC_PRINTF(m, n) __attribute__((__format__ (__printf__, m, n))) NS_GNUC_NONNULL(m) ! # define NS_GNUC_SCANF(m, n) __attribute__((__format__ (__scanf__, m, n))) NS_GNUC_NONNULL(m) #else ! # define NS_GNUC_UNUSED ! # define NS_GNUC_NORETURN ! # define NS_GNUC_PRINTF(fmtarg, firstvararg) ! # define NS_GNUC_SCANF(fmtarg, firstvararg) ! #endif ! ! ! #if __GNUC_PREREQ(2,96) ! # define NS_GNUC_MALLOC __attribute__((__malloc__)) ! # define NS_GNUC_PURE __attribute__((__pure__)) ! # define NS_GNUC_CONST __attribute__((__const__)) ! #else ! # define NS_GNUC_MALLOC ! # define NS_GNUC_PURE ! # define NS_GNUC_CONST #endif Index: ns.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/include/ns.h,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ns.h 10 Jun 2005 20:53:12 -0000 1.24 --- ns.h 11 Jun 2005 20:00:48 -0000 1.25 *************** *** 583,587 **** NS_EXTERN int Ns_ConfigGetInt64(char *section, char *key, ns_int64 *valuePtr); NS_EXTERN int Ns_ConfigGetBool(char *section, char *key, int *valuePtr); ! NS_EXTERN char *Ns_ConfigGetPath(char *server, char *module, ...); NS_EXTERN Ns_Set **Ns_ConfigGetSections(void); NS_EXTERN Ns_Set *Ns_ConfigGetSection(char *section); --- 583,587 ---- NS_EXTERN int Ns_ConfigGetInt64(char *section, char *key, ns_int64 *valuePtr); NS_EXTERN int Ns_ConfigGetBool(char *section, char *key, int *valuePtr); ! NS_EXTERN char *Ns_ConfigGetPath(char *server, char *module, ...) NS_GNUC_SENTINEL; NS_EXTERN Ns_Set **Ns_ConfigGetSections(void); NS_EXTERN Ns_Set *Ns_ConfigGetSection(char *section); *************** *** 686,693 **** NS_EXTERN char **Ns_DStringAppendArgv(Ns_DString *dsPtr); ! NS_EXTERN char *Ns_DStringVarAppend(Ns_DString *dsPtr, ...); NS_EXTERN char *Ns_DStringExport(Ns_DString *dsPtr); ! NS_EXTERN char *Ns_DStringPrintf(Ns_DString *dsPtr, char *fmt, ...) ! NS_GNUC_PRINTF(2, 3); NS_EXTERN char *Ns_DStringVPrintf(Ns_DString *dsPtr, char *fmt, va_list ap); NS_EXTERN char *Ns_DStringAppendArg(Ns_DString *dsPtr, char *string); --- 686,692 ---- NS_EXTERN char **Ns_DStringAppendArgv(Ns_DString *dsPtr); ! NS_EXTERN char *Ns_DStringVarAppend(Ns_DString *dsPtr, ...) NS_GNUC_SENTINEL; NS_EXTERN char *Ns_DStringExport(Ns_DString *dsPtr); ! NS_EXTERN char *Ns_DStringPrintf(Ns_DString *dsPtr, char *fmt, ...) NS_GNUC_PRINTF(2,3); NS_EXTERN char *Ns_DStringVPrintf(Ns_DString *dsPtr, char *fmt, va_list ap); NS_EXTERN char *Ns_DStringAppendArg(Ns_DString *dsPtr, char *string); *************** *** 966,977 **** NS_EXTERN int Ns_PathIsAbsolute(CONST char *path); NS_EXTERN char *Ns_NormalizePath(Ns_DString *dsPtr, CONST char *path); ! NS_EXTERN char *Ns_MakePath(Ns_DString *dsPtr, ...); NS_EXTERN char *Ns_HashPath(Ns_DString *dsPtr, CONST char *string, int levels); ! NS_EXTERN char *Ns_LibPath(Ns_DString *dsPtr, ...); ! NS_EXTERN char *Ns_HomePath(Ns_DString *dsPtr, ...); NS_EXTERN char *Ns_ModulePath(Ns_DString *dsPtr, CONST char *server, ! CONST char *module, ...); ! NS_EXTERN char *Ns_ServerPath(Ns_DString *dest, CONST char *server, ...); ! NS_EXTERN char *Ns_PagePath(Ns_DString *dest, CONST char *server, ...); NS_EXTERN int Ns_SetServerRootProc(Ns_ServerRootProc *proc, void *arg); --- 965,976 ---- NS_EXTERN int Ns_PathIsAbsolute(CONST char *path); NS_EXTERN char *Ns_NormalizePath(Ns_DString *dsPtr, CONST char *path); ! NS_EXTERN char *Ns_MakePath(Ns_DString *dsPtr, ...) NS_GNUC_SENTINEL; NS_EXTERN char *Ns_HashPath(Ns_DString *dsPtr, CONST char *string, int levels); ! NS_EXTERN char *Ns_LibPath(Ns_DString *dsPtr, ...) NS_GNUC_SENTINEL; ! NS_EXTERN char *Ns_HomePath(Ns_DString *dsPtr, ...) NS_GNUC_SENTINEL; NS_EXTERN char *Ns_ModulePath(Ns_DString *dsPtr, CONST char *server, ! CONST char *module, ...) NS_GNUC_SENTINEL; ! NS_EXTERN char *Ns_ServerPath(Ns_DString *dest, CONST char *server, ...) NS_GNUC_SENTINEL; ! NS_EXTERN char *Ns_PagePath(Ns_DString *dest, CONST char *server, ...) NS_GNUC_SENTINEL; NS_EXTERN int Ns_SetServerRootProc(Ns_ServerRootProc *proc, void *arg); *************** *** 1192,1196 **** Tcl_Obj *argObjPtr); NS_EXTERN int Ns_TclEvalCallback(Tcl_Interp *interp, Ns_TclCallback *cbPtr, ! Ns_DString *result, ...); NS_EXTERN Ns_Callback Ns_TclCallbackProc; NS_EXTERN Ns_Callback Ns_TclFreeCallback; --- 1191,1195 ---- Tcl_Obj *argObjPtr); NS_EXTERN int Ns_TclEvalCallback(Tcl_Interp *interp, Ns_TclCallback *cbPtr, ! Ns_DString *result, ...) NS_GNUC_SENTINEL; NS_EXTERN Ns_Callback Ns_TclCallbackProc; NS_EXTERN Ns_Callback Ns_TclFreeCallback; |