aboutsummaryrefslogtreecommitdiffstats
path: root/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'help.c')
-rw-r--r--help.c53
1 files changed, 39 insertions, 14 deletions
diff --git a/help.c b/help.c
index 5483ea8fd2..c54bd9918a 100644
--- a/help.c
+++ b/help.c
@@ -2,6 +2,7 @@
#define DISABLE_SIGN_COMPARE_WARNINGS
#include "git-compat-util.h"
+#include "git-zlib.h"
#include "config.h"
#include "builtin.h"
#include "exec-cmd.h"
@@ -552,10 +553,34 @@ struct help_unknown_cmd_config {
struct cmdnames aliases;
};
+#define AUTOCORRECT_SHOW (-4)
#define AUTOCORRECT_PROMPT (-3)
#define AUTOCORRECT_NEVER (-2)
#define AUTOCORRECT_IMMEDIATELY (-1)
+static int parse_autocorrect(const char *value)
+{
+ switch (git_parse_maybe_bool_text(value)) {
+ case 1:
+ return AUTOCORRECT_IMMEDIATELY;
+ case 0:
+ return AUTOCORRECT_SHOW;
+ default: /* other random text */
+ break;
+ }
+
+ if (!strcmp(value, "prompt"))
+ return AUTOCORRECT_PROMPT;
+ if (!strcmp(value, "never"))
+ return AUTOCORRECT_NEVER;
+ if (!strcmp(value, "immediate"))
+ return AUTOCORRECT_IMMEDIATELY;
+ if (!strcmp(value, "show"))
+ return AUTOCORRECT_SHOW;
+
+ return 0;
+}
+
static int git_unknown_cmd_config(const char *var, const char *value,
const struct config_context *ctx,
void *cb)
@@ -564,20 +589,17 @@ static int git_unknown_cmd_config(const char *var, const char *value,
const char *p;
if (!strcmp(var, "help.autocorrect")) {
- if (!value)
- return config_error_nonbool(var);
- if (!strcmp(value, "never")) {
- cfg->autocorrect = AUTOCORRECT_NEVER;
- } else if (!strcmp(value, "immediate")) {
- cfg->autocorrect = AUTOCORRECT_IMMEDIATELY;
- } else if (!strcmp(value, "prompt")) {
- cfg->autocorrect = AUTOCORRECT_PROMPT;
- } else {
- int v = git_config_int(var, value, ctx->kvi);
- cfg->autocorrect = (v < 0)
- ? AUTOCORRECT_IMMEDIATELY : v;
+ int v = parse_autocorrect(value);
+
+ if (!v) {
+ v = git_config_int(var, value, ctx->kvi);
+ if (v < 0 || v == 1)
+ v = AUTOCORRECT_IMMEDIATELY;
}
+
+ cfg->autocorrect = v;
}
+
/* Also use aliases for command lookup */
if (skip_prefix(var, "alias.", &p))
add_cmdname(&cfg->aliases, p, strlen(p));
@@ -695,7 +717,8 @@ char *help_unknown_cmd(const char *cmd)
n++)
; /* still counting */
}
- if (cfg.autocorrect && n == 1 && SIMILAR_ENOUGH(best_similarity)) {
+ if (cfg.autocorrect && cfg.autocorrect != AUTOCORRECT_SHOW && n == 1 &&
+ SIMILAR_ENOUGH(best_similarity)) {
char *assumed = xstrdup(main_cmds.names[0]->name);
fprintf_ln(stderr,
@@ -775,7 +798,9 @@ void get_version_info(struct strbuf *buf, int show_build_options)
#if defined OPENSSL_VERSION_TEXT
strbuf_addf(buf, "OpenSSL: %s\n", OPENSSL_VERSION_TEXT);
#endif
-#if defined ZLIB_VERSION
+#if defined ZLIBNG_VERSION
+ strbuf_addf(buf, "zlib-ng: %s\n", ZLIBNG_VERSION);
+#elif defined ZLIB_VERSION
strbuf_addf(buf, "zlib: %s\n", ZLIB_VERSION);
#endif
}