+ if (!isatty(STDIN_FILENO)) {
+ /**
+ * Pager mode
+ * ~~~~~~~~~~
+ * If stdin is a pipe, any log or diff options will be ignored and the
+ * pager view will be opened loading data from stdin. The pager mode
+ * can be used for colorizing output from various git commands.
+ *
+ * Example on how to colorize the output of git-show(1):
+ *
+ * $ git show | tig
+ **/
+ opt_request = REQ_VIEW_PAGER;
+ opt_pipe = stdin;
+
+ } else if (i < argc) {
+ size_t buf_size;
+
+ /**
+ * Git command options
+ * ~~~~~~~~~~~~~~~~~~~
+ * All git command options specified on the command line will
+ * be passed to the given command and all will be shell quoted
+ * before used.
+ *
+ * NOTE: It is possible to specify options even for the main
+ * view. If doing this you should not touch the `--pretty`
+ * option.
+ *
+ * Example on how to open the log view and show both author and
+ * committer information:
+ *
+ * $ tig log --pretty=fuller
+ **/
+
+ if (opt_request == REQ_VIEW_MAIN)
+ /* XXX: This is vulnerable to the user overriding
+ * options required for the main view parser. */
+ string_copy(opt_cmd, "git log --stat --pretty=raw");
+ else
+ string_copy(opt_cmd, "git");
+ buf_size = strlen(opt_cmd);
+
+ while (buf_size < sizeof(opt_cmd) && i < argc) {
+ opt_cmd[buf_size++] = ' ';
+ buf_size = sq_quote(opt_cmd, buf_size, argv[i++]);
+ }
+
+ if (buf_size >= sizeof(opt_cmd))
+ die("command too long");
+
+ opt_cmd[buf_size] = 0;
+
+ }
+
+ return TRUE;