ELinks 0.18.0
uri.c File Reference
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "elinks.h"
#include "intl/libintl.h"
#include "main/object.h"
#include "protocol/protocol.h"
#include "protocol/uri.h"
#include "util/conv.h"
#include "util/error.h"
#include "util/file.h"
#include "util/hash.h"
#include "util/memory.h"
#include "util/string.h"
Include dependency graph for uri.c:

Data Structures

struct  uri_cache_entry
struct  uri_cache

Macros

#define can_compare_uri_components(comp)
#define wants(x)
#define normalize_uri_reparse(str)
#define normalize_uri_noparse(uri)
#define MAX_TRANSLATION_ATTEMPTS   32
#define ADD_EXTENSION_FROM_TYPE(string, type, ext)
#define URI_LIST_GRANULARITY   0x3
#define realloc_uri_list(list)

Functions

static int end_of_dir (unsigned char c)
static int is_uri_dir_sep (const struct uri *uri, unsigned char pos)
int is_in_domain (char *domain, char *server, int server_len)
int is_ip_address (const char *address, int addresslen)
int end_with_known_tld (const char *s, int slen)
static int check_whether_file_exists (char *name)
static void encode_file_uri_string (struct string *string, char *uristring)
static int get_protocol_length (const char *url)
uri_errno_T parse_uri (struct uri *uri, char *uristring)
int get_uri_port (const struct uri *uri)
static int compare_component (const char *a, int alen, const char *b, int blen)
int compare_uri (const struct uri *a, const struct uri *b, uri_component_T components)
struct stringadd_uri_to_string (struct string *string, const struct uri *uri, uri_component_T components)
char * get_uri_string (const struct uri *uri, uri_component_T components)
struct stringadd_string_uri_to_string (struct string *string, char *uristring, uri_component_T components)
char * normalize_uri (struct uri *uri, char *uristring)
static struct uritransform_file_url (struct uri *uri, const char *cwd)
static char * translate_url (const char *url, char *cwd)
char * join_urls (struct uri *base, const char *rel)
static protocol_T find_uri_protocol (char *newurl)
struct uriget_composed_uri (struct uri *uri, uri_component_T components)
struct uriget_translated_uri (char *uristring, char *cwd)
char * get_extension_from_uri (struct uri *uri)
static int safe_char (unsigned char c)
void encode_uri_string (struct string *string, const char *name, int namelen, int convert_slashes)
void encode_uri_string_percent (struct string *string, const char *name, int namelen)
void encode_win32_uri_string (struct string *string, char *name, int namelen)
void decode_uri (char *src)
void decode_uri_string (struct string *string)
void decode_uri_for_display (char *src)
void decode_uri_string_for_display (struct string *string)
struct uriadd_to_uri_list (struct uri_list *list, struct uri *uri)
void free_uri_list (struct uri_list *list)
static void check_uri_sanity (struct uri *uri)
static struct uri_cache_entryget_uri_cache_entry (char *string, int length)
struct uriget_uri (char *string, uri_component_T components)
void done_uri (struct uri *uri)

Variables

static struct uri_cache uri_cache

Macro Definition Documentation

◆ ADD_EXTENSION_FROM_TYPE

#define ADD_EXTENSION_FROM_TYPE ( string,
type,
ext )
Value:
if (!memcmp(string, type ";", sizeof(type ";") - 1) || \
!memcmp(string, type ",", sizeof(type ",") - 1)) \
return stracpy("." ext);
const char * type
Definition download.c:1899
char * stracpy(const char *src)
Allocated NUL terminated string with the content of src.

◆ can_compare_uri_components

#define can_compare_uri_components ( comp)
Value:
!(((comp) & (URI_SPECIAL | URI_IDN)))
@ URI_SPECIAL
Definition uri.h:163
@ URI_IDN
Definition uri.h:147

◆ MAX_TRANSLATION_ATTEMPTS

#define MAX_TRANSLATION_ATTEMPTS   32

◆ normalize_uri_noparse

#define normalize_uri_noparse ( uri)
Value:
Definition uri.h:29
char * normalize_uri(struct uri *uri, char *uristring)
Definition uri.c:717
#define struri(uri)
Definition uri.h:122

◆ normalize_uri_reparse

#define normalize_uri_reparse ( str)
Value:
#define NULL
Definition explodename.c:35

◆ realloc_uri_list

#define realloc_uri_list ( list)
Value:
mem_align_alloc(&(list)->uris, (list)->size, (list)->size + 1, \
#define mem_align_alloc(ptr, old, new_, mask)
Definition memory.h:148
#define URI_LIST_GRANULARITY
Definition uri.c:1546

◆ URI_LIST_GRANULARITY

#define URI_LIST_GRANULARITY   0x3

◆ wants

#define wants ( x)
Value:
(components & (x))

Function Documentation

◆ add_string_uri_to_string()

struct string * add_string_uri_to_string ( struct string * string,
char * uristring,
uri_component_T components )

◆ add_to_uri_list()

struct uri * add_to_uri_list ( struct uri_list * list,
struct uri * uri )

◆ add_uri_to_string()

struct string * add_uri_to_string ( struct string * string,
const struct uri * uri,
uri_component_T components )

◆ check_uri_sanity()

void check_uri_sanity ( struct uri * uri)
inlinestatic

◆ check_whether_file_exists()

int check_whether_file_exists ( char * name)
static

◆ compare_component()

int compare_component ( const char * a,
int alen,
const char * b,
int blen )
inlinestatic

◆ compare_uri()

int compare_uri ( const struct uri * a,
const struct uri * b,
uri_component_T components )

◆ decode_uri()

void decode_uri ( char * src)

◆ decode_uri_for_display()

void decode_uri_for_display ( char * src)

◆ decode_uri_string()

void decode_uri_string ( struct string * string)

◆ decode_uri_string_for_display()

void decode_uri_string_for_display ( struct string * string)

◆ done_uri()

void done_uri ( struct uri * uri)

◆ encode_file_uri_string()

void encode_file_uri_string ( struct string * string,
char * uristring )
static

◆ encode_uri_string()

void encode_uri_string ( struct string * string,
const char * name,
int namelen,
int convert_slashes )

◆ encode_uri_string_percent()

void encode_uri_string_percent ( struct string * string,
const char * name,
int namelen )

◆ encode_win32_uri_string()

void encode_win32_uri_string ( struct string * string,
char * name,
int namelen )

◆ end_of_dir()

int end_of_dir ( unsigned char c)
inlinestatic

◆ end_with_known_tld()

int end_with_known_tld ( const char * s,
int slen )

◆ find_uri_protocol()

protocol_T find_uri_protocol ( char * newurl)
static

◆ free_uri_list()

void free_uri_list ( struct uri_list * list)

◆ get_composed_uri()

struct uri * get_composed_uri ( struct uri * uri,
uri_component_T components )

◆ get_extension_from_uri()

char * get_extension_from_uri ( struct uri * uri)

◆ get_protocol_length()

int get_protocol_length ( const char * url)
inlinestatic

◆ get_translated_uri()

struct uri * get_translated_uri ( char * uristring,
char * cwd )

◆ get_uri()

struct uri * get_uri ( char * string,
uri_component_T components )

◆ get_uri_cache_entry()

struct uri_cache_entry * get_uri_cache_entry ( char * string,
int length )
inlinestatic

◆ get_uri_port()

int get_uri_port ( const struct uri * uri)

◆ get_uri_string()

char * get_uri_string ( const struct uri * uri,
uri_component_T components )

◆ is_in_domain()

int is_in_domain ( char * domain,
char * server,
int server_len )

◆ is_ip_address()

int is_ip_address ( const char * address,
int addresslen )

◆ is_uri_dir_sep()

int is_uri_dir_sep ( const struct uri * uri,
unsigned char pos )
inlinestatic

◆ join_urls()

char * join_urls ( struct uri * base,
const char * rel )

◆ normalize_uri()

char * normalize_uri ( struct uri * uri,
char * uristring )

◆ parse_uri()

uri_errno_T parse_uri ( struct uri * uri,
char * uristring )

◆ safe_char()

int safe_char ( unsigned char c)
inlinestatic

◆ transform_file_url()

struct uri * transform_file_url ( struct uri * uri,
const char * cwd )
static

◆ translate_url()

char * translate_url ( const char * url,
char * cwd )
static

Variable Documentation

◆ uri_cache

struct uri_cache uri_cache
static