-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.
+ */