Author: cmpilato
Date: Fri Jun 17 17:23:59 2011
New Revision: 1136949

URL: http://svn.apache.org/viewvc?rev=1136949&view=rev
Log:
Fix issue #3928 ("file size member in status struct") by introducing
into the svn_wc and svn_client status structures a 'filesize' member
for carrying the size of a working file.

* subversion/include/svn_wc.h
  (svn_wc_status3_t): Add 'filesize' member.

* subversion/include/svn_client.h
  (svn_client_status_t): Add 'filesize' member.

* subversion/libsvn_wc/status.c
  (assemble_status, assemble_unversioned): Populate the new 'filesize' member.

* subversion/libsvn_client/status.c
  (svn_client__create_status): Populate 'filesize' member.

Modified:
    subversion/trunk/subversion/include/svn_client.h
    subversion/trunk/subversion/include/svn_wc.h
    subversion/trunk/subversion/libsvn_client/status.c
    subversion/trunk/subversion/libsvn_wc/status.c

Modified: subversion/trunk/subversion/include/svn_client.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_client.h?rev=1136949&r1=1136948&r2=1136949&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_client.h (original)
+++ subversion/trunk/subversion/include/svn_client.h Fri Jun 17 17:23:59 2011
@@ -2082,6 +2082,10 @@ typedef struct svn_client_status_t
   /** The absolute path to the node */
   const char *local_abspath;
 
+  /** The actual size of the working file on disk, or -1 if unknown
+   * (or if the item isn't a file at all). */
+  svn_filesize_t filesize;
+
   /** If the path is under version control, versioned is TRUE, otherwise
    * FALSE. */
   svn_boolean_t versioned;

Modified: subversion/trunk/subversion/include/svn_wc.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_wc.h?rev=1136949&r1=1136948&r2=1136949&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_wc.h (original)
+++ subversion/trunk/subversion/include/svn_wc.h Fri Jun 17 17:23:59 2011
@@ -3495,6 +3495,10 @@ typedef struct svn_wc_status3_t
    * (#svn_depth_unknown for files or when no depth is set) */
   svn_depth_t depth;
 
+  /** The actual size of the working file on disk, or -1 if unknown
+   * (or if the item isn't a file at all). */
+  svn_filesize_t filesize;
+
   /** If the path is under version control, versioned is TRUE, otherwise
    * FALSE. */
   svn_boolean_t versioned;

Modified: subversion/trunk/subversion/libsvn_client/status.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/status.c?rev=1136949&r1=1136948&r2=1136949&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/status.c (original)
+++ subversion/trunk/subversion/libsvn_client/status.c Fri Jun 17 17:23:59 2011
@@ -583,6 +583,7 @@ svn_client__create_status(svn_client_sta
 
   (*cst)->kind = status->kind;
   (*cst)->local_abspath = local_abspath;
+  (*cst)->filesize = status->filesize;
   (*cst)->versioned = status->versioned;
 
   (*cst)->conflicted = status->conflicted;

Modified: subversion/trunk/subversion/libsvn_wc/status.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/status.c?rev=1136949&r1=1136948&r2=1136949&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/status.c (original)
+++ subversion/trunk/subversion/libsvn_wc/status.c Fri Jun 17 17:23:59 2011
@@ -393,6 +393,8 @@ assemble_status(svn_wc_status3_t **statu
   svn_error_t *err;
   const char *repos_relpath;
   const char *repos_root_url;
+  svn_filesize_t filesize =
+    (dirent && (dirent->kind == svn_node_file)) ? dirent->filesize : -1;
 
   /* Defaults for two main variables. */
   enum svn_wc_status_kind node_status = svn_wc_status_normal;
@@ -644,6 +646,7 @@ assemble_status(svn_wc_status3_t **statu
         stat->kind = svn_node_unknown;
     }
   stat->depth = info->depth;
+  stat->filesize = filesize;
   stat->node_status = node_status;
   stat->text_status = text_status;
   stat->prop_status = prop_status;
@@ -729,6 +732,7 @@ assemble_unversioned(svn_wc_status3_t **
   /*stat->versioned = FALSE;*/
   stat->kind = svn_node_unknown; /* not versioned */
   stat->depth = svn_depth_unknown;
+  stat->filesize = -1;
   stat->node_status = svn_wc_status_none;
   stat->text_status = svn_wc_status_none;
   stat->prop_status = svn_wc_status_none;


Reply via email to