X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=addon.c;h=7e03050c9435f8d6e20ffde6314dc77f58e5c147;hb=d680579754c876a74bf77ac74a224900ce0b3ff9;hp=8067eca337713cc9376ad02e75c4ec5dc21af45e;hpb=02e009ae6e20938675277e9ce2f467e17b170cc7;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/addon.c b/addon.c index 8067eca..7e03050 100644 --- a/addon.c +++ b/addon.c @@ -69,6 +69,17 @@ static u32 addon_match( addon_alias *alias ){ return 0xffffffff; } +static void addon_alias_uid( addon_alias *alias, char buf[76] ){ + if( alias->workshop_id ){ + snprintf( buf, 128, "sr%03d-steam-"PRINTF_U64, + alias->type, alias->workshop_id ); + } + else { + snprintf( buf, 128, "sr%03d-local-%s", + alias->type, alias->foldername ); + } +} + static void addon_system_init( void ){ u32 reg_size = sizeof(addon_reg)*ADDON_MOUNTED_MAX; addon_system.registry = vg_linear_alloc( vg_mem.rtmemory, reg_size ); @@ -112,7 +123,7 @@ static void addon_system_init( void ){ /* * Reciever for scan completion. copies the registry counts back into main fred */ -VG_STATIC void async_addon_reg_update( void *data, u32 size ) +static void async_addon_reg_update( void *data, u32 size ) { vg_info( "Registry update notify\n" ); @@ -126,7 +137,7 @@ VG_STATIC void async_addon_reg_update( void *data, u32 size ) } } -VG_STATIC void addon_set_foldername( addon_reg *reg, const char name[64] ){ +static void addon_set_foldername( addon_reg *reg, const char name[64] ){ vg_strncpy( name, reg->alias.foldername, 64, k_strncpy_always_add_null ); reg->foldername_hash = vg_strdjb2( reg->alias.foldername ); } @@ -134,7 +145,7 @@ VG_STATIC void addon_set_foldername( addon_reg *reg, const char name[64] ){ /* * Create a new registry */ -VG_STATIC addon_reg *addon_alloc_reg( PublishedFileId_t workshop_id, +static addon_reg *addon_alloc_reg( PublishedFileId_t workshop_id, enum addon_type type ){ if( addon_system.registry_count == ADDON_MOUNTED_MAX ){ vg_error( "You have too many addons installed!\n" ); @@ -160,7 +171,7 @@ VG_STATIC addon_reg *addon_alloc_reg( PublishedFileId_t workshop_id, /* * If the addon.inf exists int the folder, load into the reg */ -VG_STATIC int addon_try_load_metadata( addon_reg *reg, vg_str folder_path ){ +static int addon_try_load_metadata( addon_reg *reg, vg_str folder_path ){ vg_str meta_path = folder_path; vg_strcat( &meta_path, "/addon.inf" ); if( !vg_strgood( &meta_path ) ){ @@ -187,7 +198,7 @@ VG_STATIC int addon_try_load_metadata( addon_reg *reg, vg_str folder_path ){ return 1; } -VG_STATIC void addon_print_info( addon_reg *reg ){ +static void addon_print_info( addon_reg *reg ){ vg_info( "addon_reg #%u{\n", addon_system.registry_count ); vg_info( " type: %d\n", reg->alias.type ); vg_info( " workshop_id: " PRINTF_U64 "\n", reg->alias.workshop_id ); @@ -197,15 +208,17 @@ VG_STATIC void addon_print_info( addon_reg *reg ){ vg_info( "}\n" ); } -VG_STATIC void addon_mount_finish( addon_reg *reg ){ +static void addon_mount_finish( addon_reg *reg ){ +#if 0 addon_print_info( reg ); +#endif addon_system.registry_count ++; } /* * Mount a fully packaged addon, one that certainly has a addon.inf */ -VG_STATIC addon_reg *addon_mount_workshop_folder( PublishedFileId_t workshop_id, +static addon_reg *addon_mount_workshop_folder( PublishedFileId_t workshop_id, vg_str folder_path ) { addon_reg *reg = addon_alloc_reg( workshop_id, k_addon_type_none ); @@ -239,7 +252,7 @@ VG_STATIC addon_reg *addon_mount_workshop_folder( PublishedFileId_t workshop_id, /* * Mount a local folder. may or may not have addon.inf */ -VG_STATIC addon_reg *addon_mount_local_addon( const char *folder, +static addon_reg *addon_mount_local_addon( const char *folder, enum addon_type type, const char *content_ext ) { @@ -318,7 +331,7 @@ VG_STATIC addon_reg *addon_mount_local_addon( const char *folder, /* * Check all subscribed items */ -VG_STATIC void addon_mount_workshop_items(void){ +static void addon_mount_workshop_items(void){ if( !steam_ready ) return; /* * Steam workshop scan @@ -370,7 +383,7 @@ next_file_workshop:; * Scan a local content folder for addons. It must find at least one file with * the specified content_ext to be considered. */ -VG_STATIC void addon_mount_content_folder( enum addon_type type, +static void addon_mount_content_folder( enum addon_type type, const char *base_folder, const char *content_ext ) { @@ -385,7 +398,6 @@ VG_STATIC void addon_mount_content_folder( enum addon_type type, vg_dir dir; if( !vg_dir_open(&dir,path.buffer) ){ vg_error( "vg_dir_open('%s') failed\n", path.buffer ); - vg_async_call( workshop_async_any_complete, NULL, 0 ); return; }