FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
url.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012 Martin Storsjo
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #include "libavformat/url.h"
22 
23 static void test(const char *base, const char *rel)
24 {
25  char buf[200], buf2[200];
26  ff_make_absolute_url(buf, sizeof(buf), base, rel);
27  printf("%s\n", buf);
28  if (base) {
29  /* Test in-buffer replacement */
30  snprintf(buf2, sizeof(buf2), "%s", base);
31  ff_make_absolute_url(buf2, sizeof(buf2), buf2, rel);
32  if (strcmp(buf, buf2)) {
33  printf("In-place handling of %s + %s failed\n", base, rel);
34  exit(1);
35  }
36  }
37 }
38 
39 int main(void)
40 {
41  test(NULL, "baz");
42  test("/foo/bar", "baz");
43  test("/foo/bar", "../baz");
44  test("/foo/bar", "/baz");
45  test("http://server/foo/", "baz");
46  test("http://server/foo/bar", "baz");
47  test("http://server/foo/", "../baz");
48  test("http://server/foo/bar/123", "../../baz");
49  test("http://server/foo/bar/123", "/baz");
50  test("http://server/foo/bar/123", "https://other/url");
51  test("http://server/foo/bar?param=value/with/slashes", "/baz");
52  test("http://server/foo/bar?param&otherparam", "?someparam");
53  test("http://server/foo/bar", "//other/url");
54  return 0;
55 }
#define NULL
Definition: coverity.c:32
void ff_make_absolute_url(char *buf, int size, const char *base, const char *rel)
Convert a relative url into an absolute url, given a base url.
Definition: url.c:80
int main(void)
Definition: url.c:39
void * buf
Definition: avisynth_c.h:690
#define snprintf
Definition: snprintf.h:34
unbuffered private I/O API
static void test(const char *base, const char *rel)
Definition: url.c:23