https://github.com/anatol/uriparser
Extremely fast uri parser suitable for embedded applications
https://github.com/anatol/uriparser
c ragel uriparser
Last synced: 8 months ago
JSON representation
Extremely fast uri parser suitable for embedded applications
- Host: GitHub
- URL: https://github.com/anatol/uriparser
- Owner: anatol
- Created: 2015-04-01T22:59:55.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2017-08-04T16:24:20.000Z (almost 9 years ago)
- Last Synced: 2025-03-25T13:45:36.897Z (over 1 year ago)
- Topics: c, ragel, uriparser
- Language: C
- Homepage:
- Size: 4.88 KB
- Stars: 13
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
URIParser
=========
uriparser is a small footprint and extremely fast uri parser.
It uses Ragel state machine to parse input. This library does not keep internal state and does not
allocate any dynamic memory.
```C
#include
#include
#include
#include "uriparser.h"
#define MAX_PARAMS 4
int main(int argc, char const *argv[])
{
const char* schema;
size_t schema_len;
const char* host;
size_t host_len;
int port;
const char* path;
size_t path_len;
struct uri_keyvalue params[MAX_PARAMS];
size_t num_params = MAX_PARAMS;
const char* fragment;
size_t fragment_len;
const char *input = "http://google.com:8080/foo?bar&baz=4#fragm";
int ret = parse_uri(input, strlen(input), &schema, &schema_len,
&host, &host_len, &port, &path, &path_len,
params, &num_params, &fragment, &fragment_len);
printf("Input URL is %s\n", input);
printf("schema = %.*s\n", (int)schema_len, schema);
printf("host = %.*s\n", (int)host_len, host);
printf("port = %d\n", port);
printf("path = %.*s\n", (int)path_len, path);
printf("number of params = %zu\n", num_params);
for (int i = 0; i < num_params; i++) {
printf(" param[%d] => %.*s = %.*s\n", i,
(int)params[i].name_len, params[i].name,
(int)params[i].value_len, params[i].value);
}
printf("fragment = %.*s\n", (int)fragment_len, fragment);
return 0;
}
```
To compile the example above run:
gcc -std=c99 -o example example.c uriparser.c