From a7189f01a4a19a9c8852e84b322fc3d8cbda92eb Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 17 Nov 2006 20:29:00 +0000 Subject: [PATCH] add -Wundef, fix uncovered bugs --- Makefile.flags | 2 +- e2fsprogs/blkid/blkid_getsize.c | 2 +- e2fsprogs/blkid/devname.c | 8 ++--- e2fsprogs/blkid/devno.c | 8 ++--- e2fsprogs/blkid/resolve.c | 2 +- e2fsprogs/e2fsck.c | 2 +- e2fsprogs/e2p/fgetsetflags.c | 8 ++--- e2fsprogs/e2p/fgetsetversion.c | 6 ++-- e2fsprogs/ext2fs/finddev.c | 10 +++--- include/platform.h | 2 +- networking/ifconfig.c | 2 +- networking/interface.c | 2 +- networking/libiproute/ll_proto.c | 2 +- networking/udhcp/clientpacket.c | 2 +- networking/udhcp/clientsocket.c | 2 +- networking/udhcp/packet.c | 2 +- networking/udhcp/socket.c | 2 +- procps/renice.c | 26 +++++++-------- shell/ash.c | 55 ++++++++++++++++---------------- 19 files changed, 71 insertions(+), 74 deletions(-) diff --git a/Makefile.flags b/Makefile.flags index 12c5d58dd..ed42c2b6d 100644 --- a/Makefile.flags +++ b/Makefile.flags @@ -11,7 +11,7 @@ CPPFLAGS += \ -D_GNU_SOURCE -DNDEBUG \ $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \ -D"BB_VER=KBUILD_STR($(BB_VER))" -DBB_BT=AUTOCONF_TIMESTAMP \ - -Wall -Wstrict-prototypes -Wshadow -Werror \ + -Wall -Wstrict-prototypes -Wshadow -Werror -Wundef \ -funsigned-char -fno-builtin-strlen -finline-limit=0 -static-libgcc \ -Os -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ -fomit-frame-pointer -ffunction-sections -fdata-sections diff --git a/e2fsprogs/blkid/blkid_getsize.c b/e2fsprogs/blkid/blkid_getsize.c index 3c5ec5b76..941efa42c 100644 --- a/e2fsprogs/blkid/blkid_getsize.c +++ b/e2fsprogs/blkid/blkid_getsize.c @@ -15,7 +15,7 @@ #include #include -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif #include diff --git a/e2fsprogs/blkid/devname.c b/e2fsprogs/blkid/devname.c index 7606e400d..532aeeaab 100644 --- a/e2fsprogs/blkid/devname.c +++ b/e2fsprogs/blkid/devname.c @@ -14,20 +14,20 @@ #include #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include #include #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H #include #endif #include -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif -#if HAVE_SYS_MKDEV_H +#ifdef HAVE_SYS_MKDEV_H #include #endif #include diff --git a/e2fsprogs/blkid/devno.c b/e2fsprogs/blkid/devno.c index 4f3dd93cd..13e7f1a87 100644 --- a/e2fsprogs/blkid/devno.c +++ b/e2fsprogs/blkid/devno.c @@ -13,20 +13,20 @@ #include #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H #include #endif #include #include -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif -#if HAVE_SYS_MKDEV_H +#ifdef HAVE_SYS_MKDEV_H #include #endif diff --git a/e2fsprogs/blkid/resolve.c b/e2fsprogs/blkid/resolve.c index c6f54a272..2bbcaf31d 100644 --- a/e2fsprogs/blkid/resolve.c +++ b/e2fsprogs/blkid/resolve.c @@ -12,7 +12,7 @@ */ #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include diff --git a/e2fsprogs/e2fsck.c b/e2fsprogs/e2fsck.c index 88eedeaa6..4920cd0f4 100644 --- a/e2fsprogs/e2fsck.c +++ b/e2fsprogs/e2fsck.c @@ -4309,7 +4309,7 @@ static int process_block(ext2_filsys fs, * Should never happen, since only directories * get called with BLOCK_FLAG_HOLE */ -#if DEBUG_E2FSCK +#ifdef DEBUG_E2FSCK printf("process_block() called with blk == 0, " "blockcnt=%d, inode %lu???\n", blockcnt, p->ino); diff --git a/e2fsprogs/e2p/fgetsetflags.c b/e2fsprogs/e2p/fgetsetflags.c index 34e40551f..008b79850 100644 --- a/e2fsprogs/e2p/fgetsetflags.c +++ b/e2fsprogs/e2p/fgetsetflags.c @@ -16,15 +16,15 @@ * 93/10/30 - Creation */ -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include #include -#if HAVE_EXT2_IOCTLS +#ifdef HAVE_EXT2_IOCTLS #include #include #endif @@ -39,7 +39,7 @@ int fgetsetflags (const char * name, unsigned long * get_flags, unsigned long set_flags) { -#if HAVE_EXT2_IOCTLS +#ifdef HAVE_EXT2_IOCTLS struct stat buf; int fd, r, f, save_errno = 0; diff --git a/e2fsprogs/e2p/fgetsetversion.c b/e2fsprogs/e2p/fgetsetversion.c index 48cea9df4..8d79054d6 100644 --- a/e2fsprogs/e2p/fgetsetversion.c +++ b/e2fsprogs/e2p/fgetsetversion.c @@ -17,10 +17,10 @@ * 93/10/30 - Creation */ -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include @@ -44,7 +44,7 @@ int fgetsetversion (const char * name, unsigned long * get_version, unsigned long set_version) { -#if HAVE_EXT2_IOCTLS +#ifdef HAVE_EXT2_IOCTLS int fd, r, ver, save_errno = 0; fd = open (name, OPEN_FLAGS); diff --git a/e2fsprogs/ext2fs/finddev.c b/e2fsprogs/ext2fs/finddev.c index 4dda916d0..5e2cce940 100644 --- a/e2fsprogs/ext2fs/finddev.c +++ b/e2fsprogs/ext2fs/finddev.c @@ -13,22 +13,22 @@ #include #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H #include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H #include #endif #include -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H #include #endif -#if HAVE_SYS_MKDEV_H +#ifdef HAVE_SYS_MKDEV_H #include #endif diff --git a/include/platform.h b/include/platform.h index 91f43f30b..345e9cb7a 100644 --- a/include/platform.h +++ b/include/platform.h @@ -34,7 +34,7 @@ #endif #undef inline -#if __STDC_VERSION__ > 199901L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 199901L /* it's a keyword */ #else # if __GNUC_PREREQ (2,7) diff --git a/networking/ifconfig.c b/networking/ifconfig.c index 59b6f0acc..371f0fc94 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -29,7 +29,7 @@ #include #include #include -#if __GLIBC__ >=2 && __GLIBC_MINOR >= 1 +#if __GLIBC__ >=2 && __GLIBC_MINOR__ >= 1 #include #include #else diff --git a/networking/interface.c b/networking/interface.c index 6c8e93879..8bbde7d43 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -738,7 +738,7 @@ static const struct hwtype loop_hwtype = { #include -#if (__GLIBC__ >=2 && __GLIBC_MINOR >= 1) || defined(_NEWLIB_VERSION) +#if (__GLIBC__ >=2 && __GLIBC_MINOR__ >= 1) || defined(_NEWLIB_VERSION) #include #else #include diff --git a/networking/libiproute/ll_proto.c b/networking/libiproute/ll_proto.c index f026ab7e6..a3fe9d376 100644 --- a/networking/libiproute/ll_proto.c +++ b/networking/libiproute/ll_proto.c @@ -16,7 +16,7 @@ #include "rt_names.h" #include "utils.h" -#if __GLIBC__ >=2 && __GLIBC_MINOR >= 1 +#if __GLIBC__ >=2 && __GLIBC_MINOR__ >= 1 #include #else #include diff --git a/networking/udhcp/clientpacket.c b/networking/udhcp/clientpacket.c index 58b26c171..4299c2dbd 100644 --- a/networking/udhcp/clientpacket.c +++ b/networking/udhcp/clientpacket.c @@ -11,7 +11,7 @@ #include #include #include -#if (__GLIBC__ >= 2 && __GLIBC_MINOR >= 1) || defined _NEWLIB_VERSION +#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined _NEWLIB_VERSION #include #include #else diff --git a/networking/udhcp/clientsocket.c b/networking/udhcp/clientsocket.c index 982aca1bb..6aa61754d 100644 --- a/networking/udhcp/clientsocket.c +++ b/networking/udhcp/clientsocket.c @@ -26,7 +26,7 @@ #include #include #include -#if (__GLIBC__ >= 2 && __GLIBC_MINOR >= 1) || defined _NEWLIB_VERSION +#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined(_NEWLIB_VERSION) #include #include #else diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c index f12ecd6ec..e861b825a 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c @@ -5,7 +5,7 @@ #include #include #include -#if (__GLIBC__ >= 2 && __GLIBC_MINOR >= 1) || defined _NEWLIB_VERSION +#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined _NEWLIB_VERSION #include #include #else diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c index 3f481c33c..d1867e9a8 100644 --- a/networking/udhcp/socket.c +++ b/networking/udhcp/socket.c @@ -33,7 +33,7 @@ #include #include #include -#if (__GLIBC__ >= 2 && __GLIBC_MINOR >= 1) || defined _NEWLIB_VERSION +#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined _NEWLIB_VERSION #include #include #else diff --git a/procps/renice.c b/procps/renice.c index bcaa94cf1..65674a4ee 100644 --- a/procps/renice.c +++ b/procps/renice.c @@ -20,23 +20,11 @@ */ #include "busybox.h" -#include -#include -#include -#include -#include -#include #include -#if (PRIO_PROCESS < CHAR_MIN) || (PRIO_PROCESS > CHAR_MAX) -#error Assumption violated : PRIO_PROCESS value -#endif -#if (PRIO_PGRP < CHAR_MIN) || (PRIO_PGRP > CHAR_MAX) -#error Assumption violated : PRIO_PGRP value -#endif -#if (PRIO_USER < CHAR_MIN) || (PRIO_USER > CHAR_MAX) -#error Assumption violated : PRIO_USER value -#endif +void BUG_bad_PRIO_PROCESS(void); +void BUG_bad_PRIO_PGRP(void); +void BUG_bad_PRIO_USER(void); int renice_main(int argc, char **argv) { @@ -49,6 +37,14 @@ int renice_main(int argc, char **argv) unsigned who; char *arg; + /* Yes, they are not #defines in glibc 2.4! #if won't work */ + if (PRIO_PROCESS < CHAR_MIN || PRIO_PROCESS > CHAR_MAX) + BUG_bad_PRIO_PROCESS(); + if (PRIO_PGRP < CHAR_MIN || PRIO_PGRP > CHAR_MAX) + BUG_bad_PRIO_PGRP(); + if (PRIO_USER < CHAR_MIN || PRIO_USER > CHAR_MAX) + BUG_bad_PRIO_USER(); + arg = *++argv; /* Check if we are using a relative adjustment. */ diff --git a/shell/ash.c b/shell/ash.c index a34c871f1..3c7639707 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -42,6 +42,7 @@ * When debugging is on, debugging info will be written to ./trace and * a quit signal will generate a core dump. */ +#define DEBUG 0 #define IFS_BROKEN @@ -50,7 +51,7 @@ #include "busybox.h" -#ifdef DEBUG +#if DEBUG #define _GNU_SOURCE #endif @@ -104,7 +105,7 @@ static int *dash_errno; #error "Do not even bother, ash will not run on uClinux" #endif -#ifdef DEBUG +#if DEBUG #define _DIAGASSERT(assert_expr) assert(assert_expr) #else #define _DIAGASSERT(assert_expr) @@ -582,7 +583,7 @@ static const char dolatstr[] = { CTLVAR, VSNORMAL|VSQUOTE, '@', '=', '\0' }; static const char illnum[] = "Illegal number: %s"; static const char homestr[] = "HOME"; -#ifdef DEBUG +#if DEBUG #define TRACE(param) trace param #define TRACEV(param) tracev param #else @@ -1937,7 +1938,7 @@ struct shparam { #define uflag optlist[12] #define viflag optlist[13] -#ifdef DEBUG +#if DEBUG #define nolog optlist[14] #define debug optlist[15] #endif @@ -1964,7 +1965,7 @@ static const char *const optletters_optnames[] = { "b" "notify", "u" "nounset", "\0" "vi", -#ifdef DEBUG +#if DEBUG "\0" "nolog", "\0" "debug", #endif @@ -2011,7 +2012,7 @@ static int redirectsafe(union node *, int); /* show.h */ -#ifdef DEBUG +#if DEBUG static void showtree(union node *); static void trace(const char *, ...); static void tracev(const char *, va_list); @@ -2536,7 +2537,7 @@ static void exverror(int, const char *, va_list) static void exraise(int e) { -#ifdef DEBUG +#if DEBUG if (handler == NULL) abort(); #endif @@ -2596,7 +2597,7 @@ exvwarning(const char *msg, va_list ap) static void exverror(int cond, const char *msg, va_list ap) { -#ifdef DEBUG +#if DEBUG if (msg) { TRACE(("exverror(%d, \"", cond)); TRACEV((msg, ap)); @@ -2785,7 +2786,7 @@ evaltree(union node *n, int flags) getpid(), n, n->type, flags)); switch (n->type) { default: -#ifdef DEBUG +#if DEBUG out1fmt("Node type = %d\n", n->type); fflush(stdout); break; @@ -4481,7 +4482,7 @@ commandcmd(int argc, char **argv) verify |= VERIFY_VERBOSE; else if (c == 'v') verify |= VERIFY_BRIEF; -#ifdef DEBUG +#if DEBUG else if (c != 'p') abort(); #endif @@ -4907,7 +4908,7 @@ expari(int quotes) while (*p != CTLARI) { p--; -#ifdef DEBUG +#if DEBUG if (p < start) { sh_error("missing CTLARI (shouldn't happen)"); } @@ -5100,7 +5101,7 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla } subtype -= VSTRIMRIGHT; -#ifdef DEBUG +#if DEBUG if (subtype < 0 || subtype > 3) abort(); #endif @@ -5223,7 +5224,7 @@ record: goto end; } -#ifdef DEBUG +#if DEBUG switch (subtype) { case VSTRIMLEFT: case VSTRIMLEFTMAX: @@ -6460,7 +6461,7 @@ set_curjob(struct job *jp, unsigned mode) jpp = curp; switch (mode) { default: -#ifdef DEBUG +#if DEBUG abort(); #endif case CUR_DELETE: @@ -6581,7 +6582,7 @@ usage: while ((c = nextopt("ls:")) != '\0') switch (c) { default: -#ifdef DEBUG +#if DEBUG abort(); #endif case 'l': @@ -6647,7 +6648,7 @@ usage: } #endif /* JOBS */ -#if defined(JOBS) || defined(DEBUG) +#if defined(JOBS) || DEBUG static int jobno(const struct job *jp) { @@ -7827,7 +7828,7 @@ chkmail(void) if (*p == '\0') continue; for (q = p ; *q ; q++); -#ifdef DEBUG +#if DEBUG if (q[-1] != '/') abort(); #endif @@ -7921,7 +7922,7 @@ ash_main(int argc, char **argv) goto state4; } handler = &jmploc; -#ifdef DEBUG +#if DEBUG opentrace(); trputs("Shell args: "); trargs(argv); #endif @@ -7988,7 +7989,7 @@ state4: /* XXX ??? - why isn't this before the "if" statement */ #if PROFILE monitor(0); #endif -#if GPROF +#ifdef GPROF { extern void _mcleanup(void); _mcleanup(); @@ -8266,7 +8267,7 @@ stalloc(size_t nbytes) void stunalloc(pointer p) { -#ifdef DEBUG +#if DEBUG if (!p || (stacknxt < (char *)p) || ((char *)p < stackp->space)) { write(2, "stunalloc\n", 10); abort(); @@ -8844,7 +8845,7 @@ setarg0: void optschanged(void) { -#ifdef DEBUG +#if DEBUG opentrace(); #endif setinteractive(iflag); @@ -9913,7 +9914,7 @@ static int readtoken(void) { int t; -#ifdef DEBUG +#if DEBUG int alreadyseen = tokpushback; #endif @@ -9963,7 +9964,7 @@ top: } out: checkkwd = 0; -#ifdef DEBUG +#if DEBUG if (!alreadyseen) TRACE(("token %s %s\n", tokname(t), t == TWORD ? wordtext : "")); else @@ -11053,7 +11054,7 @@ openredirect(union node *redir) goto ecreate; break; default: -#ifdef DEBUG +#if DEBUG abort(); #endif /* Fall through to eliminate warning. */ @@ -11255,7 +11256,7 @@ redirectsafe(union node *redir, int flags) /* show.c */ -#ifdef DEBUG +#if DEBUG static void shtree(union node *, int, char *, FILE*); static void shcmd(union node *, FILE *); static void sharg(union node *, FILE *); @@ -11714,7 +11715,7 @@ setsignal(int signo) action = S_CATCH; break; case SIGQUIT: -#ifdef DEBUG +#if DEBUG if (debug) break; #endif @@ -13659,7 +13660,7 @@ static arith_t arith (const char *expr, int *perrcode) #endif /* CONFIG_ASH_MATH_SUPPORT */ -#ifdef DEBUG +#if DEBUG const char *applet_name = "debug stuff usage"; int main(int argc, char **argv) {