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;