]> git.sesse.net Git - vlc/commitdiff
* src/misc/modules.c: added sub-version number to cache data (used to detect cache...
authorGildas Bazin <gbazin@videolan.org>
Fri, 15 Apr 2005 22:35:21 +0000 (22:35 +0000)
committerGildas Bazin <gbazin@videolan.org>
Fri, 15 Apr 2005 22:35:21 +0000 (22:35 +0000)
src/misc/modules.c

index 54574a43c1aecfcc68d511c4a8ef4d9919004218..51bc3d14e55f00e9f903bd95e128fccb641dda5f 100644 (file)
@@ -156,6 +156,11 @@ static char * GetWindowsError  ( void );
 #endif
 #endif
 
+
+/* Sub-version number
+ * (only used to avoid breakage in dev version when cache structure changes) */
+#define CACHE_SUBVERSION_NUM 1
+
 /*****************************************************************************
  * module_InitBank: create the module bank.
  *****************************************************************************
@@ -1668,6 +1673,16 @@ static void CacheLoad( vlc_object_t *p_this )
         return;
     }
 
+    /* Check Sub-version number */
+    i_read = fread( &i_marker, sizeof(char), sizeof(i_marker), file );
+    if( i_read != sizeof(i_marker) || i_marker != CACHE_SUBVERSION_NUM )
+    {
+        msg_Warn( p_this, "This doesn't look like a valid plugins cache "
+                  "(corrupted header)" );
+        fclose( file );
+        return;
+    }
+
     /* Check the language hasn't changed */
     sprintf( p_lang, "%5.5s", _("C") ); i_size = 5;
     i_read = fread( p_cachelang, sizeof(char), i_size, file );
@@ -1965,6 +1980,11 @@ static void CacheSave( vlc_object_t *p_this )
     /* Contains version number */
     fprintf( file, "%s", PLUGINSCACHE_DIR COPYRIGHT_MESSAGE );
 
+    /* Sub-version number (to avoid breakage in the dev version when cache
+     * structure changes) */
+    i_file_size = CACHE_SUBVERSION_NUM;
+    fwrite( &i_file_size, sizeof(char), sizeof(i_file_size), file );
+
     /* Language */
     fprintf( file, "%5.5s", _("C") );