20 #include <sys/types.h>
46 const char *path = *path_p;
53 if (path[0] && strchr(
"/\\.", path[0]))
54 path_sep = strchr(path+1,
':');
55 else if (path[0] && path[1])
56 path_sep = strchr(path+2,
':');
62 len = path_sep - path;
63 *path_p = path + len + 1;
75 const char *base,
char *fullpath)
77 if (path && *path ==
'\0')
79 if (strchr(
"/\\", *fname))
96 if (!strchr(
"/\\", *comp) && base)
99 strcpy(fullpath, base);
100 slen = strlen(fullpath);
101 fullpath[slen++] =
'/';
103 memcpy(fullpath+slen, comp, len);
105 if(slen > 0 && !strchr(
"/\\", fullpath[slen-1]))
106 fullpath[slen++] =
'/';
108 strcpy(fullpath+slen, fname);
109 if (stat(fullpath, &stat_buf) == 0)
117 FILE *
yaz_fopen(
const char *path,
const char *fname,
const char *mode,
124 return fopen(fullpath, mode);
134 if (*p && p[1] ==
':' &&
135 ((*p >=
'A' && *p <=
'Z') || (*p >=
'a' && *p <=
'z')))
FILE * yaz_path_fopen(const char *path, const char *name, const char *mode)
opens first file in path in path
size_t yaz_filepath_comp(const char **path_p, const char **comp)
get next path component in filepath
int yaz_fclose(FILE *f)
closes file
FILE * yaz_fopen(const char *path, const char *fname, const char *mode, const char *base)
opens first file in path in path
int yaz_is_abspath(const char *p)
checks whether path is absolute
char * yaz_filepath_resolve(const char *fname, const char *path, const char *base, char *fullpath)
resolve file on path