|
|
|
@ -1092,3 +1092,54 @@ void av_hex_dump(UINT8 *buf, int size) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void url_split(char *proto, int proto_size, |
|
|
|
|
char *hostname, int hostname_size, |
|
|
|
|
int *port_ptr, |
|
|
|
|
char *path, int path_size, |
|
|
|
|
const char *url) |
|
|
|
|
{ |
|
|
|
|
const char *p; |
|
|
|
|
char *q; |
|
|
|
|
int port; |
|
|
|
|
|
|
|
|
|
port = -1; |
|
|
|
|
|
|
|
|
|
p = url; |
|
|
|
|
q = proto; |
|
|
|
|
while (*p != ':' && *p != '\0') { |
|
|
|
|
if ((q - proto) < proto_size - 1) |
|
|
|
|
*q++ = *p; |
|
|
|
|
p++; |
|
|
|
|
} |
|
|
|
|
if (proto_size > 0) |
|
|
|
|
*q = '\0'; |
|
|
|
|
if (*p == '\0') { |
|
|
|
|
if (proto_size > 0) |
|
|
|
|
proto[0] = '\0'; |
|
|
|
|
if (hostname_size > 0) |
|
|
|
|
hostname[0] = '\0'; |
|
|
|
|
p = url; |
|
|
|
|
} else { |
|
|
|
|
p++; |
|
|
|
|
if (*p == '/') |
|
|
|
|
p++; |
|
|
|
|
if (*p == '/') |
|
|
|
|
p++; |
|
|
|
|
q = hostname; |
|
|
|
|
while (*p != ':' && *p != '/' && *p != '?' && *p != '\0') { |
|
|
|
|
if ((q - hostname) < hostname_size - 1) |
|
|
|
|
*q++ = *p; |
|
|
|
|
p++; |
|
|
|
|
} |
|
|
|
|
if (hostname_size > 0) |
|
|
|
|
*q = '\0'; |
|
|
|
|
if (*p == ':') { |
|
|
|
|
p++; |
|
|
|
|
port = strtoul(p, (char **)&p, 10); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (port_ptr) |
|
|
|
|
*port_ptr = port; |
|
|
|
|
pstrcpy(path, path_size, p); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|