]> git.sur5r.net Git - cc65/blobdiff - src/common/searchpath.h
Fixed LinuxDoc Tools issues in some verbatim blocks in the Atari document.
[cc65] / src / common / searchpath.h
index a59ac7d8670381e7d5e1defd7a8f04f6c36cf80d..974886a67c373d24910b3d0d2a1738262bca5328 100644 (file)
@@ -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-2013, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
 
 
 
-/* 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. */
 
 
 
 
 
 /*****************************************************************************/
-/*                                  Data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
 
-/* Maximum number of search paths */
-#define MAX_SEARCH_PATHS        8
+/* Convert argument to C string */
+#define _STRINGIZE(arg) #arg
+#define  STRINGIZE(arg) _STRINGIZE(arg)
+
+/* A search path is a pointer to the list */
+typedef struct Collection SearchPaths;
 
 
 
 /*****************************************************************************/
-/*                                  Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
 
-void AddSearchPath (const char* NewPath, unsigned Where);
-/* Add a new search path to the existing one */
+SearchPaths* NewSearchPath (void);
+/* Create a new, empty search path list */
 
-char* SearchFile (const char* Name, unsigned Where);
-/* 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.
- */
+void AddSearchPath (SearchPaths* P, const char* NewPath);
+/* Add a new search path to the end of an existing list */
 
+void AddSearchPathFromEnv (SearchPaths* P, const char* EnvVar);
+/* Add a search path from an environment variable to the end of an existing
+** list.
+*/
 
+void AddSubSearchPathFromEnv (SearchPaths* P, const char* EnvVar, const char* SubDir);
+/* Add a search path from an environment variable, adding a subdirectory to
+** the environment variable value.
+*/
 
-/* End of searchpath.h */
-#endif
+void AddSubSearchPathFromWinBin (SearchPaths* P, const char* SubDir);
+/* Windows only:
+** Add a search path from the running binary, adding a subdirectory to
+** the parent directory of the directory containing the binary.
+*/
+
+int PushSearchPath (SearchPaths* 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 (SearchPaths* P);
+/* Remove a search path from the head of an existing search path list */
+
+char* GetSearchPath (SearchPaths* P, unsigned Index);
+/* Return the search path at the given index, if the index is valid, return an
+** empty string otherwise.
+*/
+
+char* SearchFile (const SearchPaths* 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.
+*/
 
 
 
+/* End of searchpath.h */
+
+#endif