Merge branch 'rs/archive-tree-in-tip-simplify'
authorJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2012 20:35:22 +0000 (13:35 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2012 20:35:22 +0000 (13:35 -0700)
By René Scharfe
* rs/archive-tree-in-tip-simplify:
archive-tar: keep const in checksum calculation
archive: simplify refname handling

archive-tar.c
archive.c
index 93387ea336b107340d789240b287bf0a12409f24..dc91c6b50d56ad8fd9921d0e47f5b45cafdcfc4d 100644 (file)
@@ -139,13 +139,13 @@ static void strbuf_append_ext_header(struct strbuf *sb, const char *keyword,
 
 static unsigned int ustar_header_chksum(const struct ustar_header *header)
 {
-       char *p = (char *)header;
+       const char *p = (const char *)header;
        unsigned int chksum = 0;
        while (p < header->chksum)
                chksum += *p++;
        chksum += sizeof(header->chksum) * ' ';
        p += sizeof(header->chksum);
-       while (p < (char *)header + sizeof(struct ustar_header))
+       while (p < (const char *)header + sizeof(struct ustar_header))
                chksum += *p++;
        return chksum;
 }
index cd083eaf9aa2f1ae4cfc57d90fb11b8f808fbfe7..a4844330fb4da325aa364640dc80f052dc7b7ad7 100644 (file)
--- a/archive.c
+++ b/archive.c
@@ -254,18 +254,11 @@ static void parse_treeish_arg(const char **argv,
        /* Remotes are only allowed to fetch actual refs */
        if (remote) {
                char *ref = NULL;
-               const char *refname, *colon = NULL;
-
-               colon = strchr(name, ':');
-               if (colon)
-                       refname = xstrndup(name, colon - name);
-               else
-                       refname = name;
-
-               if (!dwim_ref(refname, strlen(refname), sha1, &ref))
-                       die("no such ref: %s", refname);
-               if (refname != name)
-                       free((void *)refname);
+               const char *colon = strchr(name, ':');
+               int refnamelen = colon ? colon - name : strlen(name);
+
+               if (!dwim_ref(name, refnamelen, sha1, &ref))
+                       die("no such ref: %.*s", refnamelen, name);
                free(ref);
        }