Merge branch 'rs/submodule-config-code-cleanup' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)
Code cleanup.

* rs/submodule-config-code-cleanup:
submodule-config: fix test binary crashing when no arguments given
submodule-config: combine early return code into one goto
submodule-config: passing name reference for .gitmodule blobs
submodule-config: use explicit empty string instead of strbuf in config_from()

1  2 
submodule-config.c
t/helper/test-submodule-config.c
Simple merge
index dab8c27768160d4cfa61c41a95004eb7a8a336b6,0000000000000000000000000000000000000000..a4e4098a0fc55f804524e4333a4e1685e38ad2a8
mode 100644,000000..100644
--- /dev/null
@@@ -1,76 -1,0 +1,76 @@@
-       while (starts_with(arg[0], "--")) {
 +#include "cache.h"
 +#include "submodule-config.h"
 +#include "submodule.h"
 +
 +static void die_usage(int argc, char **argv, const char *msg)
 +{
 +      fprintf(stderr, "%s\n", msg);
 +      fprintf(stderr, "Usage: %s [<commit> <submodulepath>] ...\n", argv[0]);
 +      exit(1);
 +}
 +
 +static int git_test_config(const char *var, const char *value, void *cb)
 +{
 +      return parse_submodule_config_option(var, value);
 +}
 +
 +int main(int argc, char **argv)
 +{
 +      char **arg = argv;
 +      int my_argc = argc;
 +      int output_url = 0;
 +      int lookup_name = 0;
 +
 +      arg++;
 +      my_argc--;
++      while (arg[0] && starts_with(arg[0], "--")) {
 +              if (!strcmp(arg[0], "--url"))
 +                      output_url = 1;
 +              if (!strcmp(arg[0], "--name"))
 +                      lookup_name = 1;
 +              arg++;
 +              my_argc--;
 +      }
 +
 +      if (my_argc % 2 != 0)
 +              die_usage(argc, argv, "Wrong number of arguments.");
 +
 +      setup_git_directory();
 +      gitmodules_config();
 +      git_config(git_test_config, NULL);
 +
 +      while (*arg) {
 +              unsigned char commit_sha1[20];
 +              const struct submodule *submodule;
 +              const char *commit;
 +              const char *path_or_name;
 +
 +              commit = arg[0];
 +              path_or_name = arg[1];
 +
 +              if (commit[0] == '\0')
 +                      hashcpy(commit_sha1, null_sha1);
 +              else if (get_sha1(commit, commit_sha1) < 0)
 +                      die_usage(argc, argv, "Commit not found.");
 +
 +              if (lookup_name) {
 +                      submodule = submodule_from_name(commit_sha1, path_or_name);
 +              } else
 +                      submodule = submodule_from_path(commit_sha1, path_or_name);
 +              if (!submodule)
 +                      die_usage(argc, argv, "Submodule not found.");
 +
 +              if (output_url)
 +                      printf("Submodule url: '%s' for path '%s'\n",
 +                                      submodule->url, submodule->path);
 +              else
 +                      printf("Submodule name: '%s' for path '%s'\n",
 +                                      submodule->name, submodule->path);
 +
 +              arg += 2;
 +      }
 +
 +      submodule_free();
 +
 +      return 0;
 +}