version 1.273.2.3, 2017/01/09 02:27:58 |
version 1.273.2.5, 2017/01/27 14:41:40 |
Line 125 main(int argc, char *argv[]) |
|
Line 125 main(int argc, char *argv[]) |
|
struct manpage *res, *resp; |
struct manpage *res, *resp; |
char *conf_file, *defpaths; |
char *conf_file, *defpaths; |
const char *sec; |
const char *sec; |
|
const char *thisarg; |
size_t i, sz; |
size_t i, sz; |
int prio, best_prio; |
int prio, best_prio; |
enum outmode outmode; |
enum outmode outmode; |
Line 251 main(int argc, char *argv[]) |
|
Line 252 main(int argc, char *argv[]) |
|
break; |
break; |
case 'O': |
case 'O': |
search.outkey = optarg; |
search.outkey = optarg; |
while (optarg != NULL) |
while (optarg != NULL) { |
manconf_output(&conf.output, |
thisarg = optarg; |
strsep(&optarg, ",")); |
if (manconf_output(&conf.output, |
|
strsep(&optarg, ","), 0) == 0) |
|
continue; |
|
warnx("-O %s: Bad argument", thisarg); |
|
return (int)MANDOCLEVEL_BADARG; |
|
} |
break; |
break; |
case 'S': |
case 'S': |
search.arch = optarg; |
search.arch = optarg; |
|
|
|
|
/* Stop here until moved to the foreground. */ |
/* Stop here until moved to the foreground. */ |
|
|
tc_pgid = tcgetpgrp(STDIN_FILENO); |
tc_pgid = tcgetpgrp(tag_files->ofd); |
if (tc_pgid != man_pgid) { |
if (tc_pgid != man_pgid) { |
if (tc_pgid == pager_pid) { |
if (tc_pgid == pager_pid) { |
(void)tcsetpgrp(STDIN_FILENO, |
(void)tcsetpgrp(tag_files->ofd, |
man_pgid); |
man_pgid); |
if (signum == SIGTTIN) |
if (signum == SIGTTIN) |
continue; |
continue; |
|
|
/* Once in the foreground, activate the pager. */ |
/* Once in the foreground, activate the pager. */ |
|
|
if (pager_pid) { |
if (pager_pid) { |
(void)tcsetpgrp(STDIN_FILENO, pager_pid); |
(void)tcsetpgrp(tag_files->ofd, pager_pid); |
kill(pager_pid, SIGCONT); |
kill(pager_pid, SIGCONT); |
} else |
} else |
pager_pid = spawn_pager(tag_files); |
pager_pid = spawn_pager(tag_files); |
Line 1097 spawn_pager(struct tag_files *tag_files) |
|
Line 1103 spawn_pager(struct tag_files *tag_files) |
|
break; |
break; |
default: |
default: |
(void)setpgid(pager_pid, 0); |
(void)setpgid(pager_pid, 0); |
(void)tcsetpgrp(STDIN_FILENO, pager_pid); |
(void)tcsetpgrp(tag_files->ofd, pager_pid); |
#if HAVE_PLEDGE |
#if HAVE_PLEDGE |
if (pledge("stdio rpath tmppath tty proc", NULL) == -1) |
if (pledge("stdio rpath tmppath tty proc", NULL) == -1) |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
Line 1115 spawn_pager(struct tag_files *tag_files) |
|
Line 1121 spawn_pager(struct tag_files *tag_files) |
|
|
|
/* Do not start the pager before controlling the terminal. */ |
/* Do not start the pager before controlling the terminal. */ |
|
|
while (tcgetpgrp(STDIN_FILENO) != getpid()) |
while (tcgetpgrp(STDOUT_FILENO) != getpid()) |
nanosleep(&timeout, NULL); |
nanosleep(&timeout, NULL); |
|
|
execvp(argv[0], argv); |
execvp(argv[0], argv); |