use EARGF where appropriate. hopefully a conservative list. i tried not to change default behaviors. just address potential indirection of zero and bad system call arguments. Notes: Sat Oct 21 10:47:05 EDT 2006 rsc Thanks. Please build these before submitting though -- you had a typo in yacc.c. Reference: /n/sources/patch/applied/eargf1 Date: Tue Sep 26 03:09:34 CES 2006 Signed-off-by: quanstro@quanstro.net Reviewed-by: rsc --- /sys/src/cmd/srvfs.c Tue Sep 26 03:02:15 2006 +++ /sys/src/cmd/srvfs.c Tue Sep 26 03:02:10 2006 @@ -26,14 +26,14 @@ *argp++ = "-d"; break; case 'e': - ename = ARGF(); + ename = EARGF(usage()); break; case 'p': - perm = strtol(ARGF(), 0, 8); + perm = strtol(EARGF(usage()), 0, 8); break; case 'P': *argp++ = "-P"; - *argp++ = ARGF(); + *argp++ = EARGF(usage()); break; case 'R': *argp++ = "-R"; --- /sys/src/cmd/archfs.c Tue Sep 26 03:02:37 2006 +++ /sys/src/cmd/archfs.c Tue Sep 26 03:02:32 2006 @@ -213,7 +213,7 @@ flag |= MCACHE; break; case 'm': - mtpt = ARGF(); + mtpt = EARGF(usage()); break; default: usage(); --- /sys/src/cmd/seq.c Tue Sep 26 03:03:03 2006 +++ /sys/src/cmd/seq.c Tue Sep 26 03:02:58 2006 @@ -58,7 +58,7 @@ constant++; break; case 'f': - format = ARGF(); + format = EARGF(usage()); if(format[strlen(format)-1] != '\n'){ sprint(ffmt, "%s\n", format); format = ffmt; --- /sys/src/cmd/tlssrv.c Tue Sep 26 03:03:33 2006 +++ /sys/src/cmd/tlssrv.c Tue Sep 26 03:03:28 2006 @@ -103,6 +103,14 @@ } void +usage(void) +{ + fprint(2, "usage: tlssrv -c cert [-D] [-l logfile] [-r remotesys] [cmd args...]\n"); + fprint(2, " after auth/secretpem key.pem > /mnt/factotum/ctl\n"); + exits("usage"); +} + +void main(int argc, char *argv[]) { TLSconn *conn; @@ -119,18 +127,16 @@ debug++; break; case 'c': - cert = ARGF(); + cert = EARGF(usage()); break; case 'l': - logfile = ARGF(); + logfile = EARGF(usage()); break; case 'r': - remotesys = ARGF(); + remotesys = EARGF(usage()); break; default: - fprint(2, "usage: tlssrv -c cert [-D] [-l logfile] [-r remotesys] [cmd args...]\n"); - fprint(2, " after auth/secretpem key.pem > /mnt/factotum/ctl\n"); - exits("usage"); + usage(); }ARGEND if(cert == nil) --- /sys/src/cmd/calendar.c Tue Sep 26 03:04:08 2006 +++ /sys/src/cmd/calendar.c Tue Sep 26 03:04:03 2006 @@ -23,6 +23,13 @@ void *emalloc(unsigned int); void +usage(void) +{ + fprint(2, "usage: calendar [-dy] [-p days] [files ...]\n"); + exits("usage"); +} + +void main(int argc, char *argv[]) { int i, fd, ahead; @@ -41,11 +48,10 @@ debug = 1; break; case 'p': - ahead = atoi(ARGF()); + ahead = atoi(EARGF(usage())); break; default: - fprint(2, "usage: calendar [-dy] [-p days] [files ...]\n"); - exits("usage"); + usage(); }ARGEND; /* make a list of dates */ --- /sys/src/cmd/hget.c Tue Sep 26 03:05:01 2006 +++ /sys/src/cmd/hget.c Tue Sep 26 03:04:45 2006 @@ -120,7 +120,7 @@ ARGBEGIN { case 'o': - ofile = ARGF(); + ofile = EARGF(usage()); break; case 'd': debug = 1; @@ -132,14 +132,10 @@ verbose = 1; break; case 'x': - net = ARGF(); - if(net == nil) - usage(); + net = EARGF(usage()); break; case 'p': - t = ARGF(); - if(t == nil) - usage(); + t = EARGF(usage()); if(p != postbody) p = seprint(p, e, "&%s", t); else --- /sys/src/cmd/yacc.c Tue Sep 26 03:06:20 2006 +++ /sys/src/cmd/yacc.c Tue Sep 26 03:05:48 2006 @@ -1164,6 +1164,13 @@ } void +usage(void) +{ + fprint(2, "usage: yacc [-Dn] [-vdS] [-o outputfile] [-s stem] grammar\n"); + exits("usage"); +} + +void setup(int argc, char *argv[]) { long c, t; @@ -1185,14 +1192,14 @@ vflag++; break; case 'D': - yydebug = ARGF(); + yydebug = EARGF(usage()); break; case 'd': dflag++; break; case 'o': ytab++; - ytabc = ARGF(); + ytabc = ARGF(usage()); break; case 's': stem++;