]> git.sesse.net Git - vlc/commitdiff
Extensions: export author, version, url and description
authorJean-Philippe André <jpeg@videolan.org>
Thu, 28 Jan 2010 17:21:34 +0000 (18:21 +0100)
committerJean-Philippe André <jpeg@videolan.org>
Thu, 28 Jan 2010 23:58:54 +0000 (00:58 +0100)
include/vlc_extensions.h
modules/misc/lua/extension.c

index 7f294fc7b2be6b2bdd800bb928ba06eb50044a65..f64c3af72a7300c95c7f10c8b9337c9bb4d99ef9 100644 (file)
@@ -32,10 +32,17 @@ typedef struct extensions_manager_sys_t extensions_manager_sys_t;
 typedef struct extensions_manager_t extensions_manager_t;
 typedef struct extension_sys_t extension_sys_t;
 
-/** Extension descriptor */
+/** Extension descriptor: name, title, author, ... */
 typedef struct extension_t {
-    char *psz_title;          /**< Display title (ro) */
+    /* Below, (ro) means read-only for the GUI */
     char *psz_name;           /**< Real name of the extension (ro) */
+
+    char *psz_title;          /**< Display title (ro) */
+    char *psz_author;         /**< Author of the extension (ro) */
+    char *psz_version;        /**< Version (ro) */
+    char *psz_url;            /**< A URL to the official page (ro) */
+    char *psz_description;    /**< Full description (ro) */
+
     extension_sys_t *p_sys;   /**< Reserved for the manager module */
 } extension_t;
 
index 2e69f4c46dffd869aab63c408f8212f1bf4d2d06..6c53651d6d171f3e166a2e6265b65d4302bbd615 100644 (file)
@@ -263,6 +263,7 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_script,
     {
         if( lua_istable( L, -1 ) )
         {
+            /* Get caps */
             lua_getfield( L, -1, "capabilities" );
             if( lua_istable( L, -1 ) )
             {
@@ -301,8 +302,9 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_script,
                               "did not return a table of capabilities.",
                               psz_script );
             }
-
             lua_pop( L, 1 );
+
+            /* Get title */
             lua_getfield( L, -1, "title" );
             if( lua_isstring( L, -1 ) )
             {
@@ -315,6 +317,55 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_script,
                                 psz_script );
                 p_ext->psz_title = strdup( psz_script );
             }
+            lua_pop( L, 1 );
+
+            /* Get author */
+            lua_getfield( L, -1, "author" );
+            if( lua_isstring( L, -1 ) )
+            {
+                p_ext->psz_author = strdup( luaL_checkstring( L, -1 ) );
+            }
+            else
+            {
+                p_ext->psz_author = NULL;
+            }
+            lua_pop( L, 1 );
+
+            /* Get description */
+            lua_getfield( L, -1, "description" );
+            if( lua_isstring( L, -1 ) )
+            {
+                p_ext->psz_description = strdup( luaL_checkstring( L, -1 ) );
+            }
+            else
+            {
+                p_ext->psz_description = NULL;
+            }
+            lua_pop( L, 1 );
+
+            /* Get URL */
+            lua_getfield( L, -1, "url" );
+            if( lua_isstring( L, -1 ) )
+            {
+                p_ext->psz_url = strdup( luaL_checkstring( L, -1 ) );
+            }
+            else
+            {
+                p_ext->psz_url = NULL;
+            }
+            lua_pop( L, 1 );
+
+            /* Get version */
+            lua_getfield( L, -1, "version" );
+            if( lua_isstring( L, -1 ) )
+            {
+                p_ext->psz_version = strdup( luaL_checkstring( L, -1 ) );
+            }
+            else
+            {
+                p_ext->psz_version = NULL;
+            }
+            lua_pop( L, 1 );
         }
         else
         {