+ /* Add the search path */
+ AddSearchPath (P, SB_GetConstBuf (&Dir));
+
+ /* Free the temp buffer */
+ SB_Done (&Dir);
+}
+
+
+
+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.
+ */
+{
+ /* Generate a clean copy of NewPath */
+ char* Path = CleanupPath (NewPath);
+
+ /* If we have paths, check if Path is already at position zero */
+ if (CollCount (P) > 0 && strcmp (CollConstAt (P, 0), Path) == 0) {
+ /* Match. Delete the copy and return to the caller */
+ xfree (Path);
+ return 0;