You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
#include "http_parser.h" |
|
#include <stdio.h> |
|
#include <string.h> |
|
|
|
void |
|
dump_url (const char *url, const struct http_parser_url *u) |
|
{ |
|
unsigned int i; |
|
|
|
printf("\tfield_set: 0x%x, port: %u\n", u->field_set, u->port); |
|
for (i = 0; i < UF_MAX; i++) { |
|
if ((u->field_set & (1 << i)) == 0) { |
|
printf("\tfield_data[%u]: unset\n", i); |
|
continue; |
|
} |
|
|
|
printf("\tfield_data[%u]: off: %u len: %u part: \"%.*s\n", |
|
i, |
|
u->field_data[i].off, |
|
u->field_data[i].len, |
|
u->field_data[i].len, |
|
url + u->field_data[i].off); |
|
} |
|
} |
|
|
|
int main(int argc, char ** argv) { |
|
if (argc != 3) { |
|
printf("Syntax : %s connect|get url\n", argv[0]); |
|
return 1; |
|
} |
|
struct http_parser_url u; |
|
int len = strlen(argv[2]); |
|
int connect = strcmp("connect", argv[1]) == 0 ? 1 : 0; |
|
printf("Parsing %s, connect %d\n", argv[2], connect); |
|
|
|
int result = http_parser_parse_url(argv[2], len, connect, &u); |
|
if (result != 0) { |
|
printf("Parse error : %d\n", result); |
|
return result; |
|
} |
|
printf("Parse ok, result : \n"); |
|
dump_url(argv[2], &u); |
|
return 0; |
|
} |