X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=direct.c;h=dc9747ba9174fd05d3bf61d3a21955aa00ab5fc2;hp=dc44e8e62371b5b5eb72229801c8800bd347fdf6;hb=6056c16bf5053addba1fec6ff821a0f435f0b3da;hpb=3c68061b9cd5cc9b67d602f3f5b621efe1e844d8 diff --git a/direct.c b/direct.c index dc44e8e..dc9747b 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); + + if (fd > 0 && buf1[fd - 1] != SLASHCHAR) // Append path char if necessary + 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);