On 16/02/16 17:38, Jeff King wrote: > On Tue, Feb 16, 2016 at 04:46:07PM +0000, Ramsay Jones wrote: > >>> OK, I am happy to add the extra code. >> >> Unless I've missed something (quite possible), this patch does not >> need to change. (you have (both) convinced me that your current >> solution is the best). >> >> The only change that I would suggest is the one-liner I already >> suggested to the previous patch (plus the one-liner in the test, >> of course. err ... so the two-liner!). Having said that, I didn't >> try it out - I was just typing into my email client, so ... > > I think it's more than that one-liner. This patch shows "type:name" > verbatim from what is passed into do_config_from_file, as does the error > message. If they are going to have different output formats (e.g., > "<stdin>" versus "stdin"), there needs to be logic transforming them in > at least one of the spots. Ugh, yes you are right. Hmm, I just hacked something up (see below) and, since its a bit ugly, I'm now in two minds! (it could be improved, of course). ;-) So, I'll leave it to yourself and Lars to decide. ATB, Ramsay Jones -- >8 -- From: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> Date: Tue, 16 Feb 2016 21:39:47 +0000 Subject: [PATCH] config: fixup '<stdin>' error messages Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> --- config.c | 22 ++++++++++++++++++---- t/t1300-repo-config.sh | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/config.c b/config.c index 0a35323..adc808c 100644 --- a/config.c +++ b/config.c @@ -417,6 +417,8 @@ static int git_parse_source(config_fn_t fn, void *data) int comment = 0; int baselen = 0; struct strbuf *var = &cf->var; + const char *cftype = cf->type; + const char *cfname = cf->name; /* U+FEFF Byte Order Mark in UTF8 */ const char *bomptr = utf8_bom; @@ -471,10 +473,14 @@ static int git_parse_source(config_fn_t fn, void *data) if (get_value(fn, data, var) < 0) break; } + if (!strcmp(cftype, "stdin")) { + cftype = "file"; + cfname = "<stdin>"; + } if (cf->die_on_error) - die(_("bad config line %d in %s %s"), cf->linenr, cf->type, cf->name); + die(_("bad config line %d in %s %s"), cf->linenr, cftype, cfname); else - return error(_("bad config line %d in %s %s"), cf->linenr, cf->type, cf->name); + return error(_("bad config line %d in %s %s"), cf->linenr, cftype, cfname); } static int parse_unit_factor(const char *end, uintmax_t *val) @@ -589,9 +595,17 @@ static void die_bad_number(const char *name, const char *value) if (!value) value = ""; - if (cf && cf->type && cf->name) + if (cf && cf->type && cf->name) { + const char *cftype = cf->type; + const char *cfname = cf->name; + + if (!strcmp(cftype, "stdin")) { + cftype = "file"; + cfname = "<stdin>"; + } die(_("bad numeric config value '%s' for '%s' in %s %s: %s"), - value, name, cf->type, cf->name, reason); + value, name, cftype, cfname, reason); + } die(_("bad numeric config value '%s' for '%s': %s"), value, name, reason); } diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 4abbdf9..4497688 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -707,7 +707,7 @@ test_expect_success 'invalid unit' ' ' test_expect_success 'invalid stdin config' ' - echo "fatal: bad config line 1 in stdin " >expect && + echo "fatal: bad config line 1 in file <stdin>" >expect && echo "[broken" | test_must_fail git config --list --file - >output 2>&1 && test_cmp expect output ' -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html