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

📄 rpn.c

📁 VLC Player Source Code
💻 C
📖 第 1 页 / 共 3 页
字号:
        {            char *url = SSPop( st );            char *value = vlc_UrlEncode( url );            free( url );            SSPush( st, value );            free( value );        }        else if( !strcmp( s, "xml_encode" ) )        {            char *url = SSPop( st );            char *value = convert_xml_special_chars( url );            free( url );            SSPush( st, value );            free( value );        }        else if( !strcmp( s, "addslashes" ) )        {            char *psz_src = 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';            SSPush( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "stripslashes" ) )        {            char *psz_src = 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';            SSPush( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "htmlspecialchars" ) )        {            char *psz_src = SSPop( st );            char *psz_dest;            psz_dest = convert_xml_special_chars( psz_src );            SSPush( st, psz_dest );            free( psz_src );            free( psz_dest );        }        else if( !strcmp( s, "realpath" ) )        {            char *psz_src = SSPop( st );            char *psz_dir = RealPath( psz_src );            SSPush( st, psz_dir );            free( psz_src );            free( psz_dir );        }        /* 4. stack functions */        else if( !strcmp( s, "dup" ) )        {            char *str = SSPop( st );            SSPush( st, str );            SSPush( st, str );            free( str );        }        else if( !strcmp( s, "drop" ) )        {            char *str = SSPop( st );            free( str );        }        else if( !strcmp( s, "swap" ) )        {            char *s1 = SSPop( st );            char *s2 = SSPop( st );            SSPush( st, s1 );            SSPush( st, s2 );            free( s1 );            free( s2 );        }        else if( !strcmp( s, "flush" ) )        {            SSClean( st );            SSInit( st );        }        else if( !strcmp( s, "store" ) )        {            char *value = SSPop( st );            char *name  = SSPop( st );            mvar_PushNewVar( vars, name, value );            free( name );            free( value );        }        else if( !strcmp( s, "value" ) )        {            char *name  = SSPop( st );            char *value = mvar_GetValue( vars, name );            SSPush( st, value );            free( name );        }        /* 5. player control */        else if( !strcmp( s, "vlc_play" ) )        {            int i_id = SSPopN( st, vars );            int i_ret;            vlc_object_lock( p_sys->p_playlist );            i_ret = playlist_Control( p_sys->p_playlist, PLAYLIST_VIEWPLAY,                                      pl_Locked, NULL,                                      playlist_ItemGetById( p_sys->p_playlist,                                      i_id, pl_Locked ) );            vlc_object_unlock( p_sys->p_playlist );            msg_Dbg( p_intf, "requested playlist item: %i", i_id );            SSPushN( st, i_ret );        }        else if( !strcmp( s, "vlc_stop" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_STOP, pl_Unlocked );            msg_Dbg( p_intf, "requested playlist stop" );        }        else if( !strcmp( s, "vlc_pause" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_PAUSE, pl_Unlocked );            msg_Dbg( p_intf, "requested playlist pause" );        }        else if( !strcmp( s, "vlc_next" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, pl_Unlocked, 1 );            msg_Dbg( p_intf, "requested playlist next" );        }        else if( !strcmp( s, "vlc_previous" ) )        {            playlist_Control( p_sys->p_playlist, PLAYLIST_SKIP, pl_Unlocked, -1 );            msg_Dbg( p_intf, "requested playlist previous" );        }        else if( !strcmp( s, "vlc_seek" ) )        {            char *psz_value = SSPop( st );            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 = SSPop( st );                char *psz_variable = SSPop( st );                bool 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 = 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";            SSPush( st, psz_type );        }        else if( !strcmp( s, "vlc_var_set" ) )        {            char *psz_object = SSPop( st );            char *psz_variable = SSPop( st );            bool b_need_release;            vlc_object_t *p_object = GetVLCObject( p_intf, psz_object,                                                   &b_need_release );            if( p_object != NULL )            {                bool b_error = 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 = 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 = 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 = 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 = 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:                    SSPopN( st, vars );                    msg_Warn( p_intf, "invalid %s variable type %d (%s)",                              psz_object, i_type & VLC_VAR_TYPE, psz_variable );                    b_error = 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 = SSPop( st );            char *psz_variable = SSPop( st );            bool 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:                    SSPushN( st, val.b_bool );                    break;                case VLC_VAR_INTEGER:                case VLC_VAR_HOTKEY:                    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:                    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), "%lld.%06u",                                    value.quot, (unsigned int)value.rem );                    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 );                    SSPush( st, "" );                }            }            else            {                msg_Warn( p_intf, "vlc_var_get called without an object" );                SSPush( st, "" );            }            free( psz_variable );            free( psz_object );            if( b_need_release && p_object != NULL )                vlc_object_release( p_object );        }        else if( !strcmp( s, "vlc_object_exists" ) )

⌨️ 快捷键说明

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