90 if (!(p = *opaque))
return NULL;
101 memcpy(temp, protocol, size);
105 while (*p != NULL) p = &(*p)->
next;
107 protocol->
next = NULL;
112 const char *filename,
int flags,
124 "Impossible to open the '%s' protocol for reading\n", up->
name);
129 "Impossible to open the '%s' protocol for writing\n", up->
name);
151 int proto_len= strlen(up->
name);
161 while(ret >= 0 && (key= strchr(p, sep)) && p<key && (val = strchr(key+1, sep))){
176 memmove(start, key+1, strlen(key));
213 #define URL_SCHEME_CHARS \
214 "abcdefghijklmnopqrstuvwxyz" \
215 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
222 char proto_str[128], proto_nested[128], *ptr;
225 if (!first_protocol) {
227 "Missing call to av_register_all()?\n");
230 if (filename[proto_len] !=
':' &&
231 (filename[proto_len] !=
',' || !strchr(filename + proto_len + 1,
':')) ||
233 strcpy(proto_str,
"file");
235 av_strlcpy(proto_str, filename,
FFMIN(proto_len+1,
sizeof(proto_str)));
237 if ((ptr = strchr(proto_str,
',')))
239 av_strlcpy(proto_nested, proto_str,
sizeof(proto_nested));
240 if ((ptr = strchr(proto_nested,
'+')))
244 if (!strcmp(proto_str, up->
name))
247 !strcmp(proto_nested, up->
name))
251 if (!strcmp(
"https", proto_str))
252 av_log(NULL,
AV_LOG_WARNING,
"https protocol not found, recompile with openssl or gnutls enabled.\n");
262 if (options && (*puc)->prot->priv_data_class &&
275 int (*transfer_func)(
URLContext *h,
unsigned char *buf,
int size))
278 int fast_retries = 5;
279 int64_t wait_since = 0;
282 while (len < size_min) {
285 ret = transfer_func(h, buf+len, size-len);
306 fast_retries =
FFMAX(fast_retries, 2);