From f3bfe388b5ba1767ce982c8304dfe9ef0f38a454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Sun, 27 Jun 2010 14:16:46 +0000 Subject: [PATCH] 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. Originally committed as revision 23822 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffserver.c | 6 +++--- libavformat/avformat.h | 26 ++++++++++++++++++++++++++ libavformat/gopher.c | 2 +- libavformat/http.c | 4 ++-- libavformat/internal.h | 27 +++++---------------------- libavformat/mmst.c | 2 +- libavformat/rtmpproto.c | 2 +- libavformat/rtpproto.c | 4 ++-- libavformat/rtsp.c | 4 ++-- libavformat/sdp.c | 2 +- libavformat/tcp.c | 2 +- libavformat/udp.c | 6 +++--- libavformat/utils.c | 18 ++++++++++++++++++ 13 files changed, 66 insertions(+), 39 deletions(-) diff --git a/ffserver.c b/ffserver.c index 14141f7ab2..e48af709a9 100644 --- a/ffserver.c +++ b/ffserver.c @@ -2978,7 +2978,7 @@ static void rtsp_cmd_describe(HTTPContext *c, const char *url) struct sockaddr_in my_addr; /* find which url is asked */ - ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); + av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); path = path1; if (*path == '/') path++; @@ -3055,7 +3055,7 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url, RTSPActionServerSetup setup; /* find which url is asked */ - ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); + av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); path = path1; if (*path == '/') path++; @@ -3198,7 +3198,7 @@ static HTTPContext *find_rtp_session_with_url(const char *url, return NULL; /* find which url is asked */ - ff_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); + av_url_split(NULL, 0, NULL, 0, NULL, 0, NULL, path1, sizeof(path1), url); path = path1; if (*path == '/') path++; diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 6b19e7425e..283b5b943a 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1184,6 +1184,32 @@ int64_t av_gen_search(AVFormatContext *s, int stream_index, /** media file output */ 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 --git a/libavformat/gopher.c b/libavformat/gopher.c index 13f3a5f9e1..b528f9bbbf 100644 --- a/libavformat/gopher.c +++ b/libavformat/gopher.c @@ -90,7 +90,7 @@ static int gopher_open(URLContext *h, const char *uri, int flags) 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 --git a/libavformat/http.c b/libavformat/http.c index a3edd816a7..2b503a1a08 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -105,12 +105,12 @@ static int http_open_cnx(URLContext *h) /* 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 --git a/libavformat/internal.h b/libavformat/internal.h index 8a164bde73..d77e36399b 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -89,27 +89,9 @@ int ff_probe_input_buffer(ByteIOContext **pb, AVInputFormat **fmt, 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 @@ void ff_url_split(char *proto, int proto_size, 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 --git a/libavformat/mmst.c b/libavformat/mmst.c index c19a68f24c..1750390a2d 100644 --- a/libavformat/mmst.c +++ b/libavformat/mmst.c @@ -581,7 +581,7 @@ static int mms_open(URLContext *h, const char *uri, int flags) 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 --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index f76cf0f495..a02bad5cf8 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -813,7 +813,7 @@ static int rtmp_open(URLContext *s, const char *uri, int flags) 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 --git a/libavformat/rtpproto.c b/libavformat/rtpproto.c index bbcf0d91c3..1875424a73 100644 --- a/libavformat/rtpproto.c +++ b/libavformat/rtpproto.c @@ -66,7 +66,7 @@ int rtp_set_remote_url(URLContext *h, const char *uri) 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 @@ static int rtp_open(URLContext *h, const char *uri, int flags) 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 --git a/libavformat/rtsp.c b/libavformat/rtsp.c index bca3bd26fb..37d3be9217 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -327,7 +327,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, 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 @@ int ff_rtsp_connect(AVFormatContext *s) 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 --git a/libavformat/sdp.c b/libavformat/sdp.c index 10f43c35fa..b34b944e59 100644 --- a/libavformat/sdp.c +++ b/libavformat/sdp.c @@ -109,7 +109,7 @@ static int sdp_get_address(char *dest_addr, int size, int *ttl, const char *url) 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 --git a/libavformat/tcp.c b/libavformat/tcp.c index fb6dec798f..1827aa00a7 100644 --- a/libavformat/tcp.c +++ b/libavformat/tcp.c @@ -45,7 +45,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags) 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 --git a/libavformat/udp.c b/libavformat/udp.c index fd6b5c19ba..227c0d0bee 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -266,7 +266,7 @@ int udp_set_remote_url(URLContext *h, const char *uri) 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 @@ static int udp_open(URLContext *h, const char *uri, int flags) } /* 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 --git a/libavformat/utils.c b/libavformat/utils.c index e33cb50661..efbf4e4a0e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3493,12 +3493,30 @@ void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload) 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, int *port_ptr, 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;