diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2026-10-26 17:13:36 +0100 |
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2026-10-26 17:13:36 +0100 |
| commit | 6837c5ac80e3624c6dc3a82d03e50d68b2f5a989 (patch) | |
| tree | f829fa152980cefec412483b240813432c9406d7 /ot_urlencoded.h | |
| parent | 6871825565d0ba24436dbd5b92cc09e02f93af6a (diff) | |
Second run of making variable and function names more readable, urlencoder now matches overall naming scheme
Diffstat (limited to 'ot_urlencoded.h')
| -rw-r--r-- | ot_urlencoded.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/ot_urlencoded.h b/ot_urlencoded.h new file mode 100644 index 0000000..8147370 --- /dev/null +++ b/ot_urlencoded.h | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | /* This software was written by Dirk Engling <erdgeist@erdgeist.org> | ||
| 2 | It is considered beerware. Prost. Skol. Cheers or whatever. | ||
| 3 | |||
| 4 | $id$ */ | ||
| 5 | |||
| 6 | #ifndef SCAN_URLENCODED_QUERY_H__ | ||
| 7 | #define SCAN_URLENCODED_QUERY_H__ | ||
| 8 | |||
| 9 | #include <stddef.h> | ||
| 10 | #include <stdint.h> | ||
| 11 | #include <sys/types.h> | ||
| 12 | |||
| 13 | typedef struct { | ||
| 14 | const char *key; | ||
| 15 | int value; | ||
| 16 | } ot_keywords; | ||
| 17 | |||
| 18 | typedef enum { | ||
| 19 | SCAN_PATH = 1, | ||
| 20 | SCAN_SEARCHPATH_PARAM = 2, | ||
| 21 | SCAN_SEARCHPATH_VALUE = 4, | ||
| 22 | SCAN_SEARCHPATH_TERMINATOR = 8 | ||
| 23 | } SCAN_SEARCHPATH_FLAG; | ||
| 24 | |||
| 25 | /* string in: pointer to source | ||
| 26 | out: pointer to next scan position | ||
| 27 | deststring pointer to destination | ||
| 28 | flags determines, what to parse | ||
| 29 | returns number of valid converted characters in deststring | ||
| 30 | or -1 for parse error | ||
| 31 | or -2 for terminator found | ||
| 32 | */ | ||
| 33 | ssize_t urlencoded_parse(char **string, char *deststring, SCAN_SEARCHPATH_FLAG flags); | ||
| 34 | |||
| 35 | /* string in: pointer to source | ||
| 36 | out: pointer to next scan position | ||
| 37 | flags determines, what to parse | ||
| 38 | returns value for matched keyword | ||
| 39 | or -1 for parse error | ||
| 40 | or -2 for terminator found | ||
| 41 | or -3 for no keyword matched | ||
| 42 | */ | ||
| 43 | int urlencoded_match_keyword(const ot_keywords *keywords, char **string, SCAN_SEARCHPATH_FLAG flags); | ||
| 44 | |||
| 45 | /* string in: pointer to value of a param=value pair to skip | ||
| 46 | out: pointer to next scan position on return | ||
| 47 | */ | ||
| 48 | void urlencoded_skip_value(char **string); | ||
| 49 | |||
| 50 | /* data pointer to len chars of string | ||
| 51 | len length of chars in data to parse | ||
| 52 | number number to receive result | ||
| 53 | returns number of bytes not parsed, mostly !=0 means fail | ||
| 54 | */ | ||
| 55 | ssize_t scan_fixed_int(char *data, size_t len, int *number); | ||
| 56 | |||
| 57 | /* The other direction: percent encode len bytes from src into dest and return | ||
| 58 | how many characters were written. dest needs room for three times len. */ | ||
| 59 | size_t urlencoded_format(char *dest, const uint8_t *src, size_t len); | ||
| 60 | |||
| 61 | #endif | ||
