/* * This file is part of NetSurf, http://netsurf-browser.org/ * Licensed under the GNU General Public License, * http://www.opensource.org/licenses/gpl-license * Copyright 2005 James Bursa * Copyright 2005 John M Bell */ /** \file * URL parsing and joining (interface). */ #ifndef _NETSURF_UTILS_URL_H_ #define _NETSURF_UTILS_URL_H_ typedef enum { URL_FUNC_OK, /**< No error */ URL_FUNC_NOMEM, /**< Insufficient memory */ URL_FUNC_FAILED /**< Non fatal error (eg failed to match regex) */ } url_func_result; struct url_components { const char *buffer; const char *scheme; const char *authority; const char *path; const char *query; const char *fragment; }; void url_init(void); bool url_host_is_ip_address(const char *host); url_func_result url_normalize(const char *url, char **result); url_func_result url_join(const char *rel, const char *base, char **result); url_func_result url_host(const char *url, char **result); url_func_result url_scheme(const char *url, char **result); url_func_result url_nice(const char *url, char **result, bool remove_extensions); url_func_result url_escape(const char *unescaped, bool sptoplus, char **result); url_func_result url_canonical_root(const char *url, char **result); url_func_result url_parent(const char *url, char **result); url_func_result url_plq(const char *url, char **result); url_func_result url_path(const char *url, char **result); url_func_result url_compare(const char *url1, const char *url2, bool *result); url_func_result url_get_components(const char *url, struct url_components *result); char *url_reform_components(const struct url_components *components); void url_destroy_components(const struct url_components *components); char *path_to_url(const char *path); char *url_to_path(const char *url); #endif