version 1.158, 2018/05/29 20:32:45 |
version 1.159, 2018/10/01 08:06:53 |
|
|
static void html_print(const char *); |
static void html_print(const char *); |
static void html_putchar(char); |
static void html_putchar(char); |
static int http_decode(char *); |
static int http_decode(char *); |
|
static void http_encode(const char *p); |
static void parse_manpath_conf(struct req *); |
static void parse_manpath_conf(struct req *); |
static void parse_path_info(struct req *req, const char *path); |
static void parse_path_info(struct req *req, const char *path); |
static void parse_query_string(struct req *, const char *); |
static void parse_query_string(struct req *, const char *); |
Line 90 static void resp_format(const struct req *, const ch |
|
Line 91 static void resp_format(const struct req *, const ch |
|
static void resp_searchform(const struct req *, enum focus); |
static void resp_searchform(const struct req *, enum focus); |
static void resp_show(const struct req *, const char *); |
static void resp_show(const struct req *, const char *); |
static void set_query_attr(char **, char **); |
static void set_query_attr(char **, char **); |
|
static int validate_arch(const char *); |
static int validate_filename(const char *); |
static int validate_filename(const char *); |
static int validate_manpath(const struct req *, const char *); |
static int validate_manpath(const struct req *, const char *); |
static int validate_urifrag(const char *); |
static int validate_urifrag(const char *); |
Line 316 http_decode(char *p) |
|
Line 318 http_decode(char *p) |
|
} |
} |
|
|
static void |
static void |
|
http_encode(const char *p) |
|
{ |
|
for (; *p != '\0'; p++) { |
|
if (isalnum((unsigned char)*p) == 0 && |
|
strchr("-._~", *p) == NULL) |
|
printf("%%%02.2X", (unsigned char)*p); |
|
else |
|
putchar(*p); |
|
} |
|
} |
|
|
|
static void |
resp_begin_http(int code, const char *msg) |
resp_begin_http(int code, const char *msg) |
{ |
{ |
|
|
Line 490 validate_manpath(const struct req *req, const char* ma |
|
Line 504 validate_manpath(const struct req *req, const char* ma |
|
} |
} |
|
|
static int |
static int |
|
validate_arch(const char *arch) |
|
{ |
|
int i; |
|
|
|
for (i = 0; i < arch_MAX; i++) |
|
if (strcmp(arch, arch_names[i]) == 0) |
|
return 1; |
|
|
|
return 0; |
|
} |
|
|
|
static int |
validate_filename(const char *file) |
validate_filename(const char *file) |
{ |
{ |
|
|
Line 562 pg_redirect(const struct req *req, const char *name) |
|
Line 588 pg_redirect(const struct req *req, const char *name) |
|
printf("%s/", req->q.manpath); |
printf("%s/", req->q.manpath); |
if (req->q.arch != NULL) |
if (req->q.arch != NULL) |
printf("%s/", req->q.arch); |
printf("%s/", req->q.arch); |
printf("%s", name); |
http_encode(name); |
if (req->q.sec != NULL) |
if (req->q.sec != NULL) { |
printf(".%s", req->q.sec); |
putchar('.'); |
|
http_encode(req->q.sec); |
|
} |
printf("\r\nContent-Type: text/html; charset=utf-8\r\n\r\n"); |
printf("\r\nContent-Type: text/html; charset=utf-8\r\n\r\n"); |
} |
} |
|
|
|
|
return EXIT_FAILURE; |
return EXIT_FAILURE; |
} |
} |
|
|
if ( ! (NULL == req.q.arch || validate_urifrag(req.q.arch))) { |
if (req.q.arch != NULL && validate_arch(req.q.arch) == 0) { |
pg_error_badrequest( |
pg_error_badrequest( |
"You specified an invalid architecture."); |
"You specified an invalid architecture."); |
return EXIT_FAILURE; |
return EXIT_FAILURE; |