+error:
+ return -1;
+}
+
+static int CacheSaveSubmodule( FILE *file, const module_t *p_module )
+{
+ if( !p_module )
+ return 0;
+ if( CacheSaveSubmodule( file, p_module->next ) )
+ goto error;
+
+ SAVE_STRING( p_module->psz_object_name );
+ SAVE_STRING( p_module->psz_shortname );
+ SAVE_STRING( p_module->psz_longname );
+ SAVE_STRING( p_module->psz_help );
+ SAVE_IMMEDIATE( p_module->i_shortcuts );
+ for( unsigned j = 0; j < p_module->i_shortcuts; j++ )
+ SAVE_STRING( p_module->pp_shortcuts[j] );
+
+ SAVE_STRING( p_module->psz_capability );
+ SAVE_IMMEDIATE( p_module->i_score );
+ SAVE_IMMEDIATE( p_module->b_unloadable );
+ SAVE_STRING( p_module->domain );
+ return 0;