⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpn.c

📁 uclinux 下的vlc播放器源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
            free( name );        }        else if( !strcmp( s, "url_encode" ) )        {            char *url = E_(SSPop)( st );            char *value;            value = E_(ToUTF8)( p_intf, url );            free( url );            url = value;            value = vlc_UrlEncode( url );            free( url );            E_(SSPush)( st, value );            free( value );        }        else if( !strcmp( s, "addslashes" ) )        {            char *psz_src = E_(SSPop)( st );            char *psz_dest;            char *str = psz_src;            p = psz_dest = malloc( strlen( str ) * 2 + 1 );            while( *str != '\0' )            {                if( *str == '"' || *str == '\'' || *str == '\\' )                {                    *p++ = '\\';                }                *p++ = *str;                str++;            }            *p = '\0';            E_(SSPush)( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "stripslashes" ) )        {            char *psz_src = E_(SSPop)( st );            char *psz_dest;            char *str = psz_src;            p = psz_dest = strdup( psz_src );            while( *str )            {                if( *str == '\\' && *(str + 1) )                {                    str++;                }                *p++ = *str++;            }            *p = '\0';            E_(SSPush)( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "htmlspecialchars" ) )        {            char *psz_src = E_(SSPop)( st );            char *psz_dest;            psz_dest = convert_xml_special_chars( psz_src );            E_(SSPush)( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "realpath" ) )        {            char *psz_src = E_(SSPop)( st );            char *psz_dir = E_(RealPath)( p_intf, psz_src );            E_(SSPush)( st, psz_dir );            free( psz_src );            free( psz_dir );        }        /* 4. stack functions */        else if( !strcmp( s, "dup" ) )        {            char *str = E_(SSPop)( st );            E_(SSPush)( st, str );            E_(SSPush)( st, str );            free( str );        }        else if( !strcmp( s, "drop" ) )        {            char *str = E_(SSPop)( st );            free( str );        }        else if( !strcmp( s, "swap" ) )        {            char *s1 = E_(SSPop)( st );            char *s2 = E_(SSPop)( st );            E_(SSPush)( st, s1 );            E_(SSPush)( st, s2 );            free( s1 );            free( s2 );        }        else if( !strcmp( s, "flush" ) )        {            E_(SSClean)( st );            E_(SSInit)( st );        }        else if( !strcmp( s, "store" ) )        {            char *value = E_(SSPop)( st );            char *name  = E_(SSPop)( st );            E_(mvar_PushNewVar)( vars, name, value );            free( name );            free( value );        }        else if( !strcmp( s, "value" ) )        {            char *name  = E_(SSPop)( st );            char *value = E_(mvar_GetValue)( vars, name );            E_(SSPush)( st, value );            free( name );        }        /* 5. player control */        else if( !strcmp( s, "vlc_play" ) )        {            int i_id = E_(SSPopN)( st, vars );            int i_ret;            i_ret = playlist_Control( p_sys->p_playlist, PLAYLIST_ITEMPLAY,                                      playlist_ItemGetById( p_sys->p_playlist,                                      i_id ) );            msg_Dbg( p_intf, "requested playlist item: %i", i_id );            E_(SSPushN)( st, i_ret );        }        else if( !strcmp( s, "vlc_stop" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_STOP );            msg_Dbg( p_intf, "requested playlist stop" );        }        else if( !strcmp( s, "vlc_pause" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_PAUSE );            msg_Dbg( p_intf, "requested playlist pause" );        }        else if( !strcmp( s, "vlc_next" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, 1 );            msg_Dbg( p_intf, "requested playlist next" );        }        else if( !strcmp( s, "vlc_previous" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, -1 );            msg_Dbg( p_intf, "requested playlist previous" );        }        else if( !strcmp( s, "vlc_seek" ) )        {            char *psz_value = E_(SSPop)( st );            E_(HandleSeek)( p_intf, psz_value );            msg_Dbg( p_intf, "requested playlist seek: %s", psz_value );            free( psz_value );        }        else if( !strcmp( s, "vlc_var_type" )                  || !strcmp( s, "vlc_config_type" ) )        {            vlc_object_t *p_object;            const char *psz_type = NULL;            int i_type = 0;            if( !strcmp( s, "vlc_var_type" ) )            {                char *psz_object = E_(SSPop)( st );                char *psz_variable = E_(SSPop)( st );                vlc_bool_t b_need_release;                p_object = GetVLCObject( p_intf, psz_object, &b_need_release );                if( p_object != NULL )                    i_type = var_Type( p_object, psz_variable );                free( psz_variable );                free( psz_object );                if( b_need_release && p_object != NULL )                    vlc_object_release( p_object );            }            else            {                char *psz_variable = E_(SSPop)( st );                p_object = VLC_OBJECT(p_intf);                i_type = config_GetType( p_object, psz_variable );                free( psz_variable );            }            if( p_object != NULL )            {                switch( i_type & VLC_VAR_TYPE )                {                case VLC_VAR_BOOL:                    psz_type = "VLC_VAR_BOOL";                    break;                case VLC_VAR_INTEGER:                    psz_type = "VLC_VAR_INTEGER";                    break;                case VLC_VAR_HOTKEY:                    psz_type = "VLC_VAR_HOTKEY";                    break;                case VLC_VAR_STRING:                    psz_type = "VLC_VAR_STRING";                    break;                case VLC_VAR_MODULE:                    psz_type = "VLC_VAR_MODULE";                    break;                case VLC_VAR_FILE:                    psz_type = "VLC_VAR_FILE";                    break;                case VLC_VAR_DIRECTORY:                    psz_type = "VLC_VAR_DIRECTORY";                    break;                case VLC_VAR_VARIABLE:                    psz_type = "VLC_VAR_VARIABLE";                    break;                case VLC_VAR_FLOAT:                    psz_type = "VLC_VAR_FLOAT";                    break;                default:                    psz_type = "UNDEFINED";                }            }            else                psz_type = "INVALID";            E_(SSPush)( st, psz_type );        }        else if( !strcmp( s, "vlc_var_set" ) )        {            char *psz_object = E_(SSPop)( st );            char *psz_variable = E_(SSPop)( st );            vlc_bool_t b_need_release;            vlc_object_t *p_object = GetVLCObject( p_intf, psz_object,                                                   &b_need_release );            if( p_object != NULL )            {                vlc_bool_t b_error = VLC_FALSE;                char *psz_value = NULL;                vlc_value_t val;                int i_type;                i_type = var_Type( p_object, psz_variable );                switch( i_type & VLC_VAR_TYPE )                {                case VLC_VAR_BOOL:                    val.b_bool = E_(SSPopN)( st, vars );                    msg_Dbg( p_intf, "requested %s var change: %s->%d",                             psz_object, psz_variable, val.b_bool );                    break;                case VLC_VAR_INTEGER:                case VLC_VAR_HOTKEY:                    val.i_int = E_(SSPopN)( st, vars );                    msg_Dbg( p_intf, "requested %s var change: %s->%d",                             psz_object, psz_variable, val.i_int );                    break;                case VLC_VAR_STRING:                case VLC_VAR_MODULE:                case VLC_VAR_FILE:                case VLC_VAR_DIRECTORY:                case VLC_VAR_VARIABLE:                    val.psz_string = psz_value = E_(SSPop)( st );                    msg_Dbg( p_intf, "requested %s var change: %s->%s",                             psz_object, psz_variable, psz_value );                    break;                case VLC_VAR_FLOAT:                    psz_value = E_(SSPop)( st );                    val.f_float = atof( psz_value );                    msg_Dbg( p_intf, "requested %s var change: %s->%f",                             psz_object, psz_variable, val.f_float );                    break;                default:                    E_(SSPopN)( st, vars );                    msg_Warn( p_intf, "invalid %s variable type %d (%s)",                              psz_object, i_type & VLC_VAR_TYPE, psz_variable );                    b_error = VLC_TRUE;                }                if( !b_error )                    var_Set( p_object, psz_variable, val );                if( psz_value != NULL )                    free( psz_value );            }            else                msg_Warn( p_intf, "vlc_var_set called without an object" );            free( psz_variable );            free( psz_object );            if( b_need_release && p_object != NULL )                vlc_object_release( p_object );        }        else if( !strcmp( s, "vlc_var_get" ) )        {            char *psz_object = E_(SSPop)( st );            char *psz_variable = E_(SSPop)( st );            vlc_bool_t b_need_release;            vlc_object_t *p_object = GetVLCObject( p_intf, psz_object,                                                   &b_need_release );            if( p_object != NULL )            {                vlc_value_t val;                int i_type;                i_type = var_Type( p_object, psz_variable );                var_Get( p_object, psz_variable, &val );                switch( i_type & VLC_VAR_TYPE )                {                case VLC_VAR_BOOL:                    E_(SSPushN)( st, val.b_bool );                    break;                case VLC_VAR_INTEGER:                case VLC_VAR_HOTKEY:                    E_(SSPushN)( st, val.i_int );                    break;                case VLC_VAR_STRING:                case VLC_VAR_MODULE:                case VLC_VAR_FILE:                case VLC_VAR_DIRECTORY:                case VLC_VAR_VARIABLE:                    E_(SSPush)( st, val.psz_string );                    free( val.psz_string );                    break;                case VLC_VAR_FLOAT:                {                    char psz_value[20];                    lldiv_t value = lldiv( val.f_float * 1000000, 1000000 );                    snprintf( psz_value, sizeof(psz_value), I64Fd".%06u",                                    value.quot, (unsigned int)value.rem );                    E_(SSPush)( st, psz_value );                    break;                }                default:                    msg_Warn( p_intf, "invalid %s variable type %d (%s)",                              psz_object, i_type & VLC_VAR_TYPE, psz_variable );                    E_(SSPush)( st, "" );                }            }            else            {                msg_Warn( p_intf, "vlc_var_get called without an object" );                E_(SSPush)( st, "" );            }            free( psz_variable );            free( psz_object );            if( b_need_release && p_object != NULL )                vlc_object_release( p_object );        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -