version 1.163, 2018/12/14 01:18:25 |
version 1.165, 2019/01/31 23:00:23 |
Line 849 resp_format(const struct req *req, const char *file) |
|
Line 849 resp_format(const struct req *req, const char *file) |
|
{ |
{ |
struct manoutput conf; |
struct manoutput conf; |
struct mparse *mp; |
struct mparse *mp; |
struct roff_man *man; |
struct roff_meta *meta; |
void *vp; |
void *vp; |
int fd; |
int fd; |
int usepath; |
int usepath; |
Line 860 resp_format(const struct req *req, const char *file) |
|
Line 860 resp_format(const struct req *req, const char *file) |
|
} |
} |
|
|
mchars_alloc(); |
mchars_alloc(); |
mp = mparse_alloc(MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1, |
mp = mparse_alloc(MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1 | |
MANDOC_OS_OTHER, req->q.manpath); |
MPARSE_VALIDATE, MANDOC_OS_OTHER, req->q.manpath); |
mparse_readfd(mp, fd, file); |
mparse_readfd(mp, fd, file); |
close(fd); |
close(fd); |
|
meta = mparse_result(mp); |
|
|
memset(&conf, 0, sizeof(conf)); |
memset(&conf, 0, sizeof(conf)); |
conf.fragment = 1; |
conf.fragment = 1; |
Line 874 resp_format(const struct req *req, const char *file) |
|
Line 875 resp_format(const struct req *req, const char *file) |
|
scriptname, *scriptname == '\0' ? "" : "/", |
scriptname, *scriptname == '\0' ? "" : "/", |
usepath ? req->q.manpath : "", usepath ? "/" : ""); |
usepath ? req->q.manpath : "", usepath ? "/" : ""); |
|
|
mparse_result(mp, &man, NULL); |
|
if (man == NULL) { |
|
warnx("fatal mandoc error: %s/%s", req->q.manpath, file); |
|
pg_error_internal(); |
|
mparse_free(mp); |
|
mchars_free(); |
|
return; |
|
} |
|
|
|
vp = html_alloc(&conf); |
vp = html_alloc(&conf); |
|
if (meta->macroset == MACROSET_MDOC) |
|
html_mdoc(vp, meta); |
|
else |
|
html_man(vp, meta); |
|
|
if (man->macroset == MACROSET_MDOC) { |
|
mdoc_validate(man); |
|
html_mdoc(vp, man); |
|
} else { |
|
man_validate(man); |
|
html_man(vp, man); |
|
} |
|
|
|
html_free(vp); |
html_free(vp); |
mparse_free(mp); |
mparse_free(mp); |
mchars_free(); |
mchars_free(); |
Line 1190 parse_path_info(struct req *req, const char *path) |
|
Line 1178 parse_path_info(struct req *req, const char *path) |
|
} |
} |
|
|
/* Optional section. */ |
/* Optional section. */ |
if (strncmp(path, "man", 3) == 0) { |
if (strncmp(path, "man", 3) == 0 || strncmp(path, "cat", 3) == 0) { |
path += 3; |
path += 3; |
end = strchr(path, '/'); |
end = strchr(path, '/'); |
free(req->q.sec); |
free(req->q.sec); |