|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <path.h> ! 3: #include "bc.h" ! 4: ! 5: #define LIBNAME "lib.b" ! 6: ! 7: main(argc, argv) ! 8: register int argc; ! 9: register char *argv[]; ! 10: { ! 11: register FILE *fp; ! 12: ! 13: init(); ! 14: ++argv; ! 15: if (--argc > 0 && **argv == '-') ! 16: if (strcmp(*argv, "-l") == 0 ! 17: || strcmp(*argv, "-L") == 0) { ! 18: static char lib[] = LIBNAME; ! 19: register char *lp; ! 20: extern char *getenv(); ! 21: lp = (lp=getenv("LIBPATH")) ? lp : DEFLIBPATH; ! 22: if ((lp = path(lp, lib, AREAD)) == 0 ! 23: || (fp = fopen(lp, "r")) == 0) ! 24: die("Can't find %s", lib); ! 25: scan(fp, lib, 1); ! 26: --argc; ! 27: ++argv; ! 28: } else ! 29: usage(); ! 30: while (--argc >= 0) { ! 31: fp = fopen(*argv, "r"); ! 32: if (fp == NULL) ! 33: die("Can't open %s", *argv); ! 34: scan(fp, *argv, 1); ! 35: ++argv; ! 36: } ! 37: scan(stdin, NULL, 0); ! 38: return (0); ! 39: } ! 40: ! 41: scan(fp, fnm, lno) ! 42: FILE *fp; ! 43: char *fnm; ! 44: int lno; ! 45: { ! 46: infile = fp; ! 47: infnam = fnm; ! 48: inline = lno; ! 49: yyparse(); ! 50: fclose(fp); ! 51: } ! 52: ! 53: die(str) ! 54: char *str; ! 55: { ! 56: fprintf(stderr, "bc: %r\n", &str); ! 57: exit(1); ! 58: } ! 59: ! 60: usage() ! 61: { ! 62: fprintf(stderr, "Usage: bc [-l] file ... file\n"); ! 63: exit(1); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.