Esempio n. 1
0
File: item.c Progetto: Kafay/vlc
void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
{
    vlc_mutex_lock( &p_i->lock );

    free( p_i->psz_uri );
    p_i->psz_uri = strdup( psz_uri );

    GuessType( p_i );

    if( !p_i->psz_name && p_i->i_type == ITEM_TYPE_FILE )
    {
        const char *psz_filename = strrchr( p_i->psz_uri, DIR_SEP_CHAR );
        if( psz_filename && *psz_filename == DIR_SEP_CHAR )
            psz_filename++;
        if( psz_filename && *psz_filename )
            p_i->psz_name = strdup( psz_filename );
    }

    /* The name is NULL: fill it with everything except login and password */
    if( !p_i->psz_name )
    {
        int r;
        vlc_url_t url;
        vlc_UrlParse( &url, psz_uri, 0 );
        if( url.psz_protocol )
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s://%s:%d%s", url.psz_protocol,
                          url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s://%s%s", url.psz_protocol,
                          url.psz_host ? url.psz_host : "",
                          url.psz_path ? url.psz_path : "" );
        }
        else
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s:%d%s", url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s%s", url.psz_host,
                          url.psz_path ? url.psz_path : "" );
        }
        vlc_UrlClean( &url );
        if( -1==r )
            p_i->psz_name=NULL; /* recover from undefined value */
    }

    vlc_mutex_unlock( &p_i->lock );
}
Esempio n. 2
0
void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
{
    assert( psz_uri );
#ifndef NDEBUG
    if( !strstr( psz_uri, "://" )
     || strchr( psz_uri, ' ' ) || strchr( psz_uri, '"' ) )
        fprintf( stderr, "Warning: %s(\"%s\"): file path instead of URL.\n",
                 __func__, psz_uri );
#endif
    vlc_mutex_lock( &p_i->lock );
    free( p_i->psz_uri );
    p_i->psz_uri = strdup( psz_uri );

    p_i->i_type = GuessType( p_i );

    if( p_i->psz_name )
        ;
    else
    if( p_i->i_type == ITEM_TYPE_FILE || p_i->i_type == ITEM_TYPE_DIRECTORY )
    {
        const char *psz_filename = strrchr( p_i->psz_uri, '/' );

        if( psz_filename && *psz_filename == '/' )
            psz_filename++;
        if( psz_filename && *psz_filename )
            p_i->psz_name = strdup( psz_filename );

        /* Make the name more readable */
        if( p_i->psz_name )
        {
            decode_URI( p_i->psz_name );
            EnsureUTF8( p_i->psz_name );
        }
    }
    else
    {   /* Strip login and password from title */
        int r;
        vlc_url_t url;

        vlc_UrlParse( &url, psz_uri, 0 );
        if( url.psz_protocol )
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s://%s:%d%s", url.psz_protocol,
                          url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s://%s%s", url.psz_protocol,
                          url.psz_host ? url.psz_host : "",
                          url.psz_path ? url.psz_path : "" );
        }
        else
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s:%d%s", url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s%s", url.psz_host,
                          url.psz_path ? url.psz_path : "" );
        }
        vlc_UrlClean( &url );
        if( -1==r )
            p_i->psz_name=NULL; /* recover from undefined value */
    }

    vlc_mutex_unlock( &p_i->lock );
}
Esempio n. 3
0
void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
{
    vlc_mutex_lock( &p_i->lock );
#ifndef NDEBUG
    if( !strstr( psz_uri, "://" ) || strstr( psz_uri, " " ) || strstr( psz_uri, "\"" ) )
        fprintf( stderr, "input_item_SetURI() was likely called with a path. FIXME\n" );
#endif

    free( p_i->psz_uri );
    p_i->psz_uri = strdup( psz_uri );

    p_i->i_type = GuessType( p_i );

    if( p_i->psz_name )
        ;
    else
    if( p_i->i_type == ITEM_TYPE_FILE || p_i->i_type == ITEM_TYPE_DIRECTORY )
    {
        const char *psz_filename = strrchr( p_i->psz_uri, '/' );

        if( psz_filename && *psz_filename == '/' )
            psz_filename++;
        if( psz_filename && *psz_filename )
            p_i->psz_name = strdup( psz_filename );

        /* Make the name more readable */
        if( p_i->psz_name )
            decode_URI( p_i->psz_name );
    }
    else
    {   /* Strip login and password from title */
        int r;
        vlc_url_t url;

        vlc_UrlParse( &url, psz_uri, 0 );
        if( url.psz_protocol )
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s://%s:%d%s", url.psz_protocol,
                          url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s://%s%s", url.psz_protocol,
                          url.psz_host ? url.psz_host : "",
                          url.psz_path ? url.psz_path : "" );
        }
        else
        {
            if( url.i_port > 0 )
                r=asprintf( &p_i->psz_name, "%s:%d%s", url.psz_host, url.i_port,
                          url.psz_path ? url.psz_path : "" );
            else
                r=asprintf( &p_i->psz_name, "%s%s", url.psz_host,
                          url.psz_path ? url.psz_path : "" );
        }
        vlc_UrlClean( &url );
        if( -1==r )
            p_i->psz_name=NULL; /* recover from undefined value */
    }

    vlc_mutex_unlock( &p_i->lock );
}
Esempio n. 4
0
// Convert row-level trigger using inserted and deleted system tables
void SqlParser::SqlServerConvertRowLevelTrigger(Token *table, Token *when, Token *insert, Token *update, 
					Token *delete_, Token *end)
{
	if(table == NULL || when == NULL)
		return;

	TokenStr old_cols;
	TokenStr old_vars;

	Token *decl_end = _spl_last_declare;

	// Skip statement delimiter
	if(decl_end != NULL && Token::Compare(decl_end->next, ';', L';') == true)
		decl_end = decl_end->next;
	
	int num = 0;
	size_t old_prefix_len = 4;

	// Skip old. in column name references (old already prefixed with @ in target)
	if(_spl_old_correlation_name != NULL)
		old_prefix_len = _spl_old_correlation_name->len + 1 + 1;

	// Generate declaration for referenced OLD columns
	for(ListwItem *i = _spl_tr_old_columns.GetFirst(); i != NULL; i = i->next)
	{
		Token *var = (Token*)i->value;

		if(num == 0)
			Append(decl_end, "\n", L"\n", 1);
		else
		{
			old_cols.Append(", ", L", ", 2);
			old_vars.Append(", ", L", ", 2);
		}

		Append(decl_end, "\nDECLARE ", L"\nDECLARE ", 9, _declare_format);
		AppendCopy(decl_end, var);
		Append(decl_end, " ", L" ", 1);

		// Define the data type of the variable
		TokenStr type;
		GuessType(var, type);
		AppendNoFormat(decl_end, &type);

		Append(decl_end, ";", L";", 1);

		old_cols.Append(var, old_prefix_len, var->len - old_prefix_len + 1);
		old_vars.Append(var);

		num++;
	}
	
	// Declare deleted cursor
	if(delete_ != NULL)
	{
		Append(decl_end, "\nDECLARE ", L"\nDECLARE ", 9, _declare_format); 
		AppendNoFormat(decl_end, "deleted_cur ", L"deleted_cur ", 12); 
		Append(decl_end, "CURSOR FOR SELECT ", L"CURSOR FOR SELECT ", 18, _declare_format);
		AppendNoFormat(decl_end, &old_cols);
		Append(decl_end, " FROM ", L" FROM ", 6, _declare_format);
		AppendNoFormat(decl_end, "deleted;", L"deleted;", 8);
	}

	if(delete_ != NULL)
		Append(decl_end, "\n\nOPEN deleted_cur;", L"\n\nOPEN deleted_cur;", 19); 

	Append(decl_end, "\nWHILE 1=0 BEGIN", L"\nWHILE 1=0 BEGIN", 16); 

	if(delete_ != NULL)
	{
		Append(decl_end, "\nFETCH deleted_cur INTO ", L"\nFETCH deleted_cur INTO ", 24);
		AppendNoFormat(decl_end, &old_vars);
		Append(decl_end, ";", L";", 1);
	}

	Append(decl_end, "\nIF @@FETCH_STATUS <> 0 BREAK;", L"\nIF @@FETCH_STATUS <> 0 BREAK;", 30);

	// Terminate the cursor loop
	Token *end_loop = Prepend(end, "END\n", L"END\n", 4);

	if(delete_ != NULL)
	{
		Append(end_loop, "CLOSE deleted_cur;", L"CLOSE deleted_cur;", 18);
		Append(end_loop, "\nDEALLOCATE deleted_cur;", L"\nDEALLOCATE deleted_cur;", 24);
	}

	// Perform DELETE in INSTEAD OF trigger
	if(delete_ != NULL && insert == NULL && update == NULL)
	{
		Append(end_loop, "\nDELETE FROM ", L"\nDELETE FROM ", 13);
		AppendCopy(end_loop, table);
		Append(end_loop, " WHERE (", L" WHERE (", 8); 
		AppendNoFormat(end_loop, &old_cols);
		Append(end_loop, ") IN (SELECT ", L") IN (SELECT ", 13);
		AppendNoFormat(end_loop, &old_cols);
		Append(end_loop, " FROM deleted);\n", L" FROM deleted);\n", 16);
	}
}