commit - 6ef0b1cabdaf80cb4f822f7d445ea49ee553f75c
commit + 56e6f8f9946a5d59192d443625832671f9154ea8
blob - 699205d485cf14d60404d16875b20ec31d58a97d
blob + 91ffcf03c97e6c38153b8b06623971a1f1f713a7
--- src/cmd/bc.y
+++ src/cmd/bc.y
peekc = -1;
if(ch >= 0)
return ch;
+
ifile++;
- if(ifile > sargc) {
- if(ifile >= sargc+2)
+ if(ifile >= sargc) {
+ if(ifile >= sargc+1)
getout();
in = &bstdin;
Binit(in, 0, OREAD);
ss = sargv[ifile];
goto loop;
}
+ fprint(2, "open %s: %r\n", sargv[ifile]);
yyerror("cannot open input file");
return 0; /* shut up ken */
}
{
if(ifile > sargc)
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);
cp = cary;
crs = rcrs;
{
Binit(&bstdout, 1, OWRITE);
sargv = argv;
- sargc = argc - 1;
+ sargc = argc;
if(sargc == 0) {
in = &bstdin;
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");
- ifile = 1;
+ ifile = 0;
ln = 0;
- ss = sargv[1];
+ ss = sargv[0];
}
void
{
int p[2];
- while(argc > 1 && *argv[1] == '-') {
- switch(argv[1][1]) {
- case 'd':
- bdebug++;
- break;
- case 'c':
- cflag++;
- break;
- case 'l':
- lflag++;
- break;
- case 's':
- sflag++;
- break;
- default:
- fprint(2, "Usage: bc [-l] [-c] [file ...]\n");
- exits("usage");
- }
- argc--;
- argv++;
- }
+ ARGBEGIN{
+ case 'd':
+ bdebug++;
+ break;
+ case 'c':
+ cflag++;
+ break;
+ case 'l':
+ lflag++;
+ break;
+ case 's':
+ sflag++;
+ break;
+ default:
+ fprint(2, "Usage: bc [-l] [-c] [file ...]\n");
+ exits("usage");
+ }ARGEND
+
if(lflag) {
- argv--;
argc++;
- argv[1] = unsharp("#9/lib/bclib");
+ argv--;
+ *argv = unsharp("#9/lib/bclib");
}
if(cflag) {
yyinit(argc, argv);
dup(p[0], 0);
close(p[0]);
close(p[1]);
- execl("dc", "dc", nil);
+ execl(unsharp("#9/bin/dc"), "dc", nil);
}