Fix for bug #167
authorggn <ggn.dbug@gmail.com>
Thu, 23 Jul 2020 13:40:21 +0000 (16:40 +0300)
committerShamus Hammons <jlhamm@acm.org>
Mon, 3 Aug 2020 17:24:36 +0000 (12:24 -0500)
direct.c
dsp56k_amode.c
expr.c
mach.c
rmac.c

index 53d7c6ae48aeab8126bc826e24abda4edaf3c3e6..d6d6c3f2e63499d7301253b41f9881eb72daef08 100644 (file)
--- 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)
index ac562ec14d1415d080372ca0c625b18a83273c5a..70a69cf3a5ce5b2be497e337d673bdb37e7ac5bd 100644 (file)
@@ -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 f31e9e59ddf67c1be317af23a1428c22da4ee534..dc0e22bf90b88485ee2872d3dccdc7d35ac4313d 100644 (file)
--- 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 8be3c4da7f91b3f67d2ae6111a6df90455627b18..cca87e40ebed47244ce017d1cc9430d886115a65 100644 (file)
--- 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 ef99ffd5240ba24bd0691bb8ba250e86d5cbd40f..c3da33dc734364f7516a3f819f8ea46a6f883a21 100644 (file)
--- 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