diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2012-10-26 22:53:52 +0700 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2012-10-29 03:08:30 -0400 |
commit | 4914c9629c046f7f5abf4109ad756040f9ebe2bf (patch) | |
tree | 0e44c88fde1165895cd7d8538e505b2ad0eb12c1 /pager.c | |
parent | efc7df454e9ec8b730fb2293c8549cec43de6bfa (diff) | |
download | git-4914c9629c046f7f5abf4109ad756040f9ebe2bf.tar.gz |
Move setup_diff_pager to libgit.a
This is used by diff-no-index.c, part of libgit.a while it stays in
builtin/diff.c. Move it to diff.c so that we won't get undefined
reference if a program that uses libgit.a happens to pull it in.
While at it, move check_pager from git.c to pager.c. It makes more
sense there and pager.c is also part of libgit.a
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'pager.c')
-rw-r--r-- | pager.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -6,6 +6,12 @@ #define DEFAULT_PAGER "less" #endif +struct pager_config { + const char *cmd; + int want; + char *value; +}; + /* * This is split up from the rest of git so that we can do * something different on Windows. @@ -141,3 +147,31 @@ int decimal_width(int number) i *= 10; return width; } + +static int pager_command_config(const char *var, const char *value, void *data) +{ + struct pager_config *c = data; + if (!prefixcmp(var, "pager.") && !strcmp(var + 6, c->cmd)) { + int b = git_config_maybe_bool(var, value); + if (b >= 0) + c->want = b; + else { + c->want = 1; + c->value = xstrdup(value); + } + } + return 0; +} + +/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */ +int check_pager_config(const char *cmd) +{ + struct pager_config c; + c.cmd = cmd; + c.want = -1; + c.value = NULL; + git_config(pager_command_config, &c); + if (c.value) + pager_program = c.value; + return c.want; +} |