diff options
author | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
---|---|---|
committer | zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-08-26 17:39:27 +0000 |
commit | 6bf20c78f5b69d40bcc4931df93d29198435ab67 (patch) | |
tree | e3eda937a05d7db42de725b7013bd0344b987f34 /lcc/src/main.c | |
parent | 872d4d7f55af706737ffb361bb76ad13e7496770 (diff) | |
download | ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.tar.gz ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.zip |
newlines fixed
git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'lcc/src/main.c')
-rwxr-xr-x | lcc/src/main.c | 450 |
1 files changed, 225 insertions, 225 deletions
diff --git a/lcc/src/main.c b/lcc/src/main.c index 1367fa0..63b85f2 100755 --- a/lcc/src/main.c +++ b/lcc/src/main.c @@ -1,225 +1,225 @@ -#include "c.h"
-
-static char rcsid[] = "main.c - faked rcsid";
-
-static void typestab(Symbol, void *);
-
-static void stabline(Coordinate *);
-static void stabend(Coordinate *, Symbol, Coordinate **, Symbol *, Symbol *);
-Interface *IR = NULL;
-
-int Aflag; /* >= 0 if -A specified */
-int Pflag; /* != 0 if -P specified */
-int glevel; /* == [0-9] if -g[0-9] specified */
-int xref; /* != 0 for cross-reference data */
-Symbol YYnull; /* _YYnull symbol if -n or -nvalidate specified */
-Symbol YYcheck; /* _YYcheck symbol if -nvalidate,check specified */
-
-static char *comment;
-static Interface stabIR;
-static char *currentfile; /* current file name */
-static int currentline; /* current line number */
-static FILE *srcfp; /* stream for current file, if non-NULL */
-static int srcpos; /* position of srcfp, if srcfp is non-NULL */
-int main(int argc, char *argv[]) {
- int i, j;
- for (i = argc - 1; i > 0; i--)
- if (strncmp(argv[i], "-target=", 8) == 0)
- break;
- if (i > 0) {
- char *s = strchr(argv[i], '\\');
- if (s != NULL)
- *s = '/';
- for (j = 0; bindings[j].name && bindings[j].ir; j++)
- if (strcmp(&argv[i][8], bindings[j].name) == 0) {
- IR = bindings[j].ir;
- break;
- }
- if (s != NULL)
- *s = '\\';
- }
- if (!IR) {
- fprint(stderr, "%s: unknown target", argv[0]);
- if (i > 0)
- fprint(stderr, " `%s'", &argv[i][8]);
- fprint(stderr, "; must specify one of\n");
- for (i = 0; bindings[i].name; i++)
- fprint(stderr, "\t-target=%s\n", bindings[i].name);
- exit(EXIT_FAILURE);
- }
- init(argc, argv);
- t = gettok();
- (*IR->progbeg)(argc, argv);
- if (glevel && IR->stabinit)
- (*IR->stabinit)(firstfile, argc, argv);
- program();
- if (events.end)
- apply(events.end, NULL, NULL);
- memset(&events, 0, sizeof events);
- if (glevel || xref) {
- Symbol symroot = NULL;
- Coordinate src;
- foreach(types, GLOBAL, typestab, &symroot);
- foreach(identifiers, GLOBAL, typestab, &symroot);
- src.file = firstfile;
- src.x = 0;
- src.y = lineno;
- if ((glevel > 2 || xref) && IR->stabend)
- (*IR->stabend)(&src, symroot,
- ltov(&loci, PERM),
- ltov(&symbols, PERM), NULL);
- else if (IR->stabend)
- (*IR->stabend)(&src, NULL, NULL, NULL, NULL);
- }
- finalize();
- (*IR->progend)();
- deallocate(PERM);
- return errcnt > 0;
-}
-/* main_init - process program arguments */
-void main_init(int argc, char *argv[]) {
- char *infile = NULL, *outfile = NULL;
- int i;
- static int inited;
-
- if (inited)
- return;
- inited = 1;
- type_init(argc, argv);
- for (i = 1; i < argc; i++)
- if (strcmp(argv[i], "-g") == 0 || strcmp(argv[i], "-g2") == 0)
- glevel = 2;
- else if (strncmp(argv[i], "-g", 2) == 0) { /* -gn[,x] */
- char *p = strchr(argv[i], ',');
- glevel = atoi(argv[i]+2);
- if (p) {
- comment = p + 1;
- if (glevel == 0)
- glevel = 1;
- if (stabIR.stabline == NULL) {
- stabIR.stabline = IR->stabline;
- stabIR.stabend = IR->stabend;
- IR->stabline = stabline;
- IR->stabend = stabend;
- }
- }
- } else if (strcmp(argv[i], "-x") == 0)
- xref++;
- else if (strcmp(argv[i], "-A") == 0) {
- ++Aflag;
- } else if (strcmp(argv[i], "-P") == 0)
- Pflag++;
- else if (strcmp(argv[i], "-w") == 0)
- wflag++;
- else if (strcmp(argv[i], "-n") == 0) {
- if (!YYnull) {
- YYnull = install(string("_YYnull"), &globals, GLOBAL, PERM);
- YYnull->type = func(voidptype, NULL, 1);
- YYnull->sclass = EXTERN;
- (*IR->defsymbol)(YYnull);
- }
- } else if (strncmp(argv[i], "-n", 2) == 0) { /* -nvalid[,check] */
- char *p = strchr(argv[i], ',');
- if (p) {
- YYcheck = install(string(p+1), &globals, GLOBAL, PERM);
- YYcheck->type = func(voidptype, NULL, 1);
- YYcheck->sclass = EXTERN;
- (*IR->defsymbol)(YYcheck);
- p = stringn(argv[i]+2, p - (argv[i]+2));
- } else
- p = string(argv[i]+2);
- YYnull = install(p, &globals, GLOBAL, PERM);
- YYnull->type = func(voidptype, NULL, 1);
- YYnull->sclass = EXTERN;
- (*IR->defsymbol)(YYnull);
- } else if (strcmp(argv[i], "-v") == 0)
- fprint(stderr, "%s %s\n", argv[0], rcsid);
- else if (strncmp(argv[i], "-s", 2) == 0)
- density = strtod(&argv[i][2], NULL);
- else if (strncmp(argv[i], "-errout=", 8) == 0) {
- FILE *f = fopen(argv[i]+8, "w");
- if (f == NULL) {
- fprint(stderr, "%s: can't write errors to `%s'\n", argv[0], argv[i]+8);
- exit(EXIT_FAILURE);
- }
- fclose(f);
- f = freopen(argv[i]+8, "w", stderr);
- assert(f);
- } else if (strncmp(argv[i], "-e", 2) == 0) {
- int x;
- if ((x = strtol(&argv[i][2], NULL, 0)) > 0)
- errlimit = x;
- } else if (strncmp(argv[i], "-little_endian=", 15) == 0)
- IR->little_endian = argv[i][15] - '0';
- else if (strncmp(argv[i], "-mulops_calls=", 18) == 0)
- IR->mulops_calls = argv[i][18] - '0';
- else if (strncmp(argv[i], "-wants_callb=", 13) == 0)
- IR->wants_callb = argv[i][13] - '0';
- else if (strncmp(argv[i], "-wants_argb=", 12) == 0)
- IR->wants_argb = argv[i][12] - '0';
- else if (strncmp(argv[i], "-left_to_right=", 15) == 0)
- IR->left_to_right = argv[i][15] - '0';
- else if (strncmp(argv[i], "-wants_dag=", 11) == 0)
- IR->wants_dag = argv[i][11] - '0';
- else if (*argv[i] != '-' || strcmp(argv[i], "-") == 0) {
- if (infile == NULL)
- infile = argv[i];
- else if (outfile == NULL)
- outfile = argv[i];
- }
-
- if (infile != NULL && strcmp(infile, "-") != 0
- && freopen(infile, "r", stdin) == NULL) {
- fprint(stderr, "%s: can't read `%s'\n", argv[0], infile);
- exit(EXIT_FAILURE);
- }
- if (outfile != NULL && strcmp(outfile, "-") != 0
- && freopen(outfile, "w", stdout) == NULL) {
- fprint(stderr, "%s: can't write `%s'\n", argv[0], outfile);
- exit(EXIT_FAILURE);
- }
-}
-/* typestab - emit stab entries for p */
-static void typestab(Symbol p, void *cl) {
- if (*(Symbol *)cl == 0 && p->sclass && p->sclass != TYPEDEF)
- *(Symbol *)cl = p;
- if ((p->sclass == TYPEDEF || p->sclass == 0) && IR->stabtype)
- (*IR->stabtype)(p);
-}
-
-/* stabline - emit source code for source coordinate *cp */
-static void stabline(Coordinate *cp) {
- if (cp->file && cp->file != currentfile) {
- if (srcfp)
- fclose(srcfp);
- currentfile = cp->file;
- srcfp = fopen(currentfile, "r");
- srcpos = 0;
- currentline = 0;
- }
- if (currentline != cp->y && srcfp) {
- char buf[512];
- if (srcpos > cp->y) {
- rewind(srcfp);
- srcpos = 0;
- }
- for ( ; srcpos < cp->y; srcpos++)
- if (fgets(buf, sizeof buf, srcfp) == NULL) {
- fclose(srcfp);
- srcfp = NULL;
- break;
- }
- if (srcfp && srcpos == cp->y)
- print("%s%s", comment, buf);
- }
- currentline = cp->y;
- if (stabIR.stabline)
- (*stabIR.stabline)(cp);
-}
-
-static void stabend(Coordinate *cp, Symbol p, Coordinate **cpp, Symbol *sp, Symbol *stab) {
- if (stabIR.stabend)
- (*stabIR.stabend)(cp, p, cpp, sp, stab);
- if (srcfp)
- fclose(srcfp);
-}
+#include "c.h" + +static char rcsid[] = "main.c - faked rcsid"; + +static void typestab(Symbol, void *); + +static void stabline(Coordinate *); +static void stabend(Coordinate *, Symbol, Coordinate **, Symbol *, Symbol *); +Interface *IR = NULL; + +int Aflag; /* >= 0 if -A specified */ +int Pflag; /* != 0 if -P specified */ +int glevel; /* == [0-9] if -g[0-9] specified */ +int xref; /* != 0 for cross-reference data */ +Symbol YYnull; /* _YYnull symbol if -n or -nvalidate specified */ +Symbol YYcheck; /* _YYcheck symbol if -nvalidate,check specified */ + +static char *comment; +static Interface stabIR; +static char *currentfile; /* current file name */ +static int currentline; /* current line number */ +static FILE *srcfp; /* stream for current file, if non-NULL */ +static int srcpos; /* position of srcfp, if srcfp is non-NULL */ +int main(int argc, char *argv[]) { + int i, j; + for (i = argc - 1; i > 0; i--) + if (strncmp(argv[i], "-target=", 8) == 0) + break; + if (i > 0) { + char *s = strchr(argv[i], '\\'); + if (s != NULL) + *s = '/'; + for (j = 0; bindings[j].name && bindings[j].ir; j++) + if (strcmp(&argv[i][8], bindings[j].name) == 0) { + IR = bindings[j].ir; + break; + } + if (s != NULL) + *s = '\\'; + } + if (!IR) { + fprint(stderr, "%s: unknown target", argv[0]); + if (i > 0) + fprint(stderr, " `%s'", &argv[i][8]); + fprint(stderr, "; must specify one of\n"); + for (i = 0; bindings[i].name; i++) + fprint(stderr, "\t-target=%s\n", bindings[i].name); + exit(EXIT_FAILURE); + } + init(argc, argv); + t = gettok(); + (*IR->progbeg)(argc, argv); + if (glevel && IR->stabinit) + (*IR->stabinit)(firstfile, argc, argv); + program(); + if (events.end) + apply(events.end, NULL, NULL); + memset(&events, 0, sizeof events); + if (glevel || xref) { + Symbol symroot = NULL; + Coordinate src; + foreach(types, GLOBAL, typestab, &symroot); + foreach(identifiers, GLOBAL, typestab, &symroot); + src.file = firstfile; + src.x = 0; + src.y = lineno; + if ((glevel > 2 || xref) && IR->stabend) + (*IR->stabend)(&src, symroot, + ltov(&loci, PERM), + ltov(&symbols, PERM), NULL); + else if (IR->stabend) + (*IR->stabend)(&src, NULL, NULL, NULL, NULL); + } + finalize(); + (*IR->progend)(); + deallocate(PERM); + return errcnt > 0; +} +/* main_init - process program arguments */ +void main_init(int argc, char *argv[]) { + char *infile = NULL, *outfile = NULL; + int i; + static int inited; + + if (inited) + return; + inited = 1; + type_init(argc, argv); + for (i = 1; i < argc; i++) + if (strcmp(argv[i], "-g") == 0 || strcmp(argv[i], "-g2") == 0) + glevel = 2; + else if (strncmp(argv[i], "-g", 2) == 0) { /* -gn[,x] */ + char *p = strchr(argv[i], ','); + glevel = atoi(argv[i]+2); + if (p) { + comment = p + 1; + if (glevel == 0) + glevel = 1; + if (stabIR.stabline == NULL) { + stabIR.stabline = IR->stabline; + stabIR.stabend = IR->stabend; + IR->stabline = stabline; + IR->stabend = stabend; + } + } + } else if (strcmp(argv[i], "-x") == 0) + xref++; + else if (strcmp(argv[i], "-A") == 0) { + ++Aflag; + } else if (strcmp(argv[i], "-P") == 0) + Pflag++; + else if (strcmp(argv[i], "-w") == 0) + wflag++; + else if (strcmp(argv[i], "-n") == 0) { + if (!YYnull) { + YYnull = install(string("_YYnull"), &globals, GLOBAL, PERM); + YYnull->type = func(voidptype, NULL, 1); + YYnull->sclass = EXTERN; + (*IR->defsymbol)(YYnull); + } + } else if (strncmp(argv[i], "-n", 2) == 0) { /* -nvalid[,check] */ + char *p = strchr(argv[i], ','); + if (p) { + YYcheck = install(string(p+1), &globals, GLOBAL, PERM); + YYcheck->type = func(voidptype, NULL, 1); + YYcheck->sclass = EXTERN; + (*IR->defsymbol)(YYcheck); + p = stringn(argv[i]+2, p - (argv[i]+2)); + } else + p = string(argv[i]+2); + YYnull = install(p, &globals, GLOBAL, PERM); + YYnull->type = func(voidptype, NULL, 1); + YYnull->sclass = EXTERN; + (*IR->defsymbol)(YYnull); + } else if (strcmp(argv[i], "-v") == 0) + fprint(stderr, "%s %s\n", argv[0], rcsid); + else if (strncmp(argv[i], "-s", 2) == 0) + density = strtod(&argv[i][2], NULL); + else if (strncmp(argv[i], "-errout=", 8) == 0) { + FILE *f = fopen(argv[i]+8, "w"); + if (f == NULL) { + fprint(stderr, "%s: can't write errors to `%s'\n", argv[0], argv[i]+8); + exit(EXIT_FAILURE); + } + fclose(f); + f = freopen(argv[i]+8, "w", stderr); + assert(f); + } else if (strncmp(argv[i], "-e", 2) == 0) { + int x; + if ((x = strtol(&argv[i][2], NULL, 0)) > 0) + errlimit = x; + } else if (strncmp(argv[i], "-little_endian=", 15) == 0) + IR->little_endian = argv[i][15] - '0'; + else if (strncmp(argv[i], "-mulops_calls=", 18) == 0) + IR->mulops_calls = argv[i][18] - '0'; + else if (strncmp(argv[i], "-wants_callb=", 13) == 0) + IR->wants_callb = argv[i][13] - '0'; + else if (strncmp(argv[i], "-wants_argb=", 12) == 0) + IR->wants_argb = argv[i][12] - '0'; + else if (strncmp(argv[i], "-left_to_right=", 15) == 0) + IR->left_to_right = argv[i][15] - '0'; + else if (strncmp(argv[i], "-wants_dag=", 11) == 0) + IR->wants_dag = argv[i][11] - '0'; + else if (*argv[i] != '-' || strcmp(argv[i], "-") == 0) { + if (infile == NULL) + infile = argv[i]; + else if (outfile == NULL) + outfile = argv[i]; + } + + if (infile != NULL && strcmp(infile, "-") != 0 + && freopen(infile, "r", stdin) == NULL) { + fprint(stderr, "%s: can't read `%s'\n", argv[0], infile); + exit(EXIT_FAILURE); + } + if (outfile != NULL && strcmp(outfile, "-") != 0 + && freopen(outfile, "w", stdout) == NULL) { + fprint(stderr, "%s: can't write `%s'\n", argv[0], outfile); + exit(EXIT_FAILURE); + } +} +/* typestab - emit stab entries for p */ +static void typestab(Symbol p, void *cl) { + if (*(Symbol *)cl == 0 && p->sclass && p->sclass != TYPEDEF) + *(Symbol *)cl = p; + if ((p->sclass == TYPEDEF || p->sclass == 0) && IR->stabtype) + (*IR->stabtype)(p); +} + +/* stabline - emit source code for source coordinate *cp */ +static void stabline(Coordinate *cp) { + if (cp->file && cp->file != currentfile) { + if (srcfp) + fclose(srcfp); + currentfile = cp->file; + srcfp = fopen(currentfile, "r"); + srcpos = 0; + currentline = 0; + } + if (currentline != cp->y && srcfp) { + char buf[512]; + if (srcpos > cp->y) { + rewind(srcfp); + srcpos = 0; + } + for ( ; srcpos < cp->y; srcpos++) + if (fgets(buf, sizeof buf, srcfp) == NULL) { + fclose(srcfp); + srcfp = NULL; + break; + } + if (srcfp && srcpos == cp->y) + print("%s%s", comment, buf); + } + currentline = cp->y; + if (stabIR.stabline) + (*stabIR.stabline)(cp); +} + +static void stabend(Coordinate *cp, Symbol p, Coordinate **cpp, Symbol *sp, Symbol *stab) { + if (stabIR.stabend) + (*stabIR.stabend)(cp, p, cpp, sp, stab); + if (srcfp) + fclose(srcfp); +} |