Merge branch 'rs/code-cleaning'
authorJunio C Hamano <gitster@pobox.com>
Tue, 22 Jul 2014 17:59:36 +0000 (10:59 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 Jul 2014 17:59:37 +0000 (10:59 -0700)
* rs/code-cleaning:
remote-testsvn: use internal argv_array of struct child_process in cmd_import()
bundle: use internal argv_array of struct child_process in create_bundle()
fast-import: use hashcmp() for SHA1 hash comparison
transport: simplify fetch_objs_via_rsync() using argv_array
run-command: use internal argv_array of struct child_process in run_hook_ve()
use commit_list_count() to count the members of commit_lists
strbuf: use strbuf_addstr() for adding C strings

1  2 
builtin/blame.c
builtin/commit.c
commit.c
path.c
pretty.c
diff --combined builtin/blame.c
index 23212cbe87623c13772e5743a6b03a57a91749b0,75b3a028a729f2fa447d8c0d81e21c08ba25977d..17d30d00aa3f6c4d0f62cae6603f9003dd2f2395
@@@ -1371,11 -1371,8 +1371,8 @@@ static struct commit_list *first_scapeg
  
  static int num_scapegoats(struct rev_info *revs, struct commit *commit)
  {
-       int cnt;
        struct commit_list *l = first_scapegoat(revs, commit);
-       for (cnt = 0; l; l = l->next)
-               cnt++;
-       return cnt;
+       return commit_list_count(l);
  }
  
  /* Distribute collected unsorted blames to the respected sorted lists
@@@ -2287,6 -2284,7 +2284,6 @@@ static struct commit *fake_working_tree
        commit = alloc_commit_node();
        commit->object.parsed = 1;
        commit->date = now;
 -      commit->object.type = OBJ_COMMIT;
        parent_tail = &commit->parents;
  
        if (!resolve_ref_unsafe("HEAD", head_sha1, 1, NULL))
         * right now, but someday we might optimize diff-index --cached
         * with cache-tree information.
         */
 -      cache_tree_invalidate_path(active_cache_tree, path);
 +      cache_tree_invalidate_path(&the_index, path);
  
        return commit;
  }
@@@ -2706,8 -2704,11 +2703,8 @@@ parse_done
                die("revision walk setup failed");
  
        if (is_null_sha1(sb.final->object.sha1)) {
 -              char *buf;
                o = sb.final->util;
 -              buf = xmalloc(o->file.size + 1);
 -              memcpy(buf, o->file.ptr, o->file.size + 1);
 -              sb.final_buf = buf;
 +              sb.final_buf = xmemdupz(o->file.ptr, o->file.size);
                sb.final_buf_size = o->file.size;
        }
        else {
diff --combined builtin/commit.c
index 72eb3beb36cd06f6e41d80d5761a953a1c3a1d56,31d906bbf5973a6aad105ff018b31df951fecec4..f2d7979deb9438ab388e2cefff613b1f8d6d3c56
@@@ -305,6 -305,7 +305,6 @@@ static void refresh_cache_or_die(int re
  static char *prepare_index(int argc, const char **argv, const char *prefix,
                           const struct commit *current_head, int is_status)
  {
 -      int fd;
        struct string_list partial;
        struct pathspec pathspec;
        int refresh_flags = REFRESH_QUIET;
  
        if (interactive) {
                char *old_index_env = NULL;
 -              fd = hold_locked_index(&index_lock, 1);
 +              hold_locked_index(&index_lock, 1);
  
                refresh_cache_or_die(refresh_flags);
  
 -              if (write_cache(fd, active_cache, active_nr) ||
 -                  close_lock_file(&index_lock))
 +              if (write_locked_index(&the_index, &index_lock, CLOSE_LOCK))
                        die(_("unable to create temporary index"));
  
                old_index_env = getenv(INDEX_ENVIRONMENT);
         * (B) on failure, rollback the real index.
         */
        if (all || (also && pathspec.nr)) {
 -              fd = hold_locked_index(&index_lock, 1);
 +              hold_locked_index(&index_lock, 1);
                add_files_to_cache(also ? prefix : NULL, &pathspec, 0);
                refresh_cache_or_die(refresh_flags);
                update_main_cache_tree(WRITE_TREE_SILENT);
 -              if (write_cache(fd, active_cache, active_nr) ||
 -                  close_lock_file(&index_lock))
 +              if (write_locked_index(&the_index, &index_lock, CLOSE_LOCK))
                        die(_("unable to write new_index file"));
                commit_style = COMMIT_NORMAL;
                return index_lock.filename;
         * We still need to refresh the index here.
         */
        if (!only && !pathspec.nr) {
 -              fd = hold_locked_index(&index_lock, 1);
 +              hold_locked_index(&index_lock, 1);
                refresh_cache_or_die(refresh_flags);
                if (active_cache_changed) {
                        update_main_cache_tree(WRITE_TREE_SILENT);
 -                      if (write_cache(fd, active_cache, active_nr) ||
 -                          commit_locked_index(&index_lock))
 +                      if (write_locked_index(&the_index, &index_lock,
 +                                             COMMIT_LOCK))
                                die(_("unable to write new_index file"));
                } else {
                        rollback_lock_file(&index_lock);
        if (read_cache() < 0)
                die(_("cannot read the index"));
  
 -      fd = hold_locked_index(&index_lock, 1);
 +      hold_locked_index(&index_lock, 1);
        add_remove_files(&partial);
        refresh_cache(REFRESH_QUIET);
 -      if (write_cache(fd, active_cache, active_nr) ||
 -          close_lock_file(&index_lock))
 +      if (write_locked_index(&the_index, &index_lock, CLOSE_LOCK))
                die(_("unable to write new_index file"));
  
 -      fd = hold_lock_file_for_update(&false_lock,
 -                                     git_path("next-index-%"PRIuMAX,
 -                                              (uintmax_t) getpid()),
 -                                     LOCK_DIE_ON_ERROR);
 +      hold_lock_file_for_update(&false_lock,
 +                                git_path("next-index-%"PRIuMAX,
 +                                         (uintmax_t) getpid()),
 +                                LOCK_DIE_ON_ERROR);
  
        create_base_index(current_head);
        add_remove_files(&partial);
        refresh_cache(REFRESH_QUIET);
  
 -      if (write_cache(fd, active_cache, active_nr) ||
 -          close_lock_file(&false_lock))
 +      if (write_locked_index(&the_index, &false_lock, CLOSE_LOCK))
                die(_("unable to write temporary index file"));
  
        discard_cache();
@@@ -702,7 -707,7 +702,7 @@@ static int prepare_to_commit(const cha
                char *buffer;
                buffer = strstr(use_message_buffer, "\n\n");
                if (buffer)
-                       strbuf_add(&sb, buffer + 2, strlen(buffer + 2));
+                       strbuf_addstr(&sb, buffer + 2);
                hook_arg1 = "commit";
                hook_arg2 = use_message;
        } else if (fixup_message) {
diff --combined commit.c
index 90a6d2974f321cf045fa801cb3409b8dffeeaddb,464a139e611343742a0d9c2540428d138439f462..dce3d69dfdf5843b6dbae78a5c85a4060ca7604b
+++ b/commit.c
@@@ -18,6 -18,19 +18,6 @@@ int save_commit_buffer = 1
  
  const char *commit_type = "commit";
  
 -static struct commit *check_commit(struct object *obj,
 -                                 const unsigned char *sha1,
 -                                 int quiet)
 -{
 -      if (obj->type != OBJ_COMMIT) {
 -              if (!quiet)
 -                      error("Object %s is a %s, not a commit",
 -                            sha1_to_hex(sha1), typename(obj->type));
 -              return NULL;
 -      }
 -      return (struct commit *) obj;
 -}
 -
  struct commit *lookup_commit_reference_gently(const unsigned char *sha1,
                                              int quiet)
  {
@@@ -25,7 -38,7 +25,7 @@@
  
        if (!obj)
                return NULL;
 -      return check_commit(obj, sha1, quiet);
 +      return object_as_type(obj, OBJ_COMMIT, quiet);
  }
  
  struct commit *lookup_commit_reference(const unsigned char *sha1)
@@@ -48,9 -61,13 +48,9 @@@ struct commit *lookup_commit_or_die(con
  struct commit *lookup_commit(const unsigned char *sha1)
  {
        struct object *obj = lookup_object(sha1);
 -      if (!obj) {
 -              struct commit *c = alloc_commit_node();
 -              return create_object(sha1, OBJ_COMMIT, c);
 -      }
 -      if (!obj->type)
 -              obj->type = OBJ_COMMIT;
 -      return check_commit(obj, sha1, 0);
 +      if (!obj)
 +              return create_object(sha1, alloc_commit_node());
 +      return object_as_type(obj, OBJ_COMMIT, 0);
  }
  
  struct commit *lookup_commit_reference_by_name(const char *name)
@@@ -970,12 -987,7 +970,7 @@@ struct commit_list *get_merge_bases_man
        }
  
        /* There are more than one */
-       cnt = 0;
-       list = result;
-       while (list) {
-               list = list->next;
-               cnt++;
-       }
+       cnt = commit_list_count(result);
        rslt = xcalloc(cnt, sizeof(*rslt));
        for (list = result, i = 0; list; list = list->next)
                rslt[i++] = list->item;
@@@ -1248,7 -1260,6 +1243,7 @@@ void check_commit_signature(const struc
                                      &gpg_output, &gpg_status);
        if (status && !gpg_output.len)
                goto out;
 +      sigc->payload = strbuf_detach(&payload, NULL);
        sigc->gpg_output = strbuf_detach(&gpg_output, NULL);
        sigc->gpg_status = strbuf_detach(&gpg_status, NULL);
        parse_gpg_output(sigc);
@@@ -1293,19 -1304,6 +1288,19 @@@ struct commit_extra_header *read_commit
        return extra;
  }
  
 +void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data)
 +{
 +      struct commit_extra_header *extra, *to_free;
 +
 +      to_free = read_commit_extra_headers(commit, NULL);
 +      for (extra = to_free; extra; extra = extra->next) {
 +              if (strcmp(extra->key, "mergetag"))
 +                      continue; /* not a merge tag */
 +              fn(commit, extra, data);
 +      }
 +      free_commit_extra_headers(to_free);
 +}
 +
  static inline int standard_header_field(const char *field, size_t len)
  {
        return ((len == 4 && !memcmp(field, "tree ", 5)) ||
diff --combined path.c
index 25c3b8ba7ef0ed5013626a43774f415f18bc19ef,c3883d43d8de726f0f4f0b38248801916c19ab67..3afcdb432a009b5e1c869123139192cf1a688292
--- 1/path.c
--- 2/path.c
+++ b/path.c
@@@ -249,7 -249,9 +249,7 @@@ int validate_headref(const char *path
  static struct passwd *getpw_str(const char *username, size_t len)
  {
        struct passwd *pw;
 -      char *username_z = xmalloc(len + 1);
 -      memcpy(username_z, username, len);
 -      username_z[len] = '\0';
 +      char *username_z = xmemdupz(username, len);
        pw = getpwnam(username_z);
        free(username_z);
        return pw;
@@@ -275,16 -277,16 +275,16 @@@ char *expand_user_path(const char *path
                        const char *home = getenv("HOME");
                        if (!home)
                                goto return_null;
-                       strbuf_add(&user_path, home, strlen(home));
+                       strbuf_addstr(&user_path, home);
                } else {
                        struct passwd *pw = getpw_str(username, username_len);
                        if (!pw)
                                goto return_null;
-                       strbuf_add(&user_path, pw->pw_dir, strlen(pw->pw_dir));
+                       strbuf_addstr(&user_path, pw->pw_dir);
                }
                to_copy = first_slash;
        }
-       strbuf_add(&user_path, to_copy, strlen(to_copy));
+       strbuf_addstr(&user_path, to_copy);
        return strbuf_detach(&user_path, NULL);
  return_null:
        strbuf_release(&user_path);
diff --combined pretty.c
index eb676d6d54b0cf7a0d82fd960ad6dcfbabb84003,ac800fa452cb854e15671926052350f257118f6a..3a1da6fd329efe1723bdb906a907ce4160c4633a
+++ b/pretty.c
@@@ -1520,6 -1520,8 +1520,6 @@@ void format_commit_message(const struc
  
        free(context.commit_encoding);
        unuse_commit_buffer(commit, context.message);
 -      free(context.signature_check.gpg_output);
 -      free(context.signature_check.signer);
  }
  
  static void pp_header(struct pretty_print_context *pp,
                }
  
                if (!parents_shown) {
-                       struct commit_list *parent;
-                       int num;
-                       for (parent = commit->parents, num = 0;
-                            parent;
-                            parent = parent->next, num++)
-                               ;
+                       unsigned num = commit_list_count(commit->parents);
                        /* with enough slop */
                        strbuf_grow(sb, num * 50 + 20);
                        add_merge_info(pp, sb, commit);