more changes
diff --git a/src/cmd/upas/common/common.h b/src/cmd/upas/common/common.h
index d1e9384..acb155f 100644
--- a/src/cmd/upas/common/common.h
+++ b/src/cmd/upas/common/common.h
@@ -75,5 +75,4 @@
 extern int	proc_free(process*);
 extern int	proc_kill(process*);
 
-/* tell compiler we're using a value so it won't complain */
-#define USE(x)	if(x)
+
diff --git a/src/cmd/upas/common/config.c b/src/cmd/upas/common/config.c
index 21b34a1..cde9e98 100644
--- a/src/cmd/upas/common/config.c
+++ b/src/cmd/upas/common/config.c
@@ -1,12 +1,12 @@
 #include "common.h"
 
-char *MAILROOT =	"#9/mail";
-char *UPASLOG =		"#9/sys/log";
-char *UPASLIB = 	"#9/mail/lib";
-char *UPASBIN=		"#9/bin/upas";
-char *UPASTMP = 	"#9/mail/tmp";
-char *SHELL = 		"#9/bin/rc";
-char *POST =		"#9/sys/lib/post/dispatch";
+char *_MAILROOT =	"#9/mail";
+char *_UPASLOG =		"#9/sys/log";
+char *_UPASLIB = 	"#9/mail/lib";
+char *_UPASBIN=		"#9/bin/upas";
+char *_UPASTMP = 	"#9/mail/tmp";
+char *_SHELL = 		"#9/bin/rc";
+char *_POST =		"#9/sys/lib/post/dispatch";
 
 int MBOXMODE = 0662;
 
@@ -18,10 +18,10 @@
 	if(did)
 		return;
 	did = 1;
-	MAILROOT = unsharp(MAILROOT);
-	UPASLOG = unsharp(UPASLOG);
-	UPASLIB = unsharp(UPASLIB);
-	UPASBIN = unsharp(UPASBIN);
-	SHELL = unsharp(SHELL);
-	POST = unsharp(POST);
+	_MAILROOT = unsharp(_MAILROOT);
+	_UPASLOG = unsharp(_UPASLOG);
+	_UPASLIB = unsharp(_UPASLIB);
+	_UPASBIN = unsharp(_UPASBIN);
+	_SHELL = unsharp(_SHELL);
+	_POST = unsharp(_POST);
 }
diff --git a/src/cmd/upas/common/sys.h b/src/cmd/upas/common/sys.h
index 5069155..dd4cd6f 100644
--- a/src/cmd/upas/common/sys.h
+++ b/src/cmd/upas/common/sys.h
@@ -21,16 +21,25 @@
 /*
  *  from config.c - call upasconfig() before using
  */
-extern char *MAILROOT;	/* root of mail system */
-extern char *UPASLOG;	/* log directory */
-extern char *UPASLIB;	/* upas library directory */
-extern char *UPASBIN;	/* upas binary directory */
-extern char *UPASTMP;	/* temporary directory */
-extern char *SHELL;	/* path name of shell */
-extern char *POST;	/* path name of post server addresses */
+extern char *_MAILROOT;	/* root of mail system */
+extern char *_UPASLOG;	/* log directory */
+extern char *_UPASLIB;	/* upas library directory */
+extern char *_UPASBIN;	/* upas binary directory */
+extern char *_UPASTMP;	/* temporary directory */
+extern char *_SHELL;	/* path name of shell */
+extern char *_POST;	/* path name of post server addresses */
 extern int MBOXMODE;	/* default mailbox protection mode */
 extern void upasconfig(void);
 
+/* forgive me */
+#define	MAILROOT	(upasconfig(), _MAILROOT)
+#define	UPASLOG	(upasconfig(), _UPASLOG)
+#define	UPASLIB	(upasconfig(), _UPASLIB)
+#define	UPASBIN	(upasconfig(), _UPASBIN)
+#define	UPASTMP	(upasconfig(), _UPASTMP)
+#define	SHELL	(upasconfig(), _SHELL)
+#define	POST	(upasconfig(), _POST)
+
 /*
  *  files in libsys.c
  */
diff --git a/src/cmd/upas/ml/dat.h b/src/cmd/upas/ml/dat.h
index 3527af5..5d23bae 100644
--- a/src/cmd/upas/ml/dat.h
+++ b/src/cmd/upas/ml/dat.h
@@ -1,6 +1,6 @@
 
 #include "../smtp/smtp.h"
-#include "../smtp/y.tab.h"
+#include "../smtp/rfc822.tab.h"
 
 typedef struct Addr Addr;
 struct Addr
diff --git a/src/cmd/upas/ml/mkfile b/src/cmd/upas/ml/mkfile
index 1a38410..8eca4f0 100644
--- a/src/cmd/upas/ml/mkfile
+++ b/src/cmd/upas/ml/mkfile
@@ -14,7 +14,7 @@
 	dat.h\
 
 HFILES=$UHFILES\
-	../smtp/y.tab.h\
+	../smtp/rfc822.tab.h\
 
 LIB=../common/libcommon.a
 
@@ -25,7 +25,7 @@
 $O.ml: ../smtp/rfc822.tab.$O
 $O.mlowner: ../smtp/rfc822.tab.$O
 
-../smtp/y.tab.h ../smtp/rfc822.tab.$O:
+../smtp/rfc822.tab.h ../smtp/rfc822.tab.$O:
 	(
 		cd ../smtp
 		mk rfc822.tab.$O
diff --git a/src/cmd/upas/send/message.c b/src/cmd/upas/send/message.c
index 8cee34a..56fddba 100644
--- a/src/cmd/upas/send/message.c
+++ b/src/cmd/upas/send/message.c
@@ -118,6 +118,7 @@
 	for(; p; p = p->next)
 		if(p->s && p->addr)
 			return s_copy(s_to_c(p->s));
+	return nil;
 }
 
 /* get the text of a header line minus the field name */
diff --git a/src/cmd/upas/smtp/mkfile b/src/cmd/upas/smtp/mkfile
index c4c7e05..9d5bf94 100644
--- a/src/cmd/upas/smtp/mkfile
+++ b/src/cmd/upas/smtp/mkfile
@@ -41,12 +41,13 @@
 	sed 's/yy/zz/g' < xxx > $target
 	rm xxx
 
-rfc822.tab.c: rfc822.y smtp.h
+rfc822.tab.c rfc822.tab.h: rfc822.y smtp.h
 	9 yacc -d -o $target rfc822.y
+	mv y.tab.h rfc822.tab.h
 
 clean:V:
 	rm -f *.[$OS] [$OS].$TARG smtpd.tab.c rfc822.tab.c y.tab.? y.debug $TARG
 
-../common/libcommon.a
+../common/libcommon.a:
 	cd ../common; mk
 
diff --git a/src/cmd/upas/smtp/mxdial.c b/src/cmd/upas/smtp/mxdial.c
index 13f40ab..ae272c7 100644
--- a/src/cmd/upas/smtp/mxdial.c
+++ b/src/cmd/upas/smtp/mxdial.c
@@ -23,7 +23,7 @@
 
 static int	mxlookup(DS*, char*);
 static int	mxlookup1(DS*, char*);
-static int	compar(void*, void*);
+static int	compar(const void*, const void*);
 static int	callmx(DS*, char*, char*);
 static void expand_meta(DS *ds);
 extern int	cistrcmp(char*, char*);
@@ -50,8 +50,10 @@
 }
 
 static int
-timeout(void*, char *msg)
+timeout(void *v, char *msg)
 {
+	USED(v);
+
 	if(strstr(msg, "alarm"))
 		return 1;
 	return 0;
@@ -232,7 +234,7 @@
 }
 
 static int
-compar(void *a, void *b)
+compar(const void *a, const void *b)
 {
 	return ((Mx*)a)->pref - ((Mx*)b)->pref;
 }
diff --git a/src/cmd/upas/smtp/smtpd.c b/src/cmd/upas/smtp/smtpd.c
index 8bd4511..7b54b3c 100644
--- a/src/cmd/upas/smtp/smtpd.c
+++ b/src/cmd/upas/smtp/smtpd.c
@@ -7,7 +7,7 @@
 #include <mp.h>
 #include <libsec.h>
 #include <auth.h>
-#include "../smtp/y.tab.h"
+#include "../smtp/rfc822.tab.h"
 
 #define DBGMX 1
 
diff --git a/src/cmd/upas/smtp/smtpd.y b/src/cmd/upas/smtp/smtpd.y
index 57b89a0..00a3fe9 100644
--- a/src/cmd/upas/smtp/smtpd.y
+++ b/src/cmd/upas/smtp/smtpd.y
@@ -189,6 +189,7 @@
 	yyfp = &bin;
 }
 
+int
 yylex(void)
 {
 	int c;
@@ -229,6 +230,7 @@
 {
 	YYSTYPE rv;
 
+	memset(&rv, 0, sizeof rv);
 	if(y1->s)
 		rv.s = y1->s;
 	else {
@@ -296,6 +298,7 @@
 		}
 	} else
 		return rv;
+	return rv;
 }
 
 void
@@ -312,6 +315,7 @@
 {
 	YYSTYPE rv;
 
+	memset(&rv, 0, sizeof rv);
 	rv.s = s_copy("/dev/null");
 	return rv;
 }