Fixed a typo resulting in absolute cases not being picked up well.
Index: src/file.c
==================================================================
--- src/file.c
+++ src/file.c
@@ -327,24 +327,30 @@
** zFilename is a directory -OR- a symlink that points to a directory.
** Return 0 if zFilename does not exist. Return 2 if zFilename exists
** but is something other than a directory.
*/
int file_wd_isdir(const char *zFilename){
- int rc;
+ int rc, nFN;
char *zFN;
zFN = mprintf("%s", zFilename);
- file_simplify_name(zFN, -1, 0);
+ nFN = file_simplify_name(zFN, -1, 0);
rc = getStat(zFN, 1);
if( rc ){
rc = 0; /* It does not exist at all. */
}else if( S_ISDIR(fileStat.st_mode) ){
rc = 1; /* It exists and is a real directory. */
}else if( S_ISLNK(fileStat.st_mode) ){
Blob content;
+ char *zFullName;
blob_read_link(&content, zFN); /* It exists and is a link. */
- rc = file_wd_isdir(blob_str(&content)); /* Points to directory? */
+ if(*blob_str(&content) != '/') {
+ while( nFN>0 && zFN[nFN-1]!='/' ){ nFN--; }
+ } else { nFN = 0; }
+ zFullName = mprintf("%.*s%s", nFN, zFN, blob_str(&content));
+ rc = file_wd_isdir(zFullName); /* Points to directory? */
+ free(zFullName);
blob_reset(&content);
}else{
rc = 2; /* It exists and is something else. */
}
free(zFN);
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users