Windows: Return bytes_read count from cm_GetData
[openafs.git] / src / WINNT / afsd / cm_dcache.c
index 5ced48f..6dc23fd 100644 (file)
@@ -2222,7 +2222,7 @@ long cm_GetBuffer(cm_scache_t *scp, cm_buf_t *bufp, int *cpffp, cm_user_t *userp
  * a provided buffer.  Called with scp locked. The scp is locked on return.
  */
 long cm_GetData(cm_scache_t *scp, osi_hyper_t *offsetp, char *datap, int data_length,
-                cm_user_t *userp, cm_req_t *reqp)
+                int * bytes_readp, cm_user_t *userp, cm_req_t *reqp)
 {
     long code=0, code1=0;
     afs_uint32 nbytes;                 /* bytes in transfer */
@@ -2247,6 +2247,9 @@ long cm_GetData(cm_scache_t *scp, osi_hyper_t *offsetp, char *datap, int data_le
     int first_read = 1;
     int scp_locked = 1;
 
+    if (bytes_readp)
+        *bytes_readp = 0;
+
     memset(&afsStatus, 0, sizeof(afsStatus));
     memset(&callback, 0, sizeof(callback));
     memset(&volSync, 0, sizeof(volSync));
@@ -2571,6 +2574,8 @@ long cm_GetData(cm_scache_t *scp, osi_hyper_t *offsetp, char *datap, int data_le
     else
         InterlockedDecrement(&scp->activeRPCs);
 
+    *bytes_readp = (long) (bufferp - datap);
+
     return code;
 }