Lines Matching refs:req

60 struct	req {  struct
76 static void parse_manpath_conf(struct req *); argument
77 static void parse_path_info(struct req *, const char *);
78 static void parse_query_string(struct req *, const char *);
81 static void pg_index(const struct req *);
82 static void pg_noresult(const struct req *, int, const char *,
84 static void pg_redirect(const struct req *, const char *);
85 static void pg_search(const struct req *);
86 static void pg_searchres(const struct req *,
88 static void pg_show(struct req *, const char *);
91 static void resp_catman(const struct req *, const char *);
94 static void resp_format(const struct req *, const char *);
95 static void resp_searchform(const struct req *, enum focus);
96 static void resp_show(const struct req *, const char *);
100 static int validate_manpath(const struct req *, const char *);
205 parse_query_string(struct req *req, const char *qs) in parse_query_string() argument
210 req->isquery = 1; in parse_query_string()
211 req->q.manpath = NULL; in parse_query_string()
212 req->q.arch = NULL; in parse_query_string()
213 req->q.sec = NULL; in parse_query_string()
214 req->q.query = NULL; in parse_query_string()
215 req->q.equal = 1; in parse_query_string()
242 set_query_attr(&req->q.query, &val); in parse_query_string()
245 req->q.equal = !strcmp(val, "0"); in parse_query_string()
255 set_query_attr(&req->q.manpath, &val); in parse_query_string()
265 set_query_attr(&req->q.sec, &val); in parse_query_string()
271 set_query_attr(&req->q.arch, &val); in parse_query_string()
430 resp_searchform(const struct req *req, enum focus focus) in resp_searchform() argument
443 if (req->q.query != NULL) in resp_searchform()
444 html_print(req->q.query); in resp_searchform()
463 if (NULL != req->q.sec && in resp_searchform()
464 0 == strcmp(sec_numbers[i], req->q.sec)) in resp_searchform()
474 if (NULL == req->q.arch) in resp_searchform()
479 if (NULL != req->q.arch && in resp_searchform()
480 0 == strcmp(arch_names[i], req->q.arch)) in resp_searchform()
488 if (req->psz > 1) { in resp_searchform()
490 for (i = 0; i < (int)req->psz; i++) { in resp_searchform()
492 if (strcmp(req->q.manpath, req->p[i]) == 0) in resp_searchform()
495 html_print(req->p[i]); in resp_searchform()
520 validate_manpath(const struct req *req, const char* manpath) in validate_manpath() argument
524 for (i = 0; i < req->psz; i++) in validate_manpath()
525 if ( ! strcmp(manpath, req->p[i])) in validate_manpath()
555 pg_index(const struct req *req) in pg_index() argument
559 resp_searchform(req, FOCUS_QUERY); in pg_index()
573 pg_noresult(const struct req *req, int code, const char *http_msg, in pg_noresult() argument
577 resp_searchform(req, FOCUS_QUERY); in pg_noresult()
607 pg_redirect(const struct req *req, const char *name) in pg_redirect() argument
613 if (strcmp(req->q.manpath, req->p[0])) in pg_redirect()
614 printf("%s/", req->q.manpath); in pg_redirect()
615 if (req->q.arch != NULL) in pg_redirect()
616 printf("%s/", req->q.arch); in pg_redirect()
618 if (req->q.sec != NULL) { in pg_redirect()
620 http_encode(req->q.sec); in pg_redirect()
626 pg_searchres(const struct req *req, struct manpage *r, size_t sz) in pg_searchres() argument
638 r[i].file, req->q.manpath); in pg_searchres()
643 if (req->isquery && sz == 1) { in pg_searchres()
652 if (strcmp(req->q.manpath, req->p[0])) in pg_searchres()
653 printf("%s/", req->q.manpath); in pg_searchres()
666 if (req->q.equal || sz == 1) { in pg_searchres()
677 if (req->q.arch == NULL) { in pg_searchres()
703 resp_searchform(req, in pg_searchres()
704 req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY); in pg_searchres()
714 if (strcmp(req->q.manpath, req->p[0])) in pg_searchres()
715 printf("%s/", req->q.manpath); in pg_searchres()
727 if (req->q.equal || sz == 1) { in pg_searchres()
729 resp_show(req, r[iuse].file); in pg_searchres()
736 resp_catman(const struct req *req, const char *file) in resp_catman() argument
873 resp_format(const struct req *req, const char *file) in resp_format() argument
889 MPARSE_VALIDATE, MANDOC_OS_OTHER, req->q.manpath); in resp_format()
897 usepath = strcmp(req->q.manpath, req->p[0]); in resp_format()
900 usepath ? req->q.manpath : "", usepath ? "/" : ""); in resp_format()
916 resp_show(const struct req *req, const char *file) in resp_show() argument
923 resp_catman(req, file); in resp_show()
925 resp_format(req, file); in resp_show()
929 pg_show(struct req *req, const char *fullpath) in pg_show() argument
942 if ( ! validate_manpath(req, manpath)) { in pg_show()
970 resp_searchform(req, FOCUS_NONE); in pg_show()
971 resp_show(req, file); in pg_show()
976 pg_search(const struct req *req) in pg_search() argument
992 if (chdir(req->q.manpath) == -1) { in pg_search()
993 warn("chdir %s", req->q.manpath); in pg_search()
998 search.arch = req->q.arch; in pg_search()
999 search.sec = req->q.sec; in pg_search()
1001 search.argmode = req->q.equal ? ARG_NAME : ARG_EXPR; in pg_search()
1014 rp = query = mandoc_strdup(req->q.query); in pg_search()
1041 if (req->isquery && req->q.equal && argc == 1) in pg_search()
1042 pg_redirect(req, argv[0]); in pg_search()
1044 pg_noresult(req, 400, "Bad Request", in pg_search()
1047 pg_noresult(req, 404, "Not Found", "No results found."); in pg_search()
1049 pg_searchres(req, res, ressz); in pg_search()
1060 struct req req; in main() local
1106 memset(&req, 0, sizeof(struct req)); in main()
1107 req.q.equal = 1; in main()
1108 parse_manpath_conf(&req); in main()
1118 parse_path_info(&req, path); in main()
1119 if (req.q.manpath == NULL || req.q.sec == NULL || in main()
1120 *req.q.query == '\0' || access(path, F_OK) == -1) in main()
1123 parse_query_string(&req, querystring); in main()
1127 if (req.q.manpath == NULL) in main()
1128 req.q.manpath = mandoc_strdup(req.p[0]); in main()
1129 else if ( ! validate_manpath(&req, req.q.manpath)) { in main()
1135 if (req.q.arch != NULL && validate_arch(req.q.arch) == 0) { in main()
1144 pg_show(&req, path); in main()
1145 else if (NULL != req.q.query) in main()
1146 pg_search(&req); in main()
1148 pg_index(&req); in main()
1150 free(req.q.manpath); in main()
1151 free(req.q.arch); in main()
1152 free(req.q.sec); in main()
1153 free(req.q.query); in main()
1154 for (i = 0; i < (int)req.psz; i++) in main()
1155 free(req.p[i]); in main()
1156 free(req.p); in main()
1164 parse_path_info(struct req *req, const char *path) in parse_path_info() argument
1168 req->isquery = 0; in parse_path_info()
1169 req->q.equal = 1; in parse_path_info()
1170 req->q.manpath = NULL; in parse_path_info()
1171 req->q.arch = NULL; in parse_path_info()
1182 req->q.query = mandoc_strndup(name, sec - name - 1); in parse_path_info()
1183 req->q.sec = mandoc_strdup(sec); in parse_path_info()
1185 req->q.query = mandoc_strdup(name); in parse_path_info()
1186 req->q.sec = NULL; in parse_path_info()
1195 req->q.manpath = mandoc_strndup(path, end - path); in parse_path_info()
1196 if (validate_manpath(req, req->q.manpath)) { in parse_path_info()
1201 free(req->q.manpath); in parse_path_info()
1202 req->q.manpath = NULL; in parse_path_info()
1209 free(req->q.sec); in parse_path_info()
1210 req->q.sec = mandoc_strndup(path, end - path); in parse_path_info()
1223 req->q.arch = mandoc_strndup(path, end - path); in parse_path_info()
1224 if (validate_arch(req->q.arch) == 0) { in parse_path_info()
1235 parse_manpath_conf(struct req *req) in parse_manpath_conf() argument
1254 req->p = mandoc_realloc(req->p, in parse_manpath_conf()
1255 (req->psz + 1) * sizeof(char *)); in parse_manpath_conf()
1268 req->p[req->psz++] = dp; in parse_manpath_conf()
1274 if (req->p == NULL) { in parse_manpath_conf()