From: ggn Date: Thu, 23 Jul 2020 13:40:21 +0000 (+0300) Subject: Fix for bug #167 X-Git-Tag: v2.1.0~7 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=commitdiff_plain;h=9ecc6f5e49e1740adee78dd45e1115c7e4fcc314 Fix for bug #167 --- diff --git a/direct.c b/direct.c index 53d7c6a..d6d6c3f 100644 --- a/direct.c +++ b/direct.c @@ -584,7 +584,7 @@ int d_incbin(void) // 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. + // the "-i" option. TOKEN filename = tok[1]; if ((fd = open(string[filename], _OPEN_INC)) < 0) diff --git a/dsp56k_amode.c b/dsp56k_amode.c index ac562ec..70a69cf 100644 --- a/dsp56k_amode.c +++ b/dsp56k_amode.c @@ -21,7 +21,6 @@ #include "mntab.h" // Address-mode information -//int nmodes; // Number of addr'ing modes found int dsp_am0; // Addressing mode int dsp_a0reg; // Register TOKEN dsp_a0expr[EXPRSIZE]; // Expression diff --git a/expr.c b/expr.c index f31e9e5..dc0e22b 100644 --- a/expr.c +++ b/expr.c @@ -169,7 +169,6 @@ int expr1(void) case CR_FILESIZE: if (*tok++ != STRING) return error("^^FILESIZE expects filename inside string"); - *evalTokenBuffer.u32++ = CONST; // @@copypasted from d_incbin, maybe factor this out somehow? // Attempt to open the include file in the current directory, then (if that diff --git a/mach.c b/mach.c index 8be3c4d..cca87e4 100644 --- a/mach.c +++ b/mach.c @@ -2438,7 +2438,6 @@ int m_pload(WORD inst, WORD siz, WORD extension) inst = 1; else return error("illegal control register specified"); - break; case DREG: inst = (1 << 3) | a0reg; diff --git a/rmac.c b/rmac.c index ef99ffd..c3da33d 100644 --- a/rmac.c +++ b/rmac.c @@ -50,7 +50,7 @@ int endian; // Host processor endianess (0 = LE, 1 = BE) char * objfname; // Object filename pointer char * firstfname; // First source filename char * cmdlnexec; // Executable name, pointer to ARGV[0] -char * searchpath = NULL; // Search path for include files +char searchpath[512] = { 0 }; // Search path for include files char defname[] = "noname.o"; // Default output filename int optim_flags[OPT_COUNT]; // Specific optimisations on/off matrix int activecpu = CPU_68000; // Active 68k CPU (68000 by default) @@ -284,6 +284,7 @@ int Process(int argc, char ** argv) int fd; // File descriptor char fnbuf[FNSIZ]; // Filename buffer int i; // Iterator + int current_path_index = 0; // Iterator for search paths errcnt = 0; // Initialize error count listing = 0; // Initialize listing level @@ -293,7 +294,6 @@ int Process(int argc, char ** argv) glob_flag = 0; // Initialize .globl flag optim_warn_flag = 0; // Initialize short branch flag debug = 0; // Initialize debug flag - searchpath = NULL; // Initialize search path objfname = NULL; // Initialize object filename list_fname = NULL; // Initialize listing filename err_fname = NULL; // Initialize error filename @@ -410,23 +410,28 @@ int Process(int argc, char ** argv) case 'i': // Set directory search path case 'I': { - searchpath = argv[argno] + 2; + strcat(searchpath, argv[argno] + 2); + strcat(searchpath, ";"); // Check to see if include paths actually exist - if (strlen(searchpath) > 0) + char current_path[256]; + for (i = current_path_index; nthpath("RMACPATH", i, current_path) != 0; i++) { - DIR * test = opendir(searchpath); - - if (test == NULL) + if (strlen(current_path) > 0) { - printf("Invalid include path: %s\n", searchpath); - errcnt++; - return errcnt; - } + DIR* test = opendir(current_path); - closedir(test); - } + if (test == NULL) + { + printf("Invalid include path: %s\n", current_path); + errcnt++; + return errcnt; + } + closedir(test); + } + } + current_path_index = i-1; break; } case 'l': // Produce listing file