version 1.16, 2010/06/13 17:58:19 |
version 1.17, 2011/09/28 19:27:18 |
|
|
THIS SOFTWARE. |
THIS SOFTWARE. |
****************************************************************/ |
****************************************************************/ |
|
|
const char *version = "version 20100523"; |
const char *version = "version 20110810"; |
|
|
#define DEBUG |
#define DEBUG |
#include <stdio.h> |
#include <stdio.h> |
|
|
extern char *__progname; |
extern char *__progname; |
|
|
int dbg = 0; |
int dbg = 0; |
|
Awkfloat srand_seed = 1; |
char *cmdname; /* gets argv[0] for error messages */ |
char *cmdname; /* gets argv[0] for error messages */ |
extern FILE *yyin; /* lex input file */ |
extern FILE *yyin; /* lex input file */ |
char *lexprog; /* points to program argument if it exists */ |
char *lexprog; /* points to program argument if it exists */ |
|
|
exit(1); |
exit(1); |
} |
} |
signal(SIGFPE, fpecatch); |
signal(SIGFPE, fpecatch); |
|
|
yyin = NULL; |
yyin = NULL; |
symtab = makesymtab(NSYMTAB); |
symtab = makesymtab(NSYMTAB); |
while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') { |
while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') { |
|
|
safe = 1; |
safe = 1; |
break; |
break; |
case 'f': /* next argument is program filename */ |
case 'f': /* next argument is program filename */ |
argc--; |
if (argv[1][2] != 0) { /* arg is -fsomething */ |
argv++; |
if (npfile >= MAX_PFILE - 1) |
if (npfile >= MAX_PFILE - 1) |
FATAL("too many -f options"); |
FATAL("too many -f options"); |
pfile[npfile++] = &argv[1][2]; |
if (argc <= 1) |
} else { /* arg is -f something */ |
FATAL("no program filename"); |
argc--; argv++; |
if (npfile >= MAX_PFILE - 1) |
if (argc <= 1) |
FATAL("too many -f options"); |
FATAL("no program filename"); |
pfile[npfile++] = argv[1]; |
if (npfile >= MAX_PFILE - 1) |
|
FATAL("too many -f options"); |
|
pfile[npfile++] = argv[1]; |
|
} |
break; |
break; |
case 'F': /* set field separator */ |
case 'F': /* set field separator */ |
if (argv[1][2] != 0) { /* arg is -Fsomething */ |
if (argv[1][2] != 0) { /* arg is -Fsomething */ |
|
|
WARNING("field separator FS is empty"); |
WARNING("field separator FS is empty"); |
break; |
break; |
case 'v': /* -v a=1 to be done NOW. one -v for each */ |
case 'v': /* -v a=1 to be done NOW. one -v for each */ |
if (argv[1][2] == '\0' && --argc > 1 && isclvar((++argv)[1])) |
if (argv[1][2] != 0) { /* arg is -vsomething */ |
setclvar(argv[1]); |
if (isclvar(&argv[1][2])) |
else if (argv[1][2] != '\0') |
setclvar(&argv[1][2]); |
setclvar(&argv[1][2]); |
else |
|
FATAL("invalid -v option argument: %s", &argv[1][2]); |
|
} else { /* arg is -v something */ |
|
argc--; argv++; |
|
if (argc <= 1) |
|
FATAL("no variable name"); |
|
if (isclvar(argv[1])) |
|
setclvar(argv[1]); |
|
else |
|
FATAL("invalid -v option argument: %s", argv[1]); |
|
} |
break; |
break; |
case 'd': |
case 'd': |
dbg = atoi(&argv[1][2]); |
dbg = atoi(&argv[1][2]); |