http: prompt for credentials on failed POST
[gitweb.git] / help.c
diff --git a/help.c b/help.c
index e925ca1f8973a05a66b5c09b45e3451f65e3a1e7..14eefc91ced3890975d0833ffc83971c7986858b 100644 (file)
--- a/help.c
+++ b/help.c
@@ -5,28 +5,6 @@
 #include "help.h"
 #include "common-cmds.h"
 
-/* most GUI terminals set COLUMNS (although some don't export it) */
-static int term_columns(void)
-{
-       char *col_string = getenv("COLUMNS");
-       int n_cols;
-
-       if (col_string && (n_cols = atoi(col_string)) > 0)
-               return n_cols;
-
-#ifdef TIOCGWINSZ
-       {
-               struct winsize ws;
-               if (!ioctl(1, TIOCGWINSZ, &ws)) {
-                       if (ws.ws_col)
-                               return ws.ws_col;
-               }
-       }
-#endif
-
-       return 80;
-}
-
 void add_cmdname(struct cmdnames *cmds, const char *name, int len)
 {
        struct cmdname *ent = xmalloc(sizeof(*ent) + len + 1);
@@ -305,6 +283,10 @@ static void add_cmd_list(struct cmdnames *cmds, struct cmdnames *old)
 #define SIMILARITY_FLOOR 7
 #define SIMILAR_ENOUGH(x) ((x) < SIMILARITY_FLOOR)
 
+static const char bad_interpreter_advice[] =
+       N_("'%s' appears to be a git command, but we were not\n"
+       "able to execute it. Maybe git-%s is broken?");
+
 const char *help_unknown_cmd(const char *cmd)
 {
        int i, n, best_similarity = 0;
@@ -329,6 +311,14 @@ const char *help_unknown_cmd(const char *cmd)
                int cmp = 0; /* avoid compiler stupidity */
                const char *candidate = main_cmds.names[i]->name;
 
+               /*
+                * An exact match means we have the command, but
+                * for some reason exec'ing it gave us ENOENT; probably
+                * it's a bad interpreter in the #! line.
+                */
+               if (!strcmp(candidate, cmd))
+                       die(_(bad_interpreter_advice), cmd, cmd);
+
                /* Does the candidate appear in common_cmds list? */
                while (n < ARRAY_SIZE(common_cmds) &&
                       (cmp = strcmp(common_cmds[n].name, candidate)) < 0)