summaryrefslogtreecommitdiff
path: root/pager.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2012-10-26 15:53:52 (GMT)
committerJeff King <peff@peff.net>2012-10-29 07:08:30 (GMT)
commit4914c9629c046f7f5abf4109ad756040f9ebe2bf (patch)
tree0e44c88fde1165895cd7d8538e505b2ad0eb12c1 /pager.c
parentefc7df454e9ec8b730fb2293c8549cec43de6bfa (diff)
downloadgit-4914c9629c046f7f5abf4109ad756040f9ebe2bf.zip
git-4914c9629c046f7f5abf4109ad756040f9ebe2bf.tar.gz
git-4914c9629c046f7f5abf4109ad756040f9ebe2bf.tar.bz2
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.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/pager.c b/pager.c
index c0b4387..c1ecf65 100644
--- a/pager.c
+++ b/pager.c
@@ -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;
+}