diff --git a/archival/gunzip.c b/archival/gunzip.c
index 8558573..1949216 100644
--- a/archival/gunzip.c
+++ b/archival/gunzip.c
@@ -76,40 +76,40 @@
 #define bb_need_name_too_long
 #include "messages.c"
 
-#define RECORD_IO 0
+static const int RECORD_IO = 0;
 
 /* Return codes from gzip */
-#define OK      0
-#define ERROR   1
-#define WARNING 2
+static const int OK = 0;
+static const int ERROR = 1;
+static const int WARNING = 2;
 
-#define DEFLATED     8
-#define INBUFSIZ     0x2000	/* input buffer size */
-#define INBUF_EXTRA  64		/* required by unlzw() */
-#define OUTBUFSIZ    8192	/* output buffer size */
-#define OUTBUF_EXTRA 2048	/* required by unlzw() */
-#define DIST_BUFSIZE 0x2000	/* buffer for distances, see trees.c */
+static const int DEFLATED = 8;
+static const int INBUFSIZ = 0x2000;	/* input buffer size */
+static const int INBUF_EXTRA = 64;		/* required by unlzw() */
+static const int OUTBUFSIZ = 8192;	/* output buffer size */
+static const int OUTBUF_EXTRA = 2048;	/* required by unlzw() */
+static const int DIST_BUFSIZE = 0x2000;	/* buffer for distances, see trees.c */
 
 #define	GZIP_MAGIC  "\037\213"	/* Magic header for gzip files, 1F 8B */
 
 /* gzip flag byte */
-#define EXTRA_FIELD  0x04	/* bit 2 set: extra field present */
-#define ORIG_NAME    0x08	/* bit 3 set: original file name present */
-#define COMMENT      0x10	/* bit 4 set: file comment present */
-#define WSIZE 0x8000		/* window size--must be a power of two, and */
+static const int EXTRA_FIELD = 0x04;	/* bit 2 set: extra field present */
+static const int ORIG_NAME = 0x08;	/* bit 3 set: original file name present */
+static const int COMMENT = 0x10;	/* bit 4 set: file comment present */
+static const int WSIZE = 0x8000;		/* window size--must be a power of two, and */
 				/*  at least 32K for zip's deflate method */
 
 /* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
-#define BMAX 16		/* maximum bit length of any code (16 for explode) */
-#define N_MAX 288		/* maximum number of codes in any set */
+static const int BMAX = 16;		/* maximum bit length of any code (16 for explode) */
+static const int N_MAX = 288;		/* maximum number of codes in any set */
 
 /* PKZIP header definitions */
-#define LOCSIG 0x04034b50L	/* four-byte lead-in (lsb first) */
-#define LOCCRC 14		/* offset of crc */
-#define LOCLEN 22		/* offset of uncompressed length */
-#define EXTHDR 16		/* size of extended local header, inc sig */
+static const int LOCSIG = 0x04034b50L;	/* four-byte lead-in (lsb first) */
+static const int LOCCRC = 14;		/* offset of crc */
+static const int LOCLEN = 22;		/* offset of uncompressed length */
+static const int EXTHDR = 16;		/* size of extended local header, inc sig */
 
-#define BITS 16
+static const int BITS = 16;
 
 /* Diagnostic functions */
 #ifdef DEBUG
@@ -132,7 +132,7 @@
 #  ifdef BUFSIZ
 #    define MAX_PATH_LEN   BUFSIZ
 #  else
-#    define MAX_PATH_LEN   1024
+static const int MAX_PATH_LEN = 1024;
 #  endif
 #endif
 
@@ -165,8 +165,8 @@
 /* local variables */
 static int test_mode = 0;	/* check file integrity option */
 static int foreground;		/* set if program run in foreground */
-static int method = DEFLATED;	/* compression method */
-static int exit_code = OK;	/* program exit code */
+static int method;	/* compression method */
+static int exit_code;	/* program exit code */
 static int last_member;	/* set for .zip and .Z files */
 static int part_nb;		/* number of parts in .gz file */
 static long ifile_size;	/* input file size, -1 for devices (debug only) */
@@ -1225,6 +1225,9 @@
 	char ifname[MAX_PATH_LEN + 1];	/* input file name */
 	char ofname[MAX_PATH_LEN + 1];	/* output file name */
 
+	method = DEFLATED;	/* default compression method */
+	exit_code = OK;	/* let's go out on a limb and assume everything will run fine (wink wink) */
+
 	if (strcmp(applet_name, "zcat") == 0) {
 		force = 1;
 		tostdout = 1;
diff --git a/archival/tar.c b/archival/tar.c
index 2699550..51a857d 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -64,7 +64,7 @@
 #define MINOR(dev) ((dev)&0xff)
 #endif
 
-#define NAME_SIZE	100
+enum { NAME_SIZE = 100 }; /* because gcc won't let me use 'static const int' */
 
 /* POSIX tar Header Block, from POSIX 1003.1-1990  */
 struct TarHeader
@@ -94,9 +94,9 @@
 /* A few useful constants */
 #define TAR_MAGIC          "ustar"        /* ustar and a null */
 #define TAR_VERSION        "  "           /* Be compatable with GNU tar format */
-#define TAR_MAGIC_LEN       6
-#define TAR_VERSION_LEN     2
-#define TAR_BLOCK_SIZE      512
+static const int TAR_MAGIC_LEN = 6;
+static const int TAR_VERSION_LEN = 2;
+static const int TAR_BLOCK_SIZE = 512;
 
 /* A nice enum with all the possible tar file content types */
 enum TarFileType 
diff --git a/chvt.c b/chvt.c
index 76d4b53..c715e67 100644
--- a/chvt.c
+++ b/chvt.c
@@ -12,8 +12,8 @@
 #include <sys/ioctl.h>
 
 /* From <linux/vt.h> */
-#define VT_ACTIVATE     0x5606  /* make vt active */
-#define VT_WAITACTIVE   0x5607  /* wait for vt active */
+static const int VT_ACTIVATE = 0x5606;  /* make vt active */
+static const int VT_WAITACTIVE = 0x5607;  /* wait for vt active */
 
 int chvt_main(int argc, char **argv)
 {
diff --git a/cmdedit.c b/cmdedit.c
index 722a36a..12c78dc 100644
--- a/cmdedit.c
+++ b/cmdedit.c
@@ -44,10 +44,13 @@
 #include <signal.h>
 
 
-#define  MAX_HISTORY   15		/* Maximum length of the linked list for the command line history */
+static const int MAX_HISTORY = 15;		/* Maximum length of the linked list for the command line history */
 
-#define ESC	27
-#define DEL	127
+enum {
+	ESC = 27,
+	DEL = 127,
+};
+
 #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
 #define whitespace(c) (((c) == ' ') || ((c) == '\t'))
 
diff --git a/console-tools/chvt.c b/console-tools/chvt.c
index 76d4b53..c715e67 100644
--- a/console-tools/chvt.c
+++ b/console-tools/chvt.c
@@ -12,8 +12,8 @@
 #include <sys/ioctl.h>
 
 /* From <linux/vt.h> */
-#define VT_ACTIVATE     0x5606  /* make vt active */
-#define VT_WAITACTIVE   0x5607  /* wait for vt active */
+static const int VT_ACTIVATE = 0x5606;  /* make vt active */
+static const int VT_WAITACTIVE = 0x5607;  /* wait for vt active */
 
 int chvt_main(int argc, char **argv)
 {
diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c
index 3dd90c0..fad7a2b 100644
--- a/console-tools/deallocvt.c
+++ b/console-tools/deallocvt.c
@@ -11,7 +11,7 @@
 #include <sys/ioctl.h>
 
 /* From <linux/vt.h> */
-#define VT_DISALLOCATE  0x5608  /* free memory associated to vt */
+static const int VT_DISALLOCATE = 0x5608;  /* free memory associated to vt */
 
 int deallocvt_main(int argc, char *argv[])
 {
diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c
index c5a2ea7..b438ba2 100644
--- a/console-tools/dumpkmap.c
+++ b/console-tools/dumpkmap.c
@@ -32,11 +32,11 @@
 	unsigned char kb_index;
 	unsigned short kb_value;
 };
-#define KDGKBENT        0x4B46  /* gets one entry in translation table */
+static const int KDGKBENT = 0x4B46;  /* gets one entry in translation table */
 
 /* From <linux/keyboard.h> */
-#define NR_KEYS         128
-#define MAX_NR_KEYMAPS  256
+static const int NR_KEYS = 128;
+static const int MAX_NR_KEYMAPS = 256;
 
 int dumpkmap_main(int argc, char **argv)
 {
diff --git a/console-tools/loadfont.c b/console-tools/loadfont.c
index 13a196f..08e0761 100644
--- a/console-tools/loadfont.c
+++ b/console-tools/loadfont.c
@@ -21,13 +21,13 @@
 #include <sys/kd.h>
 #include <endian.h>
 
-#define PSF_MAGIC1	0x36
-#define PSF_MAGIC2	0x04
+static const int PSF_MAGIC1 = 0x36;
+static const int PSF_MAGIC2 = 0x04;
 
-#define PSF_MODE512    0x01
-#define PSF_MODEHASTAB 0x02
-#define PSF_MAXMODE    0x03
-#define PSF_SEPARATOR  0xFFFF
+static const int PSF_MODE512 = 0x01;
+static const int PSF_MODEHASTAB = 0x02;
+static const int PSF_MAXMODE = 0x03;
+static const int PSF_SEPARATOR = 0xFFFF;
 
 struct psf_header {
 	unsigned char magic1, magic2;	/* Magic number */
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c
index fc24398..43c1cc7 100644
--- a/console-tools/loadkmap.c
+++ b/console-tools/loadkmap.c
@@ -34,11 +34,11 @@
 	unsigned char kb_index;
 	unsigned short kb_value;
 };
-#define KDSKBENT        0x4B47  /* sets one entry in translation table */
+static const int KDSKBENT = 0x4B47;  /* sets one entry in translation table */
 
 /* From <linux/keyboard.h> */
-#define NR_KEYS         128
-#define MAX_NR_KEYMAPS  256
+static const int NR_KEYS = 128;
+static const int MAX_NR_KEYMAPS = 256;
 
 int loadkmap_main(int argc, char **argv)
 {
diff --git a/console-tools/setkeycodes.c b/console-tools/setkeycodes.c
index 7db398d..be9b1b7 100644
--- a/console-tools/setkeycodes.c
+++ b/console-tools/setkeycodes.c
@@ -33,7 +33,7 @@
 struct kbkeycode {
 	unsigned int scancode, keycode;
 };
-#define KDSETKEYCODE    0x4B4D  /* write kernel keycode table entry */
+static const int KDSETKEYCODE = 0x4B4D;  /* write kernel keycode table entry */
 
 extern int 
 setkeycodes_main(int argc, char** argv)
diff --git a/coreutils/ln.c b/coreutils/ln.c
index ead5322..e69cb02 100644
--- a/coreutils/ln.c
+++ b/coreutils/ln.c
@@ -30,9 +30,9 @@
 #include <dirent.h>
 #include <errno.h>
 
-#define LN_SYMLINK		1
-#define LN_FORCE			2
-#define LN_NODEREFERENCE	4
+static const int LN_SYMLINK = 1;
+static const int LN_FORCE = 2;
+static const int LN_NODEREFERENCE = 4;
 
 /*
  * linkDestName is where the link points to,
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 754a6d4..0807680 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -41,9 +41,9 @@
  * 1. requires lstat (BSD) - how do you do it without?
  */
 
-#define TERMINAL_WIDTH	80		/* use 79 if your terminal has linefold bug */
-#define COLUMN_WIDTH	14		/* default if AUTOWIDTH not defined */
-#define COLUMN_GAP	2			/* includes the file type char, if present */
+static const int TERMINAL_WIDTH = 80;		/* use 79 if your terminal has linefold bug */
+static const int COLUMN_WIDTH = 14;		/* default if AUTOWIDTH not defined */
+static const int COLUMN_GAP = 2;			/* includes the file type char, if present */
 
 /************************************************************************/
 
@@ -66,10 +66,12 @@
 #endif
 
 /* what is the overall style of the listing */
-#define STYLE_AUTO		0
-#define STYLE_LONG		1		/* one record per line, extended info */
-#define STYLE_SINGLE	2		/* one record per line */
-#define STYLE_COLUMNS	3		/* fill columns */
+enum {
+STYLE_AUTO = 0,
+STYLE_LONG = 1,		/* one record per line, extended info */
+STYLE_SINGLE = 2,		/* one record per line */
+STYLE_COLUMNS = 3		/* fill columns */
+};
 
 /* 51306 lrwxrwxrwx  1 root     root         2 May 11 01:43 /bin/view -> vi* */
 /* what file information will be listed */
@@ -99,23 +101,23 @@
 
 #ifdef BB_FEATURE_LS_SORTFILES
 /* how will the files be sorted */
-#define SORT_FORWARD    0		/* sort in reverse order */
-#define SORT_REVERSE    1		/* sort in reverse order */
-#define SORT_NAME		2		/* sort by file name */
-#define SORT_SIZE		3		/* sort by file size */
-#define SORT_ATIME		4		/* sort by last access time */
-#define SORT_CTIME		5		/* sort by last change time */
-#define SORT_MTIME		6		/* sort by last modification time */
-#define SORT_VERSION	7		/* sort by version */
-#define SORT_EXT		8		/* sort by file name extension */
-#define SORT_DIR		9		/* sort by file or directory */
+static const int SORT_FORWARD = 0;		/* sort in reverse order */
+static const int SORT_REVERSE = 1;		/* sort in reverse order */
+static const int SORT_NAME = 2;		/* sort by file name */
+static const int SORT_SIZE = 3;		/* sort by file size */
+static const int SORT_ATIME = 4;		/* sort by last access time */
+static const int SORT_CTIME = 5;		/* sort by last change time */
+static const int SORT_MTIME = 6;		/* sort by last modification time */
+static const int SORT_VERSION = 7;		/* sort by version */
+static const int SORT_EXT = 8;		/* sort by file name extension */
+static const int SORT_DIR = 9;		/* sort by file or directory */
 #endif
 
 #ifdef BB_FEATURE_LS_TIMESTAMPS
 /* which of the three times will be used */
-#define TIME_MOD    0
-#define TIME_CHANGE 1
-#define TIME_ACCESS 2
+static const int TIME_MOD = 0;
+static const int TIME_CHANGE = 1;
+static const int TIME_ACCESS = 2;
 #endif
 
 #define LIST_SHORT		(LIST_FILENAME)
@@ -125,9 +127,9 @@
 						LIST_SYMLINK)
 #define LIST_ILONG		(LIST_INO | LIST_LONG)
 
-#define SPLIT_DIR		0
-#define SPLIT_FILE		1
-#define SPLIT_SUBDIR	2
+static const int SPLIT_DIR = 0;
+static const int SPLIT_FILE = 1;
+static const int SPLIT_SUBDIR = 2;
 
 #define TYPEINDEX(mode) (((mode) >> 12) & 0x0f)
 #define TYPECHAR(mode)  ("0pcCd?bB-?l?s???" [TYPEINDEX(mode)])
@@ -150,15 +152,15 @@
 struct dnode **dnalloc(int);
 int list_single(struct dnode *);
 
-static unsigned int disp_opts=	DISP_NORMAL;
-static unsigned int style_fmt=	STYLE_AUTO ;
-static unsigned int list_fmt=	LIST_SHORT ;
+static unsigned int disp_opts;
+static unsigned int style_fmt;
+static unsigned int list_fmt;
 #ifdef BB_FEATURE_LS_SORTFILES
-static unsigned int sort_opts=	SORT_FORWARD;
-static unsigned int sort_order=	SORT_FORWARD;
+static unsigned int sort_opts;
+static unsigned int sort_order;
 #endif
 #ifdef BB_FEATURE_LS_TIMESTAMPS
-static unsigned int time_fmt=	TIME_MOD;
+static unsigned int time_fmt;
 #endif
 #ifdef BB_FEATURE_LS_FOLLOWLINKS
 static unsigned int follow_links=FALSE;
@@ -166,12 +168,9 @@
 
 static unsigned short column = 0;
 #ifdef BB_FEATURE_AUTOWIDTH
-static unsigned short terminal_width = TERMINAL_WIDTH;
-static unsigned short column_width = COLUMN_WIDTH;
-static unsigned short tabstops = 8;
-#else
-#define terminal_width  TERMINAL_WIDTH
-#define column_width    COLUMN_WIDTH
+static unsigned short terminal_width;
+static unsigned short column_width;
+static unsigned short tabstops;
 #endif
 
 static int status = EXIT_SUCCESS;
@@ -710,10 +709,16 @@
 	list_fmt=  LIST_SHORT;
 #ifdef BB_FEATURE_LS_SORTFILES
 	sort_opts= SORT_NAME;
+	sort_order=	SORT_FORWARD;
 #endif
 #ifdef BB_FEATURE_LS_TIMESTAMPS
 	time_fmt= TIME_MOD;
 #endif
+#ifdef BB_FEATURE_AUTOWIDTH
+	terminal_width = TERMINAL_WIDTH;
+	column_width = COLUMN_WIDTH;
+	tabstops = 8;
+#endif
 	nfiles=0;
 
 	/* process options */
diff --git a/coreutils/md5sum.c b/coreutils/md5sum.c
index 3458f2e..ad40780 100644
--- a/coreutils/md5sum.c
+++ b/coreutils/md5sum.c
@@ -91,7 +91,7 @@
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _MD5_H
-#define _MD5_H 1
+static const int _MD5_H = 1;
 
 #include <stdio.h>
 
@@ -251,7 +251,7 @@
 int md5_stream(FILE *stream, void *resblock)
 {
   /* Important: BLOCKSIZE must be a multiple of 64.  */
-#define BLOCKSIZE 4096
+static const int BLOCKSIZE = 4096;
   struct md5_ctx ctx;
   char buffer[BLOCKSIZE + 72];
   size_t sum;
@@ -529,7 +529,7 @@
 /* The minimum length of a valid digest line in a file produced
    by `md5sum FILE' and read by `md5sum -c'.  This length does
    not include any newline character at the end of a line.  */
-#define MIN_DIGEST_LINE_LENGTH 35 /* 32 - message digest length
+static const int MIN_DIGEST_LINE_LENGTH = 35; /* 32 - message digest length
                                       2 - blank and binary indicator
                                       1 - minimum filename length */
 
diff --git a/coreutils/printf.c b/coreutils/printf.c
index 832ca13..72bc7ae 100644
--- a/coreutils/printf.c
+++ b/coreutils/printf.c
@@ -59,7 +59,7 @@
 
 
 #ifndef S_IFMT
-# define S_IFMT 0170000
+static const int S_IFMT = 0170000;
 #endif
 #if !defined(S_ISBLK) && defined(S_IFBLK)
 # define	S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
diff --git a/coreutils/tr.c b/coreutils/tr.c
index fd547b8..d21e672 100644
--- a/coreutils/tr.c
+++ b/coreutils/tr.c
@@ -34,14 +34,15 @@
 #define bb_need_write_error
 #include "messages.c"
 
-#define ASCII		0377
+static const int ASCII = 0377;
 
 /* some glabals shared across this file */
 static char com_fl, del_fl, sq_fl;
-static unsigned char output[BUFSIZ], input[BUFSIZ];
-static unsigned char vector[ASCII + 1];
-static char invec[ASCII + 1], outvec[ASCII + 1];
 static short in_index, out_index;
+/* these last are pointers to static buffers declared in tr_main */
+static unsigned char *poutput, *pinput;
+static unsigned char *pvector;
+static char *pinvec, *poutvec;
 
 
 static void convert()
@@ -52,22 +53,22 @@
 
 	for (;;) {
 		if (in_index == read_chars) {
-			if ((read_chars = read(0, (char *) input, BUFSIZ)) <= 0) {
-				if (write(1, (char *) output, out_index) != out_index)
+			if ((read_chars = read(0, (char *) pinput, BUFSIZ)) <= 0) {
+				if (write(1, (char *) poutput, out_index) != out_index)
 					write(2, write_error, strlen(write_error));
 				exit(0);
 			}
 			in_index = 0;
 		}
-		c = input[in_index++];
-		coded = vector[c];
-		if (del_fl && invec[c])
+		c = pinput[in_index++];
+		coded = pvector[c];
+		if (del_fl && pinvec[c])
 			continue;
-		if (sq_fl && last == coded && (invec[c] || outvec[coded]))
+		if (sq_fl && last == coded && (pinvec[c] || poutvec[coded]))
 			continue;
-		output[out_index++] = last = coded;
+		poutput[out_index++] = last = coded;
 		if (out_index == BUFSIZ) {
-			if (write(1, (char *) output, out_index) != out_index) {
+			if (write(1, (char *) poutput, out_index) != out_index) {
 				write(2, write_error, strlen(write_error));
 				exit(1);
 			}
@@ -86,9 +87,9 @@
 
 	for (j = 0, i = 0; i < string1_len; i++) {
 		if (string2_len <= j)
-			vector[string1[i]] = last;
+			pvector[string1[i]] = last;
 		else
-			vector[string1[i]] = last = string2[j++];
+			pvector[string1[i]] = last = string2[j++];
 	}
 }
 
@@ -143,6 +144,17 @@
 	int output_length=0, input_length;
 	int index = 1;
 	int i;
+	/* set up big arrays here (better than making a bunch of static arrays up top) */
+	unsigned char output[BUFSIZ], input[BUFSIZ];
+	unsigned char vector[ASCII + 1];
+	char invec[ASCII + 1], outvec[ASCII + 1];
+
+	/* ... but make them available globally */
+	poutput = output;
+	pinput  = input;
+	pvector = vector;
+	pinvec  = invec;
+	poutvec = outvec;
 
 	if (argc > 1 && argv[index][0] == '-') {
 		for (ptr = (unsigned char *) &argv[index][1]; *ptr; ptr++) {
diff --git a/coreutils/uname.c b/coreutils/uname.c
index e7e9ff3..4f7c643 100644
--- a/coreutils/uname.c
+++ b/coreutils/uname.c
@@ -44,22 +44,22 @@
 
 /* Values that are bitwise or'd into `toprint'. */
 /* Operating system name. */
-#define PRINT_SYSNAME 1
+static const int PRINT_SYSNAME = 1;
 
 /* Node name on a communications network. */
-#define PRINT_NODENAME 2
+static const int PRINT_NODENAME = 2;
 
 /* Operating system release. */
-#define PRINT_RELEASE 4
+static const int PRINT_RELEASE = 4;
 
 /* Operating system version. */
-#define PRINT_VERSION 8
+static const int PRINT_VERSION = 8;
 
 /* Machine hardware name. */
-#define PRINT_MACHINE 16
+static const int PRINT_MACHINE = 16;
 
  /* Host processor type. */
-#define PRINT_PROCESSOR 32
+static const int PRINT_PROCESSOR = 32;
 
 /* Mask indicating which elements of the name to print. */
 static unsigned char toprint;
diff --git a/cp_mv.c b/cp_mv.c
index 0b32882..5548350 100644
--- a/cp_mv.c
+++ b/cp_mv.c
@@ -43,8 +43,8 @@
 #include <errno.h>
 #include <getopt.h>
 
-#define is_cp 0
-#define is_mv 1
+static const int is_cp = 0;
+static const int is_mv = 1;
 static int         dz_i;		/* index into cp_mv_usage */
 
 static const char *cp_mv_usage[] =	/* .rodata */
@@ -62,7 +62,7 @@
 static int		   srcDirFlag;
 static struct stat srcStatBuf;
 
-static char		   baseDestName[BUFSIZ + 1];
+static char		   *pBaseDestName;
 static size_t	   baseDestLen;
 static int		   destDirFlag;
 static struct stat destStatBuf;
@@ -104,7 +104,7 @@
 	const char *srcBasename;
 	char	   *name;
 
-	strcpy(destName, baseDestName);
+	strcpy(destName, pBaseDestName);
 	destLen = strlen(destName);
 
 	if (srcDirFlag == TRUE) {
@@ -175,6 +175,8 @@
 {
 	volatile int i;
 	int c;
+	char baseDestName[BUFSIZ + 1]; /* not declared globally == less bss used */
+	pBaseDestName = baseDestName; /* but available globally */
 
 	if (*applet_name == 'c' && *(applet_name + 1) == 'p')
 		dz_i = is_cp;
diff --git a/deallocvt.c b/deallocvt.c
index 3dd90c0..fad7a2b 100644
--- a/deallocvt.c
+++ b/deallocvt.c
@@ -11,7 +11,7 @@
 #include <sys/ioctl.h>
 
 /* From <linux/vt.h> */
-#define VT_DISALLOCATE  0x5608  /* free memory associated to vt */
+static const int VT_DISALLOCATE = 0x5608;  /* free memory associated to vt */
 
 int deallocvt_main(int argc, char *argv[])
 {
diff --git a/dumpkmap.c b/dumpkmap.c
index c5a2ea7..b438ba2 100644
--- a/dumpkmap.c
+++ b/dumpkmap.c
@@ -32,11 +32,11 @@
 	unsigned char kb_index;
 	unsigned short kb_value;
 };
-#define KDGKBENT        0x4B46  /* gets one entry in translation table */
+static const int KDGKBENT = 0x4B46;  /* gets one entry in translation table */
 
 /* From <linux/keyboard.h> */
-#define NR_KEYS         128
-#define MAX_NR_KEYMAPS  256
+static const int NR_KEYS = 128;
+static const int MAX_NR_KEYMAPS = 256;
 
 int dumpkmap_main(int argc, char **argv)
 {
diff --git a/fbset.c b/fbset.c
index 40a907b..845be84 100644
--- a/fbset.c
+++ b/fbset.c
@@ -36,53 +36,55 @@
 #define DEFAULTFBDEV  "/dev/fb0"
 #define DEFAULTFBMODE "/etc/fb.modes"
 
-#define OPT_CHANGE    1
-#define OPT_INFO      (1 << 1)
-#define OPT_READMODE  (1 << 2)
+static const int OPT_CHANGE   = (1 << 0);
+static const int OPT_INFO     = (1 << 1);
+static const int OPT_READMODE = (1 << 2);
 
-#define CMD_HELP        0
-#define CMD_FB		1
-#define CMD_DB		2
-#define CMD_GEOMETRY	3
-#define CMD_TIMING	4
-#define CMD_ACCEL	5
-#define CMD_HSYNC	6
-#define CMD_VSYNC	7
-#define CMD_LACED	8
-#define CMD_DOUBLE	9
-/* #define CMD_XCOMPAT     10 */
-#define CMD_ALL         11
-#define CMD_INFO        12
-#define CMD_CHANGE      13
+enum {
+	CMD_HELP = 0,
+	CMD_FB = 1,
+	CMD_DB = 2,
+	CMD_GEOMETRY = 3,
+	CMD_TIMING = 4,
+	CMD_ACCEL = 5,
+	CMD_HSYNC = 6,
+	CMD_VSYNC = 7,
+	CMD_LACED = 8,
+	CMD_DOUBLE = 9,
+/* 	CMD_XCOMPAT =     10, */
+	CMD_ALL = 11,
+	CMD_INFO = 12,
+	CMD_CHANGE = 13,
 
 #ifdef BB_FEATURE_FBSET_FANCY
-#define CMD_XRES	100
-#define CMD_YRES	101
-#define CMD_VXRES	102
-#define CMD_VYRES	103
-#define CMD_DEPTH	104
-#define CMD_MATCH	105
-#define CMD_PIXCLOCK	106
-#define CMD_LEFT	107
-#define CMD_RIGHT	108
-#define CMD_UPPER	109
-#define CMD_LOWER	110
-#define CMD_HSLEN	111
-#define CMD_VSLEN	112
-#define CMD_CSYNC	113
-#define CMD_GSYNC	114
-#define CMD_EXTSYNC	115
-#define CMD_BCAST	116
-#define CMD_RGBA	117
-#define CMD_STEP	118
-#define CMD_MOVE	119
+	CMD_XRES = 100,
+	CMD_YRES = 101,
+	CMD_VXRES = 102,
+	CMD_VYRES = 103,
+	CMD_DEPTH = 104,
+	CMD_MATCH = 105,
+	CMD_PIXCLOCK = 106,
+	CMD_LEFT = 107,
+	CMD_RIGHT = 108,
+	CMD_UPPER = 109,
+	CMD_LOWER = 110,
+	CMD_HSLEN = 111,
+	CMD_VSLEN = 112,
+	CMD_CSYNC = 113,
+	CMD_GSYNC = 114,
+	CMD_EXTSYNC = 115,
+	CMD_BCAST = 116,
+	CMD_RGBA = 117,
+	CMD_STEP = 118,
+	CMD_MOVE = 119,
 #endif
+};
 
 static unsigned int g_options = 0;
 
 /* Stuff stolen from the kernel's fb.h */
-#define FBIOGET_VSCREENINFO     0x4600
-#define FBIOPUT_VSCREENINFO     0x4601
+static const int FBIOGET_VSCREENINFO = 0x4600;
+static const int FBIOPUT_VSCREENINFO = 0x4601;
 #define __u32			unsigned int
 struct fb_bitfield {
 	__u32 offset;			/* beginning of bitfield	*/
@@ -180,12 +182,12 @@
 
 #ifdef BB_FEATURE_FBSET_READMODE
 /* taken from linux/fb.h */
-#define FB_VMODE_INTERLACED	1	/* interlaced	*/
-#define FB_VMODE_DOUBLE		2	/* double scan */
-#define FB_SYNC_HOR_HIGH_ACT	1	/* horizontal sync high active	*/
-#define FB_SYNC_VERT_HIGH_ACT	2	/* vertical sync high active	*/
-#define FB_SYNC_EXT		4	/* external sync		*/
-#define FB_SYNC_COMP_HIGH_ACT	8	/* composite sync high active   */
+static const int FB_VMODE_INTERLACED = 1;	/* interlaced	*/
+static const int FB_VMODE_DOUBLE = 2;	/* double scan */
+static const int FB_SYNC_HOR_HIGH_ACT = 1;	/* horizontal sync high active	*/
+static const int FB_SYNC_VERT_HIGH_ACT = 2;	/* vertical sync high active	*/
+static const int FB_SYNC_EXT = 4;	/* external sync		*/
+static const int FB_SYNC_COMP_HIGH_ACT = 8;	/* composite sync high active   */
 #endif
 static int readmode(struct fb_var_screeninfo *base, const char *fn,
 					const char *mode)
diff --git a/fsck_minix.c b/fsck_minix.c
index b35e6bb..18841ec 100644
--- a/fsck_minix.c
+++ b/fsck_minix.c
@@ -104,24 +104,24 @@
 typedef unsigned int u32;
 
 
-#define MINIX_ROOT_INO 1
-#define MINIX_LINK_MAX	250
-#define MINIX2_LINK_MAX	65530
+static const int MINIX_ROOT_INO = 1;
+static const int MINIX_LINK_MAX = 250;
+static const int MINIX2_LINK_MAX = 65530;
 
-#define MINIX_I_MAP_SLOTS	8
-#define MINIX_Z_MAP_SLOTS	64
-#define MINIX_SUPER_MAGIC	0x137F		/* original minix fs */
-#define MINIX_SUPER_MAGIC2	0x138F		/* minix fs, 30 char names */
-#define MINIX2_SUPER_MAGIC	0x2468		/* minix V2 fs */
-#define MINIX2_SUPER_MAGIC2	0x2478		/* minix V2 fs, 30 char names */
-#define MINIX_VALID_FS		0x0001		/* Clean fs. */
-#define MINIX_ERROR_FS		0x0002		/* fs has errors. */
+static const int MINIX_I_MAP_SLOTS = 8;
+static const int MINIX_Z_MAP_SLOTS = 64;
+static const int MINIX_SUPER_MAGIC = 0x137F;		/* original minix fs */
+static const int MINIX_SUPER_MAGIC2 = 0x138F;		/* minix fs, 30 char names */
+static const int MINIX2_SUPER_MAGIC = 0x2468;		/* minix V2 fs */
+static const int MINIX2_SUPER_MAGIC2 = 0x2478;		/* minix V2 fs, 30 char names */
+static const int MINIX_VALID_FS = 0x0001;		/* Clean fs. */
+static const int MINIX_ERROR_FS = 0x0002;		/* fs has errors. */
 
 #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
 #define MINIX2_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix2_inode)))
 
-#define MINIX_V1		0x0001		/* original minix fs */
-#define MINIX_V2		0x0002		/* minix V2 fs */
+static const int MINIX_V1 = 0x0001;		/* original minix fs */
+static const int MINIX_V2 = 0x0002;		/* minix V2 fs */
 
 #define INODE_VERSION(inode)	inode->i_sb->u.minix_sb.s_version
 
@@ -185,12 +185,6 @@
 
 #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
 
-#define MINIX_VALID_FS               0x0001          /* Clean fs. */
-#define MINIX_ERROR_FS               0x0002          /* fs has errors. */
-
-#define MINIX_SUPER_MAGIC    0x137F          /* original minix fs */
-#define MINIX_SUPER_MAGIC2   0x138F          /* minix fs, 30 char names */
-
 #ifndef BLKGETSIZE
 #define BLKGETSIZE _IO(0x12,96)    /* return device size */
 #endif
@@ -199,7 +193,7 @@
 #define volatile
 #endif
 
-#define ROOT_INO 1
+static const int ROOT_INO = 1;
 
 #define UPPER(size,n) ((size+((n)-1))/(n))
 #define INODE_SIZE (sizeof(struct minix_inode))
@@ -231,7 +225,7 @@
 static int termios_set = 0;
 
 /* File-name data */
-#define MAX_DEPTH 32
+static const int MAX_DEPTH = 32;
 static int name_depth = 0;
 // static char name_list[MAX_DEPTH][BUFSIZ + 1];
 static char **name_list = NULL;
diff --git a/getopt.c b/getopt.c
index 0ebf9df..ff55a3e 100644
--- a/getopt.c
+++ b/getopt.c
@@ -53,9 +53,9 @@
 
 /* NON_OPT is the code that is returned when a non-option is found in '+'
    mode */
-#define NON_OPT 1
+static const int NON_OPT = 1;
 /* LONG_OPT is the code that is returned when a long option is found. */
-#define LONG_OPT 2
+static const int LONG_OPT = 2;
 
 /* The shells recognized. */
 typedef enum {BASH,TCSH} shell_t;
@@ -199,7 +199,7 @@
 static struct option *long_options=NULL;
 static int long_options_length=0; /* Length of array */
 static int long_options_nr=0; /* Nr of used elements in array */
-#define LONG_OPTIONS_INCR 10
+static const int LONG_OPTIONS_INCR = 10;
 #define init_longopt() add_longopt(NULL,0)
 
 /* Register a long option. The contents of name is copied. */
diff --git a/gunzip.c b/gunzip.c
index 8558573..1949216 100644
--- a/gunzip.c
+++ b/gunzip.c
@@ -76,40 +76,40 @@
 #define bb_need_name_too_long
 #include "messages.c"
 
-#define RECORD_IO 0
+static const int RECORD_IO = 0;
 
 /* Return codes from gzip */
-#define OK      0
-#define ERROR   1
-#define WARNING 2
+static const int OK = 0;
+static const int ERROR = 1;
+static const int WARNING = 2;
 
-#define DEFLATED     8
-#define INBUFSIZ     0x2000	/* input buffer size */
-#define INBUF_EXTRA  64		/* required by unlzw() */
-#define OUTBUFSIZ    8192	/* output buffer size */
-#define OUTBUF_EXTRA 2048	/* required by unlzw() */
-#define DIST_BUFSIZE 0x2000	/* buffer for distances, see trees.c */
+static const int DEFLATED = 8;
+static const int INBUFSIZ = 0x2000;	/* input buffer size */
+static const int INBUF_EXTRA = 64;		/* required by unlzw() */
+static const int OUTBUFSIZ = 8192;	/* output buffer size */
+static const int OUTBUF_EXTRA = 2048;	/* required by unlzw() */
+static const int DIST_BUFSIZE = 0x2000;	/* buffer for distances, see trees.c */
 
 #define	GZIP_MAGIC  "\037\213"	/* Magic header for gzip files, 1F 8B */
 
 /* gzip flag byte */
-#define EXTRA_FIELD  0x04	/* bit 2 set: extra field present */
-#define ORIG_NAME    0x08	/* bit 3 set: original file name present */
-#define COMMENT      0x10	/* bit 4 set: file comment present */
-#define WSIZE 0x8000		/* window size--must be a power of two, and */
+static const int EXTRA_FIELD = 0x04;	/* bit 2 set: extra field present */
+static const int ORIG_NAME = 0x08;	/* bit 3 set: original file name present */
+static const int COMMENT = 0x10;	/* bit 4 set: file comment present */
+static const int WSIZE = 0x8000;		/* window size--must be a power of two, and */
 				/*  at least 32K for zip's deflate method */
 
 /* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
-#define BMAX 16		/* maximum bit length of any code (16 for explode) */
-#define N_MAX 288		/* maximum number of codes in any set */
+static const int BMAX = 16;		/* maximum bit length of any code (16 for explode) */
+static const int N_MAX = 288;		/* maximum number of codes in any set */
 
 /* PKZIP header definitions */
-#define LOCSIG 0x04034b50L	/* four-byte lead-in (lsb first) */
-#define LOCCRC 14		/* offset of crc */
-#define LOCLEN 22		/* offset of uncompressed length */
-#define EXTHDR 16		/* size of extended local header, inc sig */
+static const int LOCSIG = 0x04034b50L;	/* four-byte lead-in (lsb first) */
+static const int LOCCRC = 14;		/* offset of crc */
+static const int LOCLEN = 22;		/* offset of uncompressed length */
+static const int EXTHDR = 16;		/* size of extended local header, inc sig */
 
-#define BITS 16
+static const int BITS = 16;
 
 /* Diagnostic functions */
 #ifdef DEBUG
@@ -132,7 +132,7 @@
 #  ifdef BUFSIZ
 #    define MAX_PATH_LEN   BUFSIZ
 #  else
-#    define MAX_PATH_LEN   1024
+static const int MAX_PATH_LEN = 1024;
 #  endif
 #endif
 
@@ -165,8 +165,8 @@
 /* local variables */
 static int test_mode = 0;	/* check file integrity option */
 static int foreground;		/* set if program run in foreground */
-static int method = DEFLATED;	/* compression method */
-static int exit_code = OK;	/* program exit code */
+static int method;	/* compression method */
+static int exit_code;	/* program exit code */
 static int last_member;	/* set for .zip and .Z files */
 static int part_nb;		/* number of parts in .gz file */
 static long ifile_size;	/* input file size, -1 for devices (debug only) */
@@ -1225,6 +1225,9 @@
 	char ifname[MAX_PATH_LEN + 1];	/* input file name */
 	char ofname[MAX_PATH_LEN + 1];	/* output file name */
 
+	method = DEFLATED;	/* default compression method */
+	exit_code = OK;	/* let's go out on a limb and assume everything will run fine (wink wink) */
+
 	if (strcmp(applet_name, "zcat") == 0) {
 		force = 1;
 		tostdout = 1;
diff --git a/init.c b/init.c
index 0e9b741..ac0f72b 100644
--- a/init.c
+++ b/init.c
@@ -56,7 +56,7 @@
 	unsigned short v_signal;        /* signal to send */
 	unsigned short v_state;         /* vt bitmask */
 };
-#define VT_GETSTATE     0x5603  /* get global vt state info */
+static const int VT_GETSTATE = 0x5603;  /* get global vt state info */
 
 /* From <linux/serial.h> */
 struct serial_struct {
@@ -79,11 +79,11 @@
 
 
 #ifndef RB_HALT_SYSTEM
-#define RB_HALT_SYSTEM  0xcdef0123
-#define RB_ENABLE_CAD   0x89abcdef
-#define RB_DISABLE_CAD  0
+static const int RB_HALT_SYSTEM = 0xcdef0123;
+static const int RB_ENABLE_CAD = 0x89abcdef;
+static const int RB_DISABLE_CAD = 0;
 #define RB_POWER_OFF    0x4321fedc
-#define RB_AUTOBOOT     0x01234567
+static const int RB_AUTOBOOT = 0x01234567;
 #if defined(__GLIBC__) || defined (__UCLIBC__)
 #include <sys/reboot.h>
   #define init_reboot(magic) reboot(magic)
@@ -131,8 +131,8 @@
 #define INIT_SCRIPT  "/etc/init.d/rcS"   /* Default sysinit script. */
 #endif
 
-#define LOG     0x1
-#define CONSOLE 0x2
+static const int LOG = 0x1;
+static const int CONSOLE = 0x2;
 
 /* Allowed init action types */
 typedef enum {
diff --git a/init/init.c b/init/init.c
index 0e9b741..ac0f72b 100644
--- a/init/init.c
+++ b/init/init.c
@@ -56,7 +56,7 @@
 	unsigned short v_signal;        /* signal to send */
 	unsigned short v_state;         /* vt bitmask */
 };
-#define VT_GETSTATE     0x5603  /* get global vt state info */
+static const int VT_GETSTATE = 0x5603;  /* get global vt state info */
 
 /* From <linux/serial.h> */
 struct serial_struct {
@@ -79,11 +79,11 @@
 
 
 #ifndef RB_HALT_SYSTEM
-#define RB_HALT_SYSTEM  0xcdef0123
-#define RB_ENABLE_CAD   0x89abcdef
-#define RB_DISABLE_CAD  0
+static const int RB_HALT_SYSTEM = 0xcdef0123;
+static const int RB_ENABLE_CAD = 0x89abcdef;
+static const int RB_DISABLE_CAD = 0;
 #define RB_POWER_OFF    0x4321fedc
-#define RB_AUTOBOOT     0x01234567
+static const int RB_AUTOBOOT = 0x01234567;
 #if defined(__GLIBC__) || defined (__UCLIBC__)
 #include <sys/reboot.h>
   #define init_reboot(magic) reboot(magic)
@@ -131,8 +131,8 @@
 #define INIT_SCRIPT  "/etc/init.d/rcS"   /* Default sysinit script. */
 #endif
 
-#define LOG     0x1
-#define CONSOLE 0x2
+static const int LOG = 0x1;
+static const int CONSOLE = 0x2;
 
 /* Allowed init action types */
 typedef enum {
diff --git a/insmod.c b/insmod.c
index a499bcd..be27a1f 100644
--- a/insmod.c
+++ b/insmod.c
@@ -76,9 +76,9 @@
 
 
 #ifndef MODUTILS_MODULE_H
-#define MODUTILS_MODULE_H 1
+static const int MODUTILS_MODULE_H = 1;
 
-#ident "$Id: insmod.c,v 1.35 2001/01/04 02:00:17 kraai Exp $"
+#ident "$Id: insmod.c,v 1.36 2001/01/23 22:30:04 markw Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -135,7 +135,7 @@
 };
 
 /* Sent to init_module(2) or'ed into the code size parameter.  */
-#define OLD_MOD_AUTOCLEAN 0x40000000 /* big enough, but no sign problems... */
+static const int OLD_MOD_AUTOCLEAN = 0x40000000; /* big enough, but no sign problems... */
 
 int get_kernel_syms(struct old_kernel_sym *);
 int old_sys_init_module(const char *name, char *code, unsigned codesize,
@@ -158,9 +158,9 @@
 #undef tgt_sizeof_char_p
 #undef tgt_sizeof_void_p
 #undef tgt_long
-#define tgt_sizeof_long		8
-#define tgt_sizeof_char_p	8
-#define tgt_sizeof_void_p	8
+static const int tgt_sizeof_long = 8;
+static const int tgt_sizeof_char_p = 8;
+static const int tgt_sizeof_void_p = 8;
 #define tgt_long		long long
 #endif
 
@@ -222,11 +222,11 @@
 };
 
 /* Bits of module.flags.  */
-#define NEW_MOD_RUNNING		1
-#define NEW_MOD_DELETED		2
-#define NEW_MOD_AUTOCLEAN	4
-#define NEW_MOD_VISITED		8
-#define NEW_MOD_USED_ONCE	16
+static const int NEW_MOD_RUNNING = 1;
+static const int NEW_MOD_DELETED = 2;
+static const int NEW_MOD_AUTOCLEAN = 4;
+static const int NEW_MOD_VISITED = 8;
+static const int NEW_MOD_USED_ONCE = 16;
 
 int new_sys_init_module(const char *name, const struct new_module *);
 int query_module(const char *name, int which, void *buf, size_t bufsize,
@@ -234,11 +234,11 @@
 
 /* Values for query_module's which.  */
 
-#define QM_MODULES	1
-#define QM_DEPS		2
-#define QM_REFS		3
-#define QM_SYMBOLS	4
-#define QM_INFO		5
+static const int QM_MODULES = 1;
+static const int QM_DEPS = 2;
+static const int QM_REFS = 3;
+static const int QM_SYMBOLS = 4;
+static const int QM_INFO = 5;
 
 /*======================================================================*/
 /* The system calls unchanged between 2.0 and 2.1.  */
@@ -282,9 +282,9 @@
 
 
 #ifndef MODUTILS_OBJ_H
-#define MODUTILS_OBJ_H 1
+static const int MODUTILS_OBJ_H = 1;
 
-#ident "$Id: insmod.c,v 1.35 2001/01/04 02:00:17 kraai Exp $"
+#ident "$Id: insmod.c,v 1.36 2001/01/23 22:30:04 markw Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -517,7 +517,7 @@
 
 
 #define _PATH_MODULES	"/lib/modules"
-#define STRVERSIONLEN	32
+static const int STRVERSIONLEN = 32;
 
 #if !defined(BB_FEATURE_INSMOD_NEW_KERNEL) && !defined(BB_FEATURE_INSMOD_OLD_KERNEL)
 #error "Must have ether BB_FEATURE_INSMOD_NEW_KERNEL or BB_FEATURE_INSMOD_OLD_KERNEL defined"
diff --git a/kill.c b/kill.c
index 8fa9da7..19ca187 100644
--- a/kill.c
+++ b/kill.c
@@ -30,8 +30,8 @@
 #include <ctype.h>
 #include <unistd.h>
 
-#define KILL	0
-#define KILLALL	1
+static const int KILL = 0;
+static const int KILLALL = 1;
 
 struct signal_name {
 	const char *name;
diff --git a/lash.c b/lash.c
index 52c87ee..b9685ab 100644
--- a/lash.c
+++ b/lash.c
@@ -64,8 +64,8 @@
 #include <getopt.h>
 #include "cmdedit.h"
 
-#define MAX_LINE	256	/* size of input buffer for cwd data */
-#define MAX_READ	128	/* size of input buffer for `read' builtin */
+static const int MAX_LINE = 256;	/* size of input buffer for cwd data */
+static const int MAX_READ = 128;	/* size of input buffer for `read' builtin */
 #define JOB_STATUS_FORMAT "[%d] %-22s %.40s\n"
 extern size_t NUM_APPLETS;
 
diff --git a/ln.c b/ln.c
index ead5322..e69cb02 100644
--- a/ln.c
+++ b/ln.c
@@ -30,9 +30,9 @@
 #include <dirent.h>
 #include <errno.h>
 
-#define LN_SYMLINK		1
-#define LN_FORCE			2
-#define LN_NODEREFERENCE	4
+static const int LN_SYMLINK = 1;
+static const int LN_FORCE = 2;
+static const int LN_NODEREFERENCE = 4;
 
 /*
  * linkDestName is where the link points to,
diff --git a/loadfont.c b/loadfont.c
index 13a196f..08e0761 100644
--- a/loadfont.c
+++ b/loadfont.c
@@ -21,13 +21,13 @@
 #include <sys/kd.h>
 #include <endian.h>
 
-#define PSF_MAGIC1	0x36
-#define PSF_MAGIC2	0x04
+static const int PSF_MAGIC1 = 0x36;
+static const int PSF_MAGIC2 = 0x04;
 
-#define PSF_MODE512    0x01
-#define PSF_MODEHASTAB 0x02
-#define PSF_MAXMODE    0x03
-#define PSF_SEPARATOR  0xFFFF
+static const int PSF_MODE512 = 0x01;
+static const int PSF_MODEHASTAB = 0x02;
+static const int PSF_MAXMODE = 0x03;
+static const int PSF_SEPARATOR = 0xFFFF;
 
 struct psf_header {
 	unsigned char magic1, magic2;	/* Magic number */
diff --git a/loadkmap.c b/loadkmap.c
index fc24398..43c1cc7 100644
--- a/loadkmap.c
+++ b/loadkmap.c
@@ -34,11 +34,11 @@
 	unsigned char kb_index;
 	unsigned short kb_value;
 };
-#define KDSKBENT        0x4B47  /* sets one entry in translation table */
+static const int KDSKBENT = 0x4B47;  /* sets one entry in translation table */
 
 /* From <linux/keyboard.h> */
-#define NR_KEYS         128
-#define MAX_NR_KEYMAPS  256
+static const int NR_KEYS = 128;
+static const int MAX_NR_KEYMAPS = 256;
 
 int loadkmap_main(int argc, char **argv)
 {
diff --git a/ls.c b/ls.c
index 754a6d4..0807680 100644
--- a/ls.c
+++ b/ls.c
@@ -41,9 +41,9 @@
  * 1. requires lstat (BSD) - how do you do it without?
  */
 
-#define TERMINAL_WIDTH	80		/* use 79 if your terminal has linefold bug */
-#define COLUMN_WIDTH	14		/* default if AUTOWIDTH not defined */
-#define COLUMN_GAP	2			/* includes the file type char, if present */
+static const int TERMINAL_WIDTH = 80;		/* use 79 if your terminal has linefold bug */
+static const int COLUMN_WIDTH = 14;		/* default if AUTOWIDTH not defined */
+static const int COLUMN_GAP = 2;			/* includes the file type char, if present */
 
 /************************************************************************/
 
@@ -66,10 +66,12 @@
 #endif
 
 /* what is the overall style of the listing */
-#define STYLE_AUTO		0
-#define STYLE_LONG		1		/* one record per line, extended info */
-#define STYLE_SINGLE	2		/* one record per line */
-#define STYLE_COLUMNS	3		/* fill columns */
+enum {
+STYLE_AUTO = 0,
+STYLE_LONG = 1,		/* one record per line, extended info */
+STYLE_SINGLE = 2,		/* one record per line */
+STYLE_COLUMNS = 3		/* fill columns */
+};
 
 /* 51306 lrwxrwxrwx  1 root     root         2 May 11 01:43 /bin/view -> vi* */
 /* what file information will be listed */
@@ -99,23 +101,23 @@
 
 #ifdef BB_FEATURE_LS_SORTFILES
 /* how will the files be sorted */
-#define SORT_FORWARD    0		/* sort in reverse order */
-#define SORT_REVERSE    1		/* sort in reverse order */
-#define SORT_NAME		2		/* sort by file name */
-#define SORT_SIZE		3		/* sort by file size */
-#define SORT_ATIME		4		/* sort by last access time */
-#define SORT_CTIME		5		/* sort by last change time */
-#define SORT_MTIME		6		/* sort by last modification time */
-#define SORT_VERSION	7		/* sort by version */
-#define SORT_EXT		8		/* sort by file name extension */
-#define SORT_DIR		9		/* sort by file or directory */
+static const int SORT_FORWARD = 0;		/* sort in reverse order */
+static const int SORT_REVERSE = 1;		/* sort in reverse order */
+static const int SORT_NAME = 2;		/* sort by file name */
+static const int SORT_SIZE = 3;		/* sort by file size */
+static const int SORT_ATIME = 4;		/* sort by last access time */
+static const int SORT_CTIME = 5;		/* sort by last change time */
+static const int SORT_MTIME = 6;		/* sort by last modification time */
+static const int SORT_VERSION = 7;		/* sort by version */
+static const int SORT_EXT = 8;		/* sort by file name extension */
+static const int SORT_DIR = 9;		/* sort by file or directory */
 #endif
 
 #ifdef BB_FEATURE_LS_TIMESTAMPS
 /* which of the three times will be used */
-#define TIME_MOD    0
-#define TIME_CHANGE 1
-#define TIME_ACCESS 2
+static const int TIME_MOD = 0;
+static const int TIME_CHANGE = 1;
+static const int TIME_ACCESS = 2;
 #endif
 
 #define LIST_SHORT		(LIST_FILENAME)
@@ -125,9 +127,9 @@
 						LIST_SYMLINK)
 #define LIST_ILONG		(LIST_INO | LIST_LONG)
 
-#define SPLIT_DIR		0
-#define SPLIT_FILE		1
-#define SPLIT_SUBDIR	2
+static const int SPLIT_DIR = 0;
+static const int SPLIT_FILE = 1;
+static const int SPLIT_SUBDIR = 2;
 
 #define TYPEINDEX(mode) (((mode) >> 12) & 0x0f)
 #define TYPECHAR(mode)  ("0pcCd?bB-?l?s???" [TYPEINDEX(mode)])
@@ -150,15 +152,15 @@
 struct dnode **dnalloc(int);
 int list_single(struct dnode *);
 
-static unsigned int disp_opts=	DISP_NORMAL;
-static unsigned int style_fmt=	STYLE_AUTO ;
-static unsigned int list_fmt=	LIST_SHORT ;
+static unsigned int disp_opts;
+static unsigned int style_fmt;
+static unsigned int list_fmt;
 #ifdef BB_FEATURE_LS_SORTFILES
-static unsigned int sort_opts=	SORT_FORWARD;
-static unsigned int sort_order=	SORT_FORWARD;
+static unsigned int sort_opts;
+static unsigned int sort_order;
 #endif
 #ifdef BB_FEATURE_LS_TIMESTAMPS
-static unsigned int time_fmt=	TIME_MOD;
+static unsigned int time_fmt;
 #endif
 #ifdef BB_FEATURE_LS_FOLLOWLINKS
 static unsigned int follow_links=FALSE;
@@ -166,12 +168,9 @@
 
 static unsigned short column = 0;
 #ifdef BB_FEATURE_AUTOWIDTH
-static unsigned short terminal_width = TERMINAL_WIDTH;
-static unsigned short column_width = COLUMN_WIDTH;
-static unsigned short tabstops = 8;
-#else
-#define terminal_width  TERMINAL_WIDTH
-#define column_width    COLUMN_WIDTH
+static unsigned short terminal_width;
+static unsigned short column_width;
+static unsigned short tabstops;
 #endif
 
 static int status = EXIT_SUCCESS;
@@ -710,10 +709,16 @@
 	list_fmt=  LIST_SHORT;
 #ifdef BB_FEATURE_LS_SORTFILES
 	sort_opts= SORT_NAME;
+	sort_order=	SORT_FORWARD;
 #endif
 #ifdef BB_FEATURE_LS_TIMESTAMPS
 	time_fmt= TIME_MOD;
 #endif
+#ifdef BB_FEATURE_AUTOWIDTH
+	terminal_width = TERMINAL_WIDTH;
+	column_width = COLUMN_WIDTH;
+	tabstops = 8;
+#endif
 	nfiles=0;
 
 	/* process options */
diff --git a/lsmod.c b/lsmod.c
index 4c50bf4..586920d 100644
--- a/lsmod.c
+++ b/lsmod.c
@@ -59,19 +59,19 @@
 		 size_t *ret);
 
 /* Values for query_module's which.  */
-#define QM_MODULES	1
-#define QM_DEPS		2
-#define QM_REFS		3
-#define QM_SYMBOLS	4
-#define QM_INFO		5
+static const int QM_MODULES = 1;
+static const int QM_DEPS = 2;
+static const int QM_REFS = 3;
+static const int QM_SYMBOLS = 4;
+static const int QM_INFO = 5;
 
 /* Bits of module.flags.  */
-#define NEW_MOD_RUNNING		1
-#define NEW_MOD_DELETED		2
-#define NEW_MOD_AUTOCLEAN	4
-#define NEW_MOD_VISITED		8
-#define NEW_MOD_USED_ONCE	16
-#define NEW_MOD_INITIALIZING	64
+static const int NEW_MOD_RUNNING = 1;
+static const int NEW_MOD_DELETED = 2;
+static const int NEW_MOD_AUTOCLEAN = 4;
+static const int NEW_MOD_VISITED = 8;
+static const int NEW_MOD_USED_ONCE = 16;
+static const int NEW_MOD_INITIALIZING = 64;
 
 
 extern int lsmod_main(int argc, char **argv)
diff --git a/md5sum.c b/md5sum.c
index 3458f2e..ad40780 100644
--- a/md5sum.c
+++ b/md5sum.c
@@ -91,7 +91,7 @@
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #ifndef _MD5_H
-#define _MD5_H 1
+static const int _MD5_H = 1;
 
 #include <stdio.h>
 
@@ -251,7 +251,7 @@
 int md5_stream(FILE *stream, void *resblock)
 {
   /* Important: BLOCKSIZE must be a multiple of 64.  */
-#define BLOCKSIZE 4096
+static const int BLOCKSIZE = 4096;
   struct md5_ctx ctx;
   char buffer[BLOCKSIZE + 72];
   size_t sum;
@@ -529,7 +529,7 @@
 /* The minimum length of a valid digest line in a file produced
    by `md5sum FILE' and read by `md5sum -c'.  This length does
    not include any newline character at the end of a line.  */
-#define MIN_DIGEST_LINE_LENGTH 35 /* 32 - message digest length
+static const int MIN_DIGEST_LINE_LENGTH = 35; /* 32 - message digest length
                                       2 - blank and binary indicator
                                       1 - minimum filename length */
 
diff --git a/mkswap.c b/mkswap.c
index e7fab4e..5b908da 100644
--- a/mkswap.c
+++ b/mkswap.c
@@ -48,7 +48,7 @@
 
 #ifndef _IO
 /* pre-1.3.45 */
-#define BLKGETSIZE 0x1260
+static const int BLKGETSIZE = 0x1260;
 #else
 /* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
 #define BLKGETSIZE _IO(0x12,96)
diff --git a/modutils/insmod.c b/modutils/insmod.c
index a499bcd..be27a1f 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -76,9 +76,9 @@
 
 
 #ifndef MODUTILS_MODULE_H
-#define MODUTILS_MODULE_H 1
+static const int MODUTILS_MODULE_H = 1;
 
-#ident "$Id: insmod.c,v 1.35 2001/01/04 02:00:17 kraai Exp $"
+#ident "$Id: insmod.c,v 1.36 2001/01/23 22:30:04 markw Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -135,7 +135,7 @@
 };
 
 /* Sent to init_module(2) or'ed into the code size parameter.  */
-#define OLD_MOD_AUTOCLEAN 0x40000000 /* big enough, but no sign problems... */
+static const int OLD_MOD_AUTOCLEAN = 0x40000000; /* big enough, but no sign problems... */
 
 int get_kernel_syms(struct old_kernel_sym *);
 int old_sys_init_module(const char *name, char *code, unsigned codesize,
@@ -158,9 +158,9 @@
 #undef tgt_sizeof_char_p
 #undef tgt_sizeof_void_p
 #undef tgt_long
-#define tgt_sizeof_long		8
-#define tgt_sizeof_char_p	8
-#define tgt_sizeof_void_p	8
+static const int tgt_sizeof_long = 8;
+static const int tgt_sizeof_char_p = 8;
+static const int tgt_sizeof_void_p = 8;
 #define tgt_long		long long
 #endif
 
@@ -222,11 +222,11 @@
 };
 
 /* Bits of module.flags.  */
-#define NEW_MOD_RUNNING		1
-#define NEW_MOD_DELETED		2
-#define NEW_MOD_AUTOCLEAN	4
-#define NEW_MOD_VISITED		8
-#define NEW_MOD_USED_ONCE	16
+static const int NEW_MOD_RUNNING = 1;
+static const int NEW_MOD_DELETED = 2;
+static const int NEW_MOD_AUTOCLEAN = 4;
+static const int NEW_MOD_VISITED = 8;
+static const int NEW_MOD_USED_ONCE = 16;
 
 int new_sys_init_module(const char *name, const struct new_module *);
 int query_module(const char *name, int which, void *buf, size_t bufsize,
@@ -234,11 +234,11 @@
 
 /* Values for query_module's which.  */
 
-#define QM_MODULES	1
-#define QM_DEPS		2
-#define QM_REFS		3
-#define QM_SYMBOLS	4
-#define QM_INFO		5
+static const int QM_MODULES = 1;
+static const int QM_DEPS = 2;
+static const int QM_REFS = 3;
+static const int QM_SYMBOLS = 4;
+static const int QM_INFO = 5;
 
 /*======================================================================*/
 /* The system calls unchanged between 2.0 and 2.1.  */
@@ -282,9 +282,9 @@
 
 
 #ifndef MODUTILS_OBJ_H
-#define MODUTILS_OBJ_H 1
+static const int MODUTILS_OBJ_H = 1;
 
-#ident "$Id: insmod.c,v 1.35 2001/01/04 02:00:17 kraai Exp $"
+#ident "$Id: insmod.c,v 1.36 2001/01/23 22:30:04 markw Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -517,7 +517,7 @@
 
 
 #define _PATH_MODULES	"/lib/modules"
-#define STRVERSIONLEN	32
+static const int STRVERSIONLEN = 32;
 
 #if !defined(BB_FEATURE_INSMOD_NEW_KERNEL) && !defined(BB_FEATURE_INSMOD_OLD_KERNEL)
 #error "Must have ether BB_FEATURE_INSMOD_NEW_KERNEL or BB_FEATURE_INSMOD_OLD_KERNEL defined"
diff --git a/modutils/lsmod.c b/modutils/lsmod.c
index 4c50bf4..586920d 100644
--- a/modutils/lsmod.c
+++ b/modutils/lsmod.c
@@ -59,19 +59,19 @@
 		 size_t *ret);
 
 /* Values for query_module's which.  */
-#define QM_MODULES	1
-#define QM_DEPS		2
-#define QM_REFS		3
-#define QM_SYMBOLS	4
-#define QM_INFO		5
+static const int QM_MODULES = 1;
+static const int QM_DEPS = 2;
+static const int QM_REFS = 3;
+static const int QM_SYMBOLS = 4;
+static const int QM_INFO = 5;
 
 /* Bits of module.flags.  */
-#define NEW_MOD_RUNNING		1
-#define NEW_MOD_DELETED		2
-#define NEW_MOD_AUTOCLEAN	4
-#define NEW_MOD_VISITED		8
-#define NEW_MOD_USED_ONCE	16
-#define NEW_MOD_INITIALIZING	64
+static const int NEW_MOD_RUNNING = 1;
+static const int NEW_MOD_DELETED = 2;
+static const int NEW_MOD_AUTOCLEAN = 4;
+static const int NEW_MOD_VISITED = 8;
+static const int NEW_MOD_USED_ONCE = 16;
+static const int NEW_MOD_INITIALIZING = 64;
 
 
 extern int lsmod_main(int argc, char **argv)
diff --git a/mount.c b/mount.c
index 88e45fc..f78786e 100644
--- a/mount.c
+++ b/mount.c
@@ -55,21 +55,21 @@
 #include <linux/devmtab.h> /* For Erik's nifty devmtab device driver */
 #endif
 
-
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_RDONLY        1      /* Mount read-only */
-#define MS_NOSUID        2      /* Ignore suid and sgid bits */
-#define MS_NODEV         4      /* Disallow access to device special files */
-#define MS_NOEXEC        8      /* Disallow program execution */
-#define MS_SYNCHRONOUS  16      /* Writes are synced at once */
-#define MS_REMOUNT      32      /* Alter flags of a mounted FS */
-#define MS_MANDLOCK     64      /* Allow mandatory locks on an FS */
-#define S_QUOTA         128     /* Quota initialized for file/directory/symlink */
-#define S_APPEND        256     /* Append-only file */
-#define S_IMMUTABLE     512     /* Immutable file */
-#define MS_NOATIME      1024    /* Do not update access times. */
-#define MS_NODIRATIME   2048    /* Do not update directory access times */
-
+enum {
+	MS_MGC_VAL = 0xc0ed0000, /* Magic number indicatng "new" flags */
+	MS_RDONLY = 1,      /* Mount read-only */
+	MS_NOSUID = 2,      /* Ignore suid and sgid bits */
+	MS_NODEV = 4,      /* Disallow access to device special files */
+	MS_NOEXEC = 8,      /* Disallow program execution */
+	MS_SYNCHRONOUS = 16,      /* Writes are synced at once */
+	MS_REMOUNT = 32,      /* Alter flags of a mounted FS */
+	MS_MANDLOCK = 64,      /* Allow mandatory locks on an FS */
+	S_QUOTA = 128,     /* Quota initialized for file/directory/symlink */
+	S_APPEND = 256,     /* Append-only file */
+	S_IMMUTABLE = 512,     /* Immutable file */
+	MS_NOATIME = 1024,    /* Do not update access times. */
+	MS_NODIRATIME = 2048,    /* Do not update directory access times */
+};
 
 
 #if defined BB_FEATURE_MOUNT_LOOP
diff --git a/networking/ping.c b/networking/ping.c
index 8276dda..f5769b7 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.31 2001/01/22 22:48:42 andersen Exp $
+ * $Id: ping.c,v 1.32 2001/01/23 22:30:04 markw Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -58,7 +58,7 @@
 #if ! defined __GLIBC__ && ! defined __UCLIBC__
 typedef unsigned int socklen_t;
 
-#define	ICMP_MINLEN	8				/* abs minimum */
+static const int ICMP_MINLEN = 8;				/* abs minimum */
 
 struct icmp_ra_addr
 {
@@ -134,13 +134,13 @@
 };
 #endif
 
-#define DEFDATALEN      56
-#define	MAXIPLEN	60
-#define	MAXICMPLEN	76
-#define	MAXPACKET	65468
+static const int DEFDATALEN = 56;
+static const int MAXIPLEN = 60;
+static const int MAXICMPLEN = 76;
+static const int MAXPACKET = 65468;
 #define	MAX_DUP_CHK	(8 * 128)
-#define MAXWAIT         10
-#define PINGINTERVAL    1		/* second */
+static const int MAXWAIT = 10;
+static const int PINGINTERVAL = 1;		/* second */
 
 #define O_QUIET         (1 << 0)
 
@@ -262,7 +262,7 @@
 static char *hostname = NULL;
 static struct sockaddr_in pingaddr;
 static int pingsock = -1;
-static int datalen = DEFDATALEN;
+static int datalen; /* intentionally uninitialized to work around gcc bug */
 
 static long ntransmitted = 0, nreceived = 0, nrepeats = 0, pingcount = 0;
 static int myid = 0, options = 0;
@@ -508,6 +508,8 @@
 {
 	char *thisarg;
 
+	datalen = DEFDATALEN; /* initialized here rather than in global scope to work around gcc bug */
+
 	argc--;
 	argv++;
 	options = 0;
diff --git a/networking/telnet.c b/networking/telnet.c
index 76956e9..ac6813e 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -50,7 +50,7 @@
 #include <netdb.h>
 
 #if 0
-#define DOTRACE 1
+static const int DOTRACE = 1;
 #endif
 
 #ifdef DOTRACE
@@ -67,21 +67,23 @@
 #include <sys/time.h>
 #endif
 
-#define DATABUFSIZE 128
-#define IACBUFSIZE 128
+static const int DATABUFSIZE = 128;
+static const int IACBUFSIZE = 128;
 
-#define CHM_TRY 0
-#define CHM_ON	1
-#define CHM_OFF	2
+static const int CHM_TRY = 0;
+static const int CHM_ON = 1;
+static const int CHM_OFF = 2;
 
-#define UF_ECHO	0x01
-#define UF_SGA	0x02
+static const int UF_ECHO = 0x01;
+static const int UF_SGA = 0x02;
 
-#define TS_0	1
-#define TS_IAC	2
-#define TS_OPT	3
-#define TS_SUB1 4
-#define TS_SUB2	5
+enum {
+	TS_0 = 1,
+	TS_IAC = 2,
+	TS_OPT = 3,
+	TS_SUB1 = 4,
+	TS_SUB2 = 5,
+};
 
 #define WriteCS(fd, str) write(fd, str, sizeof str -1)
 
diff --git a/networking/wget.c b/networking/wget.c
index a5c3e7b..e3e6eed 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -49,7 +49,7 @@
 static struct timeval start;	/* Time a transfer started. */
 volatile unsigned long statbytes; /* Number of bytes transferred so far. */
 /* For progressmeter() -- number of seconds before xfer considered "stalled" */
-#define STALLTIME	5
+static const int STALLTIME = 5;
 #endif
 
 int wget_main(int argc, char **argv)
@@ -515,7 +515,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$Id: wget.c,v 1.17 2001/01/22 22:48:42 andersen Exp $
+ *	$Id: wget.c,v 1.18 2001/01/23 22:30:04 markw Exp $
  */
 
 
diff --git a/nfsmount.c b/nfsmount.c
index b5c3821..d661a99 100644
--- a/nfsmount.c
+++ b/nfsmount.c
@@ -54,10 +54,10 @@
 #include <linux/nfs.h>  /* For the kernels nfs stuff */
 
 #ifndef NFS_FHSIZE
-#define NFS_FHSIZE	32
+static const int NFS_FHSIZE = 32;
 #endif
 #ifndef NFS_PORT
-#define NFS_PORT	2049
+static const int NFS_PORT = 2049;
 #endif
 
 /* Disable the nls stuff */
@@ -68,19 +68,19 @@
 # define _(Text) (Text)
 # define N_(Text) (Text)
 
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_RDONLY        1      /* Mount read-only */
-#define MS_NOSUID        2      /* Ignore suid and sgid bits */
-#define MS_NODEV         4      /* Disallow access to device special files */
-#define MS_NOEXEC        8      /* Disallow program execution */
-#define MS_SYNCHRONOUS  16      /* Writes are synced at once */
-#define MS_REMOUNT      32      /* Alter flags of a mounted FS */
-#define MS_MANDLOCK     64      /* Allow mandatory locks on an FS */
-#define S_QUOTA         128     /* Quota initialized for file/directory/symlink */
-#define S_APPEND        256     /* Append-only file */
-#define S_IMMUTABLE     512     /* Immutable file */
-#define MS_NOATIME      1024    /* Do not update access times. */
-#define MS_NODIRATIME   2048    /* Do not update directory access times */
+static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
+static const int MS_RDONLY = 1;      /* Mount read-only */
+static const int MS_NOSUID = 2;      /* Ignore suid and sgid bits */
+static const int MS_NODEV = 4;      /* Disallow access to device special files */
+static const int MS_NOEXEC = 8;      /* Disallow program execution */
+static const int MS_SYNCHRONOUS = 16;      /* Writes are synced at once */
+static const int MS_REMOUNT = 32;      /* Alter flags of a mounted FS */
+static const int MS_MANDLOCK = 64;      /* Allow mandatory locks on an FS */
+static const int S_QUOTA = 128;     /* Quota initialized for file/directory/symlink */
+static const int S_APPEND = 256;     /* Append-only file */
+static const int S_IMMUTABLE = 512;     /* Immutable file */
+static const int MS_NOATIME = 1024;    /* Do not update access times. */
+static const int MS_NODIRATIME = 2048;    /* Do not update directory access times */
 
 
 /*
@@ -93,7 +93,7 @@
  * so it is easiest to ignore the kernel altogether (at compile time).
  */
 
-#define NFS_MOUNT_VERSION	4
+static const int NFS_MOUNT_VERSION = 4;
 
 struct nfs2_fh {
         char                    data[32];
@@ -125,16 +125,16 @@
 
 /* bits in the flags field */
 
-#define NFS_MOUNT_SOFT		0x0001	/* 1 */
-#define NFS_MOUNT_INTR		0x0002	/* 1 */
-#define NFS_MOUNT_SECURE	0x0004	/* 1 */
-#define NFS_MOUNT_POSIX		0x0008	/* 1 */
-#define NFS_MOUNT_NOCTO		0x0010	/* 1 */
-#define NFS_MOUNT_NOAC		0x0020	/* 1 */
-#define NFS_MOUNT_TCP		0x0040	/* 2 */
-#define NFS_MOUNT_VER3		0x0080	/* 3 */
-#define NFS_MOUNT_KERBEROS	0x0100	/* 3 */
-#define NFS_MOUNT_NONLM		0x0200	/* 3 */
+static const int NFS_MOUNT_SOFT = 0x0001;	/* 1 */
+static const int NFS_MOUNT_INTR = 0x0002;	/* 1 */
+static const int NFS_MOUNT_SECURE = 0x0004;	/* 1 */
+static const int NFS_MOUNT_POSIX = 0x0008;	/* 1 */
+static const int NFS_MOUNT_NOCTO = 0x0010;	/* 1 */
+static const int NFS_MOUNT_NOAC = 0x0020;	/* 1 */
+static const int NFS_MOUNT_TCP = 0x0040;	/* 2 */
+static const int NFS_MOUNT_VER3 = 0x0080;	/* 3 */
+static const int NFS_MOUNT_KERBEROS = 0x0100;	/* 3 */
+static const int NFS_MOUNT_NONLM = 0x0200;	/* 3 */
 
 
 #define UTIL_LINUX_VERSION "2.10m"
@@ -160,14 +160,14 @@
 #define MAKE_VERSION(p,q,r)	(65536*(p) + 256*(q) + (r))
 #define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2)
 
-#define EX_FAIL			32       /* mount failure */
-#define EX_BG			256       /* retry in background (internal only) */
+static const int EX_FAIL = 32;       /* mount failure */
+static const int EX_BG = 256;       /* retry in background (internal only) */
 
 
 /*
  * nfs_mount_version according to the sources seen at compile time.
  */
-int nfs_mount_version = NFS_MOUNT_VERSION;
+static int nfs_mount_version;
 
 /*
  * Unfortunately, the kernel prints annoying console messages
@@ -187,8 +187,9 @@
 	if (kernel_version)
 		return;
 
-	kernel_version = get_kernel_revision();
+	nfs_mount_version = NFS_MOUNT_VERSION; /* default */
 
+	kernel_version = get_kernel_revision();
 	if (kernel_version) {
 	     if (kernel_version < MAKE_VERSION(2,1,32))
 		  nfs_mount_version = 1;
diff --git a/ping.c b/ping.c
index 8276dda..f5769b7 100644
--- a/ping.c
+++ b/ping.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.31 2001/01/22 22:48:42 andersen Exp $
+ * $Id: ping.c,v 1.32 2001/01/23 22:30:04 markw Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -58,7 +58,7 @@
 #if ! defined __GLIBC__ && ! defined __UCLIBC__
 typedef unsigned int socklen_t;
 
-#define	ICMP_MINLEN	8				/* abs minimum */
+static const int ICMP_MINLEN = 8;				/* abs minimum */
 
 struct icmp_ra_addr
 {
@@ -134,13 +134,13 @@
 };
 #endif
 
-#define DEFDATALEN      56
-#define	MAXIPLEN	60
-#define	MAXICMPLEN	76
-#define	MAXPACKET	65468
+static const int DEFDATALEN = 56;
+static const int MAXIPLEN = 60;
+static const int MAXICMPLEN = 76;
+static const int MAXPACKET = 65468;
 #define	MAX_DUP_CHK	(8 * 128)
-#define MAXWAIT         10
-#define PINGINTERVAL    1		/* second */
+static const int MAXWAIT = 10;
+static const int PINGINTERVAL = 1;		/* second */
 
 #define O_QUIET         (1 << 0)
 
@@ -262,7 +262,7 @@
 static char *hostname = NULL;
 static struct sockaddr_in pingaddr;
 static int pingsock = -1;
-static int datalen = DEFDATALEN;
+static int datalen; /* intentionally uninitialized to work around gcc bug */
 
 static long ntransmitted = 0, nreceived = 0, nrepeats = 0, pingcount = 0;
 static int myid = 0, options = 0;
@@ -508,6 +508,8 @@
 {
 	char *thisarg;
 
+	datalen = DEFDATALEN; /* initialized here rather than in global scope to work around gcc bug */
+
 	argc--;
 	argv++;
 	options = 0;
diff --git a/printf.c b/printf.c
index 832ca13..72bc7ae 100644
--- a/printf.c
+++ b/printf.c
@@ -59,7 +59,7 @@
 
 
 #ifndef S_IFMT
-# define S_IFMT 0170000
+static const int S_IFMT = 0170000;
 #endif
 #if !defined(S_ISBLK) && defined(S_IFBLK)
 # define	S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
diff --git a/procps/kill.c b/procps/kill.c
index 8fa9da7..19ca187 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -30,8 +30,8 @@
 #include <ctype.h>
 #include <unistd.h>
 
-#define KILL	0
-#define KILLALL	1
+static const int KILL = 0;
+static const int KILLALL = 1;
 
 struct signal_name {
 	const char *name;
diff --git a/procps/ps.c b/procps/ps.c
index ec63bb5..cb4c21e 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -40,7 +40,7 @@
 #define bb_need_help
 #include "messages.c"
 
-#define TERMINAL_WIDTH  79      /* not 80 in case terminal has linefold bug */
+static const int TERMINAL_WIDTH = 79;      /* not 80 in case terminal has linefold bug */
 
 
 
diff --git a/procps/uptime.c b/procps/uptime.c
index fb3d347..f5e12f1 100644
--- a/procps/uptime.c
+++ b/procps/uptime.c
@@ -33,7 +33,7 @@
 #include <time.h>
 #include <errno.h>
 
-#define FSHIFT          16              /* nr of bits of precision */
+static const int FSHIFT = 16;              /* nr of bits of precision */
 #define FIXED_1         (1<<FSHIFT)     /* 1.0 as fixed-point */
 #define LOAD_INT(x) ((x) >> FSHIFT)
 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
diff --git a/ps.c b/ps.c
index ec63bb5..cb4c21e 100644
--- a/ps.c
+++ b/ps.c
@@ -40,7 +40,7 @@
 #define bb_need_help
 #include "messages.c"
 
-#define TERMINAL_WIDTH  79      /* not 80 in case terminal has linefold bug */
+static const int TERMINAL_WIDTH = 79;      /* not 80 in case terminal has linefold bug */
 
 
 
diff --git a/rdate.c b/rdate.c
index bb53927..954982a 100644
--- a/rdate.c
+++ b/rdate.c
@@ -33,7 +33,7 @@
 #include <getopt.h>
 
 
-#define RFC_868_BIAS	2208988800UL
+static const int RFC_868_BIAS = 2208988800UL;
 
 int setdate= 0;
 int printdate= 0;
diff --git a/rpmunpack.c b/rpmunpack.c
index 249d223..512d638 100644
--- a/rpmunpack.c
+++ b/rpmunpack.c
@@ -19,7 +19,7 @@
 /*
  * Some general definitions
  */
-#define BUFSIZE		512
+
 #define RPM_MAGIC	"\355\253\356\333"
 #define GZ_MAGIC_1	'\037'
 #define GZ_MAGIC_2	'\213'
@@ -27,14 +27,13 @@
 /*
  * Global variables
  */
-static char buffer[BUFSIZE];
 static char *progname;
 static int infile, outfile;
 
 /*
  * Read a specified number of bytes from input file
  */
-static void myread(int num)
+static void myread(int num, char *buffer)
 {
   int err;
 
@@ -52,6 +51,7 @@
 int rpmunpack_main(int argc, char **argv)
 {
   int len, status = 0;
+  char buffer[BUFSIZ];
 
   /* Get our own program name */
   if ((progname = strrchr(argv[0], '/')) == NULL)
@@ -71,13 +71,13 @@
 	perror_msg_and_die("%s", argv[1]);
 
   /* Read magic ID and output filename */
-  myread(4);
+  myread(4, buffer);
   if (strncmp(buffer, RPM_MAGIC, 4)) {
 	fprintf(stderr, "Input file is not in RPM format!\n");
 	exit(1);
   }
-  myread(6);		/* Skip flags */
-  myread(64);
+  myread(6, buffer);		/* Skip flags */
+  myread(64, buffer);
   buffer[64] = '\0';
 
   /* Open output file */
@@ -97,9 +97,9 @@
    * never appears before offset 0x200, so we skip these first couple of
    * bytes to make the signature scan a little more reliable.
    */
-  myread(0x200 - 74);
+  myread(0x200 - 74, buffer);
   while (status < 2) {
-	myread(1);
+	myread(1, buffer);
 	if (status == 0 && buffer[0] == GZ_MAGIC_1)
 		status++;
 	else if (status == 1 && buffer[0] == GZ_MAGIC_2)
@@ -113,7 +113,7 @@
 	perror_msg_and_die("write");
 
   /* Now simply copy the GZIP archive into the output file */
-  while ((len = read(infile, buffer, BUFSIZE)) > 0) {
+  while ((len = read(infile, buffer, BUFSIZ)) > 0) {
 	if (write(outfile, buffer, len) < 0)
 		perror_msg_and_die("write");
   }
diff --git a/setkeycodes.c b/setkeycodes.c
index 7db398d..be9b1b7 100644
--- a/setkeycodes.c
+++ b/setkeycodes.c
@@ -33,7 +33,7 @@
 struct kbkeycode {
 	unsigned int scancode, keycode;
 };
-#define KDSETKEYCODE    0x4B4D  /* write kernel keycode table entry */
+static const int KDSETKEYCODE = 0x4B4D;  /* write kernel keycode table entry */
 
 extern int 
 setkeycodes_main(int argc, char** argv)
diff --git a/sh.c b/sh.c
index 52c87ee..b9685ab 100644
--- a/sh.c
+++ b/sh.c
@@ -64,8 +64,8 @@
 #include <getopt.h>
 #include "cmdedit.h"
 
-#define MAX_LINE	256	/* size of input buffer for cwd data */
-#define MAX_READ	128	/* size of input buffer for `read' builtin */
+static const int MAX_LINE = 256;	/* size of input buffer for cwd data */
+static const int MAX_READ = 128;	/* size of input buffer for `read' builtin */
 #define JOB_STATUS_FORMAT "[%d] %-22s %.40s\n"
 extern size_t NUM_APPLETS;
 
diff --git a/shell/cmdedit.c b/shell/cmdedit.c
index 722a36a..12c78dc 100644
--- a/shell/cmdedit.c
+++ b/shell/cmdedit.c
@@ -44,10 +44,13 @@
 #include <signal.h>
 
 
-#define  MAX_HISTORY   15		/* Maximum length of the linked list for the command line history */
+static const int MAX_HISTORY = 15;		/* Maximum length of the linked list for the command line history */
 
-#define ESC	27
-#define DEL	127
+enum {
+	ESC = 27,
+	DEL = 127,
+};
+
 #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
 #define whitespace(c) (((c) == ' ') || ((c) == '\t'))
 
diff --git a/shell/lash.c b/shell/lash.c
index 52c87ee..b9685ab 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -64,8 +64,8 @@
 #include <getopt.h>
 #include "cmdedit.h"
 
-#define MAX_LINE	256	/* size of input buffer for cwd data */
-#define MAX_READ	128	/* size of input buffer for `read' builtin */
+static const int MAX_LINE = 256;	/* size of input buffer for cwd data */
+static const int MAX_READ = 128;	/* size of input buffer for `read' builtin */
 #define JOB_STATUS_FORMAT "[%d] %-22s %.40s\n"
 extern size_t NUM_APPLETS;
 
diff --git a/swaponoff.c b/swaponoff.c
index 85f3389..eda1510 100644
--- a/swaponoff.c
+++ b/swaponoff.c
@@ -35,8 +35,8 @@
 
 static int whichApp;
 
-#define SWAPON_APP   1
-#define SWAPOFF_APP  2
+static const int SWAPON_APP = 1;
+static const int SWAPOFF_APP = 2;
 
 
 static void swap_enable_disable(char *device)
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 4217c36..114516e 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -165,7 +165,7 @@
 #ifdef BB_FEATURE_REMOTE_LOG
 	/* send message to remote logger */
 	if ( -1 != remotefd){
-#define IOV_COUNT 2
+static const int IOV_COUNT = 2;
 		struct iovec iov[IOV_COUNT];
 		struct iovec *v = iov;
 
@@ -206,7 +206,7 @@
 	}
 }
 
-#define BUFSIZE 1023
+static const int BUFSIZE = 1023;
 static int serveConnection (int conn)
 {
 	char   buf[ BUFSIZE + 1 ];
diff --git a/syslogd.c b/syslogd.c
index 4217c36..114516e 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -165,7 +165,7 @@
 #ifdef BB_FEATURE_REMOTE_LOG
 	/* send message to remote logger */
 	if ( -1 != remotefd){
-#define IOV_COUNT 2
+static const int IOV_COUNT = 2;
 		struct iovec iov[IOV_COUNT];
 		struct iovec *v = iov;
 
@@ -206,7 +206,7 @@
 	}
 }
 
-#define BUFSIZE 1023
+static const int BUFSIZE = 1023;
 static int serveConnection (int conn)
 {
 	char   buf[ BUFSIZE + 1 ];
diff --git a/tar.c b/tar.c
index 2699550..51a857d 100644
--- a/tar.c
+++ b/tar.c
@@ -64,7 +64,7 @@
 #define MINOR(dev) ((dev)&0xff)
 #endif
 
-#define NAME_SIZE	100
+enum { NAME_SIZE = 100 }; /* because gcc won't let me use 'static const int' */
 
 /* POSIX tar Header Block, from POSIX 1003.1-1990  */
 struct TarHeader
@@ -94,9 +94,9 @@
 /* A few useful constants */
 #define TAR_MAGIC          "ustar"        /* ustar and a null */
 #define TAR_VERSION        "  "           /* Be compatable with GNU tar format */
-#define TAR_MAGIC_LEN       6
-#define TAR_VERSION_LEN     2
-#define TAR_BLOCK_SIZE      512
+static const int TAR_MAGIC_LEN = 6;
+static const int TAR_VERSION_LEN = 2;
+static const int TAR_BLOCK_SIZE = 512;
 
 /* A nice enum with all the possible tar file content types */
 enum TarFileType 
diff --git a/telnet.c b/telnet.c
index 76956e9..ac6813e 100644
--- a/telnet.c
+++ b/telnet.c
@@ -50,7 +50,7 @@
 #include <netdb.h>
 
 #if 0
-#define DOTRACE 1
+static const int DOTRACE = 1;
 #endif
 
 #ifdef DOTRACE
@@ -67,21 +67,23 @@
 #include <sys/time.h>
 #endif
 
-#define DATABUFSIZE 128
-#define IACBUFSIZE 128
+static const int DATABUFSIZE = 128;
+static const int IACBUFSIZE = 128;
 
-#define CHM_TRY 0
-#define CHM_ON	1
-#define CHM_OFF	2
+static const int CHM_TRY = 0;
+static const int CHM_ON = 1;
+static const int CHM_OFF = 2;
 
-#define UF_ECHO	0x01
-#define UF_SGA	0x02
+static const int UF_ECHO = 0x01;
+static const int UF_SGA = 0x02;
 
-#define TS_0	1
-#define TS_IAC	2
-#define TS_OPT	3
-#define TS_SUB1 4
-#define TS_SUB2	5
+enum {
+	TS_0 = 1,
+	TS_IAC = 2,
+	TS_OPT = 3,
+	TS_SUB1 = 4,
+	TS_SUB2 = 5,
+};
 
 #define WriteCS(fd, str) write(fd, str, sizeof str -1)
 
diff --git a/tr.c b/tr.c
index fd547b8..d21e672 100644
--- a/tr.c
+++ b/tr.c
@@ -34,14 +34,15 @@
 #define bb_need_write_error
 #include "messages.c"
 
-#define ASCII		0377
+static const int ASCII = 0377;
 
 /* some glabals shared across this file */
 static char com_fl, del_fl, sq_fl;
-static unsigned char output[BUFSIZ], input[BUFSIZ];
-static unsigned char vector[ASCII + 1];
-static char invec[ASCII + 1], outvec[ASCII + 1];
 static short in_index, out_index;
+/* these last are pointers to static buffers declared in tr_main */
+static unsigned char *poutput, *pinput;
+static unsigned char *pvector;
+static char *pinvec, *poutvec;
 
 
 static void convert()
@@ -52,22 +53,22 @@
 
 	for (;;) {
 		if (in_index == read_chars) {
-			if ((read_chars = read(0, (char *) input, BUFSIZ)) <= 0) {
-				if (write(1, (char *) output, out_index) != out_index)
+			if ((read_chars = read(0, (char *) pinput, BUFSIZ)) <= 0) {
+				if (write(1, (char *) poutput, out_index) != out_index)
 					write(2, write_error, strlen(write_error));
 				exit(0);
 			}
 			in_index = 0;
 		}
-		c = input[in_index++];
-		coded = vector[c];
-		if (del_fl && invec[c])
+		c = pinput[in_index++];
+		coded = pvector[c];
+		if (del_fl && pinvec[c])
 			continue;
-		if (sq_fl && last == coded && (invec[c] || outvec[coded]))
+		if (sq_fl && last == coded && (pinvec[c] || poutvec[coded]))
 			continue;
-		output[out_index++] = last = coded;
+		poutput[out_index++] = last = coded;
 		if (out_index == BUFSIZ) {
-			if (write(1, (char *) output, out_index) != out_index) {
+			if (write(1, (char *) poutput, out_index) != out_index) {
 				write(2, write_error, strlen(write_error));
 				exit(1);
 			}
@@ -86,9 +87,9 @@
 
 	for (j = 0, i = 0; i < string1_len; i++) {
 		if (string2_len <= j)
-			vector[string1[i]] = last;
+			pvector[string1[i]] = last;
 		else
-			vector[string1[i]] = last = string2[j++];
+			pvector[string1[i]] = last = string2[j++];
 	}
 }
 
@@ -143,6 +144,17 @@
 	int output_length=0, input_length;
 	int index = 1;
 	int i;
+	/* set up big arrays here (better than making a bunch of static arrays up top) */
+	unsigned char output[BUFSIZ], input[BUFSIZ];
+	unsigned char vector[ASCII + 1];
+	char invec[ASCII + 1], outvec[ASCII + 1];
+
+	/* ... but make them available globally */
+	poutput = output;
+	pinput  = input;
+	pvector = vector;
+	pinvec  = invec;
+	poutvec = outvec;
 
 	if (argc > 1 && argv[index][0] == '-') {
 		for (ptr = (unsigned char *) &argv[index][1]; *ptr; ptr++) {
diff --git a/umount.c b/umount.c
index 40d25f9..2e2d95d 100644
--- a/umount.c
+++ b/umount.c
@@ -28,10 +28,10 @@
 #include <errno.h>
 
 
-#define MNT_FORCE		1
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_REMOUNT		32	/* Alter flags of a mounted FS.  */
-#define MS_RDONLY		1	/* Mount read-only.  */
+static const int MNT_FORCE = 1;
+static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
+static const int MS_REMOUNT = 32;	/* Alter flags of a mounted FS.  */
+static const int MS_RDONLY = 1;	/* Mount read-only.  */
 
 extern int mount (__const char *__special_file, __const char *__dir,
 			__const char *__fstype, unsigned long int __rwflag,
diff --git a/uname.c b/uname.c
index e7e9ff3..4f7c643 100644
--- a/uname.c
+++ b/uname.c
@@ -44,22 +44,22 @@
 
 /* Values that are bitwise or'd into `toprint'. */
 /* Operating system name. */
-#define PRINT_SYSNAME 1
+static const int PRINT_SYSNAME = 1;
 
 /* Node name on a communications network. */
-#define PRINT_NODENAME 2
+static const int PRINT_NODENAME = 2;
 
 /* Operating system release. */
-#define PRINT_RELEASE 4
+static const int PRINT_RELEASE = 4;
 
 /* Operating system version. */
-#define PRINT_VERSION 8
+static const int PRINT_VERSION = 8;
 
 /* Machine hardware name. */
-#define PRINT_MACHINE 16
+static const int PRINT_MACHINE = 16;
 
  /* Host processor type. */
-#define PRINT_PROCESSOR 32
+static const int PRINT_PROCESSOR = 32;
 
 /* Mask indicating which elements of the name to print. */
 static unsigned char toprint;
diff --git a/uptime.c b/uptime.c
index fb3d347..f5e12f1 100644
--- a/uptime.c
+++ b/uptime.c
@@ -33,7 +33,7 @@
 #include <time.h>
 #include <errno.h>
 
-#define FSHIFT          16              /* nr of bits of precision */
+static const int FSHIFT = 16;              /* nr of bits of precision */
 #define FIXED_1         (1<<FSHIFT)     /* 1.0 as fixed-point */
 #define LOAD_INT(x) ((x) >> FSHIFT)
 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
diff --git a/util-linux/fbset.c b/util-linux/fbset.c
index 40a907b..845be84 100644
--- a/util-linux/fbset.c
+++ b/util-linux/fbset.c
@@ -36,53 +36,55 @@
 #define DEFAULTFBDEV  "/dev/fb0"
 #define DEFAULTFBMODE "/etc/fb.modes"
 
-#define OPT_CHANGE    1
-#define OPT_INFO      (1 << 1)
-#define OPT_READMODE  (1 << 2)
+static const int OPT_CHANGE   = (1 << 0);
+static const int OPT_INFO     = (1 << 1);
+static const int OPT_READMODE = (1 << 2);
 
-#define CMD_HELP        0
-#define CMD_FB		1
-#define CMD_DB		2
-#define CMD_GEOMETRY	3
-#define CMD_TIMING	4
-#define CMD_ACCEL	5
-#define CMD_HSYNC	6
-#define CMD_VSYNC	7
-#define CMD_LACED	8
-#define CMD_DOUBLE	9
-/* #define CMD_XCOMPAT     10 */
-#define CMD_ALL         11
-#define CMD_INFO        12
-#define CMD_CHANGE      13
+enum {
+	CMD_HELP = 0,
+	CMD_FB = 1,
+	CMD_DB = 2,
+	CMD_GEOMETRY = 3,
+	CMD_TIMING = 4,
+	CMD_ACCEL = 5,
+	CMD_HSYNC = 6,
+	CMD_VSYNC = 7,
+	CMD_LACED = 8,
+	CMD_DOUBLE = 9,
+/* 	CMD_XCOMPAT =     10, */
+	CMD_ALL = 11,
+	CMD_INFO = 12,
+	CMD_CHANGE = 13,
 
 #ifdef BB_FEATURE_FBSET_FANCY
-#define CMD_XRES	100
-#define CMD_YRES	101
-#define CMD_VXRES	102
-#define CMD_VYRES	103
-#define CMD_DEPTH	104
-#define CMD_MATCH	105
-#define CMD_PIXCLOCK	106
-#define CMD_LEFT	107
-#define CMD_RIGHT	108
-#define CMD_UPPER	109
-#define CMD_LOWER	110
-#define CMD_HSLEN	111
-#define CMD_VSLEN	112
-#define CMD_CSYNC	113
-#define CMD_GSYNC	114
-#define CMD_EXTSYNC	115
-#define CMD_BCAST	116
-#define CMD_RGBA	117
-#define CMD_STEP	118
-#define CMD_MOVE	119
+	CMD_XRES = 100,
+	CMD_YRES = 101,
+	CMD_VXRES = 102,
+	CMD_VYRES = 103,
+	CMD_DEPTH = 104,
+	CMD_MATCH = 105,
+	CMD_PIXCLOCK = 106,
+	CMD_LEFT = 107,
+	CMD_RIGHT = 108,
+	CMD_UPPER = 109,
+	CMD_LOWER = 110,
+	CMD_HSLEN = 111,
+	CMD_VSLEN = 112,
+	CMD_CSYNC = 113,
+	CMD_GSYNC = 114,
+	CMD_EXTSYNC = 115,
+	CMD_BCAST = 116,
+	CMD_RGBA = 117,
+	CMD_STEP = 118,
+	CMD_MOVE = 119,
 #endif
+};
 
 static unsigned int g_options = 0;
 
 /* Stuff stolen from the kernel's fb.h */
-#define FBIOGET_VSCREENINFO     0x4600
-#define FBIOPUT_VSCREENINFO     0x4601
+static const int FBIOGET_VSCREENINFO = 0x4600;
+static const int FBIOPUT_VSCREENINFO = 0x4601;
 #define __u32			unsigned int
 struct fb_bitfield {
 	__u32 offset;			/* beginning of bitfield	*/
@@ -180,12 +182,12 @@
 
 #ifdef BB_FEATURE_FBSET_READMODE
 /* taken from linux/fb.h */
-#define FB_VMODE_INTERLACED	1	/* interlaced	*/
-#define FB_VMODE_DOUBLE		2	/* double scan */
-#define FB_SYNC_HOR_HIGH_ACT	1	/* horizontal sync high active	*/
-#define FB_SYNC_VERT_HIGH_ACT	2	/* vertical sync high active	*/
-#define FB_SYNC_EXT		4	/* external sync		*/
-#define FB_SYNC_COMP_HIGH_ACT	8	/* composite sync high active   */
+static const int FB_VMODE_INTERLACED = 1;	/* interlaced	*/
+static const int FB_VMODE_DOUBLE = 2;	/* double scan */
+static const int FB_SYNC_HOR_HIGH_ACT = 1;	/* horizontal sync high active	*/
+static const int FB_SYNC_VERT_HIGH_ACT = 2;	/* vertical sync high active	*/
+static const int FB_SYNC_EXT = 4;	/* external sync		*/
+static const int FB_SYNC_COMP_HIGH_ACT = 8;	/* composite sync high active   */
 #endif
 static int readmode(struct fb_var_screeninfo *base, const char *fn,
 					const char *mode)
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c
index b35e6bb..18841ec 100644
--- a/util-linux/fsck_minix.c
+++ b/util-linux/fsck_minix.c
@@ -104,24 +104,24 @@
 typedef unsigned int u32;
 
 
-#define MINIX_ROOT_INO 1
-#define MINIX_LINK_MAX	250
-#define MINIX2_LINK_MAX	65530
+static const int MINIX_ROOT_INO = 1;
+static const int MINIX_LINK_MAX = 250;
+static const int MINIX2_LINK_MAX = 65530;
 
-#define MINIX_I_MAP_SLOTS	8
-#define MINIX_Z_MAP_SLOTS	64
-#define MINIX_SUPER_MAGIC	0x137F		/* original minix fs */
-#define MINIX_SUPER_MAGIC2	0x138F		/* minix fs, 30 char names */
-#define MINIX2_SUPER_MAGIC	0x2468		/* minix V2 fs */
-#define MINIX2_SUPER_MAGIC2	0x2478		/* minix V2 fs, 30 char names */
-#define MINIX_VALID_FS		0x0001		/* Clean fs. */
-#define MINIX_ERROR_FS		0x0002		/* fs has errors. */
+static const int MINIX_I_MAP_SLOTS = 8;
+static const int MINIX_Z_MAP_SLOTS = 64;
+static const int MINIX_SUPER_MAGIC = 0x137F;		/* original minix fs */
+static const int MINIX_SUPER_MAGIC2 = 0x138F;		/* minix fs, 30 char names */
+static const int MINIX2_SUPER_MAGIC = 0x2468;		/* minix V2 fs */
+static const int MINIX2_SUPER_MAGIC2 = 0x2478;		/* minix V2 fs, 30 char names */
+static const int MINIX_VALID_FS = 0x0001;		/* Clean fs. */
+static const int MINIX_ERROR_FS = 0x0002;		/* fs has errors. */
 
 #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
 #define MINIX2_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix2_inode)))
 
-#define MINIX_V1		0x0001		/* original minix fs */
-#define MINIX_V2		0x0002		/* minix V2 fs */
+static const int MINIX_V1 = 0x0001;		/* original minix fs */
+static const int MINIX_V2 = 0x0002;		/* minix V2 fs */
 
 #define INODE_VERSION(inode)	inode->i_sb->u.minix_sb.s_version
 
@@ -185,12 +185,6 @@
 
 #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode)))
 
-#define MINIX_VALID_FS               0x0001          /* Clean fs. */
-#define MINIX_ERROR_FS               0x0002          /* fs has errors. */
-
-#define MINIX_SUPER_MAGIC    0x137F          /* original minix fs */
-#define MINIX_SUPER_MAGIC2   0x138F          /* minix fs, 30 char names */
-
 #ifndef BLKGETSIZE
 #define BLKGETSIZE _IO(0x12,96)    /* return device size */
 #endif
@@ -199,7 +193,7 @@
 #define volatile
 #endif
 
-#define ROOT_INO 1
+static const int ROOT_INO = 1;
 
 #define UPPER(size,n) ((size+((n)-1))/(n))
 #define INODE_SIZE (sizeof(struct minix_inode))
@@ -231,7 +225,7 @@
 static int termios_set = 0;
 
 /* File-name data */
-#define MAX_DEPTH 32
+static const int MAX_DEPTH = 32;
 static int name_depth = 0;
 // static char name_list[MAX_DEPTH][BUFSIZ + 1];
 static char **name_list = NULL;
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 0ebf9df..ff55a3e 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -53,9 +53,9 @@
 
 /* NON_OPT is the code that is returned when a non-option is found in '+'
    mode */
-#define NON_OPT 1
+static const int NON_OPT = 1;
 /* LONG_OPT is the code that is returned when a long option is found. */
-#define LONG_OPT 2
+static const int LONG_OPT = 2;
 
 /* The shells recognized. */
 typedef enum {BASH,TCSH} shell_t;
@@ -199,7 +199,7 @@
 static struct option *long_options=NULL;
 static int long_options_length=0; /* Length of array */
 static int long_options_nr=0; /* Nr of used elements in array */
-#define LONG_OPTIONS_INCR 10
+static const int LONG_OPTIONS_INCR = 10;
 #define init_longopt() add_longopt(NULL,0)
 
 /* Register a long option. The contents of name is copied. */
diff --git a/util-linux/mkswap.c b/util-linux/mkswap.c
index e7fab4e..5b908da 100644
--- a/util-linux/mkswap.c
+++ b/util-linux/mkswap.c
@@ -48,7 +48,7 @@
 
 #ifndef _IO
 /* pre-1.3.45 */
-#define BLKGETSIZE 0x1260
+static const int BLKGETSIZE = 0x1260;
 #else
 /* same on i386, m68k, arm; different on alpha, mips, sparc, ppc */
 #define BLKGETSIZE _IO(0x12,96)
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 88e45fc..f78786e 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -55,21 +55,21 @@
 #include <linux/devmtab.h> /* For Erik's nifty devmtab device driver */
 #endif
 
-
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_RDONLY        1      /* Mount read-only */
-#define MS_NOSUID        2      /* Ignore suid and sgid bits */
-#define MS_NODEV         4      /* Disallow access to device special files */
-#define MS_NOEXEC        8      /* Disallow program execution */
-#define MS_SYNCHRONOUS  16      /* Writes are synced at once */
-#define MS_REMOUNT      32      /* Alter flags of a mounted FS */
-#define MS_MANDLOCK     64      /* Allow mandatory locks on an FS */
-#define S_QUOTA         128     /* Quota initialized for file/directory/symlink */
-#define S_APPEND        256     /* Append-only file */
-#define S_IMMUTABLE     512     /* Immutable file */
-#define MS_NOATIME      1024    /* Do not update access times. */
-#define MS_NODIRATIME   2048    /* Do not update directory access times */
-
+enum {
+	MS_MGC_VAL = 0xc0ed0000, /* Magic number indicatng "new" flags */
+	MS_RDONLY = 1,      /* Mount read-only */
+	MS_NOSUID = 2,      /* Ignore suid and sgid bits */
+	MS_NODEV = 4,      /* Disallow access to device special files */
+	MS_NOEXEC = 8,      /* Disallow program execution */
+	MS_SYNCHRONOUS = 16,      /* Writes are synced at once */
+	MS_REMOUNT = 32,      /* Alter flags of a mounted FS */
+	MS_MANDLOCK = 64,      /* Allow mandatory locks on an FS */
+	S_QUOTA = 128,     /* Quota initialized for file/directory/symlink */
+	S_APPEND = 256,     /* Append-only file */
+	S_IMMUTABLE = 512,     /* Immutable file */
+	MS_NOATIME = 1024,    /* Do not update access times. */
+	MS_NODIRATIME = 2048,    /* Do not update directory access times */
+};
 
 
 #if defined BB_FEATURE_MOUNT_LOOP
diff --git a/util-linux/nfsmount.c b/util-linux/nfsmount.c
index b5c3821..d661a99 100644
--- a/util-linux/nfsmount.c
+++ b/util-linux/nfsmount.c
@@ -54,10 +54,10 @@
 #include <linux/nfs.h>  /* For the kernels nfs stuff */
 
 #ifndef NFS_FHSIZE
-#define NFS_FHSIZE	32
+static const int NFS_FHSIZE = 32;
 #endif
 #ifndef NFS_PORT
-#define NFS_PORT	2049
+static const int NFS_PORT = 2049;
 #endif
 
 /* Disable the nls stuff */
@@ -68,19 +68,19 @@
 # define _(Text) (Text)
 # define N_(Text) (Text)
 
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_RDONLY        1      /* Mount read-only */
-#define MS_NOSUID        2      /* Ignore suid and sgid bits */
-#define MS_NODEV         4      /* Disallow access to device special files */
-#define MS_NOEXEC        8      /* Disallow program execution */
-#define MS_SYNCHRONOUS  16      /* Writes are synced at once */
-#define MS_REMOUNT      32      /* Alter flags of a mounted FS */
-#define MS_MANDLOCK     64      /* Allow mandatory locks on an FS */
-#define S_QUOTA         128     /* Quota initialized for file/directory/symlink */
-#define S_APPEND        256     /* Append-only file */
-#define S_IMMUTABLE     512     /* Immutable file */
-#define MS_NOATIME      1024    /* Do not update access times. */
-#define MS_NODIRATIME   2048    /* Do not update directory access times */
+static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
+static const int MS_RDONLY = 1;      /* Mount read-only */
+static const int MS_NOSUID = 2;      /* Ignore suid and sgid bits */
+static const int MS_NODEV = 4;      /* Disallow access to device special files */
+static const int MS_NOEXEC = 8;      /* Disallow program execution */
+static const int MS_SYNCHRONOUS = 16;      /* Writes are synced at once */
+static const int MS_REMOUNT = 32;      /* Alter flags of a mounted FS */
+static const int MS_MANDLOCK = 64;      /* Allow mandatory locks on an FS */
+static const int S_QUOTA = 128;     /* Quota initialized for file/directory/symlink */
+static const int S_APPEND = 256;     /* Append-only file */
+static const int S_IMMUTABLE = 512;     /* Immutable file */
+static const int MS_NOATIME = 1024;    /* Do not update access times. */
+static const int MS_NODIRATIME = 2048;    /* Do not update directory access times */
 
 
 /*
@@ -93,7 +93,7 @@
  * so it is easiest to ignore the kernel altogether (at compile time).
  */
 
-#define NFS_MOUNT_VERSION	4
+static const int NFS_MOUNT_VERSION = 4;
 
 struct nfs2_fh {
         char                    data[32];
@@ -125,16 +125,16 @@
 
 /* bits in the flags field */
 
-#define NFS_MOUNT_SOFT		0x0001	/* 1 */
-#define NFS_MOUNT_INTR		0x0002	/* 1 */
-#define NFS_MOUNT_SECURE	0x0004	/* 1 */
-#define NFS_MOUNT_POSIX		0x0008	/* 1 */
-#define NFS_MOUNT_NOCTO		0x0010	/* 1 */
-#define NFS_MOUNT_NOAC		0x0020	/* 1 */
-#define NFS_MOUNT_TCP		0x0040	/* 2 */
-#define NFS_MOUNT_VER3		0x0080	/* 3 */
-#define NFS_MOUNT_KERBEROS	0x0100	/* 3 */
-#define NFS_MOUNT_NONLM		0x0200	/* 3 */
+static const int NFS_MOUNT_SOFT = 0x0001;	/* 1 */
+static const int NFS_MOUNT_INTR = 0x0002;	/* 1 */
+static const int NFS_MOUNT_SECURE = 0x0004;	/* 1 */
+static const int NFS_MOUNT_POSIX = 0x0008;	/* 1 */
+static const int NFS_MOUNT_NOCTO = 0x0010;	/* 1 */
+static const int NFS_MOUNT_NOAC = 0x0020;	/* 1 */
+static const int NFS_MOUNT_TCP = 0x0040;	/* 2 */
+static const int NFS_MOUNT_VER3 = 0x0080;	/* 3 */
+static const int NFS_MOUNT_KERBEROS = 0x0100;	/* 3 */
+static const int NFS_MOUNT_NONLM = 0x0200;	/* 3 */
 
 
 #define UTIL_LINUX_VERSION "2.10m"
@@ -160,14 +160,14 @@
 #define MAKE_VERSION(p,q,r)	(65536*(p) + 256*(q) + (r))
 #define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2)
 
-#define EX_FAIL			32       /* mount failure */
-#define EX_BG			256       /* retry in background (internal only) */
+static const int EX_FAIL = 32;       /* mount failure */
+static const int EX_BG = 256;       /* retry in background (internal only) */
 
 
 /*
  * nfs_mount_version according to the sources seen at compile time.
  */
-int nfs_mount_version = NFS_MOUNT_VERSION;
+static int nfs_mount_version;
 
 /*
  * Unfortunately, the kernel prints annoying console messages
@@ -187,8 +187,9 @@
 	if (kernel_version)
 		return;
 
-	kernel_version = get_kernel_revision();
+	nfs_mount_version = NFS_MOUNT_VERSION; /* default */
 
+	kernel_version = get_kernel_revision();
 	if (kernel_version) {
 	     if (kernel_version < MAKE_VERSION(2,1,32))
 		  nfs_mount_version = 1;
diff --git a/util-linux/rdate.c b/util-linux/rdate.c
index bb53927..954982a 100644
--- a/util-linux/rdate.c
+++ b/util-linux/rdate.c
@@ -33,7 +33,7 @@
 #include <getopt.h>
 
 
-#define RFC_868_BIAS	2208988800UL
+static const int RFC_868_BIAS = 2208988800UL;
 
 int setdate= 0;
 int printdate= 0;
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index 85f3389..eda1510 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -35,8 +35,8 @@
 
 static int whichApp;
 
-#define SWAPON_APP   1
-#define SWAPOFF_APP  2
+static const int SWAPON_APP = 1;
+static const int SWAPOFF_APP = 2;
 
 
 static void swap_enable_disable(char *device)
diff --git a/util-linux/umount.c b/util-linux/umount.c
index 40d25f9..2e2d95d 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -28,10 +28,10 @@
 #include <errno.h>
 
 
-#define MNT_FORCE		1
-#define MS_MGC_VAL		0xc0ed0000 /* Magic number indicatng "new" flags */
-#define MS_REMOUNT		32	/* Alter flags of a mounted FS.  */
-#define MS_RDONLY		1	/* Mount read-only.  */
+static const int MNT_FORCE = 1;
+static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
+static const int MS_REMOUNT = 32;	/* Alter flags of a mounted FS.  */
+static const int MS_RDONLY = 1;	/* Mount read-only.  */
 
 extern int mount (__const char *__special_file, __const char *__dir,
 			__const char *__fstype, unsigned long int __rwflag,
diff --git a/utility.c b/utility.c
index bff589a..6b637de 100644
--- a/utility.c
+++ b/utility.c
@@ -167,7 +167,7 @@
 #if defined BB_MOUNT || defined BB_UMOUNT
 
 #ifndef __NR_umount2
-#define __NR_umount2           52
+static const int __NR_umount2 = 52;
 #endif
 
 /* Include our own version of <sys/mount.h>, since libc5 doesn't
@@ -180,7 +180,7 @@
 
 #if defined BB_INSMOD || defined BB_LSMOD
 #ifndef __NR_query_module
-#define __NR_query_module     167
+static const int __NR_query_module = 167;
 #endif
 _syscall5(int, query_module, const char *, name, int, which,
 		void *, buf, size_t, bufsize, size_t*, ret);
@@ -975,9 +975,9 @@
 #if (defined BB_CHVT) || (defined BB_DEALLOCVT) || (defined BB_SETKEYCODES)
 
 /* From <linux/kd.h> */ 
-#define KDGKBTYPE       0x4B33  /* get keyboard type */
-#define         KB_84           0x01
-#define         KB_101          0x02    /* this is what we always answer */
+static const int KDGKBTYPE = 0x4B33;  /* get keyboard type */
+static const int KB_84 = 0x01;
+static const int KB_101 = 0x02;    /* this is what we always answer */
 
 int is_a_console(int fd)
 {
diff --git a/wget.c b/wget.c
index a5c3e7b..e3e6eed 100644
--- a/wget.c
+++ b/wget.c
@@ -49,7 +49,7 @@
 static struct timeval start;	/* Time a transfer started. */
 volatile unsigned long statbytes; /* Number of bytes transferred so far. */
 /* For progressmeter() -- number of seconds before xfer considered "stalled" */
-#define STALLTIME	5
+static const int STALLTIME = 5;
 #endif
 
 int wget_main(int argc, char **argv)
@@ -515,7 +515,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$Id: wget.c,v 1.17 2001/01/22 22:48:42 andersen Exp $
+ *	$Id: wget.c,v 1.18 2001/01/23 22:30:04 markw Exp $
  */
 
 
