mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-22 20:16:54 +03:00
nsurl: Split out URL parsing.
This commit is contained in:
parent
4c47f9c046
commit
95e5ede775
@ -1,6 +1,7 @@
|
||||
# nsurl utils sources
|
||||
|
||||
S_NSURL := \
|
||||
nsurl.c
|
||||
nsurl.c \
|
||||
parse.c
|
||||
|
||||
S_NSURL := $(addprefix utils/nsurl/,$(S_NSURL))
|
1528
utils/nsurl/nsurl.c
1528
utils/nsurl/nsurl.c
File diff suppressed because it is too large
Load Diff
1602
utils/nsurl/parse.c
Normal file
1602
utils/nsurl/parse.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -21,6 +21,7 @@
|
||||
|
||||
#include <libwapcaplet/libwapcaplet.h>
|
||||
|
||||
#include "utils/nsurl.h"
|
||||
#include "utils/utils.h"
|
||||
|
||||
/** A type for URL schemes */
|
||||
@ -72,4 +73,71 @@ struct nsurl {
|
||||
char string[FLEX_ARRAY_LEN_DECL]; /* Full URL as a string */
|
||||
};
|
||||
|
||||
|
||||
/** Marker set, indicating positions of sections within a URL string */
|
||||
struct nsurl_component_lengths {
|
||||
size_t scheme;
|
||||
size_t username;
|
||||
size_t password;
|
||||
size_t host;
|
||||
size_t port;
|
||||
size_t path;
|
||||
size_t query;
|
||||
size_t fragment;
|
||||
};
|
||||
|
||||
|
||||
/** Flags indicating which parts of a URL string are required for a nsurl */
|
||||
enum nsurl_string_flags {
|
||||
NSURL_F_SCHEME = (1 << 0),
|
||||
NSURL_F_SCHEME_PUNCTUATION = (1 << 1),
|
||||
NSURL_F_AUTHORITY_PUNCTUATION = (1 << 2),
|
||||
NSURL_F_USERNAME = (1 << 3),
|
||||
NSURL_F_PASSWORD = (1 << 4),
|
||||
NSURL_F_CREDENTIALS_PUNCTUATION = (1 << 5),
|
||||
NSURL_F_HOST = (1 << 6),
|
||||
NSURL_F_PORT = (1 << 7),
|
||||
NSURL_F_AUTHORITY = (NSURL_F_USERNAME |
|
||||
NSURL_F_PASSWORD |
|
||||
NSURL_F_HOST |
|
||||
NSURL_F_PORT),
|
||||
NSURL_F_PATH = (1 << 8),
|
||||
NSURL_F_QUERY = (1 << 9),
|
||||
NSURL_F_FRAGMENT_PUNCTUATION = (1 << 10),
|
||||
NSURL_F_FRAGMENT = (1 << 11)
|
||||
};
|
||||
|
||||
/**
|
||||
* Get nsurl string info; total length, component lengths, & components present
|
||||
*
|
||||
* \param url NetSurf URL components
|
||||
* \param url_s Updated to contain the string
|
||||
* \param l Individual component lengths
|
||||
* \param flags String flags
|
||||
*/
|
||||
void nsurl__get_string(const struct nsurl_components *url, char *url_s,
|
||||
struct nsurl_component_lengths *l,
|
||||
enum nsurl_string_flags flags);
|
||||
|
||||
/**
|
||||
* Get nsurl string info; total length, component lengths, & components present
|
||||
*
|
||||
* \param url NetSurf URL components
|
||||
* \param parts Which parts of the URL are required in the string
|
||||
* \param url_l Updated to total string length
|
||||
* \param lengths Updated with individual component lengths
|
||||
* \param pflags Updated to contain relevant string flags
|
||||
*/
|
||||
void nsurl__get_string_data(const struct nsurl_components *url,
|
||||
nsurl_component parts, size_t *url_l,
|
||||
struct nsurl_component_lengths *lengths,
|
||||
enum nsurl_string_flags *pflags);
|
||||
|
||||
/**
|
||||
* Calculate hash value
|
||||
*
|
||||
* \param url NetSurf URL object to set hash value for
|
||||
*/
|
||||
void nsurl__calc_hash(nsurl *url);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user