diff options
author | Jeff King <peff@peff.net> | 2012-11-09 12:51:06 -0500 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2012-11-09 12:51:06 -0500 |
commit | 19fb61369583410a4f79dbc065b4dc8125236c0b (patch) | |
tree | 7f7498d204f8df97ddc0cd6726154a0ce5fa5bb7 /pager.c | |
parent | 9d91c0e3d5d1bf9339a31ecbd5f6defdac8540d0 (diff) | |
parent | 745f7a8cacae55df3e00507344d8db2a31eb57e8 (diff) | |
download | git-19fb61369583410a4f79dbc065b4dc8125236c0b.tar.gz git-19fb61369583410a4f79dbc065b4dc8125236c0b.tar.xz |
Merge branch 'nd/builtin-to-libgit'
Code cleanups so that libgit.a does not depend on anything in the
builtin/ directory.
* nd/builtin-to-libgit:
fetch-pack: move core code to libgit.a
fetch-pack: remove global (static) configuration variable "args"
send-pack: move core code to libgit.a
Move setup_diff_pager to libgit.a
Move print_commit_list to libgit.a
Move estimate_bisect_steps to libgit.a
Move try_merge_command and checkout_fast_forward to libgit.a
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; +} |