+/** \brief get next path component in filepath
+ \param path_p pointer to path (updated to "next" entry if any)
+ \param comp upon pointer to component (if component is found)
+ \retval 0 no component found (and no more componennts)
+ \retval >0 length of component (length of *comp)
+
+ A filepath has components separted by colon. For example
+ /usr/lib/modules:c:/my:/:lib
+ which has these components
+ "/usr/lib/modules", "c:/my", "/", "lib"
+*/
+YAZ_EXPORT size_t yaz_filepath_comp(const char **path_p, const char **comp);
+
+
+/** \brief resolve file on path
+ \param fname "short" filename (without path)
+ \param path the path (dir1:dir2,..) - ala Unix
+ \param base can be added to relative paths (NULL for no append)
+ \param fullpath the full path to filename (if succesful)
+
+ Returns 0/NULL if no fname could be found in path;
+ pointer to fullpath if fname could be found.
+ We assume fullpath is 1024 bytes in length!
+*/
+YAZ_EXPORT char *yaz_filepath_resolve(const char *fname, const char *path,
+ const char *base, char *fullpath);
+
+
+/** \brief opens first file in path in path
+ \param fname "short" filename (without path)
+ \param mode mode as in fopen(3)
+ \param path the path (dir1:dir2,..) - ala Unix
+ \param base can be added to relative paths (NULL for no append)
+
+ Returns 0/NULL if no fname could be found in path;
+ FILE pointer if fname could be found.
+*/
+YAZ_EXPORT FILE *yaz_fopen(const char *path, const char *fname,
+ const char *mode, const char *base);
+
+/** \brief opens first file in path in path
+ \param fname "short" filename (without path)
+ \param mode mode as in fopen(3)
+ \param path the path (dir1:dir2,..) - ala Unix
+
+ Returns 0/NULL if no fname could be found in path;
+ FILE pointer if fname could be found.
+*/
+YAZ_EXPORT FILE *yaz_path_fopen(const char *path, const char *fname,
+ const char *mode);
+
+/** \brief closes file
+ \param f FILE handle
+
+ \retval -1 on failure
+ \retval 0 on success
+*/
+YAZ_EXPORT int yaz_fclose(FILE *f);
+
+
+YAZ_END_CDECL