annotate libmpdemux/url.c @ 16946:47c5e9846cd3

ultra simple&slow pp filter, yes yet another spp like filter :) this one does actually compress&decompress the video at various shifts with lavc while the other spp filters are doing optimized intra only filtering limitations: mpeg4 is hardcoded, all options too, pretty trivial to change though, even filtering with non dct codecs like snow could be tried ... the qscale/qp is only taken fron the first MB of each image and then used for the whole image (would needs some small changes to lavc to let the user set the qscales for the mbs themselfs but iam to lazy ...) this needs ALOT of cpu time and memory especially at uspp=8 ...
author michael
date Tue, 08 Nov 2005 13:15:19 +0000
parents bd4cac0d5e0e
children 9e02b9cb171b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
1 /*
902
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
2 * URL Helper
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
3 * by Bertrand Baudet <bertrand_baudet@yahoo.com>
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
4 * (C) 2001, MPlayer team.
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
5 *
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
6 */
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
7
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
8 #include <string.h>
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
9 #include <stdlib.h>
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
10 #include <stdio.h>
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
11 #include <ctype.h>
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
12
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
13 #include "url.h"
5933
14b46420840b printf to mp_msg
albeu
parents: 4653
diff changeset
14 #include "mp_msg.h"
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16421
diff changeset
15 #include "help_mp.h"
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
16
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
17 URL_t*
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
18 url_new(const char* url) {
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
19 int pos1, pos2,v6addr = 0;
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
20 URL_t* Curl = NULL;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
21 char *escfilename=NULL;
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
22 char *unescfilename=NULL;
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
23 char *ptr1=NULL, *ptr2=NULL, *ptr3=NULL, *ptr4=NULL;
10056
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
24 int jumpSize = 3;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
25
4653
d2a7fcfeec6f Removed the url_copy function , since it was badly implemented,
bertrand
parents: 4119
diff changeset
26 if( url==NULL ) return NULL;
d2a7fcfeec6f Removed the url_copy function , since it was badly implemented,
bertrand
parents: 4119
diff changeset
27
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
28 // Create temp filename space
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
29 unescfilename=malloc(strlen(url)+1);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
30 if (!unescfilename ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
31 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
32 goto err_out;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
33 }
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
34 escfilename=malloc(strlen(url)*3+1);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
35 if (!escfilename ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
36 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
37 goto err_out;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
38 }
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
39
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
40 // Create the URL container
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
41 Curl = (URL_t*)malloc(sizeof(URL_t));
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
42 if( Curl==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
43 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
44 goto err_out;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
45 }
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
46
840
9141234715a2 Added initialisation of URL pointers.
bertrand
parents: 833
diff changeset
47 // Initialisation of the URL container members
902
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
48 memset( Curl, 0, sizeof(URL_t) );
840
9141234715a2 Added initialisation of URL pointers.
bertrand
parents: 833
diff changeset
49
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
50 //create unescaped/escaped versions of url
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
51 url_unescape_string(unescfilename,url); // this is to prevent us from escaping an unescaped string
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
52 // violating RFC 2396
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
53 url_escape_string(escfilename,unescfilename);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
54 free(unescfilename);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
55 unescfilename = NULL;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
56
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
57 // Copy the url in the URL container
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
58 Curl->url = strdup(escfilename);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
59 if( Curl->url==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
60 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
61 goto err_out;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
62 }
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
63 mp_msg(MSGT_OPEN,MSGL_V,"Filename for url is now %s\n",escfilename);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
64
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
65 // extract the protocol
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
66 ptr1 = strstr(escfilename, "://");
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
67 if( ptr1==NULL ) {
10056
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
68 // Check for a special case: "sip:" (without "//"):
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
69 if (strstr(escfilename, "sip:") == escfilename) {
11412
ec3dac7d17a0 Warning fixes (approved by A'rpi).
rathann
parents: 10056
diff changeset
70 ptr1 = (char *)&url[3]; // points to ':'
10056
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
71 jumpSize = 1;
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
72 } else {
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
73 mp_msg(MSGT_NETWORK,MSGL_V,"Not an URL!\n");
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
74 goto err_out;
10056
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
75 }
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
76 }
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
77 pos1 = ptr1-escfilename;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
78 Curl->protocol = (char*)malloc(pos1+1);
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
79 if( Curl->protocol==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
80 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
81 goto err_out;
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
82 }
12637
5dc89722fad2 uber 10l found by Ilia <chest4l at mail.ru>
alex
parents: 12391
diff changeset
83 strncpy(Curl->protocol, escfilename, pos1);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
84 Curl->protocol[pos1] = '\0';
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
85
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
86 // jump the "://"
10056
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
87 ptr1 += jumpSize;
88c855a174f3 Added some special-case code for checking for "sip:" URLs (because they
rsf
parents: 9924
diff changeset
88 pos1 += jumpSize;
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
89
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
90 // check if a username:password is given
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
91 ptr2 = strstr(ptr1, "@");
7330
2f3fe8274028 Applied patch from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
bertrand
parents: 6513
diff changeset
92 ptr3 = strstr(ptr1, "/");
2f3fe8274028 Applied patch from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
bertrand
parents: 6513
diff changeset
93 if( ptr3!=NULL && ptr3<ptr2 ) {
2f3fe8274028 Applied patch from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
bertrand
parents: 6513
diff changeset
94 // it isn't really a username but rather a part of the path
2f3fe8274028 Applied patch from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
bertrand
parents: 6513
diff changeset
95 ptr2 = NULL;
2f3fe8274028 Applied patch from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
bertrand
parents: 6513
diff changeset
96 }
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
97 if( ptr2!=NULL ) {
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
98 // We got something, at least a username...
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
99 int len = ptr2-ptr1;
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
100 Curl->username = (char*)malloc(len+1);
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
101 if( Curl->username==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
102 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
103 goto err_out;
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
104 }
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
105 strncpy(Curl->username, ptr1, len);
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
106 Curl->username[len] = '\0';
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
107
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
108 ptr3 = strstr(ptr1, ":");
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
109 if( ptr3!=NULL && ptr3<ptr2 ) {
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
110 // We also have a password
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
111 int len2 = ptr2-ptr3-1;
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
112 Curl->username[ptr3-ptr1]='\0';
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
113 Curl->password = (char*)malloc(len2+1);
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
114 if( Curl->password==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
115 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
116 goto err_out;
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
117 }
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
118 strncpy( Curl->password, ptr3+1, len2);
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
119 Curl->password[len2]='\0';
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
120 }
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
121 ptr1 = ptr2+1;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
122 pos1 = ptr1-escfilename;
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
123 }
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
124
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
125 // before looking for a port number check if we have an IPv6 type numeric address
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
126 // in IPv6 URL the numeric address should be inside square braces.
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
127 ptr2 = strstr(ptr1, "[");
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
128 ptr3 = strstr(ptr1, "]");
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
129 ptr4 = strstr(ptr1, "/");
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
130 if( ptr2!=NULL && ptr3!=NULL && ptr2 < ptr3 && (!ptr4 || ptr4 > ptr3)) {
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
131 // we have an IPv6 numeric address
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
132 ptr1++;
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
133 pos1++;
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
134 ptr2 = ptr3;
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
135 v6addr = 1;
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
136 } else {
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
137 ptr2 = ptr1;
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
138
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
139 }
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
140
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
141 // look if the port is given
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
142 ptr2 = strstr(ptr2, ":");
3494
fb9de639ed30 Applied the patch from Alban Bedel <albeu@free.fr>.
bertrand
parents: 3040
diff changeset
143 // If the : is after the first / it isn't the port
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
144 ptr3 = strstr(ptr1, "/");
3494
fb9de639ed30 Applied the patch from Alban Bedel <albeu@free.fr>.
bertrand
parents: 3040
diff changeset
145 if(ptr3 && ptr3 - ptr2 < 0) ptr2 = NULL;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
146 if( ptr2==NULL ) {
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
147 // No port is given
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
148 // Look if a path is given
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
149 if( ptr3==NULL ) {
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
150 // No path/filename
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
151 // So we have an URL like http://www.hostname.com
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
152 pos2 = strlen(escfilename);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
153 } else {
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
154 // We have an URL like http://www.hostname.com/file.txt
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
155 pos2 = ptr3-escfilename;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
156 }
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
157 } else {
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
158 // We have an URL beginning like http://www.hostname.com:1212
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
159 // Get the port number
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
160 Curl->port = atoi(ptr2+1);
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
161 pos2 = ptr2-escfilename;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
162 }
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
163 if( v6addr ) pos2--;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
164 // copy the hostname in the URL container
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
165 Curl->hostname = (char*)malloc(pos2-pos1+1);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
166 if( Curl->hostname==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
167 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
168 goto err_out;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
169 }
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
170 strncpy(Curl->hostname, ptr1, pos2-pos1);
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
171 Curl->hostname[pos2-pos1] = '\0';
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
172
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
173 // Look if a path is given
6513
6e9d7a6b1806 Added support for URLs that contain an username:password
bertrand
parents: 5933
diff changeset
174 ptr2 = strstr(ptr1, "/");
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
175 if( ptr2!=NULL ) {
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
176 // A path/filename is given
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
177 // check if it's not a trailing '/'
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
178 if( strlen(ptr2)>1 ) {
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
179 // copy the path/filename in the URL container
3612
a1522fa7728a x = malloc(strlen(s) + c) ... strcpy(x, s)
pl
parents: 3496
diff changeset
180 Curl->file = strdup(ptr2);
840
9141234715a2 Added initialisation of URL pointers.
bertrand
parents: 833
diff changeset
181 if( Curl->file==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
182 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
183 goto err_out;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
184 }
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
185 }
869
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
186 }
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
187 // Check if a filename was given or set, else set it with '/'
869
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
188 if( Curl->file==NULL ) {
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
189 Curl->file = (char*)malloc(2);
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
190 if( Curl->file==NULL ) {
16908
bd4cac0d5e0e Changed MSGTR_MPDEMUX_URL_MallocFailed to MSGTR_MemAllocFailed (msg defined two times in help_mp-en.h)
ptt
parents: 16882
diff changeset
191 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
192 goto err_out;
869
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
193 }
e350849ff400 Url given without a filename/path get the filename/path '/'
bertrand
parents: 840
diff changeset
194 strcpy(Curl->file, "/");
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
195 }
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
196
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
197 free(escfilename);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
198 return Curl;
16421
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
199 err_out:
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
200 if (escfilename) free(escfilename);
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
201 if (unescfilename) free(unescfilename);
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
202 if (Curl) url_free(Curl);
c41e22d77214 memleak fix, escfilename was not freed for an invalid url
reimar
parents: 12637
diff changeset
203 return NULL;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
204 }
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
205
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
206 void
902
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
207 url_free(URL_t* url) {
1530
3effaac0ddb7 silly bug fixed - thanx Szekeres Istvan <szekeres@webvilag.com>
arpi
parents: 997
diff changeset
208 if(!url) return;
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
209 if(url->url) free(url->url);
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
210 if(url->protocol) free(url->protocol);
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
211 if(url->hostname) free(url->hostname);
840
9141234715a2 Added initialisation of URL pointers.
bertrand
parents: 833
diff changeset
212 if(url->file) free(url->file);
902
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
213 if(url->username) free(url->username);
ede5785faa53 Bugs fix, improvements...
bertrand
parents: 869
diff changeset
214 if(url->password) free(url->password);
833
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
215 free(url);
b8cecdc0c67f Starting implementation of ASF network streaming.
bertrand
parents:
diff changeset
216 }
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
217
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
218
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
219 /* Replace escape sequences in an URL (or a part of an URL) */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
220 /* works like strcpy(), but without return argument */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
221 void
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
222 url_unescape_string(char *outbuf, const char *inbuf)
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
223 {
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
224 unsigned char c,c1,c2;
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
225 int i,len=strlen(inbuf);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
226 for (i=0;i<len;i++){
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
227 c = inbuf[i];
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
228 if (c == '%' && i<len-2) { //must have 2 more chars
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
229 c1 = toupper(inbuf[i+1]); // we need uppercase characters
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
230 c2 = toupper(inbuf[i+2]);
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
231 if ( ((c1>='0' && c1<='9') || (c1>='A' && c1<='F')) &&
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
232 ((c2>='0' && c2<='9') || (c2>='A' && c2<='F')) ) {
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
233 if (c1>='0' && c1<='9') c1-='0';
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
234 else c1-='A'-10;
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
235 if (c2>='0' && c2<='9') c2-='0';
11771
827cae571c5c Fix long standing bug where last (and sometimes first) char of the
albeu
parents: 11412
diff changeset
236 else c2-='A'-10;
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
237 c = (c1<<4) + c2;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
238 i=i+2; //only skip next 2 chars if valid esc
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
239 }
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
240 }
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
241 *outbuf++ = c;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
242 }
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
243 *outbuf++='\0'; //add nullterm to string
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
244 }
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
245
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
246 /* Replace specific characters in the URL string by an escape sequence */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
247 /* works like strcpy(), but without return argument */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
248 void
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
249 url_escape_string(char *outbuf, const char *inbuf) {
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
250 unsigned char c,c1,c2;
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
251 int i,len=strlen(inbuf);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
252
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
253 for (i=0;i<len;i++) {
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
254 c = inbuf[i];
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
255 if ((c=='%') && i<len-2 ) { //need 2 more characters
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
256 c1=toupper(inbuf[i+1]); c2=toupper(inbuf[i+2]); // need uppercase chars
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
257 } else {
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
258 c1=129; c2=129; //not escape chars
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
259 }
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
260
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
261 if( (c >= 'A' && c <= 'Z') ||
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
262 (c >= 'a' && c <= 'z') ||
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
263 (c >= '0' && c <= '9') ||
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
264 (c >= 0x7f) || /* fareast languages(Chinese, Korean, Japanese) */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
265 c=='-' || c=='_' || c=='.' || c=='!' || c=='~' || /* mark characters */
12153
b9f5f700bb1b '%' is unsafe and need to be escaped.
bertrand
parents: 11771
diff changeset
266 c=='*' || c=='\'' || c=='(' || c==')' || /* do not touch escape character */
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
267 c==';' || c=='/' || c=='?' || c==':' || c=='@' || /* reserved characters */
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
268 c=='&' || c=='=' || c=='+' || c=='$' || c==',' || /* see RFC 2396 */
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
269 c=='\0' ) { /* string term char */
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
270 *outbuf++ = c;
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
271 } else if ( c=='%' && ((c1 >= '0' && c1 <= '9') || (c1 >= 'A' && c1 <= 'F')) &&
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
272 ((c2 >= '0' && c2 <= '9') || (c2 >= 'A' && c2 <= 'F'))) {
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
273 // check if part of an escape sequence
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
274 *outbuf++=c; // already
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
275
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
276 // dont escape again
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16421
diff changeset
277 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_URL_StringAlreadyEscaped,c,c1,c2);
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
278 // error as this should not happen against RFC 2396
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
279 // to escape a string twice
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
280 } else {
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
281 /* all others will be escaped */
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
282 c1 = ((c & 0xf0) >> 4);
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
283 c2 = (c & 0x0f);
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
284 if (c1 < 10) c1+='0';
9924
d66ed2c80ddf Fix incorrect URL encoding.
ranma
parents: 9690
diff changeset
285 else c1+='A'-10;
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
286 if (c2 < 10) c2+='0';
9924
d66ed2c80ddf Fix incorrect URL encoding.
ranma
parents: 9690
diff changeset
287 else c2+='A'-10;
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
288 *outbuf++ = '%';
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
289 *outbuf++ = c1;
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
290 *outbuf++ = c2;
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
291 }
12391
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
292 }
2677bfac3838 Fix url escaping and avoid double escape
rtognimp
parents: 12153
diff changeset
293 *outbuf++='\0';
3496
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
294 }
5c8a533dfa09 Added 2 functions to escape/unescape the url as described in the RFC 2396.
bertrand
parents: 3494
diff changeset
295
4119
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
296 #ifdef __URL_DEBUG
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
297 void
9690
a9b7b6055563 Added support for IPv6 numeric url like: http://[3ffe:400:100::1]:80/file
bertrand
parents: 7809
diff changeset
298 url_debug(const URL_t *url) {
4119
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
299 if( url==NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
300 printf("URL pointer NULL\n");
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
301 return;
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
302 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
303 if( url->url!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
304 printf("url=%s\n", url->url );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
305 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
306 if( url->protocol!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
307 printf("protocol=%s\n", url->protocol );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
308 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
309 if( url->hostname!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
310 printf("hostname=%s\n", url->hostname );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
311 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
312 printf("port=%d\n", url->port );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
313 if( url->file!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
314 printf("file=%s\n", url->file );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
315 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
316 if( url->username!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
317 printf("username=%s\n", url->username );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
318 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
319 if( url->password!=NULL ) {
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
320 printf("password=%s\n", url->password );
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
321 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
322 }
639b3b47b138 Added a debug function to print the struct's variables.
bertrand
parents: 3612
diff changeset
323 #endif //__URL_DEBUG