Remove calculation of the longest command name from where it is not used
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>
This commit is contained in:

committed by
Junio C Hamano

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