version 1.273.2.9, 2017/02/21 17:04:04 |
version 1.290, 2017/05/16 19:06:30 |
|
|
OUTMODE_FLN, |
OUTMODE_FLN, |
OUTMODE_LST, |
OUTMODE_LST, |
OUTMODE_ALL, |
OUTMODE_ALL, |
OUTMODE_INT, |
|
OUTMODE_ONE |
OUTMODE_ONE |
}; |
}; |
|
|
|
|
OUTT_TREE, /* -Ttree */ |
OUTT_TREE, /* -Ttree */ |
OUTT_MAN, /* -Tman */ |
OUTT_MAN, /* -Tman */ |
OUTT_HTML, /* -Thtml */ |
OUTT_HTML, /* -Thtml */ |
|
OUTT_MARKDOWN, /* -Tmarkdown */ |
OUTT_LINT, /* -Tlint */ |
OUTT_LINT, /* -Tlint */ |
OUTT_PS, /* -Tps */ |
OUTT_PS, /* -Tps */ |
OUTT_PDF /* -Tpdf */ |
OUTT_PDF /* -Tpdf */ |
Line 81 struct curparse { |
|
Line 81 struct curparse { |
|
struct manoutput *outopts; /* output options */ |
struct manoutput *outopts; /* output options */ |
}; |
}; |
|
|
|
|
int mandocdb(int, char *[]); |
int mandocdb(int, char *[]); |
|
|
static int fs_lookup(const struct manpaths *, |
static int fs_lookup(const struct manpaths *, |
size_t ipath, const char *, |
size_t ipath, const char *, |
const char *, const char *, |
const char *, const char *, |
Line 90 static void fs_search(const struct mansearch *, |
|
Line 92 static void fs_search(const struct mansearch *, |
|
const struct manpaths *, int, char**, |
const struct manpaths *, int, char**, |
struct manpage **, size_t *); |
struct manpage **, size_t *); |
static int koptions(int *, char *); |
static int koptions(int *, char *); |
static int moptions(int *, char *); |
static void moptions(int *, char *); |
static void mmsg(enum mandocerr, enum mandoclevel, |
static void mmsg(enum mandocerr, enum mandoclevel, |
const char *, int, int, const char *); |
const char *, int, int, const char *); |
static void outdata_alloc(struct curparse *); |
static void outdata_alloc(struct curparse *); |
Line 147 main(int argc, char *argv[]) |
|
Line 149 main(int argc, char *argv[]) |
|
return mandocdb(argc, argv); |
return mandocdb(argc, argv); |
|
|
#if HAVE_PLEDGE |
#if HAVE_PLEDGE |
if (pledge("stdio rpath tmppath tty proc exec flock", NULL) == -1) |
if (pledge("stdio rpath tmppath tty proc exec", NULL) == -1) |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
#endif |
#endif |
|
|
Line 191 main(int argc, char *argv[]) |
|
Line 193 main(int argc, char *argv[]) |
|
show_usage = 0; |
show_usage = 0; |
outmode = OUTMODE_DEF; |
outmode = OUTMODE_DEF; |
|
|
while (-1 != (c = getopt(argc, argv, |
while ((c = getopt(argc, argv, |
"aC:cfhI:iK:klM:m:O:S:s:T:VW:w"))) { |
"aC:cfhI:iK:klM:m:O:S:s:T:VW:w")) != -1) { |
|
if (c == 'i' && search.argmode == ARG_EXPR) { |
|
optind--; |
|
break; |
|
} |
switch (c) { |
switch (c) { |
case 'a': |
case 'a': |
outmode = OUTMODE_ALL; |
outmode = OUTMODE_ALL; |
Line 222 main(int argc, char *argv[]) |
|
Line 228 main(int argc, char *argv[]) |
|
} |
} |
defos = mandoc_strdup(optarg + 3); |
defos = mandoc_strdup(optarg + 3); |
break; |
break; |
case 'i': |
|
outmode = OUTMODE_INT; |
|
break; |
|
case 'K': |
case 'K': |
if ( ! koptions(&options, optarg)) |
if ( ! koptions(&options, optarg)) |
return (int)MANDOCLEVEL_BADARG; |
return (int)MANDOCLEVEL_BADARG; |
Line 310 main(int argc, char *argv[]) |
|
Line 313 main(int argc, char *argv[]) |
|
|
|
#if HAVE_PLEDGE |
#if HAVE_PLEDGE |
if (!use_pager) |
if (!use_pager) |
if (pledge("stdio rpath flock", NULL) == -1) |
if (pledge("stdio rpath", NULL) == -1) |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
err((int)MANDOCLEVEL_SYSERR, "pledge"); |
#endif |
#endif |
|
|
Line 355 main(int argc, char *argv[]) |
|
Line 358 main(int argc, char *argv[]) |
|
/* man(1), whatis(1), apropos(1) */ |
/* man(1), whatis(1), apropos(1) */ |
|
|
if (search.argmode != ARG_FILE) { |
if (search.argmode != ARG_FILE) { |
if (argc == 0) |
|
usage(search.argmode); |
|
|
|
if (search.argmode == ARG_NAME && |
if (search.argmode == ARG_NAME && |
outmode == OUTMODE_ONE) |
outmode == OUTMODE_ONE) |
search.firstmatch = 1; |
search.firstmatch = 1; |
Line 365 main(int argc, char *argv[]) |
|
Line 365 main(int argc, char *argv[]) |
|
/* Access the mandoc database. */ |
/* Access the mandoc database. */ |
|
|
manconf_parse(&conf, conf_file, defpaths, auxpaths); |
manconf_parse(&conf, conf_file, defpaths, auxpaths); |
mansearch_setup(1); |
|
if ( ! mansearch(&search, &conf.manpath, |
if ( ! mansearch(&search, &conf.manpath, |
argc, argv, &res, &sz)) |
argc, argv, &res, &sz)) |
usage(search.argmode); |
usage(search.argmode); |
|
|
if (sz == 0) { |
if (sz == 0) { |
if (search.argmode == ARG_NAME) |
if (search.argmode == ARG_NAME) |
fs_search(&search, &conf.manpath, |
fs_search(&search, &conf.manpath, |
Line 442 main(int argc, char *argv[]) |
|
Line 442 main(int argc, char *argv[]) |
|
} |
} |
#endif |
#endif |
|
|
if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths)) |
if (search.argmode == ARG_FILE) |
return (int)MANDOCLEVEL_BADARG; |
moptions(&options, auxpaths); |
|
|
mchars_alloc(); |
mchars_alloc(); |
curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos); |
curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos); |
Line 470 main(int argc, char *argv[]) |
|
Line 470 main(int argc, char *argv[]) |
|
|
|
if (resp == NULL) |
if (resp == NULL) |
parse(&curp, fd, *argv); |
parse(&curp, fd, *argv); |
else if (resp->form & FORM_SRC) { |
else if (resp->form == FORM_SRC) { |
/* For .so only; ignore failure. */ |
/* For .so only; ignore failure. */ |
chdir(conf.manpath.paths[resp->ipath]); |
chdir(conf.manpath.paths[resp->ipath]); |
parse(&curp, fd, resp->file); |
parse(&curp, fd, resp->file); |
|
|
if (search.argmode != ARG_FILE) { |
if (search.argmode != ARG_FILE) { |
manconf_free(&conf); |
manconf_free(&conf); |
mansearch_free(res, sz); |
mansearch_free(res, sz); |
mansearch_setup(0); |
|
} |
} |
|
|
free(defos); |
free(defos); |
Line 593 usage(enum argmode argmode) |
|
Line 592 usage(enum argmode argmode) |
|
|
|
switch (argmode) { |
switch (argmode) { |
case ARG_FILE: |
case ARG_FILE: |
fputs("usage: mandoc [-acfhkl] [-I os=name] " |
fputs("usage: mandoc [-ac] [-I os=name] " |
"[-K encoding] [-mformat] [-O option]\n" |
"[-K encoding] [-mdoc | -man] [-O options]\n" |
"\t [-T output] [-W level] [file ...]\n", stderr); |
"\t [-T output] [-W level] [file ...]\n", stderr); |
break; |
break; |
case ARG_NAME: |
case ARG_NAME: |
fputs("usage: man [-acfhklw] [-C file] [-I os=name] " |
fputs("usage: man [-acfhklw] [-C file] [-M path] " |
"[-K encoding] [-M path] [-m path]\n" |
"[-m path] [-S subsection]\n" |
"\t [-O option=value] [-S subsection] [-s section] " |
"\t [[-s] section] name ...\n", stderr); |
"[-T output] [-W level]\n" |
|
"\t [section] name ...\n", stderr); |
|
break; |
break; |
case ARG_WORD: |
case ARG_WORD: |
fputs("usage: whatis [-acfhklw] [-C file] " |
fputs("usage: whatis [-afk] [-C file] " |
"[-M path] [-m path] [-O outkey] [-S arch]\n" |
"[-M path] [-m path] [-O outkey] [-S arch]\n" |
"\t [-s section] name ...\n", stderr); |
"\t [-s section] name ...\n", stderr); |
break; |
break; |
case ARG_EXPR: |
case ARG_EXPR: |
fputs("usage: apropos [-acfhklw] [-C file] " |
fputs("usage: apropos [-afk] [-C file] " |
"[-M path] [-m path] [-O outkey] [-S arch]\n" |
"[-M path] [-m path] [-O outkey] [-S arch]\n" |
"\t [-s section] expression ...\n", stderr); |
"\t [-s section] expression ...\n", stderr); |
break; |
break; |
Line 626 fs_lookup(const struct manpaths *paths, size_t ipath, |
|
Line 623 fs_lookup(const struct manpaths *paths, size_t ipath, |
|
glob_t globinfo; |
glob_t globinfo; |
struct manpage *page; |
struct manpage *page; |
char *file; |
char *file; |
int form, globres; |
int globres; |
|
enum form form; |
|
|
form = FORM_SRC; |
form = FORM_SRC; |
mandoc_asprintf(&file, "%s/man%s/%s.%s", |
mandoc_asprintf(&file, "%s/man%s/%s.%s", |
Line 767 parse(struct curparse *curp, int fd, const char *file) |
|
Line 765 parse(struct curparse *curp, int fd, const char *file) |
|
case OUTT_PS: |
case OUTT_PS: |
terminal_mdoc(curp->outdata, man); |
terminal_mdoc(curp->outdata, man); |
break; |
break; |
|
case OUTT_MARKDOWN: |
|
markdown_mdoc(curp->outdata, man); |
|
break; |
default: |
default: |
break; |
break; |
} |
} |
Line 916 koptions(int *options, char *arg) |
|
Line 917 koptions(int *options, char *arg) |
|
return 1; |
return 1; |
} |
} |
|
|
static int |
static void |
moptions(int *options, char *arg) |
moptions(int *options, char *arg) |
{ |
{ |
|
|
if (arg == NULL) |
if (arg == NULL) |
/* nothing to do */; |
return; |
else if (0 == strcmp(arg, "doc")) |
if (strcmp(arg, "doc") == 0) |
*options |= MPARSE_MDOC; |
*options |= MPARSE_MDOC; |
else if (0 == strcmp(arg, "andoc")) |
else if (strcmp(arg, "an") == 0) |
/* nothing to do */; |
|
else if (0 == strcmp(arg, "an")) |
|
*options |= MPARSE_MAN; |
*options |= MPARSE_MAN; |
else { |
|
warnx("-m %s: Bad argument", arg); |
|
return 0; |
|
} |
|
|
|
return 1; |
|
} |
} |
|
|
static int |
static int |
Line 951 toptions(struct curparse *curp, char *arg) |
|
Line 944 toptions(struct curparse *curp, char *arg) |
|
curp->outtype = OUTT_MAN; |
curp->outtype = OUTT_MAN; |
else if (0 == strcmp(arg, "html")) |
else if (0 == strcmp(arg, "html")) |
curp->outtype = OUTT_HTML; |
curp->outtype = OUTT_HTML; |
|
else if (0 == strcmp(arg, "markdown")) |
|
curp->outtype = OUTT_MARKDOWN; |
else if (0 == strcmp(arg, "utf8")) |
else if (0 == strcmp(arg, "utf8")) |
curp->outtype = OUTT_UTF8; |
curp->outtype = OUTT_UTF8; |
else if (0 == strcmp(arg, "locale")) |
else if (0 == strcmp(arg, "locale")) |
|
|
woptions(struct curparse *curp, char *arg) |
woptions(struct curparse *curp, char *arg) |
{ |
{ |
char *v, *o; |
char *v, *o; |
const char *toks[7]; |
const char *toks[8]; |
|
|
toks[0] = "stop"; |
toks[0] = "stop"; |
toks[1] = "all"; |
toks[1] = "all"; |
toks[2] = "warning"; |
toks[2] = "style"; |
toks[3] = "error"; |
toks[3] = "warning"; |
toks[4] = "unsupp"; |
toks[4] = "error"; |
toks[5] = "fatal"; |
toks[5] = "unsupp"; |
toks[6] = NULL; |
toks[6] = "fatal"; |
|
toks[7] = NULL; |
|
|
while (*arg) { |
while (*arg) { |
o = arg; |
o = arg; |
Line 991 woptions(struct curparse *curp, char *arg) |
|
Line 987 woptions(struct curparse *curp, char *arg) |
|
break; |
break; |
case 1: |
case 1: |
case 2: |
case 2: |
curp->wlevel = MANDOCLEVEL_WARNING; |
curp->wlevel = MANDOCLEVEL_STYLE; |
break; |
break; |
case 3: |
case 3: |
curp->wlevel = MANDOCLEVEL_ERROR; |
curp->wlevel = MANDOCLEVEL_WARNING; |
break; |
break; |
case 4: |
case 4: |
curp->wlevel = MANDOCLEVEL_UNSUPP; |
curp->wlevel = MANDOCLEVEL_ERROR; |
break; |
break; |
case 5: |
case 5: |
|
curp->wlevel = MANDOCLEVEL_UNSUPP; |
|
break; |
|
case 6: |
curp->wlevel = MANDOCLEVEL_BADARG; |
curp->wlevel = MANDOCLEVEL_BADARG; |
break; |
break; |
default: |
default: |
Line 1007 woptions(struct curparse *curp, char *arg) |
|
Line 1006 woptions(struct curparse *curp, char *arg) |
|
return 0; |
return 0; |
} |
} |
} |
} |
|
|
return 1; |
return 1; |
} |
} |
|
|