Move setup_diff_pager to libgit.a
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index 86e5f2a4a881afd48563e63b0891495be12b82f0..135ba0d654fa760f6da8fa6713efa34bfa423ad8 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -4878,3 +4878,19 @@ size_t fill_textconv(struct userdiff_driver *driver,
 
        return size;
 }
+
+void setup_diff_pager(struct diff_options *opt)
+{
+       /*
+        * If the user asked for our exit code, then either they want --quiet
+        * or --exit-code. We should definitely not bother with a pager in the
+        * former case, as we will generate no output. Since we still properly
+        * report our exit code even when a pager is run, we _could_ run a
+        * pager with --exit-code. But since we have not done so historically,
+        * and because it is easy to find people oneline advising "git diff
+        * --exit-code" in hooks and other scripts, we do not do so.
+        */
+       if (!DIFF_OPT_TST(opt, EXIT_WITH_STATUS) &&
+           check_pager_config("diff") != 0)
+               setup_pager();
+}