X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=rmac.c;h=2f12bca48293dc6d946e35f274ec78704adb79b9;hb=cbc8347d4ffea164ca05b03e4e3be39945be8777;hp=ef99ffd5240ba24bd0691bb8ba250e86d5cbd40f;hpb=4ee0f36a71367d53457147c7b31bc9845e3ac21c;p=rmac diff --git a/rmac.c b/rmac.c index ef99ffd..2f12bca 100644 --- a/rmac.c +++ b/rmac.c @@ -1,7 +1,7 @@ // -// RMAC - Reboot's Macro Assembler for all Atari computers +// RMAC - Renamed Macro Assembler for all Atari computers // RMAC.C - Main Application Code -// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -50,6 +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 searchpatha[512] = { 0 }; // Buffer to hold searchpath when specified char * searchpath = NULL; // Search path for include files char defname[] = "noname.o"; // Default output filename int optim_flags[OPT_COUNT]; // Specific optimisations on/off matrix @@ -206,8 +207,8 @@ void DisplayVersion(void) "| '__| '_ ` _ \\ / _` |/ __|\n" "| | | | | | | | (_| | (__ \n" "|_| |_| |_| |_|\\__,_|\\___|\n" - "\nReboot's Macro Assembler\n" - "Copyright (C) 199x Landon Dyer, 2011-2020 Reboot\n" + "\nRenamed Macro Assembler\n" + "Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends\n" "V%01i.%01i.%01i %s (%s)\n\n", MAJOR, MINOR, PATCH, __DATE__, PLATFORM); } @@ -284,6 +285,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 +295,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 +411,31 @@ int Process(int argc, char ** argv) case 'i': // Set directory search path case 'I': { - searchpath = argv[argno] + 2; + strcat(searchpatha, argv[argno] + 2); + strcat(searchpatha, ";"); + searchpath = searchpatha; // Check to see if include paths actually exist - if (strlen(searchpath) > 0) - { - DIR * test = opendir(searchpath); + char current_path[256]; - if (test == NULL) + for(i=current_path_index; nthpath("RMACPATH", i, current_path)!=0; i++) + { + if (strlen(current_path) > 0) { - printf("Invalid include path: %s\n", searchpath); - errcnt++; - return errcnt; - } + DIR * test = opendir(current_path); + + if (test == NULL) + { + printf("Invalid include path: %s\n", current_path); + errcnt++; + return errcnt; + } - closedir(test); + closedir(test); + } } + current_path_index = i - 1; break; } case 'l': // Produce listing file