version 1.318, 2019/01/11 17:04:44 |
version 1.325, 2019/05/03 16:14:42 |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/ioctl.h> |
#include <sys/ioctl.h> |
#include <sys/param.h> /* MACHINE */ |
#include <sys/param.h> /* MACHINE */ |
#include <sys/termios.h> |
|
#include <sys/wait.h> |
#include <sys/wait.h> |
|
|
#include <assert.h> |
#include <assert.h> |
|
|
#include <stdint.h> |
#include <stdint.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
#include <termios.h> |
#include <time.h> |
#include <time.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
Line 125 main(int argc, char *argv[]) |
|
Line 125 main(int argc, char *argv[]) |
|
char *conf_file, *defpaths, *auxpaths; |
char *conf_file, *defpaths, *auxpaths; |
char *oarg, *tagarg; |
char *oarg, *tagarg; |
unsigned char *uc; |
unsigned char *uc; |
size_t i, sz; |
size_t i, sz, ssz; |
int prio, best_prio; |
int prio, best_prio; |
enum outmode outmode; |
enum outmode outmode; |
int fd, startdir; |
int fd, startdir; |
Line 355 main(int argc, char *argv[]) |
|
Line 355 main(int argc, char *argv[]) |
|
} else if (argc > 1 && |
} else if (argc > 1 && |
((uc = (unsigned char *)argv[0]) != NULL) && |
((uc = (unsigned char *)argv[0]) != NULL) && |
((isdigit(uc[0]) && (uc[1] == '\0' || |
((isdigit(uc[0]) && (uc[1] == '\0' || |
(isalpha(uc[1]) && uc[2] == '\0'))) || |
isalpha(uc[1]))) || |
(uc[0] == 'n' && uc[1] == '\0'))) { |
(uc[0] == 'n' && uc[1] == '\0'))) { |
search.sec = (char *)uc; |
search.sec = (char *)uc; |
argv++; |
argv++; |
Line 411 main(int argc, char *argv[]) |
|
Line 411 main(int argc, char *argv[]) |
|
res[sz].file = mandoc_strdup(argv[c]); |
res[sz].file = mandoc_strdup(argv[c]); |
res[sz].names = NULL; |
res[sz].names = NULL; |
res[sz].output = NULL; |
res[sz].output = NULL; |
|
res[sz].bits = 0; |
res[sz].ipath = SIZE_MAX; |
res[sz].ipath = SIZE_MAX; |
res[sz].sec = 10; |
res[sz].sec = 10; |
res[sz].form = FORM_SRC; |
res[sz].form = FORM_SRC; |
Line 433 main(int argc, char *argv[]) |
|
Line 434 main(int argc, char *argv[]) |
|
|
|
if (outmode == OUTMODE_ONE) { |
if (outmode == OUTMODE_ONE) { |
argc = 1; |
argc = 1; |
best_prio = 20; |
best_prio = 40; |
} else if (outmode == OUTMODE_ALL) |
} else if (outmode == OUTMODE_ALL) |
argc = (int)sz; |
argc = (int)sz; |
|
|
Line 452 main(int argc, char *argv[]) |
|
Line 453 main(int argc, char *argv[]) |
|
sec = res[i].file; |
sec = res[i].file; |
sec += strcspn(sec, "123456789"); |
sec += strcspn(sec, "123456789"); |
if (sec[0] == '\0') |
if (sec[0] == '\0') |
continue; |
continue; /* No section at all. */ |
prio = sec_prios[sec[0] - '1']; |
prio = sec_prios[sec[0] - '1']; |
if (sec[1] != '/') |
if (search.sec != NULL) { |
prio += 10; |
ssz = strlen(search.sec); |
|
if (strncmp(sec, search.sec, ssz) == 0) |
|
sec += ssz; |
|
} else |
|
sec++; /* Prefer without suffix. */ |
|
if (*sec != '/') |
|
prio += 10; /* Wrong dir name. */ |
|
if (search.sec != NULL && |
|
(strlen(sec) <= ssz + 3 || |
|
strcmp(sec + strlen(sec) - ssz, |
|
search.sec) != 0)) |
|
prio += 20; /* Wrong file ext. */ |
if (prio >= best_prio) |
if (prio >= best_prio) |
continue; |
continue; |
best_prio = prio; |
best_prio = prio; |
|
|
page->file = file; |
page->file = file; |
page->names = NULL; |
page->names = NULL; |
page->output = NULL; |
page->output = NULL; |
|
page->bits = NAME_FILE & NAME_MASK; |
page->ipath = ipath; |
page->ipath = ipath; |
page->sec = (*sec >= '1' && *sec <= '9') ? *sec - '1' + 1 : 10; |
page->sec = (*sec >= '1' && *sec <= '9') ? *sec - '1' + 1 : 10; |
page->form = form; |
page->form = form; |
Line 797 fs_search(const struct mansearch *cfg, const struct ma |
|
Line 810 fs_search(const struct mansearch *cfg, const struct ma |
|
} |
} |
if (res != NULL && *ressz == lastsz && |
if (res != NULL && *ressz == lastsz && |
strchr(*argv, '/') == NULL) { |
strchr(*argv, '/') == NULL) { |
if (cfg->sec == NULL) |
if (cfg->arch != NULL && |
|
arch_valid(cfg->arch, OSENUM) == 0) |
|
warnx("Unknown architecture \"%s\".", |
|
cfg->arch); |
|
else if (cfg->sec == NULL) |
warnx("No entry for %s in the manual.", |
warnx("No entry for %s in the manual.", |
*argv); |
*argv); |
else |
else |
Line 835 parse(struct curparse *curp, int fd, const char *file) |
|
Line 852 parse(struct curparse *curp, int fd, const char *file) |
|
|
|
if (curp->outdata == NULL) |
if (curp->outdata == NULL) |
outdata_alloc(curp); |
outdata_alloc(curp); |
|
else if (curp->outtype == OUTT_HTML) |
|
html_reset(curp); |
|
|
mandoc_xr_reset(); |
mandoc_xr_reset(); |
meta = mparse_result(curp->mp); |
meta = mparse_result(curp->mp); |
Line 1155 spawn_pager(struct tag_files *tag_files) |
|
Line 1174 spawn_pager(struct tag_files *tag_files) |
|
char *argv[MAX_PAGER_ARGS]; |
char *argv[MAX_PAGER_ARGS]; |
const char *pager; |
const char *pager; |
char *cp; |
char *cp; |
|
#if HAVE_LESS_T |
size_t cmdlen; |
size_t cmdlen; |
|
#endif |
int argc, use_ofn; |
int argc, use_ofn; |
pid_t pager_pid; |
pid_t pager_pid; |
|
|
Line 1187 spawn_pager(struct tag_files *tag_files) |
|
Line 1208 spawn_pager(struct tag_files *tag_files) |
|
/* For less(1), use the tag file. */ |
/* For less(1), use the tag file. */ |
|
|
use_ofn = 1; |
use_ofn = 1; |
|
#if HAVE_LESS_T |
if ((cmdlen = strlen(argv[0])) >= 4) { |
if ((cmdlen = strlen(argv[0])) >= 4) { |
cp = argv[0] + cmdlen - 4; |
cp = argv[0] + cmdlen - 4; |
if (strcmp(cp, "less") == 0) { |
if (strcmp(cp, "less") == 0) { |
Line 1199 spawn_pager(struct tag_files *tag_files) |
|
Line 1221 spawn_pager(struct tag_files *tag_files) |
|
} |
} |
} |
} |
} |
} |
|
#endif |
if (use_ofn) |
if (use_ofn) |
argv[argc++] = tag_files->ofn; |
argv[argc++] = tag_files->ofn; |
argv[argc] = NULL; |
argv[argc] = NULL; |