diff options
| author | Junio C Hamano <gitster@pobox.com> | 2025-11-06 15:17:01 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-11-06 15:17:01 -0800 |
| commit | 4badef0c3503dc29059d678abba7fac0f042bc84 (patch) | |
| tree | e5284d2d90ed97ef7191b630cfad5c49ffba9f49 /parse-options.c | |
| parent | e569dced68a486b38b14cdd2e3e0b34d21752a18 (diff) | |
| parent | a2584d04344b93610ee9e958d477d743380fc8d7 (diff) | |
Merge branch 'dk/parseopt-optional-filename-fixes'HEADorigin/masterorigin/HEADmaster
A recently added configuration variable and command line option
syntax ":(optional)" for values that are of filename type
inconsistently behaved on an empty file (configuration took it
happily, while the command line option pretended as if it did not
exist), which has been corrected.
* dk/parseopt-optional-filename-fixes:
parseopt: remove unreachable code
parseopt: restore const qualifier to parsed filename
config: use boolean type for a simple flag
parseopt: use boolean type for a simple flag
doc: clarify command equivalence comment
parseopt: fix :(optional) at command line to only ignore missing files
Diffstat (limited to 'parse-options.c')
| -rw-r--r-- | parse-options.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/parse-options.c b/parse-options.c index 5933468c19..c9cafc21b9 100644 --- a/parse-options.c +++ b/parse-options.c @@ -208,12 +208,12 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, case OPTION_FILENAME: { const char *value; - int is_optional; + bool is_optional; if (unset) value = NULL; else if (opt->flags & PARSE_OPT_OPTARG && !p->opt) - value = (char *)opt->defval; + value = (const char *)opt->defval; else { int err = get_arg(p, opt, flags, &value); if (err) @@ -223,10 +223,8 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, return 0; is_optional = skip_prefix(value, ":(optional)", &value); - if (!value) - is_optional = 0; value = fix_filename(p->prefix, value); - if (is_optional && is_empty_or_missing_file(value)) { + if (is_optional && is_missing_file(value)) { free((char *)value); } else { FREE_AND_NULL(*(char **)opt->value); |
