diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2011-03-24 23:10:00 -0500 |
---|---|---|
committer | Jonathan Nieder <jrnieder@gmail.com> | 2011-03-26 00:41:38 -0500 |
commit | 4c3169b03ec567ac43edcfc08ffdab119e0ebe94 (patch) | |
tree | 541d5ba6cf8d399d2e6d85fcfe877d676e2d68fa | |
parent | 7e2fe3a9fc816391b322ad9b3f2adf9342631db6 (diff) | |
download | git-4c3169b03ec567ac43edcfc08ffdab119e0ebe94.tar.gz git-4c3169b03ec567ac43edcfc08ffdab119e0ebe94.tar.xz |
vcs-svn: avoid unnecessary copying of log message and author
Use strbuf_swap when storing the svn:log and svn:author properties, so
pointers to rather than the contents of buffers get copied. The main
effect should be to make the code a little easier to read.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
-rw-r--r-- | vcs-svn/svndump.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c index c00f03117..88ecef106 100644 --- a/vcs-svn/svndump.c +++ b/vcs-svn/svndump.c @@ -83,7 +83,7 @@ static void reset_dump_ctx(const char *url) } static void handle_property(const struct strbuf *key_buf, - const char *val, uint32_t len, + struct strbuf *val, uint32_t *type_set) { const char *key = key_buf->buf; @@ -95,23 +95,23 @@ static void handle_property(const struct strbuf *key_buf, break; if (!val) die("invalid dump: unsets svn:log"); - strbuf_reset(&rev_ctx.log); - strbuf_add(&rev_ctx.log, val, len); + strbuf_swap(&rev_ctx.log, val); break; case sizeof("svn:author"): if (constcmp(key, "svn:author")) break; - strbuf_reset(&rev_ctx.author); - if (val) - strbuf_add(&rev_ctx.author, val, len); + if (!val) + strbuf_reset(&rev_ctx.author); + else + strbuf_swap(&rev_ctx.author, val); break; case sizeof("svn:date"): if (constcmp(key, "svn:date")) break; if (!val) die("invalid dump: unsets svn:date"); - if (parse_date_basic(val, &rev_ctx.timestamp, NULL)) - warning("invalid timestamp: %s", val); + if (parse_date_basic(val->buf, &rev_ctx.timestamp, NULL)) + warning("invalid timestamp: %s", val->buf); break; case sizeof("svn:executable"): case sizeof("svn:special"): @@ -187,10 +187,10 @@ static void read_props(void) strbuf_swap(&key, &val); continue; case 'D': - handle_property(&val, NULL, 0, &type_set); + handle_property(&val, NULL, &type_set); continue; case 'V': - handle_property(&key, val.buf, len, &type_set); + handle_property(&key, &val, &type_set); strbuf_reset(&key); continue; default: |