From: Adam Dickmeiss Date: Mon, 25 Jul 2011 19:05:00 +0000 (+0200) Subject: Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/yaz X-Git-Tag: v4.2.8~16 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=5b25820db8435aeb54205c4ef6c9155407fb3acc;hp=cf813a4e4ab337aeb540e75fd6373c27d6f8cadd Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/yaz --- diff --git a/include/yaz/tpath.h b/include/yaz/tpath.h index da145dc..69dcbc4 100644 --- a/include/yaz/tpath.h +++ b/include/yaz/tpath.h @@ -43,7 +43,7 @@ YAZ_BEGIN_CDECL \retval 1 path is absolute \retval 0 path is relative */ -YAZ_EXPORT int yaz_is_abspath (const char *path); +YAZ_EXPORT int yaz_is_abspath(const char *path); /** \brief get next path component in filepath \param path_p pointer to path (updated to "next" entry if any) @@ -63,7 +63,7 @@ YAZ_EXPORT size_t yaz_filepath_comp(const char **path_p, const char **comp); \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) + \param fullpath the full path to filename (if successful) Returns 0/NULL if no fname could be found in path; pointer to fullpath if fname could be found. diff --git a/src/tpath.c b/src/tpath.c index a58bb3a..b802c98 100644 --- a/src/tpath.c +++ b/src/tpath.c @@ -32,12 +32,12 @@ FILE *yaz_path_fopen(const char *path, const char *name, const char *mode) { - return yaz_fopen (path, name, mode, 0); + return yaz_fopen(path, name, mode, 0); } int yaz_fclose (FILE *f) { - return fclose (f); + return fclose(f); } @@ -50,10 +50,10 @@ size_t yaz_filepath_comp(const char **path_p, const char **comp) /* somewhat dirty since we have to consider Windows * drive letters.. */ - if (path[0] && strchr ("/\\.", path[0])) - path_sep = strchr (path+1, ':'); + if (path[0] && strchr("/\\.", path[0])) + path_sep = strchr(path+1, ':'); else if (path[0] && path[1]) - path_sep = strchr (path+2, ':'); + path_sep = strchr(path+2, ':'); else path_sep = 0; @@ -74,7 +74,9 @@ size_t yaz_filepath_comp(const char **path_p, const char **comp) char *yaz_filepath_resolve(const char *fname, const char *path, const char *base, char *fullpath) { - for(;;) + if (path && *path == '\0') + path = 0; + for (;;) { struct stat stat_buf; size_t slen = 0; @@ -89,19 +91,19 @@ char *yaz_filepath_resolve(const char *fname, const char *path, if (!len) break; - if (!strchr ("/\\", *comp) && base) + if (!strchr("/\\", *comp) && base) { /* yes: make base the first part */ - strcpy (fullpath, base); + strcpy(fullpath, base); slen = strlen(fullpath); fullpath[slen++] = '/'; } - memcpy (fullpath+slen, comp, len); + memcpy(fullpath+slen, comp, len); slen += len; - if (slen > 0 && !strchr("/\\", fullpath[slen-1])) + if(slen > 0 && !strchr("/\\", fullpath[slen-1])) fullpath[slen++] = '/'; } - strcpy (fullpath+slen, fname); + strcpy(fullpath+slen, fname); if (stat(fullpath, &stat_buf) == 0) return fullpath; if (!path) @@ -120,14 +122,15 @@ FILE *yaz_fopen(const char *path, const char *fname, const char *mode, return fopen(fullpath, mode); } -int yaz_is_abspath (const char *p) +int yaz_is_abspath(const char *p) { if (*p == '/') return 1; #ifdef WIN32 if (*p == '\\') return 1; - if (*p && p[1] == ':' && isalpha(*p)) + if (*p && p[1] == ':' && + ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z'))) return 1; #endif return 0; diff --git a/test/test_tpath.c b/test/test_tpath.c index 9009949..df1ff0e 100644 --- a/test/test_tpath.c +++ b/test/test_tpath.c @@ -23,7 +23,7 @@ static void tst_tpath(void) YAZ_CHECK(!yaz_filepath_resolve("does_not_exist", ".", 0, fullpath)); YAZ_CHECK(yaz_filepath_resolve("test_tpath", 0, 0, fullpath)); - YAZ_CHECK(!yaz_filepath_resolve("test_tpath", "", 0, fullpath)); + YAZ_CHECK(yaz_filepath_resolve("test_tpath", "", 0, fullpath)); YAZ_CHECK(yaz_filepath_resolve("test_tpath", ".", 0, fullpath)); YAZ_CHECK(!yaz_filepath_resolve("test_tpath", "unknown_dir", 0, fullpath)); diff --git a/win/makefile b/win/makefile index e6f3be0..54e3881 100644 --- a/win/makefile +++ b/win/makefile @@ -409,6 +409,7 @@ MISC_OBJS= \ $(OBJDIR)\cclqual.obj \ $(OBJDIR)\cclstr.obj \ $(OBJDIR)\ccltoken.obj \ + $(OBJDIR)\cclxmlconfig.obj \ $(OBJDIR)\ccl_stop_words.obj \ $(OBJDIR)\comstack.obj \ $(OBJDIR)\tcpip.obj \