X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=direct.c;h=6237ce2e418d715c464cedab0813ff6a1842b7c0;hp=7010e4616980714d6fdd3242a63a047581c56330;hb=1feb728a9eb579b6441daf0124d81483f600365c;hpb=0fd4b86c9899d254d9aea0660e5046c4234cfd42 diff --git a/direct.c b/direct.c index 7010e46..6237ce2 100644 --- a/direct.c +++ b/direct.c @@ -350,6 +350,8 @@ int d_incbin(void) int bytes = 0; long pos, size, bytesRead; char msg[256]; + char buf1[256]; + int i; // Check to see if we're in BSS, and, if so, throw an error if (scattr & SBSS) @@ -364,12 +366,30 @@ int d_incbin(void) return ERROR; } - if ((fd = open(string[tok[1]], _OPEN_INC)) < 0) + // Attempt to open the include file in the current directory, then (if that + // failed) try list of include files passed in the enviroment string or by + // the "-d" option. + if ((fd = open(string[tok[1]], _OPEN_INC)) < 0) { - errors("cannot open include binary file (%s)", string[tok[1]]); - return ERROR; + for(i=0; nthpath("RMACPATH", i, buf1)!=0; i++) + { + fd = strlen(buf1); + + // Append path char if necessary + if (fd > 0 && buf1[fd - 1] != SLASHCHAR) + strcat(buf1, SLASHSTRING); + + strcat(buf1, string[tok[1]]); + + if ((fd = open(buf1, _OPEN_INC)) >= 0) + goto allright; + } + + return errors("cannot open: \"%s\"", string[tok[1]]); } +allright: + size = lseek(fd, 0L, SEEK_END); pos = lseek(fd, 0L, SEEK_SET); chcheck(size); @@ -1590,28 +1610,30 @@ int d_gpumain(void) return error("What the hell? Do you think we adhere to the Goof standard?"); } + // // .opt - turn a specific (or all) optimisation on or off // int d_opt(void) { - char * tmpstr; - while (*tok != EOL) { if (*tok == STRING) { tok++; - tmpstr = string[*tok++]; + char * tmpstr = string[*tok++]; if (ParseOptimization(tmpstr) != OK) { char temperr[256]; - sprintf(temperr, "unknown optimisation flag '%s'.", tmpstr); + sprintf(temperr, "unknown optimisation flag '%s'", tmpstr); return error(temperr); } } else - return error(".opt directive needs every switch enclosed inside quotation marks."); + return error(".opt directive needs every switch enclosed inside quotation marks"); } -} \ No newline at end of file + + return OK; +} +