From: Kirill A. Shutemov Date: Fri, 14 Feb 2014 13:34:38 GMT Subject: [PATCH] config: git_config_from_file(): handle "-" filename as stdin Message-ID: <1392384878-7080-1-git-send-email-kirill@shutemov.name> The patch extends git config --file interface to allow read config from stdin. Signed-off-by: Kirill A. Shutemov --- config.c | 10 ++++++---- t/t1300-repo-config.sh | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/config.c b/config.c index d969a5aefc2b..f80cc7e657e8 100644 --- a/config.c +++ b/config.c @@ -1032,10 +1032,11 @@ static int do_config_from(struct config_source *top, config_fn_t fn, void *data) int git_config_from_file(config_fn_t fn, const char *filename, void *data) { - int ret; - FILE *f = fopen(filename, "r"); + int from_stdin = !strcmp(filename, "-"); + int ret = -1; + FILE *f; - ret = -1; + f = from_stdin ? stdin : fopen(filename, "r"); if (f) { struct config_source top; @@ -1048,7 +1049,8 @@ int git_config_from_file(config_fn_t fn, const char *filename, void *data) ret = do_config_from(&top, fn, data); - fclose(f); + if (!from_stdin) + fclose(f); } return ret; } diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 967359344dab..f1a63075e34f 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -484,6 +484,10 @@ test_expect_success 'alternative GIT_CONFIG (--file)' ' test_cmp expect output ' +test_expect_success 'alternative GIT_CONFIG (--file=-)' ' + git config --file - -l < other-config > output && + test_cmp expect output +' test_expect_success 'refer config from subdirectory' ' mkdir x && ( -- 1.8.5.2