summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1998-07-13 06:45:23 +0000
committerbde <bde@FreeBSD.org>1998-07-13 06:45:23 +0000
commitbf1a9b4c37da22da57d630c9aa1c79e91d310760 (patch)
treea292d667b70115407503c223922b78d70342669a
parent6d974eef922ca8150f05ea068cf2b04efd9d5258 (diff)
downloadFreeBSD-src-bf1a9b4c37da22da57d630c9aa1c79e91d310760.zip
FreeBSD-src-bf1a9b4c37da22da57d630c9aa1c79e91d310760.tar.gz
Added macros __printflike() and __scanflike() to <sys/cdefs.h>.
Use them to `make gcc -Wformat' check formats for all printf-like and scanf-like functions in /usr/src except for the err()/warn() family. err() isn't quite printf-like since its format arg can legitimately be NULL. syslog() isn't quite printf-like, but gcc already accepts %m, even for plain printf() when it shouldn't.
-rw-r--r--include/stdio.h17
-rw-r--r--sys/ddb/ddb.h7
-rw-r--r--sys/sys/cdefs.h12
-rw-r--r--sys/sys/devfsext.h7
-rw-r--r--sys/sys/syslog.h6
-rw-r--r--sys/sys/systm.h20
-rw-r--r--sys/sys/tprintf.h4
7 files changed, 43 insertions, 30 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 15cb808..c7db2dd 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)stdio.h 8.5 (Berkeley) 4/29/95
- * $Id: stdio.h,v 1.18 1998/06/14 16:04:20 bde Exp $
+ * $Id: stdio.h,v 1.19 1998/07/08 00:52:40 peter Exp $
*/
#ifndef _STDIO_H_
@@ -293,7 +293,7 @@ __END_DECLS
*/
#if !defined (_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
__BEGIN_DECLS
-int asprintf __P((char **, const char *, ...));
+int asprintf __P((char **, const char *, ...)) __printflike(2, 3);
char *fgetln __P((FILE *, size_t *));
int fpurge __P((FILE *));
int getw __P((FILE *));
@@ -303,11 +303,14 @@ int putw __P((int, FILE *));
void setbuffer __P((FILE *, char *, int));
int setlinebuf __P((FILE *));
char *tempnam __P((const char *, const char *));
-int snprintf __P((char *, size_t, const char *, ...));
-int vasprintf __P((char **, const char *, _BSD_VA_LIST_));
-int vsnprintf __P((char *, size_t, const char *, _BSD_VA_LIST_));
-int vscanf __P((const char *, _BSD_VA_LIST_));
-int vsscanf __P((const char *, const char *, _BSD_VA_LIST_));
+int snprintf __P((char *, size_t, const char *, ...)) __printflike(3, 4);
+int vasprintf __P((char **, const char *, _BSD_VA_LIST_))
+ __printflike(2, 0);
+int vsnprintf __P((char *, size_t, const char *, _BSD_VA_LIST_))
+ __printflike(3, 0);
+int vscanf __P((const char *, _BSD_VA_LIST_)) __scanflike(1, 0);
+int vsscanf __P((const char *, const char *, _BSD_VA_LIST_))
+ __scanflike(2, 0);
__END_DECLS
/*
diff --git a/sys/ddb/ddb.h b/sys/ddb/ddb.h
index 753dca9..4cfdb89 100644
--- a/sys/ddb/ddb.h
+++ b/sys/ddb/ddb.h
@@ -27,7 +27,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ddb.h,v 1.18 1998/06/07 17:09:38 dfr Exp $
+ * $Id: ddb.h,v 1.19 1998/07/08 09:11:40 bde Exp $
*/
/*
@@ -85,12 +85,12 @@ db_addr_t db_disasm __P((db_addr_t loc, boolean_t altfmt));
void db_error __P((char *s));
int db_expression __P((db_expr_t *valuep));
int db_get_variable __P((db_expr_t *valuep));
-void db_iprintf __P((const char *,...));
+void db_iprintf __P((const char *,...)) __printflike(1, 2);
struct vm_map *db_map_addr __P((vm_offset_t));
boolean_t db_map_current __P((struct vm_map *));
boolean_t db_map_equal __P((struct vm_map *, struct vm_map *));
void db_print_loc_and_inst __P((db_addr_t loc));
-void db_printf __P((const char *fmt, ...));
+void db_printf __P((const char *fmt, ...)) __printflike(1, 2);
void db_read_bytes __P((vm_offset_t addr, size_t size, char *data));
/* machine-dependent */
int db_readline __P((char *lstart, int lsize));
@@ -104,7 +104,6 @@ int db_value_of_name __P((char *name, db_expr_t *valuep));
void db_write_bytes __P((vm_offset_t addr, size_t size, char *data));
/* machine-dependent */
void kdb_init __P((void));
-void kdbprintf __P((const char *fmt, ...));
db_cmdfcn_t db_breakpoint_cmd;
db_cmdfcn_t db_continue_cmd;
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index 9574779..d29b793 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
- * $Id: cdefs.h,v 1.17 1998/06/14 13:40:01 bde Exp $
+ * $Id: cdefs.h,v 1.18 1998/06/18 18:35:04 peter Exp $
*/
#ifndef _SYS_CDEFS_H_
@@ -142,6 +142,16 @@
#define __unused __attribute__((__unused__))
#endif
+#if __GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 7
+#define __printflike(fmtarg, firstvararg)
+#define __scanflike(fmtarg, firstvararg)
+#else
+#define __printflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#define __scanflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
+#endif
+
#ifdef __GNUC__
#ifdef __ELF__
#ifdef __STDC__
diff --git a/sys/sys/devfsext.h b/sys/sys/devfsext.h
index c805240..3086fba 100644
--- a/sys/sys/devfsext.h
+++ b/sys/sys/devfsext.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: devfsext.h,v 1.19 1998/04/20 04:55:17 julian Exp $
+ * $Id: devfsext.h,v 1.20 1998/04/28 00:10:52 julian Exp $
*/
#ifndef _SYS_DEVFSEXT_H_
@@ -35,14 +35,15 @@
* and the initial default perms/ownerships.
*/
void *devfs_add_devswf __P((void *devsw, int minor, int chrblk, uid_t uid,
- gid_t gid, int perms, char *fmt, ...));
+ gid_t gid, int perms, char *fmt, ...))
+ __printflike(7, 8);
/*
* Make a link to a device you already made, and have the cookie for
* We get another cookie, but for now, it can be discarded, as
* at the moment there is nothing you can do with it that you couldn't do
* with the original cookie. ( XXX this might be something I should change )
*/
-void *devfs_link __P((void *original, char *fmt, ...));
+void *devfs_link __P((void *original, char *fmt, ...)) __printflike(2, 3);
/*
* Remove all instances of a device you have made. INCLUDING LINKS.
diff --git a/sys/sys/syslog.h b/sys/sys/syslog.h
index 309b6f7..61e3f2c 100644
--- a/sys/sys/syslog.h
+++ b/sys/sys/syslog.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)syslog.h 8.1 (Berkeley) 6/2/93
- * $Id: syslog.h,v 1.14 1997/10/06 18:20:23 joerg Exp $
+ * $Id: syslog.h,v 1.15 1997/10/06 20:37:01 joerg Exp $
*/
#ifndef _SYS_SYSLOG_H_
@@ -192,8 +192,8 @@ __BEGIN_DECLS
void closelog __P((void));
void openlog __P((const char *, int, int));
int setlogmask __P((int));
-void syslog __P((int, const char *, ...));
-void vsyslog __P((int, const char *, _BSD_VA_LIST_));
+void syslog __P((int, const char *, ...)) __printflike(2, 3);
+void vsyslog __P((int, const char *, _BSD_VA_LIST_)) __printflike(2, 0);
__END_DECLS
#endif /* !KERNEL */
diff --git a/sys/sys/systm.h b/sys/sys/systm.h
index 6879634..0dafb5a 100644
--- a/sys/sys/systm.h
+++ b/sys/sys/systm.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)systm.h 8.7 (Berkeley) 3/29/95
- * $Id: systm.h,v 1.71 1998/06/07 17:13:04 dfr Exp $
+ * $Id: systm.h,v 1.72 1998/06/09 12:52:35 bde Exp $
*/
#ifndef _SYS_SYSTM_H_
@@ -96,21 +96,21 @@ int ureadc __P((int, struct uio *));
void *hashinit __P((int count, struct malloc_type *type, u_long *hashmask));
void *phashinit __P((int count, struct malloc_type *type, u_long *nentries));
-void panic __P((const char *, ...)) __dead2;
+void panic __P((const char *, ...)) __dead2 __printflike(1, 2);
void cpu_boot __P((int));
void cpu_rootconf __P((void));
void cpu_dumpconf __P((void));
void tablefull __P((const char *));
-int addlog __P((const char *, ...));
+int addlog __P((const char *, ...)) __printflike(1, 2);
int kvprintf __P((char const *, void (*)(int, void*), void *, int,
- _BSD_VA_LIST_));
-void log __P((int, const char *, ...));
+ _BSD_VA_LIST_)) __printflike(1, 0);
+void log __P((int, const char *, ...)) __printflike(2, 3);
void logwakeup __P((void));
-int printf __P((const char *, ...));
-int sprintf __P((char *buf, const char *, ...));
-void uprintf __P((const char *, ...));
-void vprintf __P((const char *, _BSD_VA_LIST_));
-void ttyprintf __P((struct tty *, const char *, ...));
+int printf __P((const char *, ...)) __printflike(1, 2);
+int sprintf __P((char *buf, const char *, ...)) __printflike(2, 3);
+void uprintf __P((const char *, ...)) __printflike(1, 2);
+void vprintf __P((const char *, _BSD_VA_LIST_)) __printflike(1, 0);
+void ttyprintf __P((struct tty *, const char *, ...)) __printflike(2, 3);
void bcopy __P((const void *from, void *to, size_t len));
void ovbcopy __P((const void *from, void *to, size_t len));
diff --git a/sys/sys/tprintf.h b/sys/sys/tprintf.h
index e54bbfc..945a045 100644
--- a/sys/sys/tprintf.h
+++ b/sys/sys/tprintf.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tprintf.h 8.1 (Berkeley) 6/2/93
- * $Id: tprintf.h,v 1.5 1997/02/22 09:46:12 peter Exp $
+ * $Id: tprintf.h,v 1.6 1998/02/03 21:51:58 bde Exp $
*/
#ifndef _SYS_TPRINTF_H_
@@ -44,6 +44,6 @@ struct proc;
tpr_t tprintf_open __P((struct proc *));
void tprintf_close __P((tpr_t));
-void tprintf __P((tpr_t, const char *fmt, ...));
+void tprintf __P((tpr_t, const char *fmt, ...)) __printflike(2, 3);
#endif
OpenPOWER on IntegriCloud