branch: add --column
[gitweb.git] / builtin / help.c
index 3182a2bec466c50a9a1db1e91888bad3335414b1..c64f1522d839446b48154f15e189b831b047cab7 100644 (file)
@@ -9,6 +9,7 @@
 #include "common-cmds.h"
 #include "parse-options.h"
 #include "run-command.h"
+#include "column.h"
 #include "help.h"
 
 static struct man_viewer_list {
@@ -26,10 +27,11 @@ enum help_format {
        HELP_FORMAT_NONE,
        HELP_FORMAT_MAN,
        HELP_FORMAT_INFO,
-       HELP_FORMAT_WEB,
+       HELP_FORMAT_WEB
 };
 
 static int show_all = 0;
+static unsigned int colopts;
 static enum help_format help_format = HELP_FORMAT_NONE;
 static struct option builtin_help_options[] = {
        OPT_BOOLEAN('a', "all", &show_all, "print all available commands"),
@@ -120,7 +122,7 @@ static void exec_woman_emacs(const char *path, const char *page)
                if (!path)
                        path = "emacsclient";
                strbuf_addf(&man_page, "(woman \"%s\")", page);
-               execlp(path, "emacsclient", "-e", man_page.buf, NULL);
+               execlp(path, "emacsclient", "-e", man_page.buf, (char *)NULL);
                warning("failed to exec '%s': %s", path, strerror(errno));
        }
 }
@@ -148,7 +150,7 @@ static void exec_man_konqueror(const char *path, const char *page)
                } else
                        path = "kfmclient";
                strbuf_addf(&man_page, "man:%s(1)", page);
-               execlp(path, filename, "newTab", man_page.buf, NULL);
+               execlp(path, filename, "newTab", man_page.buf, (char *)NULL);
                warning("failed to exec '%s': %s", path, strerror(errno));
        }
 }
@@ -157,7 +159,7 @@ static void exec_man_man(const char *path, const char *page)
 {
        if (!path)
                path = "man";
-       execlp(path, "man", page, NULL);
+       execlp(path, "man", page, (char *)NULL);
        warning("failed to exec '%s': %s", path, strerror(errno));
 }
 
@@ -165,7 +167,7 @@ static void exec_man_cmd(const char *cmd, const char *page)
 {
        struct strbuf shell_cmd = STRBUF_INIT;
        strbuf_addf(&shell_cmd, "%s %s", cmd, page);
-       execl("/bin/sh", "sh", "-c", shell_cmd.buf, NULL);
+       execl("/bin/sh", "sh", "-c", shell_cmd.buf, (char *)NULL);
        warning("failed to exec '%s': %s", cmd, strerror(errno));
 }
 
@@ -251,6 +253,8 @@ static int add_man_viewer_info(const char *var, const char *value)
 
 static int git_help_config(const char *var, const char *value, void *cb)
 {
+       if (!prefixcmp(var, "column."))
+               return git_column_config(var, value, "help", &colopts);
        if (!strcmp(var, "help.format")) {
                if (!value)
                        return config_error_nonbool(var);
@@ -372,7 +376,7 @@ static void show_info_page(const char *git_cmd)
 {
        const char *page = cmd_to_page(git_cmd);
        setenv("INFOPATH", system_path(GIT_INFO_PATH), 1);
-       execlp("info", "info", "gitman", page, NULL);
+       execlp("info", "info", "gitman", page, (char *)NULL);
        die("no info viewer handled the request");
 }
 
@@ -398,7 +402,7 @@ static void get_html_page_path(struct strbuf *page_path, const char *page)
 #ifndef open_html
 static void open_html(const char *path)
 {
-       execl_git_cmd("web--browse", "-c", "help.browser", path, NULL);
+       execl_git_cmd("web--browse", "-c", "help.browser", path, (char *)NULL);
 }
 #endif
 
@@ -424,8 +428,9 @@ int cmd_help(int argc, const char **argv, const char *prefix)
        parsed_help_format = help_format;
 
        if (show_all) {
+               git_config(git_help_config, NULL);
                printf("usage: %s\n\n", git_usage_string);
-               list_commands("git commands", &main_cmds, &other_cmds);
+               list_commands("git commands", colopts, &main_cmds, &other_cmds);
                printf("%s\n", git_more_info_string);
                return 0;
        }