diff kpathsea/pathsearch.h @ 1267:69501f98669d

[project @ 1995-04-20 19:10:05 by jwe] Initial revision
author jwe
date Thu, 20 Apr 1995 19:10:05 +0000
parents
children 611d403c7f3d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kpathsea/pathsearch.h	Thu Apr 20 19:10:05 1995 +0000
@@ -0,0 +1,71 @@
+/* pathsearch.h: generic path searching.
+
+Copyright (C) 1993, 94 Karl Berry.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifndef KPATHSEA_PATHSEARCH_H
+#define KPATHSEA_PATHSEARCH_H
+
+#include <kpathsea/c-proto.h>
+#include <kpathsea/str-llist.h>
+#include <kpathsea/types.h>
+
+/* If PATH is non-null, return its first element (as defined by
+   IS_ENV_SEP).  If it's NULL, return the next element in the previous
+   path, a la strtok.  Leading, trailing, or doubled colons result in
+   the empty string.  When at the end of PATH, return NULL.  In any
+   case, return a pointer to an area that may be overwritten on
+   subsequent calls.  */
+extern string kpse_path_element P1H(const_string path);
+
+
+/* Given a path element ELT, return a pointer to a NULL-terminated list
+   of the corresponding (existing) directory or directories, with
+   trailing slashes, or NULL.  If ELT is the empty string, check the
+   current working directory.
+   
+   It's up to the caller to expand ELT.  This is because this routine is
+   most likely only useful to be called from `kpse_path_search', which
+   has already assumed expansion has been done.  */
+extern str_llist_type *kpse_element_dirs P1H(const_string elt);
+
+
+/* Call `kpse_expand' on NAME.  If the result is an absolute or
+   explicitly relative filename, check whether it is a readable
+   (regular) file.
+   
+   Otherwise, look in each of the directories specified in PATH (also do
+   tilde and variable expansion on elements in PATH), using a prebuilt
+   db (see db.h) if it's relevant for a given path element.
+   
+   If the prebuilt db doesn't exist, or if MUST_EXIST is true and NAME
+   isn't found in the prebuilt db, look on the filesystem.  (I.e., if
+   MUST_EXIST is false, and NAME isn't found in the db, do *not* look on
+   the filesystem.)
+   
+   The caller must expand PATH. This is because it makes more sense to
+   do this once, in advance, instead of for every search using it.
+   
+   In any case, return the complete filename if found, otherwise NULL.  */
+extern string kpse_path_search P3H(const_string path, const_string name,
+                                   boolean must_exist);
+
+
+/* Like `kpse_path_search' with MUST_EXIST true, but return a list of
+   all the filenames (or NULL if none), instead of taking the first.  */
+extern string *kpse_all_path_search P2H(const_string path, const_string name);
+
+#endif /* not KPATHSEA_PATHSEARCH_H */