bc: cleanup, make sure to run 9 dc

This commit is contained in:
Russ Cox 2008-12-06 16:45:22 -08:00
parent 6ef0b1cabd
commit 56e6f8f994

View file

@ -786,9 +786,10 @@ loop:
peekc = -1; peekc = -1;
if(ch >= 0) if(ch >= 0)
return ch; return ch;
ifile++; ifile++;
if(ifile > sargc) { if(ifile >= sargc) {
if(ifile >= sargc+2) if(ifile >= sargc+1)
getout(); getout();
in = &bstdin; in = &bstdin;
Binit(in, 0, OREAD); Binit(in, 0, OREAD);
@ -802,6 +803,7 @@ loop:
ss = sargv[ifile]; ss = sargv[ifile];
goto loop; goto loop;
} }
fprint(2, "open %s: %r\n", sargv[ifile]);
yyerror("cannot open input file"); yyerror("cannot open input file");
return 0; /* shut up ken */ return 0; /* shut up ken */
} }
@ -871,7 +873,7 @@ yyerror(char *s, ...)
{ {
if(ifile > sargc) if(ifile > sargc)
ss = "teletype"; ss = "teletype";
Bprint(&bstdout, "c[%s on line %d, %s]pc\n", s, ln+1, ss); Bprint(&bstdout, "c[%s:%d, %s]pc\n", s, ln+1, ss);
Bflush(&bstdout); Bflush(&bstdout);
cp = cary; cp = cary;
crs = rcrs; crs = rcrs;
@ -905,15 +907,15 @@ yyinit(int argc, char **argv)
{ {
Binit(&bstdout, 1, OWRITE); Binit(&bstdout, 1, OWRITE);
sargv = argv; sargv = argv;
sargc = argc - 1; sargc = argc;
if(sargc == 0) { if(sargc == 0) {
in = &bstdin; in = &bstdin;
Binit(in, 0, OREAD); Binit(in, 0, OREAD);
} else if((in = Bopen(sargv[1], OREAD)) == 0) } else if((in = Bopen(sargv[0], OREAD)) == 0)
yyerror("cannot open input file"); yyerror("cannot open input file");
ifile = 1; ifile = 0;
ln = 0; ln = 0;
ss = sargv[1]; ss = sargv[0];
} }
void void
@ -941,8 +943,7 @@ main(int argc, char **argv)
{ {
int p[2]; int p[2];
while(argc > 1 && *argv[1] == '-') { ARGBEGIN{
switch(argv[1][1]) {
case 'd': case 'd':
bdebug++; bdebug++;
break; break;
@ -958,14 +959,12 @@ main(int argc, char **argv)
default: default:
fprint(2, "Usage: bc [-l] [-c] [file ...]\n"); fprint(2, "Usage: bc [-l] [-c] [file ...]\n");
exits("usage"); exits("usage");
} }ARGEND
argc--;
argv++;
}
if(lflag) { if(lflag) {
argv--;
argc++; argc++;
argv[1] = unsharp("#9/lib/bclib"); argv--;
*argv = unsharp("#9/lib/bclib");
} }
if(cflag) { if(cflag) {
yyinit(argc, argv); yyinit(argc, argv);
@ -985,5 +984,5 @@ main(int argc, char **argv)
dup(p[0], 0); dup(p[0], 0);
close(p[0]); close(p[0]);
close(p[1]); close(p[1]);
execl("dc", "dc", nil); execl(unsharp("#9/bin/dc"), "dc", nil);
} }