From 4670cf89d55d2520d4e66aacbea38e20296e672f Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Wed, 24 May 2006 19:51:11 +0200 Subject: [PATCH] Add support for loading repo config Test it by storing i18n.commitencoding, soon to be uesd. --- tig.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tig.c b/tig.c index 8c10ba5..cdb20ae 100644 --- a/tig.c +++ b/tig.c @@ -236,6 +236,7 @@ static int opt_num_interval = NUMBER_INTERVAL; static int opt_tab_size = TABSIZE; static enum request opt_request = REQ_VIEW_MAIN; static char opt_cmd[SIZEOF_CMD] = ""; +static char opt_encoding[20] = "UTF-8"; static FILE *opt_pipe = NULL; /* Returns the index of log or diff command or -1 to exit. */ @@ -2381,6 +2382,44 @@ load_refs(void) return OK; } +static int +load_config(void) +{ + FILE *pipe = popen("git repo-config --list", "r"); + char buffer[BUFSIZ]; + char *name; + + if (!pipe) + return ERR; + + while ((name = fgets(buffer, sizeof(buffer), pipe))) { + char *value = strchr(name, '='); + int valuelen, namelen; + + /* No boolean options, yet */ + if (!value) + continue; + + namelen = value - name; + + *value++ = 0; + valuelen = strlen(value); + if (valuelen > 0) + value[valuelen - 1] = 0; + + if (!strcmp(name, "i18n.commitencoding")) { + string_copy(opt_encoding, value); + } + } + + if (ferror(pipe)) + return ERR; + + pclose(pipe); + + return OK; +} + /* * Main */ @@ -2435,6 +2474,9 @@ main(int argc, char *argv[]) if (refs_size == 0 && opt_request != REQ_VIEW_PAGER) die("Not a git repository"); + if (load_config() == ERR) + die("Failed to load repo config."); + for (i = 0; i < ARRAY_SIZE(views) && (view = &views[i]); i++) view->cmd_env = getenv(view->cmd_env); -- 2.30.2