X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fca65%2Fincpath.c;h=2abd99f6203c57e7d3c360cc9053141fedd8b81f;hb=88855545e40bc95d09b5e5e8d4b94acc40a20b52;hp=28736716950fdfbd42c7cd2928af5109be0f1132;hpb=04dee08f58ba21097a78dff03851e2b66631b58a;p=cc65 diff --git a/src/ca65/incpath.c b/src/ca65/incpath.c index 287367169..2abd99f62 100644 --- a/src/ca65/incpath.c +++ b/src/ca65/incpath.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2000-2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -33,29 +33,21 @@ -#include -#include -#if defined(_MSC_VER) -/* Microsoft compiler */ -# include -# define R_OK 4 -#else -/* Anyone else */ -# include -#endif +/* common */ +#include "searchpath.h" -#include "mem.h" +/* ca65 */ #include "incpath.h" /*****************************************************************************/ -/* Data */ +/* Data */ /*****************************************************************************/ -static char* IncludePath = 0; +#define INC_STD 0x0001U @@ -65,101 +57,10 @@ static char* IncludePath = 0; -static char* Add (char* Orig, const char* New) -/* Create a new path from Orig and New, delete Orig, return the result */ -{ - unsigned OrigLen, NewLen; - char* NewPath; - - /* Get the length of the original string */ - OrigLen = Orig? strlen (Orig) : 0; - - /* Get the length of the new path */ - NewLen = strlen (New); - - /* Check for a trailing path separator and remove it */ - if (NewLen > 0 && (New [NewLen-1] == '\\' || New [NewLen-1] == '/')) { - --NewLen; - } - - /* Allocate memory for the new string */ - NewPath = Xmalloc (OrigLen + NewLen + 2); - - /* Copy the strings */ - memcpy (NewPath, Orig, OrigLen); - memcpy (NewPath+OrigLen, New, NewLen); - NewPath [OrigLen+NewLen+0] = ';'; - NewPath [OrigLen+NewLen+1] = '\0'; - - /* Delete the original path */ - Xfree (Orig); - - /* Return the new path */ - return NewPath; -} - - - -static char* Find (const char* Path, const char* File) -/* Search for a file in a list of directories. If found, return the complete - * name including the path in a malloced data area, if not found, return 0. - */ -{ - const char* P; - int Max; - char PathName [FILENAME_MAX]; - - /* Initialize variables */ - Max = sizeof (PathName) - strlen (File) - 2; - if (Max < 0) { - return 0; - } - P = Path; - - /* Handle a NULL pointer as replacement for an empty string */ - if (P == 0) { - P = ""; - } - - /* Start the search */ - while (*P) { - /* Copy the next path element into the buffer */ - int Count = 0; - while (*P != '\0' && *P != ';' && Count < Max) { - PathName [Count++] = *P++; - } - - /* Add a path separator and the filename */ - if (Count) { - PathName [Count++] = '/'; - } - strcpy (PathName + Count, File); - - /* Check if this file exists */ - if (access (PathName, R_OK) == 0) { - /* The file exists */ - return StrDup (PathName); - } - - /* Skip a list separator if we have one */ - if (*P == ';') { - ++P; - } - } - - /* Not found */ - return 0; -} - - - void AddIncludePath (const char* NewPath) /* Add a new include path to the existing one */ { - /* Allow a NULL path */ - if (NewPath) { - IncludePath = Add (IncludePath, NewPath); - } + AddSearchPath (NewPath, INC_STD); } @@ -170,7 +71,7 @@ char* FindInclude (const char* Name) */ { /* Search in the include directories */ - return Find (IncludePath, Name); + return SearchFile (Name, INC_STD); }