* http.c : http mini-server ;)
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: http.c,v 1.34 2003/11/16 20:41:36 garf Exp $
+ * $Id: http.c,v 1.39 2003/11/23 17:46:06 gbazin Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
* Laurent Aimar <fenrir@via.ecp.fr>
uri_decode_url_encoded( mrl );
p_item = parse_MRL( mrl );
- if( p_item == NULL )
+ if( !p_item || !*p_item )
{
msg_Dbg( p_intf, "invalid requested mrl: %s", mrl );
} else
{
int i_item, *p_items = NULL, i_nb_items = 0;
char item[512], *p_parser = p_request;
- int i,j,temp;
+ int i,j;
/* Get the list of items to keep */
while( (p_parser =
if( !*item ) continue;
i_item = atoi( item );
- p_items = realloc( p_items, (i_nb_items + 3) *
+ p_items = realloc( p_items, (i_nb_items + 1) *
sizeof(int) );
- p_items[i_nb_items + 1] = i_item;
+ p_items[i_nb_items] = i_item;
i_nb_items++;
}
- /* sort item list */
- for( i=1 ; i < (i_nb_items + 1) ; i++)
+ /* The items need to be deleted from in reversed order */
+ for( i = p_sys->p_playlist->i_size - 1; i >= 0 ; i-- )
{
- for( j=(i+1) ; j < (i_nb_items + 1) ; j++)
+ /* Check if the item is in the keep list */
+ for( j = 0 ; j < i_nb_items ; j++ )
{
- if( p_items[j] > p_items[i] )
- {
- temp = p_items[j];
- p_items[j] = p_items[i];
- p_items[i] = temp;
- }
+ if( p_items[j] == i ) break;
}
- }
-
- p_items[0] = p_sys->p_playlist->i_size;
- p_items[ i_nb_items + 1 ] = -1;
-
- /* The items need to be deleted from in reversed order */
- for( i=0 ; i <= i_nb_items ; i++ )
+ if( j == i_nb_items )
{
- for( j = (p_items[i] - 1) ; j > p_items[i + 1] ; j-- )
- {
- playlist_Delete( p_sys->p_playlist,
- j );
- msg_Dbg( p_intf, "requested playlist delete: %d",
- j );
- }
+ playlist_Delete( p_sys->p_playlist, i );
+ msg_Dbg( p_intf, "requested playlist delete: %d",
+ i );
}
+ }
if( p_items ) free( p_items );
break;
}
/* extract the mrl */
- s_temp = Find_end_MRL( s_mrl );
-
+ s_temp = strstr( s_mrl , " :" );
if( s_temp == NULL )
{
- return NULL;
+ s_temp = s_mrl + strlen( s_mrl );
+ } else
+ {
+ while( (*s_temp == ' ') && (s_temp != s_mrl ) )
+ {
+ s_temp--;
+ }
+ s_temp++;
}
/* if the mrl is between " or ', we must remove them */