diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-10-05 12:36:24 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-05 12:36:24 -0700 |
commit | 7a95d1be03d3fdd571bd36ea5b8bc5c59b063249 (patch) | |
tree | 6d0430818f4ec0a5938c38788b3f98865c051f4b /submodule.c | |
parent | b5b6521645ed41353e88c443ebaf124b214f25b1 (diff) | |
parent | 5d40a179855a39ae9e8ac22e1874720f2b98a91c (diff) | |
download | git-7a95d1be03d3fdd571bd36ea5b8bc5c59b063249.tar.gz |
Merge branch 'jk/argv-array'
* jk/argv-array:
run_hook: use argv_array API
checkout: use argv_array API
bisect: use argv_array API
quote: provide sq_dequote_to_argv_array
refactor argv_array into generic code
quote.h: fix bogus comment
add sha1_array API docs
Diffstat (limited to 'submodule.c')
-rw-r--r-- | submodule.c | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/submodule.c b/submodule.c index 08756387e2..0b709bc291 100644 --- a/submodule.c +++ b/submodule.c @@ -9,6 +9,7 @@ #include "refs.h" #include "string-list.h" #include "sha1-array.h" +#include "argv-array.h" static struct string_list config_name_for_path; static struct string_list config_fetch_recurse_submodules_for_name; @@ -496,56 +497,26 @@ void check_for_new_submodule_commits(unsigned char new_sha1[20]) sha1_array_append(&ref_tips_after_fetch, new_sha1); } -struct argv_array { - const char **argv; - unsigned int argc; - unsigned int alloc; -}; - -static void init_argv(struct argv_array *array) -{ - array->argv = NULL; - array->argc = 0; - array->alloc = 0; -} - -static void push_argv(struct argv_array *array, const char *value) -{ - ALLOC_GROW(array->argv, array->argc + 2, array->alloc); - array->argv[array->argc++] = xstrdup(value); - array->argv[array->argc] = NULL; -} - -static void clear_argv(struct argv_array *array) -{ - int i; - for (i = 0; i < array->argc; i++) - free((char **)array->argv[i]); - free(array->argv); - init_argv(array); -} - static void add_sha1_to_argv(const unsigned char sha1[20], void *data) { - push_argv(data, sha1_to_hex(sha1)); + argv_array_push(data, sha1_to_hex(sha1)); } static void calculate_changed_submodule_paths(void) { struct rev_info rev; struct commit *commit; - struct argv_array argv; + struct argv_array argv = ARGV_ARRAY_INIT; /* No need to check if there are no submodules configured */ if (!config_name_for_path.nr) return; init_revisions(&rev, NULL); - init_argv(&argv); - push_argv(&argv, "--"); /* argv[0] program name */ + argv_array_push(&argv, "--"); /* argv[0] program name */ sha1_array_for_each_unique(&ref_tips_after_fetch, add_sha1_to_argv, &argv); - push_argv(&argv, "--not"); + argv_array_push(&argv, "--not"); sha1_array_for_each_unique(&ref_tips_before_fetch, add_sha1_to_argv, &argv); setup_revisions(argv.argc, argv.argv, &rev, NULL); @@ -573,7 +544,7 @@ static void calculate_changed_submodule_paths(void) } } - clear_argv(&argv); + argv_array_clear(&argv); sha1_array_clear(&ref_tips_before_fetch); sha1_array_clear(&ref_tips_after_fetch); initialized_fetch_ref_tips = 0; |