+VG_STATIC u32 mdl_query_array_size( mdl_array *arr )
+{
+ if( arr->item_count ){
+ u32 size = arr->item_size*arr->item_count;
+ return vg_align8(size);
+ }
+ else
+ return 0;
+}
+
+VG_STATIC const char *mdl_pstr( mdl_context *mdl, u32 pstr );
+VG_STATIC
+void mdl_fread_pack_file( mdl_context *mdl, mdl_file *info, void *dst )
+{
+ if( !info->pack_size ){
+ vg_warn( "path: %s\n", mdl_pstr( mdl, info->pstr_path ) );
+ vg_fatal_exit_loop( "Packed file is only a header; it is not packed" );
+ }
+
+ fseek( mdl->file, mdl->pack_base_offset+info->pack_offset, SEEK_SET );
+ u64 l = fread( dst, info->pack_size, 1, mdl->file );
+
+ if( l != 1 )
+ mdl_load_fatal_corrupt( mdl );
+}
+