version 1.3, 2003/09/19 19:06:29 |
version 1.4, 2003/12/01 09:13:24 |
|
|
#endif /* not lint */ |
#endif /* not lint */ |
|
|
#include <err.h> |
#include <err.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <string.h> |
|
|
|
#include "extern.h" |
#include "extern.h" |
|
|
|
|
static __dead void |
static __dead void |
usage(void) |
usage(void) |
{ |
{ |
fprintf(stderr, "usage: %s [file]\n", __progname); |
fprintf(stderr, "usage: %s [-x] [file]\n", __progname); |
exit(1); |
exit(1); |
} |
} |
|
|
int |
int |
main(int argc, char *argv[]) |
main(int argc, char *argv[]) |
{ |
{ |
|
int ch; |
|
bool extended_regs = false; |
FILE *file; |
FILE *file; |
struct source src; |
struct source src; |
|
|
if (argc > 2) |
/* accept and ignore a single dash to be 4.4BSD dc(1) compatible */ |
usage(); |
while ((ch = getopt(argc, argv, "x-")) != -1) { |
|
switch (ch) { |
|
case 'x': |
|
extended_regs = true; |
|
break; |
|
case '-': |
|
break; |
|
default: |
|
usage(); |
|
} |
|
} |
|
argc -= optind; |
|
argv += optind; |
|
|
init_bmachine(); |
init_bmachine(extended_regs); |
setlinebuf(stdout); |
setlinebuf(stdout); |
setlinebuf(stderr); |
setlinebuf(stderr); |
if (argc == 2 && strcmp(argv[1], "-") != 0) { |
|
file = fopen(argv[1], "r"); |
if (argc > 1) |
|
usage(); |
|
else if (argc == 1) { |
|
file = fopen(argv[0], "r"); |
if (file == NULL) |
if (file == NULL) |
err(1, "cannot open file %s", argv[1]); |
err(1, "cannot open file %s", argv[0]); |
src_setstream(&src, file); |
src_setstream(&src, file); |
reset_bmachine(&src); |
reset_bmachine(&src); |
eval(); |
eval(); |