src/lib/udc.c 1.35

1.35 2010/02/25 22:55:55 angie
No need to use sparseFile in addition to bitmap file for cache age/timeout, and it causes trouble when bitmap exists but sparseData doesn't (yet). Also, moved verbose() up to where it wouldn't cause segv.
Index: src/lib/udc.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/udc.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -b -B -U 4 -r1.34 -r1.35
--- src/lib/udc.c	24 Feb 2010 00:55:09 -0000	1.34
+++ src/lib/udc.c	25 Feb 2010 22:55:55 -0000	1.35
@@ -598,15 +598,15 @@
     {
     version = bits->version;
     if (bits->remoteUpdate != file->updateTime || bits->fileSize != file->size)
 	{
+	verbose(2, "removing stale version (%lld! = %lld or %lld! = %lld), new version %d\n",
+		bits->remoteUpdate, (long long)file->updateTime, bits->fileSize, file->size,
+		version);
         udcBitmapClose(&bits);
 	remove(file->bitmapFileName);
 	remove(file->sparseFileName);
 	++version;
-	verbose(2, "removing stale version (%lld! = %lld or %lld! = %lld), new version %d\n",
-		bits->remoteUpdate, (long long)file->updateTime, bits->fileSize, file->size,
-		version);
 	}
     }
 else
     verbose(2, "bitmap file %s does not already exist, creating.\n", file->bitmapFileName);
@@ -827,12 +827,9 @@
 	memcpy(&(file->connInfo), &(info.ci), sizeof(struct connInfo));
 	// update cache file mod times, so if we're caching we won't do this again
 	// until the timeout has expired again:
 	if (udcCacheTimeout() > 0 && fileExists(file->bitmapFileName))
-	    {
 	    touchFile(file->bitmapFileName);
-	    touchFile(file->sparseFileName);
-	    }
 	}
 
     /* Make directory. */
     makeDirsOnPath(file->cacheDir);
@@ -981,12 +978,15 @@
 struct slName *sl, *slList = udcFileCacheFiles(url, cacheDir);
 if (slList == NULL)
     return now;
 for (sl = slList;  sl != NULL;  sl = sl->next)
+    if (endsWith(sl->name, bitmapName))
+	{
     if (fileExists(sl->name))
 	oldestTime = min(fileModTime(sl->name), oldestTime);
     else
 	return now;
+	}
 return (now - oldestTime);
 }
 
 static void readBitsIntoBuf(int fd, int headerSize, int bitStart, int bitEnd,