1ff2e18ba5e50dd2d1becd3cd6a25343578c10b8
markd
  Tue Apr 21 14:09:04 2026 -0700
rework of htslib/UDC integration to use htslib hfile driver mechanism

diff --git src/inc/udc.h src/inc/udc.h
index c0076cde199..cf7ebb7a549 100644
--- src/inc/udc.h
+++ src/inc/udc.h
@@ -91,30 +91,33 @@
 
 struct lineFile *udcWrapShortLineFile(char *url, char *cacheDir, size_t maxSize);
 /* Read in entire short (up to maxSize) url into memory and wrap a line file around it.
  * The cacheDir may be null in which case udcDefaultDir() will be used.  If maxSize
  * is zero then a default value (currently 64 meg) will be used. */
 
 void udcSeek(struct udcFile *file, bits64 offset);
 /* Seek to a particular (absolute) position in file. */
 
 void udcSeekCur(struct udcFile *file, bits64 offset);
 /* Seek to a particular (from current) position in file. */
 
 bits64 udcTell(struct udcFile *file);
 /* Return current file position. */
 
+bits64 udcFileOpenSize(struct udcFile *file);
+/* Return size of open file. */
+
 bits64 udcCleanup(char *cacheDir, double maxDays, boolean testOnly);
 /* Remove cached files older than maxDays old. If testOnly is set
  * no clean up is done, but the size of the files that would be
  * cleaned up is still. */
 
 void udcParseUrl(char *url, char **retProtocol, char **retAfterProtocol, char **retColon);
 /* Parse the URL into components that udc treats separately. 
  * *retAfterProtocol is Q-encoded to keep special chars out of filenames.  
  * Free all *ret's except *retColon when done. */
 
 void udcParseUrlFull(char *url, char **retProtocol, char **retAfterProtocol, char **retColon,
 		     char **retAuth);
 /* Parse the URL into components that udc treats separately.
  * *retAfterProtocol is Q-encoded to keep special chars out of filenames.  
  * Free all *ret's except *retColon when done. */