Go to the documentation of this file.
21 #ifndef INPUT_MRL_HELPERS_H
22 #define INPUT_MRL_HELPERS_H
62 #define RFC3986_SUBDELIMS "!" "$" "&" "'" "(" ")" \
64 #define RFC3986_ALPHA "abcdefghijklmnopqrstuvwxyz" \
65 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
66 #define RFC3986_DIGIT "0123456789"
67 #define RFC3986_UNRESERVED RFC3986_ALPHA RFC3986_DIGIT "-" "." "_" "~"
68 #define RFC3986_PCHAR RFC3986_UNRESERVED RFC3986_SUBDELIMS ":" "@"
69 #define RFC3986_FRAGMENT RFC3986_PCHAR "/" "?"
74 for(
char const*
p = payload; *
p; ++
p )
77 ( strchr(
"!?", *
p ) == NULL &&
81 #undef RFC3986_FRAGMENT
83 #undef RFC3986_UNRESERVEd
86 #undef RFC3986_SUBDELIMS
116 char const** out_extra,
117 char const* payload )
119 char const* extra = NULL;
123 while( strncmp( payload,
"!/", 2 ) == 0 )
127 int len = strcspn( payload,
"!?" );
128 char* decoded =
strndup( payload, len );
143 if( *payload ==
'!' )
static void vlc_dictionary_insert(vlc_dictionary_t *p_dict, const char *psz_key, void *p_value)
Definition: vlc_arrays.h:566
Definition: vlc_memstream.h:27
int playlist_SaveArt(vlc_object_t *obj, input_item_t *p_item, const void *data, size_t length, const char *psz_type)
Definition: art.c:267
char * ptr
Definition: vlc_memstream.h:51
int error
Definition: vlc_memstream.h:66
static int vlc_dictionary_keys_count(const vlc_dictionary_t *p_dict)
Definition: vlc_arrays.h:472
Definition: vlc_arrays.h:386
#define AUDIO_REPLAY_GAIN_TRACK
Definition: vlc_es.h:54
static void vlc_dictionary_clear(vlc_dictionary_t *p_dict, void(*pf_free)(void *p_data, void *p_obj), void *p_obj)
Definition: vlc_arrays.h:407
char * vlc_uri2path(const char *url)
Converts a URI to a local path.
Definition: url.c:240
static int vlc_array_append(vlc_array_t *ar, void *elem)
Definition: vlc_arrays.h:315
float pf_peak[(2)]
Definition: vlc_es.h:61
#define AUDIO_REPLAY_GAIN_ALBUM
Definition: vlc_es.h:55
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:350
char * vlc_gettext(const char *msgid)
In-tree plugins share their gettext domain with LibVLC.
Definition: textdomain.c:89
char * vlc_uri_decode(char *str)
Decodes an URI component in place.
Definition: url.c:53
char * strndup(const char *, size_t)
int vlc_memstream_open(struct vlc_memstream *ms)
Definition: memstream.c:104
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:84
Definition: vlc_arrays.h:238
#define vlc_object_release(a)
Definition: vlc_objects.h:63
Internal module descriptor.
Definition: modules.h:79
static size_t vlc_array_count(vlc_array_t *p_array)
Definition: vlc_arrays.h:257
bool pb_peak[(2)]
Definition: vlc_es.h:59
static char ** vlc_dictionary_all_keys(const vlc_dictionary_t *p_dict)
Definition: vlc_arrays.h:498
static void * vlc_dictionary_value_for_key(const vlc_dictionary_t *p_dict, const char *psz_key)
Definition: vlc_arrays.h:450
static int mrl_FragmentSplit(vlc_array_t *out_items, char const **out_extra, char const *payload)
Split an MRL-fragment into identifiers.
Definition: mrl_helpers.h:114
const char * psz_name
Definition: vlc_codecs.h:315
int playlist_FindArtInCache(input_item_t *p_item)
Definition: art.c:161
float pf_gain[(2)]
Definition: vlc_es.h:66
static int mrl_EscapeFragmentIdentifier(char **out, char const *payload)
Escape a fragment identifier for use within an MRL.
Definition: mrl_helpers.h:57
#define likely(p)
Definition: vlc_common.h:113
The main vlc_object_t structure.
Definition: vlc_objects.h:39
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:351
static void vlc_array_init(vlc_array_t *p_array)
Definition: vlc_arrays.h:244
#define VLC_UNUSED(x)
Definition: vlc_common.h:912
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:349
static void vlc_array_clear(vlc_array_t *p_array)
Definition: vlc_arrays.h:250
char * strdup(const char *)
char psz_value[8]
Definition: vout_intf.c:91
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:108
const char name[16]
Definition: httpd.c:1249
#define vlc_array_item_at_index(ar, idx)
Definition: vlc_arrays.h:263
#define N_(str)
Definition: vlc_fixups.h:372
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
#define unlikely(p)
Definition: vlc_common.h:114
int vlc_memstream_printf(struct vlc_memstream *ms, const char *fmt,...)
Definition: memstream.c:184
static void *const kVLCDictionaryNotFound
Definition: vlc_arrays.h:392
static void vlc_dictionary_init(vlc_dictionary_t *p_dict, int i_size)
Definition: vlc_arrays.h:394
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_common.h:464
double us_atof(const char *str)
us_atof() has the same prototype as ANSI C atof() but it expects a dot as decimal separator,...
Definition: charset.c:87
#define module_unneed(a, b)
Definition: vlc_modules.h:49
static const char * IsUTF8(const char *str)
Checks UTF-8 validity.
Definition: vlc_charset.h:63
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
static void vlc_dictionary_remove_value_for_key(const vlc_dictionary_t *p_dict, const char *psz_key, void(*pf_free)(void *p_data, void *p_obj), void *p_obj)
Definition: vlc_arrays.h:572
#define msg_Err(p_this,...)
Definition: vlc_messages.h:82
bool pb_gain[(2)]
Definition: vlc_es.h:64
int vlc_memstream_close(struct vlc_memstream *ms)
Definition: memstream.c:119
#define module_need(a, b, c, d)
Definition: vlc_modules.h:47