mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
added url_split()
Originally committed as revision 800 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bdd7d51848
commit
a9a721da7c
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user