Remove calculation of the longest command name from where it is not used
authorAlex Riesen <raa.lkml@gmail.com>
Thu, 28 Aug 2008 17:15:33 +0000 (19:15 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 29 Aug 2008 04:49:55 +0000 (21:49 -0700)
Just calculate it where it is needed - it is cheap and trivial,
as all the lengths are already there (stored when creating the
command lists).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-help.c
builtin-merge.c
help.c
help.h

index 391f749376620c759c5147c6afcb4fca0d1bba40..9225102f6cb7568f6615b00c3765a0e6f111612a 100644 (file)
@@ -418,7 +418,7 @@ int cmd_help(int argc, const char **argv, const char *prefix)
 {
        int nongit;
        const char *alias;
-       unsigned int longest = load_command_list("git-", &main_cmds, &other_cmds);
+       load_command_list("git-", &main_cmds, &other_cmds);
 
        setup_git_directory_gently(&nongit);
        git_config(git_help_config, NULL);
@@ -428,7 +428,7 @@ int cmd_help(int argc, const char **argv, const char *prefix)
 
        if (show_all) {
                printf("usage: %s\n\n", git_usage_string);
-               list_commands("git commands", longest, &main_cmds, &other_cmds);
+               list_commands("git commands", &main_cmds, &other_cmds);
                printf("%s\n", git_more_info_string);
                return 0;
        }
index d6bcbec705fe5a2d278cba9cafd56415127d5afc..dcd08f76b18995e306a80092fba223796e2e9ad6 100644 (file)
@@ -80,7 +80,7 @@ static struct strategy *get_strategy(const char *name)
        int i;
        struct strategy *ret;
        static struct cmdnames main_cmds, other_cmds;
-       static int longest;
+       static int loaded;
 
        if (!name)
                return NULL;
@@ -89,14 +89,14 @@ static struct strategy *get_strategy(const char *name)
                if (!strcmp(name, all_strategy[i].name))
                        return &all_strategy[i];
 
-       if (!longest) {
+       if (!loaded) {
                struct cmdnames not_strategies;
+               loaded = 1;
 
                memset(&main_cmds, 0, sizeof(struct cmdnames));
                memset(&other_cmds, 0, sizeof(struct cmdnames));
                memset(&not_strategies, 0, sizeof(struct cmdnames));
-               longest = load_command_list("git-merge-", &main_cmds,
-                               &other_cmds);
+               load_command_list("git-merge-", &main_cmds, &other_cmds);
                for (i = 0; i < main_cmds.cnt; i++) {
                        int j, found = 0;
                        struct cmdname *ent = main_cmds.names[i];
diff --git a/help.c b/help.c
index 1afbac0927cdf2ba395126a7fe87d96a9ea87a94..a17a74631e2412a473f46809ba6de3e02c422cfc 100644 (file)
--- a/help.c
+++ b/help.c
@@ -133,11 +133,10 @@ static int is_executable(const char *name)
        return st.st_mode & S_IXUSR;
 }
 
-static unsigned int list_commands_in_dir(struct cmdnames *cmds,
+static void list_commands_in_dir(struct cmdnames *cmds,
                                         const char *path,
                                         const char *prefix)
 {
-       unsigned int longest = 0;
        int prefix_len;
        DIR *dir = opendir(path);
        struct dirent *de;
@@ -145,7 +144,7 @@ static unsigned int list_commands_in_dir(struct cmdnames *cmds,
        int len;
 
        if (!dir)
-               return 0;
+               return;
        if (!prefix)
                prefix = "git-";
        prefix_len = strlen(prefix);
@@ -168,29 +167,22 @@ static unsigned int list_commands_in_dir(struct cmdnames *cmds,
                if (has_extension(de->d_name, ".exe"))
                        entlen -= 4;
 
-               if (longest < entlen)
-                       longest = entlen;
-
                add_cmdname(cmds, de->d_name + prefix_len, entlen);
        }
        closedir(dir);
        strbuf_release(&buf);
-
-       return longest;
 }
 
-unsigned int load_command_list(const char *prefix,
+void load_command_list(const char *prefix,
                struct cmdnames *main_cmds,
                struct cmdnames *other_cmds)
 {
-       unsigned int longest = 0;
-       unsigned int len;
        const char *env_path = getenv("PATH");
        char *paths, *path, *colon;
        const char *exec_path = git_exec_path();
 
        if (exec_path)
-               longest = list_commands_in_dir(main_cmds, exec_path, prefix);
+               list_commands_in_dir(main_cmds, exec_path, prefix);
 
        if (!env_path) {
                fprintf(stderr, "PATH not set\n");
@@ -202,9 +194,7 @@ unsigned int load_command_list(const char *prefix,
                if ((colon = strchr(path, PATH_SEP)))
                        *colon = 0;
 
-               len = list_commands_in_dir(other_cmds, path, prefix);
-               if (len > longest)
-                       longest = len;
+               list_commands_in_dir(other_cmds, path, prefix);
 
                if (!colon)
                        break;
@@ -220,14 +210,20 @@ unsigned int load_command_list(const char *prefix,
              sizeof(*other_cmds->names), cmdname_compare);
        uniq(other_cmds);
        exclude_cmds(other_cmds, main_cmds);
-
-       return longest;
 }
 
-void list_commands(const char *title, unsigned int longest,
-               struct cmdnames *main_cmds, struct cmdnames *other_cmds)
+void list_commands(const char *title, struct cmdnames *main_cmds,
+                  struct cmdnames *other_cmds)
 {
        const char *exec_path = git_exec_path();
+       int i, longest = 0;
+
+       for (i = 0; i < main_cmds->cnt; i++)
+               if (longest < main_cmds->names[i]->len)
+                       longest = main_cmds->names[i]->len;
+       for (i = 0; i < other_cmds->cnt; i++)
+               if (longest < other_cmds->names[i]->len)
+                       longest = other_cmds->names[i]->len;
 
        if (main_cmds->cnt) {
                printf("available %s in '%s'\n", title, exec_path);
diff --git a/help.h b/help.h
index 3f1ae89dd69413a4547e12bb3736bd66326d830f..2733433bf0c74a4d1297a0b3dd6435ac00c872f2 100644 (file)
--- a/help.h
+++ b/help.h
@@ -16,14 +16,14 @@ static inline void mput_char(char c, unsigned int num)
                putchar(c);
 }
 
-unsigned int load_command_list(const char *prefix,
+void load_command_list(const char *prefix,
                struct cmdnames *main_cmds,
                struct cmdnames *other_cmds);
 void add_cmdname(struct cmdnames *cmds, const char *name, int len);
 /* Here we require that excludes is a sorted list. */
 void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes);
 int is_in_cmdlist(struct cmdnames *c, const char *s);
-void list_commands(const char *title, unsigned int longest,
-               struct cmdnames *main_cmds, struct cmdnames *other_cmds);
+void list_commands(const char *title, struct cmdnames *main_cmds,
+                  struct cmdnames *other_cmds);
 
 #endif /* HELP_H */