X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcommon%2Fsearchpath.h;h=f9f8705634e8bc69a22b7cf8a386f66e70b4058e;hb=0d8e8a95338560a1e0d96258d6def311cf2ad368;hp=0e51e1963617a4e255720dc27e0e5b92cafe3610;hpb=10243b1bdbedf35ba32938d6a0bbbbe6c8eed21f;p=cc65 diff --git a/src/common/searchpath.h b/src/common/searchpath.h index 0e51e1963..f9f870563 100644 --- a/src/common/searchpath.h +++ b/src/common/searchpath.h @@ -2,14 +2,14 @@ /* */ /* searchpath.h */ /* */ -/* Search path path handling for ld65 */ +/* Handling of search paths */ /* */ /* */ /* */ -/* (C) 2000-2003 Ullrich von Bassewitz */ -/* Römerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2000-2010, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -33,11 +33,7 @@ -/* Exports facilities to search files in a list of directories. 8 of these - * lists are managed, and each list can contain an arbitrary number of - * directories. The "Where" argument is actually a bitset, specifying which - * of the search lists should be used when adding paths or searching files. - */ +/* Exports facilities to search files in a list of directories. */ @@ -52,8 +48,8 @@ -/* Maximum number of search paths */ -#define MAX_SEARCH_PATHS 8 +/* A search path is a pointer to the list */ +typedef struct Collection SearchPath; @@ -63,13 +59,35 @@ -void AddSearchPath (const char* NewPath, unsigned Where); -/* Add a new search path to the existing one */ +SearchPath* NewSearchPath (void); +/* Create a new, empty search path list */ + +void AddSearchPath (SearchPath* P, const char* NewPath); +/* Add a new search path to the end of an existing list */ + +void AddSearchPathFromEnv (SearchPath* P, const char* EnvVar); +/* Add a search path from an environment variable to the end of an existing + * list. + */ + +void AddSubSearchPathFromEnv (SearchPath* P, const char* EnvVar, const char* SubDir); +/* Add a search path from an environment variable, adding a subdirectory to + * the environment variable value. + */ + +int PushSearchPath (SearchPath* P, const char* NewPath); +/* Add a new search path to the head of an existing search path list, provided + * that it's not already there. If the path is already at the first position, + * return zero, otherwise return a non zero value. + */ + +void PopSearchPath (SearchPath* P); +/* Remove a search path from the head of an existing search path list */ -void AddSearchPathFromEnv (const char* EnvVar, unsigned Where); -/* Add a search from an environment variable */ +void ForgetSearchPath (SearchPath* P); +/* Forget all search paths in the given list */ -char* SearchFile (const char* Name, unsigned Where); +char* SearchFile (const SearchPath* P, const char* File); /* Search for a file in a list of directories. Return a pointer to a malloced * area that contains the complete path, if found, return 0 otherwise. */