[PATCH 13/15] vcs-svn: Split off function for handling of individual properties

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The handle_property function is the part of read_props that would be
interesting for most people: semantics of properties rather than the
algorithm for parsing them.

Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
---
 vcs-svn/svndump.c |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c
index 5de32e1..3acc36c 100644
--- a/vcs-svn/svndump.c
+++ b/vcs-svn/svndump.c
@@ -30,7 +30,7 @@
 /* Create memory pool for log messages */
 obj_pool_gen(log, char, 4096)
 
-static char* log_copy(uint32_t length, char *log)
+static char *log_copy(uint32_t length, const char *log)
 {
 	char *buffer;
 	log_free(log_pool.size);
@@ -115,6 +115,23 @@ static void init_keys(void)
 	keys.prop_delta = pool_intern("Prop-delta");
 }
 
+static void handle_property(uint32_t key, const char *val, uint32_t len)
+{
+	if (key == keys.svn_log) {
+		/* Value length excludes terminating nul. */
+		rev_ctx.log = log_copy(len + 1, val);
+	} else if (key == keys.svn_author) {
+		rev_ctx.author = pool_intern(val);
+	} else if (key == keys.svn_date) {
+		if (parse_date_basic(val, &rev_ctx.timestamp, NULL))
+			fprintf(stderr, "Invalid timestamp: %s\n", val);
+	} else if (key == keys.svn_executable) {
+		node_ctx.type = REPO_MODE_EXE;
+	} else if (key == keys.svn_special) {
+		node_ctx.type = REPO_MODE_LNK;
+	}
+}
+
 static void read_props(void)
 {
 	uint32_t len;
@@ -129,19 +146,7 @@ static void read_props(void)
 		} else if (!strncmp(t, "V ", 2)) {
 			len = atoi(&t[2]);
 			val = buffer_read_string(len);
-			if (key == keys.svn_log) {
-				/* Value length excludes terminating nul. */
-				rev_ctx.log = log_copy(len + 1, val);
-			} else if (key == keys.svn_author) {
-				rev_ctx.author = pool_intern(val);
-			} else if (key == keys.svn_date) {
-				if (parse_date_basic(val, &rev_ctx.timestamp, NULL))
-					fprintf(stderr, "Invalid timestamp: %s\n", val);
-			} else if (key == keys.svn_executable) {
-				node_ctx.type = REPO_MODE_EXE;
-			} else if (key == keys.svn_special) {
-				node_ctx.type = REPO_MODE_LNK;
-			}
+			handle_property(key, val, len);
 			key = ~0;
 			buffer_read_line();
 		}
-- 
1.7.2.3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]