[vlc-devel] The XSPF issue 2875 (the non-windows one)

Derk-Jan Hartman hartman at videolan.org
Mon Jun 22 03:35:33 CEST 2009


This is about: https://trac.videolan.org/vlc/ticket/2875

In the current code (since http://git.videolan.org/?p=vlc.git;a=commitdiff;h=a654d4a14edf1a3925cfa731c965652832f01ef2) 
  we have:
546                 /* special case: location */
547                 if( !strcmp( p_handler->name, "location" ) )
548                 {
549                     char *psz_location = psz_value;
550                     if( !strncmp( psz_value, "file://", 7 ) )
551                         psz_location = decode_URI( psz_value + 7 );

This seems wrong to me, and I'm not really sure what the goal is here.  
To quote the relevant standards:

The location attribute of XSPF:
http://www.xspf.org/xspf-v1.html#rfc.section.4.1.1.2.5
Source URI for this playlist. xspf:playlist elements MAY contain  
exactly one.

6.2 Relative paths
Relative paths MUST be resolved according to the XML Base  
specification or IETF RFC 2396:

The rules for determining the base URI can be be summarized as follows  
(highest priority to lowest): The base URI is embedded in the  
document's content. The base URI is that of the encapsulating entity  
(message, document, or none). The base URI is the URI used to retrieve  
the entity. The base URI is defined by the context of the application.
Generators should take extra care to ensure that relative paths are  
correctly encoded. Do:
<location>My%20Song.flac</location>
Don't:
<location>My Song.flac</location>


And to quote Wikipedia:
Examples of URI references
	• http://en.wikipedia.org/wiki/URI#Examples_of_URI_references ("http"  
is the 'scheme' name, "en.wikipedia.org" is the 'authority', "/wiki/ 
URI" the 'path' pointing to this article, and  
"#Examples_of_URI_references" is a 'fragment' pointing to this section.)
	• http://example.org/absolute/URI/with/absolute/path/to/resource.txt
	• /relative/URI/with/absolute/path/to/resource.txt
	• relative/path/to/resource.txt
	• ../../../resource.txt
	• ./resource.txt#frag01
	• resource.txt
	• #frag01
	• (empty string)

So what is the idea here. Are we storing uncoded, or coded paths in  
the VLC input core (I though uncoded), and why should we have  
different behaviour for URIs when we read the playlist? In my  
assessment, it seems we should just psz_location =  
decode_URI( psz_value ); for xspf reading.

DJ


More information about the vlc-devel mailing list