- Do not rewrite “+” as a white space when unescaping URL parameters (fixes #625).
authorRémi Denis-Courmont <rem@videolan.org>
Mon, 3 Apr 2006 11:39:35 +0000 (11:39 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Mon, 3 Apr 2006 11:39:35 +0000 (11:39 +0000)
- Rename decode_encoded_URI as unescape_URI as it really is what is done.

include/vlc_strings.h
include/vlc_symbols.h
include/vlc_url.h
modules/control/http/http.h
modules/control/http/macro.c
modules/control/http/rpn.c
modules/control/http/util.c
modules/demux/playlist/xspf.c
src/misc/strings.c

index c70a5ed..6faae1b 100644 (file)
@@ -31,9 +31,6 @@
  * @{
  */
 
-VLC_EXPORT( char *, decode_encoded_URI_duplicate, ( const char *psz ) );
-VLC_EXPORT( void, decode_encoded_URI, ( char *psz ) );
-
 VLC_EXPORT( void, resolve_xml_special_chars, ( char *psz_value ) );
 VLC_EXPORT( char *, convert_xml_special_chars, ( const char *psz_content ) );
 
index 3c86ce0..de064af 100644 (file)
@@ -480,9 +480,9 @@ struct module_symbols_t
     double (*us_atof_inner) (const char *);
     double (*us_strtod_inner) (const char *, char **);
     lldiv_t (*vlc_lldiv_inner) (long long numer, long long denom);
-    void (*decode_encoded_URI_inner) (char *psz);
+    void (*unescape_URI_inner) (char *psz);
     char * (*convert_xml_special_chars_inner) (const char *psz_content);
-    char * (*decode_encoded_URI_duplicate_inner) (const char *psz);
+    char * (*unescape_URI_duplicate_inner) (const char *psz);
     void (*resolve_xml_special_chars_inner) (char *psz_value);
     char * (*FromUTF16_inner) (const uint16_t *);
     const char * (*IsUTF8_inner) (const char *);
@@ -948,9 +948,9 @@ struct module_symbols_t
 #  define us_atof (p_symbols)->us_atof_inner
 #  define us_strtod (p_symbols)->us_strtod_inner
 #  define vlc_lldiv (p_symbols)->vlc_lldiv_inner
-#  define decode_encoded_URI (p_symbols)->decode_encoded_URI_inner
+#  define unescape_URI (p_symbols)->unescape_URI_inner
 #  define convert_xml_special_chars (p_symbols)->convert_xml_special_chars_inner
-#  define decode_encoded_URI_duplicate (p_symbols)->decode_encoded_URI_duplicate_inner
+#  define unescape_URI_duplicate (p_symbols)->unescape_URI_duplicate_inner
 #  define resolve_xml_special_chars (p_symbols)->resolve_xml_special_chars_inner
 #  define FromUTF16 (p_symbols)->FromUTF16_inner
 #  define IsUTF8 (p_symbols)->IsUTF8_inner
@@ -1419,9 +1419,9 @@ struct module_symbols_t
     ((p_symbols)->us_atof_inner) = us_atof; \
     ((p_symbols)->us_strtod_inner) = us_strtod; \
     ((p_symbols)->vlc_lldiv_inner) = vlc_lldiv; \
-    ((p_symbols)->decode_encoded_URI_inner) = decode_encoded_URI; \
+    ((p_symbols)->unescape_URI_inner) = unescape_URI; \
     ((p_symbols)->convert_xml_special_chars_inner) = convert_xml_special_chars; \
-    ((p_symbols)->decode_encoded_URI_duplicate_inner) = decode_encoded_URI_duplicate; \
+    ((p_symbols)->unescape_URI_duplicate_inner) = unescape_URI_duplicate; \
     ((p_symbols)->resolve_xml_special_chars_inner) = resolve_xml_special_chars; \
     ((p_symbols)->FromUTF16_inner) = FromUTF16; \
     ((p_symbols)->IsUTF8_inner) = IsUTF8; \
index bae327f..280864d 100644 (file)
@@ -169,6 +169,9 @@ static inline void vlc_UrlClean( vlc_url_t *url )
     url->psz_buffer   = NULL;
 }
 
+VLC_EXPORT( char *, unescape_URI_duplicate, ( const char *psz ) );
+VLC_EXPORT( void, unescape_URI, ( char *psz ) );
+
 static inline int isurlsafe( int c )
 {
     return ( (unsigned char)( c - 'a' ) < 26 )
index 44b22ce..b08f558 100644 (file)
@@ -128,8 +128,6 @@ char *E_(ExtractURIValue)( char *psz_uri, const char *psz_name,
                              char *psz_value, int i_value_max );
 /** \todo Describe this function */
 int E_(TestURIParam)( char *psz_uri, const char *psz_name );
-/** This function extracts the original value from an URL-encoded string */
-void E_(DecodeEncodedURI)( char *psz );
 
 /** This function parses a MRL */
 playlist_item_t *E_(MRLParse)( intf_thread_t *, char *psz, char *psz_name );
index 46b3f2f..3451c8c 100644 (file)
@@ -236,7 +236,7 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
                 {
                     char value[30];
                     E_(ExtractURIValue)( p_request, "seek_value", value, 30 );
-                    E_(DecodeEncodedURI)( value );
+                    unescape_URI( value );
                     E_(HandleSeek)( p_intf, value );
                     break;
                 }
@@ -248,7 +248,7 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
 
                     E_(ExtractURIValue)( p_request, "value", vol, 8 );
                     aout_VolumeGet( p_intf, &i_volume );
-                    E_(DecodeEncodedURI)( vol );
+                    unescape_URI( vol );
 
                     if( vol[0] == '+' )
                     {
@@ -305,9 +305,9 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
                     playlist_item_t *p_item;
 
                     E_(ExtractURIValue)( p_request, "mrl", mrl, 1024 );
-                    E_(DecodeEncodedURI)( mrl );
+                    unescape_URI( mrl );
                     E_(ExtractURIValue)( p_request, "name", psz_name, 1024 );
-                    E_(DecodeEncodedURI)( psz_name );
+                    unescape_URI( psz_name );
                     if( !*psz_name )
                     {
                         memcpy( psz_name, mrl, 1024 );
@@ -530,7 +530,7 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
                         char val[512];
                         E_(ExtractURIValue)( p_request,
                                                vlm_properties[i], val, 512 );
-                        E_(DecodeEncodedURI)( val );
+                        unescape_URI( val );
                         if( strlen( val ) > 0 && i >= 4 )
                         {
                             p += sprintf( p, " %s %s", vlm_properties[i], val );
@@ -626,7 +626,7 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
                     if( p_intf->p_sys->p_vlm == NULL ) break;
 
                     E_(ExtractURIValue)( p_request, "file", file, 512 );
-                    E_(DecodeEncodedURI)( file );
+                    unescape_URI( file );
 
                     if( E_(StrToMacroType)( control ) == MVLC_VLM_LOAD )
                         sprintf( psz, "load %s", file );
@@ -661,7 +661,7 @@ void E_(MacroDo)( httpd_file_sys_t *p_args,
                 break;
             }
             E_(ExtractURIValue)( p_request, m->param1,  value, 512 );
-            E_(DecodeEncodedURI)( value );
+            unescape_URI( value );
 
             switch( E_(StrToMacroType)( m->param2 ) )
             {
index 5d80561..1fa6d0f 100644 (file)
@@ -353,7 +353,7 @@ void E_(EvaluateRPN)( intf_thread_t *p_intf, mvar_t  *vars,
             char *tmp;
 
             E_(ExtractURIValue)( url, name, value, 512 );
-            E_(DecodeEncodedURI)( value );
+            unescape_URI( value );
             tmp = E_(FromUTF8)( p_intf, value );
             E_(SSPush)( st, tmp );
             free( tmp );
index 0d45dcc..470ee15 100644 (file)
@@ -773,11 +773,6 @@ char *E_(ExtractURIValue)( char *psz_uri, const char *psz_name,
     return p;
 }
 
-void E_(DecodeEncodedURI)( char *psz )
-{
-    decode_encoded_URI( psz );
-}
-
 /* Since the resulting string is smaller we can work in place, so it is
  * permitted to have psz == new. new points to the first word of the
  * string, the function returns the remaining string. */
index 670785a..34ae342 100644 (file)
@@ -659,7 +659,7 @@ static vlc_bool_t insert_new_item( playlist_t *p_pl, playlist_item_t *p_cur,
                                    playlist_item_t **pp_new, char *psz_location )
 {
     char *psz_uri=NULL;
-    psz_uri = decode_encoded_URI_duplicate( psz_location );
+    psz_uri = unescape_URI_duplicate( psz_location );
 
     if ( psz_uri )
     {
index cefe5f4..1b6fe8d 100644 (file)
 #include <assert.h>
 
 #include "vlc_strings.h"
+#include "vlc_url.h" 
 
 /**
- * Decode URI encoded string
+ * Unescape URI encoded string
  * \return decoded duplicated string
  */
-char *decode_encoded_URI_duplicate( const char *psz )
+char *unescape_URI_duplicate( const char *psz )
 {
     char *psz_dup = strdup( psz );
-    decode_encoded_URI( psz_dup );
+    unescape_URI( psz_dup );
     return psz_dup;
 }
 
 /**
- * Decode URI encoded string
+ * Unescape URI encoded string in place
  * \return nothing
  */
-void decode_encoded_URI( char *psz )
+void unescape_URI( char *psz )
 {
     unsigned char *in = (unsigned char *)psz, *out = in, c;
 
@@ -101,9 +102,7 @@ void decode_encoded_URI( char *psz )
                 break;
             }
 
-            case '+':
-                *out++ = ' ';
-                break;
+            /* + is not a special case - it means plus, not space. */
 
             default:
                 /* Inserting non-ASCII or non-printable characters is unsafe,