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;