Instead of simply exiting with 255, print an error message including the reason why a config file specified through --file cannot be opened or read. The problem was noticed by Joey Hess, reported through http://bugs.debian.org/445208 --- On Tue, Oct 09, 2007 at 02:16:41PM +0100, Johannes Schindelin wrote: > On Tue, 9 Oct 2007, Gerrit Pape wrote: > > + if (git_config(show_all_config) == -1) > I'd rather check for < 0, just for future proofing. Okay. On Tue, Oct 09, 2007 at 03:30:46PM +0200, Johannes Sixt wrote: > Gerrit Pape schrieb: > >+ if (show_all) { > >+ if (git_config(show_all_config) == -1) > >+ die("unable to read config file %s: %s", > >+ getenv(CONFIG_ENVIRONMENT), strerror(errno)); > I don't think that this works well: If there are no config files at > all, then we don't want to see an error - just as if the config file > were empty. > > Also, I don't think that errno is reliable at this point. > > You probably want to see an error message *only* if you have supplied > a file name with --file. I changed the patch to die() only if --file was sepcified, and errno is not 0. Thanks, Gerrit. builtin-config.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/builtin-config.c b/builtin-config.c index 4444d52..e5bf791 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -172,8 +172,12 @@ int cmd_config(int argc, const char **argv, const char *prefix) type = T_INT; else if (!strcmp(argv[1], "--bool")) type = T_BOOL; - else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l")) - return git_config(show_all_config); + else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l")) { + if (git_config(show_all_config) < 0 && file && errno) + die("unable to read config file %s: %s", file, + strerror(errno)); + return 0; + } else if (!strcmp(argv[1], "--global")) { char *home = getenv("HOME"); if (home) { -- 1.5.3.4 - 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