Merge branch 'mh/fetch-pack-constness'
authorJunio C Hamano <gitster@pobox.com>
Tue, 29 May 2012 20:08:53 +0000 (13:08 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 May 2012 20:08:53 +0000 (13:08 -0700)
Tighten constness of some local variables in a callchain.

By Michael Haggerty
* mh/fetch-pack-constness:
cmd_fetch_pack(): respect constness of argv parameter
cmd_fetch_pack(): combine the loop termination conditions
cmd_fetch_pack(): handle non-option arguments outside of the loop
cmd_fetch_pack(): declare dest to be const

1  2 
builtin/fetch-pack.c
diff --combined builtin/fetch-pack.c
index 10db15b18403f01b9ee5db27b37d1e0cdbb2abb1,80e72df494e8d4a80a1fe131534e34f91b3977b5..7ad9e54a75892390d6ec670df9b5af2e1c70bf6f
@@@ -60,9 -60,9 +60,9 @@@ static void rev_list_push(struct commi
        }
  }
  
 -static int rev_list_insert_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data)
 +static int rev_list_insert_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
  {
 -      struct object *o = deref_tag(parse_object(sha1), path, 0);
 +      struct object *o = deref_tag(parse_object(sha1), refname, 0);
  
        if (o && o->type == OBJ_COMMIT)
                rev_list_push((struct commit *)o, SEEN);
@@@ -70,9 -70,9 +70,9 @@@
        return 0;
  }
  
 -static int clear_marks(const char *path, const unsigned char *sha1, int flag, void *cb_data)
 +static int clear_marks(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
  {
 -      struct object *o = deref_tag(parse_object(sha1), path, 0);
 +      struct object *o = deref_tag(parse_object(sha1), refname, 0);
  
        if (o && o->type == OBJ_COMMIT)
                clear_commit_marks((struct commit *)o,
@@@ -258,6 -258,11 +258,6 @@@ static void insert_one_alternate_ref(co
        rev_list_insert_ref(NULL, ref->old_sha1, 0, NULL);
  }
  
 -static void insert_alternate_refs(void)
 -{
 -      for_each_alternate_ref(insert_one_alternate_ref, NULL);
 -}
 -
  #define INITIAL_FLUSH 16
  #define PIPESAFE_FLUSH 32
  #define LARGE_FLUSH 1024
@@@ -292,7 -297,7 +292,7 @@@ static int find_common(int fd[2], unsig
        marked = 1;
  
        for_each_ref(rev_list_insert_ref, NULL);
 -      insert_alternate_refs();
 +      for_each_alternate_ref(insert_one_alternate_ref, NULL);
  
        fetching = 0;
        for ( ; refs ; refs = refs->next) {
@@@ -490,7 -495,7 +490,7 @@@ done
  
  static struct commit_list *complete;
  
 -static int mark_complete(const char *path, const unsigned char *sha1, int flag, void *cb_data)
 +static int mark_complete(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
  {
        struct object *o = parse_object(sha1);
  
@@@ -583,11 -588,6 +583,11 @@@ static void filter_refs(struct ref **re
        *refs = newlist;
  }
  
 +static void mark_alternate_complete(const struct ref *ref, void *unused)
 +{
 +      mark_complete(NULL, ref->old_sha1, 0, NULL);
 +}
 +
  static int everything_local(struct ref **refs, int nr_match, char **match)
  {
        struct ref *ref;
  
        if (!args.depth) {
                for_each_ref(mark_complete, NULL);
 +              for_each_alternate_ref(mark_alternate_complete, NULL);
                if (cutoff)
                        mark_recent_complete_commits(cutoff);
        }
@@@ -739,7 -738,7 +739,7 @@@ static int get_pack(int xd[2], char **p
        }
        else {
                *av++ = "unpack-objects";
 -              if (args.quiet)
 +              if (args.quiet || args.no_progress)
                        *av++ = "-q";
        }
        if (*hdr_arg)
@@@ -899,9 -898,11 +899,11 @@@ static void fetch_pack_setup(void
  
  int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
  {
-       int i, ret, nr_heads;
+       int i, ret;
        struct ref *ref = NULL;
-       char *dest = NULL, **heads;
+       const char *dest = NULL;
+       int alloc_heads = 0, nr_heads = 0;
+       char **heads = NULL;
        int fd[2];
        char *pack_lockfile = NULL;
        char **pack_lockfile_ptr = NULL;
  
        packet_trace_identity("fetch-pack");
  
-       nr_heads = 0;
-       heads = NULL;
-       for (i = 1; i < argc; i++) {
+       for (i = 1; i < argc && *argv[i] == '-'; i++) {
                const char *arg = argv[i];
  
-               if (*arg == '-') {
-                       if (!prefixcmp(arg, "--upload-pack=")) {
-                               args.uploadpack = arg + 14;
-                               continue;
-                       }
-                       if (!prefixcmp(arg, "--exec=")) {
-                               args.uploadpack = arg + 7;
-                               continue;
-                       }
-                       if (!strcmp("--quiet", arg) || !strcmp("-q", arg)) {
-                               args.quiet = 1;
-                               continue;
-                       }
-                       if (!strcmp("--keep", arg) || !strcmp("-k", arg)) {
-                               args.lock_pack = args.keep_pack;
-                               args.keep_pack = 1;
-                               continue;
-                       }
-                       if (!strcmp("--thin", arg)) {
-                               args.use_thin_pack = 1;
-                               continue;
-                       }
-                       if (!strcmp("--include-tag", arg)) {
-                               args.include_tag = 1;
-                               continue;
-                       }
-                       if (!strcmp("--all", arg)) {
-                               args.fetch_all = 1;
-                               continue;
-                       }
-                       if (!strcmp("--stdin", arg)) {
-                               args.stdin_refs = 1;
-                               continue;
-                       }
-                       if (!strcmp("-v", arg)) {
-                               args.verbose = 1;
-                               continue;
-                       }
-                       if (!prefixcmp(arg, "--depth=")) {
-                               args.depth = strtol(arg + 8, NULL, 0);
-                               continue;
-                       }
-                       if (!strcmp("--no-progress", arg)) {
-                               args.no_progress = 1;
-                               continue;
-                       }
-                       if (!strcmp("--stateless-rpc", arg)) {
-                               args.stateless_rpc = 1;
-                               continue;
-                       }
-                       if (!strcmp("--lock-pack", arg)) {
-                               args.lock_pack = 1;
-                               pack_lockfile_ptr = &pack_lockfile;
-                               continue;
-                       }
-                       usage(fetch_pack_usage);
+               if (!prefixcmp(arg, "--upload-pack=")) {
+                       args.uploadpack = arg + 14;
+                       continue;
+               }
+               if (!prefixcmp(arg, "--exec=")) {
+                       args.uploadpack = arg + 7;
+                       continue;
                }
-               dest = (char *)arg;
-               heads = (char **)(argv + i + 1);
-               nr_heads = argc - i - 1;
-               break;
+               if (!strcmp("--quiet", arg) || !strcmp("-q", arg)) {
+                       args.quiet = 1;
+                       continue;
+               }
+               if (!strcmp("--keep", arg) || !strcmp("-k", arg)) {
+                       args.lock_pack = args.keep_pack;
+                       args.keep_pack = 1;
+                       continue;
+               }
+               if (!strcmp("--thin", arg)) {
+                       args.use_thin_pack = 1;
+                       continue;
+               }
+               if (!strcmp("--include-tag", arg)) {
+                       args.include_tag = 1;
+                       continue;
+               }
+               if (!strcmp("--all", arg)) {
+                       args.fetch_all = 1;
+                       continue;
+               }
+               if (!strcmp("--stdin", arg)) {
+                       args.stdin_refs = 1;
+                       continue;
+               }
+               if (!strcmp("-v", arg)) {
+                       args.verbose = 1;
+                       continue;
+               }
+               if (!prefixcmp(arg, "--depth=")) {
+                       args.depth = strtol(arg + 8, NULL, 0);
+                       continue;
+               }
+               if (!strcmp("--no-progress", arg)) {
+                       args.no_progress = 1;
+                       continue;
+               }
+               if (!strcmp("--stateless-rpc", arg)) {
+                       args.stateless_rpc = 1;
+                       continue;
+               }
+               if (!strcmp("--lock-pack", arg)) {
+                       args.lock_pack = 1;
+                       pack_lockfile_ptr = &pack_lockfile;
+                       continue;
+               }
+               usage(fetch_pack_usage);
        }
-       if (!dest)
+       if (i < argc)
+               dest = argv[i++];
+       else
                usage(fetch_pack_usage);
  
+       /*
+        * Copy refs from cmdline to growable list, then append any
+        * refs from the standard input:
+        */
+       ALLOC_GROW(heads, argc - i, alloc_heads);
+       for (; i < argc; i++)
+               heads[nr_heads++] = xstrdup(argv[i]);
        if (args.stdin_refs) {
-               /*
-                * Copy refs from cmdline to new growable list, then
-                * append the refs from the standard input.
-                */
-               int alloc_heads = nr_heads;
-               int size = nr_heads * sizeof(*heads);
-               heads = memcpy(xmalloc(size), heads, size);
                if (args.stateless_rpc) {
                        /* in stateless RPC mode we use pkt-line to read
                         * from stdin, until we get a flush packet
                fd[0] = 0;
                fd[1] = 1;
        } else {
-               conn = git_connect(fd, (char *)dest, args.uploadpack,
+               conn = git_connect(fd, dest, args.uploadpack,
                                   args.verbose ? CONNECT_VERBOSE : 0);
        }