cfg->attributes_file = NULL;
cfg->excludes_file = NULL;
cfg->editor_program = NULL;
+ cfg->pager_program = NULL;
cfg->apply_sparse_checkout = 0;
cfg->branch_track = BRANCH_TRACK_REMOTE;
cfg->trust_ctime = 1;
FREE_AND_NULL(cfg->attributes_file);
FREE_AND_NULL(cfg->excludes_file);
FREE_AND_NULL(cfg->editor_program);
+ FREE_AND_NULL(cfg->pager_program);
}
#include "run-command.h"
#include "sigchain.h"
#include "alias.h"
+#include "repository.h"
+#include "environment.h"
int pager_use_color = 1;
#endif
static struct child_process pager_process;
-static char *pager_program;
static int old_fd1 = -1, old_fd2 = -1;
/* Is the value coming back from term_columns() just a guess? */
static int core_pager_config(const char *var, const char *value,
const struct config_context *ctx UNUSED,
- void *data UNUSED)
+ void *data)
{
- if (!strcmp(var, "core.pager"))
- return git_config_string(&pager_program, var, value);
+ struct repository *r = data;
+
+ if (!strcmp(var, "core.pager")) {
+ struct repo_config_values *cfg = repo_config_values(r);
+
+ FREE_AND_NULL(cfg->pager_program);
+ return git_config_string(&cfg->pager_program, var, value);
+ }
+
return 0;
}
pager = getenv("GIT_PAGER");
if (!pager) {
- if (!pager_program)
+ struct repo_config_values *cfg = repo_config_values(r);
+
+ if (!cfg->pager_program)
read_early_config(r,
- core_pager_config, NULL);
- pager = pager_program;
+ core_pager_config, r);
+ pager = cfg->pager_program;
}
if (!pager)
pager = getenv("PAGER");
read_early_config(r, pager_command_config, &data);
- if (data.value)
- pager_program = data.value;
+ if (data.value) {
+ struct repo_config_values *cfg = repo_config_values(r);
+
+ free(cfg->pager_program);
+ cfg->pager_program = data.value;
+ }
return data.want;
}