Lines Matching refs:req

61 struct	req {  struct
77 static void parse_manpath_conf(struct req *); argument
78 static void parse_path_info(struct req *, const char *);
79 static void parse_query_string(struct req *, const char *);
82 static void pg_index(const struct req *);
83 static void pg_noresult(const struct req *, int, const char *,
85 static void pg_redirect(const struct req *, const char *);
86 static void pg_search(const struct req *);
87 static void pg_searchres(const struct req *,
89 static void pg_show(struct req *, const char *);
92 static void resp_catman(const struct req *, const char *);
95 static void resp_format(const struct req *, const char *);
96 static void resp_searchform(const struct req *, enum focus);
97 static void resp_show(const struct req *, const char *);
101 static int validate_manpath(const struct req *, const char *);
206 parse_query_string(struct req *req, const char *qs) in parse_query_string() argument
211 req->isquery = 1; in parse_query_string()
212 req->q.manpath = NULL; in parse_query_string()
213 req->q.arch = NULL; in parse_query_string()
214 req->q.sec = NULL; in parse_query_string()
215 req->q.query = NULL; in parse_query_string()
216 req->q.equal = 1; in parse_query_string()
243 set_query_attr(&req->q.query, &val); in parse_query_string()
246 req->q.equal = !strcmp(val, "0"); in parse_query_string()
256 set_query_attr(&req->q.manpath, &val); in parse_query_string()
266 set_query_attr(&req->q.sec, &val); in parse_query_string()
272 set_query_attr(&req->q.arch, &val); in parse_query_string()
435 resp_searchform(const struct req *req, enum focus focus) in resp_searchform() argument
449 if (req->q.query != NULL) in resp_searchform()
450 html_print(req->q.query); in resp_searchform()
469 if (NULL != req->q.sec && in resp_searchform()
470 0 == strcmp(sec_numbers[i], req->q.sec)) in resp_searchform()
480 if (NULL == req->q.arch) in resp_searchform()
485 if (NULL != req->q.arch && in resp_searchform()
486 0 == strcmp(arch_names[i], req->q.arch)) in resp_searchform()
494 if (req->psz > 1) { in resp_searchform()
497 for (i = 0; i < (int)req->psz; i++) { in resp_searchform()
499 if (strcmp(req->q.manpath, req->p[i]) == 0) in resp_searchform()
502 html_print(req->p[i]); in resp_searchform()
527 validate_manpath(const struct req *req, const char* manpath) in validate_manpath() argument
531 for (i = 0; i < req->psz; i++) in validate_manpath()
532 if ( ! strcmp(manpath, req->p[i])) in validate_manpath()
562 pg_index(const struct req *req) in pg_index() argument
566 resp_searchform(req, FOCUS_QUERY); in pg_index()
585 pg_noresult(const struct req *req, int code, const char *http_msg, in pg_noresult() argument
590 resp_searchform(req, FOCUS_QUERY); in pg_noresult()
626 pg_redirect(const struct req *req, const char *name) in pg_redirect() argument
632 if (strcmp(req->q.manpath, req->p[0])) in pg_redirect()
633 printf("%s/", req->q.manpath); in pg_redirect()
634 if (req->q.arch != NULL) in pg_redirect()
635 printf("%s/", req->q.arch); in pg_redirect()
637 if (req->q.sec != NULL) { in pg_redirect()
639 http_encode(req->q.sec); in pg_redirect()
645 pg_searchres(const struct req *req, struct manpage *r, size_t sz) in pg_searchres() argument
658 r[i].file, req->q.manpath); in pg_searchres()
663 if (req->isquery && sz == 1) { in pg_searchres()
672 if (strcmp(req->q.manpath, req->p[0])) in pg_searchres()
673 printf("%s/", req->q.manpath); in pg_searchres()
686 if (req->q.equal || sz == 1) { in pg_searchres()
697 if (req->q.arch == NULL) { in pg_searchres()
725 resp_searchform(req, in pg_searchres()
726 req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY); in pg_searchres()
738 if (strcmp(req->q.manpath, req->p[0])) in pg_searchres()
739 printf("%s/", req->q.manpath); in pg_searchres()
752 if (req->q.equal || sz == 1) { in pg_searchres()
754 resp_show(req, r[iuse].file); in pg_searchres()
761 resp_catman(const struct req *req, const char *file) in resp_catman() argument
900 resp_format(const struct req *req, const char *file) in resp_format() argument
918 MPARSE_VALIDATE, MANDOC_OS_OTHER, req->q.manpath); in resp_format()
926 usepath = strcmp(req->q.manpath, req->p[0]); in resp_format()
929 usepath ? req->q.manpath : "", usepath ? "/" : ""); in resp_format()
945 resp_show(const struct req *req, const char *file) in resp_show() argument
952 resp_catman(req, file); in resp_show()
954 resp_format(req, file); in resp_show()
958 pg_show(struct req *req, const char *fullpath) in pg_show() argument
971 if ( ! validate_manpath(req, manpath)) { in pg_show()
1000 resp_searchform(req, FOCUS_NONE); in pg_show()
1002 resp_show(req, file); in pg_show()
1007 pg_search(const struct req *req) in pg_search() argument
1023 if (chdir(req->q.manpath) == -1) { in pg_search()
1024 warn("chdir %s", req->q.manpath); in pg_search()
1029 search.arch = req->q.arch; in pg_search()
1030 search.sec = req->q.sec; in pg_search()
1032 search.argmode = req->q.equal ? ARG_NAME : ARG_EXPR; in pg_search()
1045 rp = query = mandoc_strdup(req->q.query); in pg_search()
1072 if (req->isquery && req->q.equal && argc == 1) in pg_search()
1073 pg_redirect(req, argv[0]); in pg_search()
1075 pg_noresult(req, 400, "Bad Request", in pg_search()
1078 pg_noresult(req, 404, "Not Found", "No results found."); in pg_search()
1080 pg_searchres(req, res, ressz); in pg_search()
1091 struct req req; in main() local
1137 memset(&req, 0, sizeof(struct req)); in main()
1138 req.q.equal = 1; in main()
1139 parse_manpath_conf(&req); in main()
1149 parse_path_info(&req, path); in main()
1150 if (req.q.manpath == NULL || req.q.sec == NULL || in main()
1151 *req.q.query == '\0' || access(path, F_OK) == -1) in main()
1154 parse_query_string(&req, querystring); in main()
1158 if (req.q.manpath == NULL) in main()
1159 req.q.manpath = mandoc_strdup(req.p[0]); in main()
1160 else if ( ! validate_manpath(&req, req.q.manpath)) { in main()
1166 if (req.q.arch != NULL && validate_arch(req.q.arch) == 0) { in main()
1175 pg_show(&req, path); in main()
1176 else if (NULL != req.q.query) in main()
1177 pg_search(&req); in main()
1179 pg_index(&req); in main()
1181 free(req.q.manpath); in main()
1182 free(req.q.arch); in main()
1183 free(req.q.sec); in main()
1184 free(req.q.query); in main()
1185 for (i = 0; i < (int)req.psz; i++) in main()
1186 free(req.p[i]); in main()
1187 free(req.p); in main()
1195 parse_path_info(struct req *req, const char *path) in parse_path_info() argument
1199 req->isquery = 0; in parse_path_info()
1200 req->q.equal = 1; in parse_path_info()
1201 req->q.manpath = NULL; in parse_path_info()
1202 req->q.arch = NULL; in parse_path_info()
1213 req->q.query = mandoc_strndup(name, sec - name - 1); in parse_path_info()
1214 req->q.sec = mandoc_strdup(sec); in parse_path_info()
1216 req->q.query = mandoc_strdup(name); in parse_path_info()
1217 req->q.sec = NULL; in parse_path_info()
1226 req->q.manpath = mandoc_strndup(path, end - path); in parse_path_info()
1227 if (validate_manpath(req, req->q.manpath)) { in parse_path_info()
1232 free(req->q.manpath); in parse_path_info()
1233 req->q.manpath = NULL; in parse_path_info()
1240 free(req->q.sec); in parse_path_info()
1241 req->q.sec = mandoc_strndup(path, end - path); in parse_path_info()
1254 req->q.arch = mandoc_strndup(path, end - path); in parse_path_info()
1255 if (validate_arch(req->q.arch) == 0) { in parse_path_info()
1266 parse_manpath_conf(struct req *req) in parse_manpath_conf() argument
1285 req->p = mandoc_realloc(req->p, in parse_manpath_conf()
1286 (req->psz + 1) * sizeof(char *)); in parse_manpath_conf()
1299 req->p[req->psz++] = dp; in parse_manpath_conf()
1305 if (req->p == NULL) { in parse_manpath_conf()