src/lib/udc.c 1.33
1.33 2010/02/23 22:04:07 angie
When getting updateTime and size from the cache bitmap file, get the real remote update time from the bitmap file contents, not the bitmap fileModTime.
Index: src/lib/udc.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/udc.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -b -B -U 4 -r1.32 -r1.33
--- src/lib/udc.c 5 Jan 2010 17:32:07 -0000 1.32
+++ src/lib/udc.c 23 Feb 2010 22:04:07 -0000 1.33
@@ -741,16 +741,20 @@
file->bitmapFileName = fileNameInCacheDir(file, bitmapName);
file->sparseFileName = fileNameInCacheDir(file, sparseDataName);
}
-static long long int udcSizeFromBitmap(char *bitmapFileName)
+static long long int udcSizeAndModTimeFromBitmap(char *bitmapFileName, time_t *retTime)
/* Look up the file size from the local cache bitmap file, or -1 if there
- * is no cache for url. */
+ * is no cache for url. If retTime is non-null, store the remote update time in it. */
{
long long int ret = -1;
struct udcBitmap *bits = udcBitmapOpen(bitmapFileName);
if (bits != NULL)
+ {
ret = bits->fileSize;
+ if (retTime)
+ *retTime = bits->remoteUpdate;
+ }
else
warn("Can't open bitmap file %s: %s\n", bitmapFileName, strerror(errno));
udcBitmapClose(&bits);
return ret;
@@ -813,10 +817,9 @@
{
udcPathAndFileNames(file, cacheDir, protocol, afterProtocol);
if (useCacheInfo)
{
- file->updateTime = fileModTime(file->bitmapFileName);
- file->size = udcSizeFromBitmap(file->bitmapFileName);
+ file->size = udcSizeAndModTimeFromBitmap(file->bitmapFileName, &(file->updateTime));
}
else
{
file->updateTime = info.updateTime;
@@ -953,9 +956,9 @@
struct slName *sl, *slList = udcFileCacheFiles(url, cacheDir);
for (sl = slList; sl != NULL; sl = sl->next)
if (endsWith(sl->name, bitmapName))
{
- ret = udcSizeFromBitmap(sl->name);
+ ret = udcSizeAndModTimeFromBitmap(sl->name, NULL);
break;
}
slNameFreeList(&slList);
return ret;