# HG changeset patch # User mru # Date 1277648206 0 # Node ID 4fc5e0e4e1cd2a55869db30f0647d72ed05074df # Parent cb49c916b7f416d95fd15c63c9f676d7f3e187bd Make ff_url_split() public ff_url_split() is retained as an alias, as it was used by ffserver, to avoid breaking ABI compatibility with it. diff -r cb49c916b7f4 -r 4fc5e0e4e1cd avformat.h --- a/avformat.h Sun Jun 27 09:07:35 2010 +0000 +++ b/avformat.h Sun Jun 27 14:16:46 2010 +0000 @@ -1185,6 +1185,32 @@ int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap); /** + * Split a URL string into components. + * + * The pointers to buffers for storing individual components may be null, + * in order to ignore that component. Buffers for components not found are + * set to empty strings. If the port is not found, it is set to a negative + * value. + * + * @param proto the buffer for the protocol + * @param proto_size the size of the proto buffer + * @param authorization the buffer for the authorization + * @param authorization_size the size of the authorization buffer + * @param hostname the buffer for the host name + * @param hostname_size the size of the hostname buffer + * @param port_ptr a pointer to store the port number in + * @param path the buffer for the path + * @param path_size the size of the path buffer + * @param url the URL to split + */ +void av_url_split(char *proto, int proto_size, + char *authorization, int authorization_size, + char *hostname, int hostname_size, + int *port_ptr, + char *path, int path_size, + const char *url); + +/** * Allocates the stream private data and writes the stream header to an * output media file. * diff -r cb49c916b7f4 -r 4fc5e0e4e1cd gopher.c --- a/gopher.c Sun Jun 27 09:07:35 2010 +0000 +++ b/gopher.c Sun Jun 27 14:16:46 2010 +0000 @@ -90,7 +90,7 @@ h->priv_data = s; /* needed in any case to build the host string */ - ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, + av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, path, sizeof(path), uri); if (port < 0) diff -r cb49c916b7f4 -r 4fc5e0e4e1cd http.c --- a/http.c Sun Jun 27 09:07:35 2010 +0000 +++ b/http.c Sun Jun 27 14:16:46 2010 +0000 @@ -105,12 +105,12 @@ /* fill the dest addr */ redo: /* needed in any case to build the host string */ - ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, + av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, path1, sizeof(path1), s->location); ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL); if (use_proxy) { - ff_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, + av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port, NULL, 0, proxy_path); path = s->location; } else { diff -r cb49c916b7f4 -r 4fc5e0e4e1cd internal.h --- a/internal.h Sun Jun 27 09:07:35 2010 +0000 +++ b/internal.h Sun Jun 27 14:16:46 2010 +0000 @@ -89,27 +89,9 @@ const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size); +#if LIBAVFORMAT_VERSION_MAJOR < 53 /** - * Splits a URL string into components. To reassemble components back into - * a URL, use ff_url_join instead of using snprintf directly. - * - * The pointers to buffers for storing individual components may be null, - * in order to ignore that component. Buffers for components not found are - * set to empty strings. If the port isn't found, it is set to a negative - * value. - * - * @see ff_url_join - * - * @param proto the buffer for the protocol - * @param proto_size the size of the proto buffer - * @param authorization the buffer for the authorization - * @param authorization_size the size of the authorization buffer - * @param hostname the buffer for the host name - * @param hostname_size the size of the hostname buffer - * @param port_ptr a pointer to store the port number in - * @param path the buffer for the path - * @param path_size the size of the path buffer - * @param url the URL to split + * @deprecated use av_url_split() instead */ void ff_url_split(char *proto, int proto_size, char *authorization, int authorization_size, @@ -117,15 +99,16 @@ int *port_ptr, char *path, int path_size, const char *url); +#endif /** * Assembles a URL string from components. This is the reverse operation - * of ff_url_split. + * of av_url_split. * * Note, this requires networking to be initialized, so the caller must * ensure ff_network_init has been called. * - * @see ff_url_split + * @see av_url_split * * @param str the buffer to fill with the url * @param size the size of the str buffer diff -r cb49c916b7f4 -r 4fc5e0e4e1cd mmst.c --- a/mmst.c Sun Jun 27 09:07:35 2010 +0000 +++ b/mmst.c Sun Jun 27 14:16:46 2010 +0000 @@ -581,7 +581,7 @@ return AVERROR(ENOMEM); // only for MMS over TCP, so set proto = NULL - ff_url_split(NULL, 0, NULL, 0, + av_url_split(NULL, 0, NULL, 0, mms->host, sizeof(mms->host), &port, mms->path, sizeof(mms->path), uri); diff -r cb49c916b7f4 -r 4fc5e0e4e1cd rtmpproto.c --- a/rtmpproto.c Sun Jun 27 09:07:35 2010 +0000 +++ b/rtmpproto.c Sun Jun 27 14:16:46 2010 +0000 @@ -813,7 +813,7 @@ s->priv_data = rt; rt->is_input = !(flags & URL_WRONLY); - ff_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port, + av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port, path, sizeof(path), s->filename); if (port < 0) diff -r cb49c916b7f4 -r 4fc5e0e4e1cd rtpproto.c --- a/rtpproto.c Sun Jun 27 09:07:35 2010 +0000 +++ b/rtpproto.c Sun Jun 27 14:16:46 2010 +0000 @@ -66,7 +66,7 @@ char buf[1024]; char path[1024]; - ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, + av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, path, sizeof(path), uri); ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path); @@ -146,7 +146,7 @@ return AVERROR(ENOMEM); h->priv_data = s; - ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port, + av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port, path, sizeof(path), uri); /* extract parameters */ ttl = -1; diff -r cb49c916b7f4 -r 4fc5e0e4e1cd rtsp.c --- a/rtsp.c Sun Jun 27 09:07:35 2010 +0000 +++ b/rtsp.c Sun Jun 27 14:16:46 2010 +0000 @@ -327,7 +327,7 @@ rtsp_st = st->priv_data; /* XXX: may need to add full url resolution */ - ff_url_split(proto, sizeof(proto), NULL, 0, NULL, 0, + av_url_split(proto, sizeof(proto), NULL, 0, NULL, 0, NULL, NULL, 0, p); if (proto[0] == '\0') { /* relative control URL */ @@ -1366,7 +1366,7 @@ redirect: rt->control_transport = RTSP_MODE_PLAIN; /* extract hostname and port */ - ff_url_split(NULL, 0, auth, sizeof(auth), + av_url_split(NULL, 0, auth, sizeof(auth), host, sizeof(host), &port, path, sizeof(path), s->filename); if (*auth) { av_strlcpy(rt->auth, auth, sizeof(rt->auth)); diff -r cb49c916b7f4 -r 4fc5e0e4e1cd sdp.c --- a/sdp.c Sun Jun 27 09:07:35 2010 +0000 +++ b/sdp.c Sun Jun 27 14:16:46 2010 +0000 @@ -109,7 +109,7 @@ const char *p; char proto[32]; - ff_url_split(proto, sizeof(proto), NULL, 0, dest_addr, size, &port, NULL, 0, url); + av_url_split(proto, sizeof(proto), NULL, 0, dest_addr, size, &port, NULL, 0, url); *ttl = 0; diff -r cb49c916b7f4 -r 4fc5e0e4e1cd tcp.c --- a/tcp.c Sun Jun 27 09:07:35 2010 +0000 +++ b/tcp.c Sun Jun 27 14:16:46 2010 +0000 @@ -45,7 +45,7 @@ char hostname[1024],proto[1024],path[1024]; char portstr[10]; - ff_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), + av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port, path, sizeof(path), uri); if (strcmp(proto,"tcp") || port <= 0 || port >= 65536) return AVERROR(EINVAL); diff -r cb49c916b7f4 -r 4fc5e0e4e1cd udp.c --- a/udp.c Sun Jun 27 09:07:35 2010 +0000 +++ b/udp.c Sun Jun 27 14:16:46 2010 +0000 @@ -266,7 +266,7 @@ char hostname[256]; int port; - ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri); + av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri); /* set the destination address */ s->dest_addr_len = udp_set_url(&s->dest_addr, hostname, port); @@ -347,9 +347,9 @@ } /* fill the dest addr */ - ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri); + av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri); - /* XXX: fix ff_url_split */ + /* XXX: fix av_url_split */ if (hostname[0] == '\0' || hostname[0] == '?') { /* only accepts null hostname if input */ if (flags & URL_WRONLY) diff -r cb49c916b7f4 -r 4fc5e0e4e1cd utils.c --- a/utils.c Sun Jun 27 09:07:35 2010 +0000 +++ b/utils.c Sun Jun 27 14:16:46 2010 +0000 @@ -3493,6 +3493,8 @@ pkt_dump_internal(avcl, NULL, level, pkt, dump_payload); } +#if LIBAVFORMAT_VERSION_MAJOR < 53 +attribute_deprecated void ff_url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, @@ -3500,6 +3502,22 @@ char *path, int path_size, const char *url) { + av_url_split(proto, proto_size, + authorization, authorization_size, + hostname, hostname_size, + port_ptr, + path, path_size, + url); +} +#endif + +void av_url_split(char *proto, int proto_size, + char *authorization, int authorization_size, + char *hostname, int hostname_size, + int *port_ptr, + char *path, int path_size, + const char *url) +{ const char *p, *ls, *at, *col, *brk; if (port_ptr) *port_ptr = -1;