Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
d18bfd92
Commit
d18bfd92
authored
Feb 27, 2006
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Separate socket/resolv stuff (network.h) from url stuff (vlc_url.h)
parent
25d5b476
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
317 additions
and
299 deletions
+317
-299
include/network.h
include/network.h
+0
-280
include/vlc_url.h
include/vlc_url.h
+307
-0
modules/access/ftp.c
modules/access/ftp.c
+1
-7
modules/access/http.c
modules/access/http.c
+1
-0
modules/access/mms/mmsh.c
modules/access/mms/mmsh.c
+1
-0
modules/access/mms/mmstu.c
modules/access/mms/mmstu.c
+1
-0
modules/control/http/rpn.c
modules/control/http/rpn.c
+1
-0
modules/control/rc.c
modules/control/rc.c
+1
-0
modules/control/telnet.c
modules/control/telnet.c
+1
-8
modules/misc/rtsp.c
modules/misc/rtsp.c
+1
-0
modules/stream_out/rtp.c
modules/stream_out/rtp.c
+1
-0
modules/stream_out/standard.c
modules/stream_out/standard.c
+1
-4
No files found.
include/network.h
View file @
d18bfd92
...
...
@@ -78,286 +78,6 @@ struct network_socket_t
size_t
i_mtu
;
};
typedef
struct
{
char
*
psz_protocol
;
char
*
psz_username
;
char
*
psz_password
;
char
*
psz_host
;
int
i_port
;
char
*
psz_path
;
char
*
psz_option
;
char
*
psz_buffer
;
/* to be freed */
}
vlc_url_t
;
/*****************************************************************************
* vlc_UrlParse:
*****************************************************************************
* option : if != 0 then path is split at this char
*
* format [protocol://[login[:password]@]][host[:port]]/path[OPTIONoption]
*****************************************************************************/
static
inline
void
vlc_UrlParse
(
vlc_url_t
*
url
,
const
char
*
psz_url
,
char
option
)
{
char
*
psz_dup
;
char
*
psz_parse
;
char
*
p
;
url
->
psz_protocol
=
NULL
;
url
->
psz_username
=
NULL
;
url
->
psz_password
=
NULL
;
url
->
psz_host
=
NULL
;
url
->
i_port
=
0
;
url
->
psz_path
=
NULL
;
url
->
psz_option
=
NULL
;
if
(
psz_url
==
NULL
)
{
url
->
psz_buffer
=
NULL
;
return
;
}
url
->
psz_buffer
=
psz_parse
=
psz_dup
=
strdup
(
psz_url
);
p
=
strstr
(
psz_parse
,
":/"
);
if
(
p
!=
NULL
)
{
/* we have a protocol */
/* skip :// */
*
p
++
=
'\0'
;
if
(
p
[
1
]
==
'/'
)
p
+=
2
;
url
->
psz_protocol
=
psz_parse
;
psz_parse
=
p
;
}
p
=
strchr
(
psz_parse
,
'@'
);
if
(
p
!=
NULL
)
{
/* We have a login */
url
->
psz_username
=
psz_parse
;
*
p
++
=
'\0'
;
psz_parse
=
strchr
(
psz_parse
,
':'
);
if
(
psz_parse
!=
NULL
)
{
/* We have a password */
*
psz_parse
++
=
'\0'
;
url
->
psz_password
=
psz_parse
;
}
psz_parse
=
p
;
}
p
=
strchr
(
psz_parse
,
'/'
);
if
(
!
p
||
psz_parse
<
p
)
{
char
*
p2
;
/* We have a host[:port] */
url
->
psz_host
=
strdup
(
psz_parse
);
if
(
p
)
{
url
->
psz_host
[
p
-
psz_parse
]
=
'\0'
;
}
if
(
*
url
->
psz_host
==
'['
)
{
/* Ipv6 address */
p2
=
strchr
(
url
->
psz_host
,
']'
);
if
(
p2
)
{
p2
=
strchr
(
p2
,
':'
);
}
}
else
{
p2
=
strchr
(
url
->
psz_host
,
':'
);
}
if
(
p2
)
{
*
p2
++
=
'\0'
;
url
->
i_port
=
atoi
(
p2
);
}
}
psz_parse
=
p
;
/* Now parse psz_path and psz_option */
if
(
psz_parse
)
{
url
->
psz_path
=
psz_parse
;
if
(
option
!=
'\0'
)
{
p
=
strchr
(
url
->
psz_path
,
option
);
if
(
p
)
{
*
p
++
=
'\0'
;
url
->
psz_option
=
p
;
}
}
}
}
/*****************************************************************************
* vlc_UrlClean:
*****************************************************************************
*
*****************************************************************************/
static
inline
void
vlc_UrlClean
(
vlc_url_t
*
url
)
{
if
(
url
->
psz_buffer
)
free
(
url
->
psz_buffer
);
if
(
url
->
psz_host
)
free
(
url
->
psz_host
);
url
->
psz_protocol
=
NULL
;
url
->
psz_username
=
NULL
;
url
->
psz_password
=
NULL
;
url
->
psz_host
=
NULL
;
url
->
i_port
=
0
;
url
->
psz_path
=
NULL
;
url
->
psz_option
=
NULL
;
url
->
psz_buffer
=
NULL
;
}
static
inline
int
isurlsafe
(
int
c
)
{
return
(
(
unsigned
char
)(
c
-
'a'
)
<
26
)
||
(
(
unsigned
char
)(
c
-
'A'
)
<
26
)
||
(
(
unsigned
char
)(
c
-
'0'
)
<
10
)
/* Hmm, we should not encode character that are allowed in URLs
* (even if they are not URL-safe), nor URL-safe characters.
* We still encode some of them because of Microsoft's crap browser.
*/
||
(
strchr
(
"-_."
,
c
)
!=
NULL
);
}
/*****************************************************************************
* vlc_UrlEncode:
*****************************************************************************
* perform URL encoding
* (you do NOT want to do URL decoding - it is not reversible - do NOT do it)
*****************************************************************************/
static
inline
char
*
vlc_UrlEncode
(
const
char
*
psz_url
)
{
char
*
psz_enc
,
*
out
;
const
unsigned
char
*
in
;
psz_enc
=
(
char
*
)
malloc
(
3
*
strlen
(
psz_url
)
+
1
);
if
(
psz_enc
==
NULL
)
return
NULL
;
out
=
psz_enc
;
for
(
in
=
(
const
unsigned
char
*
)
psz_url
;
*
in
;
in
++
)
{
unsigned
char
c
=
*
in
;
if
(
isurlsafe
(
c
)
)
*
out
++
=
(
char
)
c
;
else
{
*
out
++
=
'%'
;
*
out
++
=
(
(
c
>>
4
)
>=
0xA
)
?
'A'
+
(
c
>>
4
)
-
0xA
:
'0'
+
(
c
>>
4
);
*
out
++
=
(
(
c
&
0xf
)
>=
0xA
)
?
'A'
+
(
c
&
0xf
)
-
0xA
:
'0'
+
(
c
&
0xf
);
}
}
*
out
++
=
'\0'
;
return
(
char
*
)
realloc
(
psz_enc
,
out
-
psz_enc
);
}
/*****************************************************************************
* vlc_UrlIsNotEncoded:
*****************************************************************************
* check if given string is not a valid URL and must hence be encoded
*****************************************************************************/
#include <ctype.h>
static
inline
int
vlc_UrlIsNotEncoded
(
const
char
*
psz_url
)
{
const
char
*
ptr
;
for
(
ptr
=
psz_url
;
*
ptr
;
ptr
++
)
{
char
c
=
*
ptr
;
if
(
c
==
'%'
)
{
if
(
!
isxdigit
(
ptr
[
1
]
)
||
!
isxdigit
(
ptr
[
2
]
)
)
return
1
;
/* not encoded */
ptr
+=
2
;
}
else
if
(
!
isurlsafe
(
c
)
)
return
1
;
}
return
0
;
/* looks fine - but maybe it is not encoded */
}
/*****************************************************************************
* vlc_b64_encode:
*****************************************************************************
*
*****************************************************************************/
static
inline
char
*
vlc_b64_encode
(
char
*
src
)
{
static
const
char
b64
[]
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
;
size_t
len
=
strlen
(
src
);
char
*
ret
;
char
*
dst
=
(
char
*
)
malloc
(
(
len
+
4
)
*
4
/
3
);
if
(
dst
==
NULL
)
return
NULL
;
ret
=
dst
;
while
(
len
>
0
)
{
/* pops (up to) 3 bytes of input */
uint32_t
v
=
*
src
++
<<
24
;
if
(
len
>=
2
)
{
v
|=
*
src
++
<<
16
;
if
(
len
>=
3
)
v
|=
*
src
++
<<
8
;
}
/* pushes (up to) 4 bytes of output */
while
(
v
)
{
*
dst
++
=
b64
[
v
>>
26
];
v
=
v
<<
6
;
}
switch
(
len
)
{
case
1
:
*
dst
++
=
'='
;
*
dst
++
=
'='
;
len
--
;
break
;
case
2
:
*
dst
++
=
'='
;
len
-=
2
;
break
;
default:
len
-=
3
;
}
}
*
dst
=
'\0'
;
return
ret
;
}
/* Portable networking layer communication */
#define net_ConnectTCP(a, b, c) __net_ConnectTCP(VLC_OBJECT(a), b, c)
#define net_OpenTCP(a, b, c) __net_ConnectTCP(VLC_OBJECT(a), b, c)
...
...
include/vlc_url.h
0 → 100644
View file @
d18bfd92
/*****************************************************************************
* vlc_url.h: URL related macros
*****************************************************************************
* Copyright (C) 2002-2005 the VideoLAN team
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Rémi Denis-Courmont <rem # videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef __VLC_URL_H
# define __VLC_URL_H
typedef
struct
{
char
*
psz_protocol
;
char
*
psz_username
;
char
*
psz_password
;
char
*
psz_host
;
int
i_port
;
char
*
psz_path
;
char
*
psz_option
;
char
*
psz_buffer
;
/* to be freed */
}
vlc_url_t
;
/*****************************************************************************
* vlc_UrlParse:
*****************************************************************************
* option : if != 0 then path is split at this char
*
* format [protocol://[login[:password]@]][host[:port]]/path[OPTIONoption]
*****************************************************************************/
static
inline
void
vlc_UrlParse
(
vlc_url_t
*
url
,
const
char
*
psz_url
,
char
option
)
{
char
*
psz_dup
;
char
*
psz_parse
;
char
*
p
;
url
->
psz_protocol
=
NULL
;
url
->
psz_username
=
NULL
;
url
->
psz_password
=
NULL
;
url
->
psz_host
=
NULL
;
url
->
i_port
=
0
;
url
->
psz_path
=
NULL
;
url
->
psz_option
=
NULL
;
if
(
psz_url
==
NULL
)
{
url
->
psz_buffer
=
NULL
;
return
;
}
url
->
psz_buffer
=
psz_parse
=
psz_dup
=
strdup
(
psz_url
);
p
=
strstr
(
psz_parse
,
":/"
);
if
(
p
!=
NULL
)
{
/* we have a protocol */
/* skip :// */
*
p
++
=
'\0'
;
if
(
p
[
1
]
==
'/'
)
p
+=
2
;
url
->
psz_protocol
=
psz_parse
;
psz_parse
=
p
;
}
p
=
strchr
(
psz_parse
,
'@'
);
if
(
p
!=
NULL
)
{
/* We have a login */
url
->
psz_username
=
psz_parse
;
*
p
++
=
'\0'
;
psz_parse
=
strchr
(
psz_parse
,
':'
);
if
(
psz_parse
!=
NULL
)
{
/* We have a password */
*
psz_parse
++
=
'\0'
;
url
->
psz_password
=
psz_parse
;
}
psz_parse
=
p
;
}
p
=
strchr
(
psz_parse
,
'/'
);
if
(
!
p
||
psz_parse
<
p
)
{
char
*
p2
;
/* We have a host[:port] */
url
->
psz_host
=
strdup
(
psz_parse
);
if
(
p
)
{
url
->
psz_host
[
p
-
psz_parse
]
=
'\0'
;
}
if
(
*
url
->
psz_host
==
'['
)
{
/* Ipv6 address */
p2
=
strchr
(
url
->
psz_host
,
']'
);
if
(
p2
)
{
p2
=
strchr
(
p2
,
':'
);
}
}
else
{
p2
=
strchr
(
url
->
psz_host
,
':'
);
}
if
(
p2
)
{
*
p2
++
=
'\0'
;
url
->
i_port
=
atoi
(
p2
);
}
}
psz_parse
=
p
;
/* Now parse psz_path and psz_option */
if
(
psz_parse
)
{
url
->
psz_path
=
psz_parse
;
if
(
option
!=
'\0'
)
{
p
=
strchr
(
url
->
psz_path
,
option
);
if
(
p
)
{
*
p
++
=
'\0'
;
url
->
psz_option
=
p
;
}
}
}
}
/*****************************************************************************
* vlc_UrlClean:
*****************************************************************************
*
*****************************************************************************/
static
inline
void
vlc_UrlClean
(
vlc_url_t
*
url
)
{
if
(
url
->
psz_buffer
)
free
(
url
->
psz_buffer
);
if
(
url
->
psz_host
)
free
(
url
->
psz_host
);
url
->
psz_protocol
=
NULL
;
url
->
psz_username
=
NULL
;
url
->
psz_password
=
NULL
;
url
->
psz_host
=
NULL
;
url
->
i_port
=
0
;
url
->
psz_path
=
NULL
;
url
->
psz_option
=
NULL
;
url
->
psz_buffer
=
NULL
;
}
static
inline
int
isurlsafe
(
int
c
)
{
return
(
(
unsigned
char
)(
c
-
'a'
)
<
26
)
||
(
(
unsigned
char
)(
c
-
'A'
)
<
26
)
||
(
(
unsigned
char
)(
c
-
'0'
)
<
10
)
/* Hmm, we should not encode character that are allowed in URLs
* (even if they are not URL-safe), nor URL-safe characters.
* We still encode some of them because of Microsoft's crap browser.
*/
||
(
strchr
(
"-_."
,
c
)
!=
NULL
);
}
/*****************************************************************************
* vlc_UrlEncode:
*****************************************************************************
* perform URL encoding
* (you do NOT want to do URL decoding - it is not reversible - do NOT do it)
*****************************************************************************/
static
inline
char
*
vlc_UrlEncode
(
const
char
*
psz_url
)
{
char
*
psz_enc
,
*
out
;
const
unsigned
char
*
in
;
psz_enc
=
(
char
*
)
malloc
(
3
*
strlen
(
psz_url
)
+
1
);
if
(
psz_enc
==
NULL
)
return
NULL
;
out
=
psz_enc
;
for
(
in
=
(
const
unsigned
char
*
)
psz_url
;
*
in
;
in
++
)
{
unsigned
char
c
=
*
in
;
if
(
isurlsafe
(
c
)
)
*
out
++
=
(
char
)
c
;
else
{
*
out
++
=
'%'
;
*
out
++
=
(
(
c
>>
4
)
>=
0xA
)
?
'A'
+
(
c
>>
4
)
-
0xA
:
'0'
+
(
c
>>
4
);
*
out
++
=
(
(
c
&
0xf
)
>=
0xA
)
?
'A'
+
(
c
&
0xf
)
-
0xA
:
'0'
+
(
c
&
0xf
);
}
}
*
out
++
=
'\0'
;
return
(
char
*
)
realloc
(
psz_enc
,
out
-
psz_enc
);
}
/*****************************************************************************
* vlc_UrlIsNotEncoded:
*****************************************************************************
* check if given string is not a valid URL and must hence be encoded
*****************************************************************************/
#include <ctype.h>
static
inline
int
vlc_UrlIsNotEncoded
(
const
char
*
psz_url
)
{
const
char
*
ptr
;
for
(
ptr
=
psz_url
;
*
ptr
;
ptr
++
)
{
char
c
=
*
ptr
;
if
(
c
==
'%'
)
{
if
(
!
isxdigit
(
ptr
[
1
]
)
||
!
isxdigit
(
ptr
[
2
]
)
)
return
1
;
/* not encoded */
ptr
+=
2
;
}
else
if
(
!
isurlsafe
(
c
)
)
return
1
;
}
return
0
;
/* looks fine - but maybe it is not encoded */
}
/*****************************************************************************
* vlc_b64_encode:
*****************************************************************************
*
*****************************************************************************/
static
inline
char
*
vlc_b64_encode
(
char
*
src
)
{
static
const
char
b64
[]
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
;
size_t
len
=
strlen
(
src
);
char
*
ret
;
char
*
dst
=
(
char
*
)
malloc
(
(
len
+
4
)
*
4
/
3
);
if
(
dst
==
NULL
)
return
NULL
;
ret
=
dst
;
while
(
len
>
0
)
{
/* pops (up to) 3 bytes of input */
uint32_t
v
=
*
src
++
<<
24
;
if
(
len
>=
2
)
{
v
|=
*
src
++
<<
16
;
if
(
len
>=
3
)
v
|=
*
src
++
<<
8
;
}
/* pushes (up to) 4 bytes of output */
while
(
v
)
{
*
dst
++
=
b64
[
v
>>
26
];
v
=
v
<<
6
;
}
switch
(
len
)
{
case
1
:
*
dst
++
=
'='
;
*
dst
++
=
'='
;
len
--
;
break
;
case
2
:
*
dst
++
=
'='
;
len
-=
2
;
break
;
default:
len
-=
3
;
}
}
*
dst
=
'\0'
;
return
ret
;
}
#endif
modules/access/ftp.c
View file @
d18bfd92
...
...
@@ -31,13 +31,7 @@
#include <vlc/input.h>
#include "network.h"
#if defined( UNDER_CE )
# include <winsock.h>
#elif defined( WIN32 )
# include <winsock2.h>
#else
# include <sys/socket.h>
#endif
#include "vlc_url.h"
/*****************************************************************************
* Module descriptor
...
...
modules/access/http.c
View file @
d18bfd92
...
...
@@ -35,6 +35,7 @@
#include "vlc_playlist.h"
#include "vlc_meta.h"
#include "network.h"
#include "vlc_url.h"
#include "vlc_tls.h"
/*****************************************************************************
...
...
modules/access/mms/mmsh.c
View file @
d18bfd92
...
...
@@ -32,6 +32,7 @@
#include "vlc_playlist.h"
#include "network.h"
#include "vlc_url.h"
#include "asf.h"
#include "buffer.h"
...
...
modules/access/mms/mmstu.c
View file @
d18bfd92
...
...
@@ -48,6 +48,7 @@
#endif
#include "network.h"
#include "vlc_url.h"
#include "asf.h"
#include "buffer.h"
...
...
modules/control/http/rpn.c
View file @
d18bfd92
...
...
@@ -24,6 +24,7 @@
*****************************************************************************/
#include "http.h"
#include "vlc_url.h"
static
vlc_object_t
*
GetVLCObject
(
intf_thread_t
*
p_intf
,
const
char
*
psz_object
,
...
...
modules/control/rc.c
View file @
d18bfd92
...
...
@@ -52,6 +52,7 @@
#include "vlc_error.h"
#include "network.h"
#include "vlc_url.h"
#if defined(AF_UNIX) && !defined(AF_LOCAL)
# define AF_LOCAL AF_UNIX
...
...
modules/control/telnet.c
View file @
d18bfd92
...
...
@@ -45,15 +45,8 @@
# include <unistd.h>
#endif
#if defined( UNDER_CE )
# include <winsock.h>
#elif defined( WIN32 )
# include <winsock2.h>
#else
# include <sys/socket.h>
#endif
#include "network.h"
#include "vlc_url.h"
#include "vlc_vlm.h"
...
...
modules/misc/rtsp.c
View file @
d18bfd92
...
...
@@ -36,6 +36,7 @@
#include "vlc_httpd.h"
#include "vlc_vod.h"
#include "network.h"
#include "vlc_url.h"
/*****************************************************************************
* Module descriptor
...
...
modules/stream_out/rtp.c
View file @
d18bfd92
...
...
@@ -33,6 +33,7 @@
#include <vlc/sout.h>
#include "vlc_httpd.h"
#include "vlc_url.h"
#include "network.h"
#include "charset.h"
...
...
modules/stream_out/standard.c
View file @
d18bfd92
...
...
@@ -30,11 +30,8 @@
#include <vlc/vlc.h>
#include <vlc/sout.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include "network.h"
#include "vlc_url.h"
/*****************************************************************************
* Module descriptor
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment