--- deliantra/server/common/arch.C 2006/08/29 08:01:35 1.7 +++ deliantra/server/common/arch.C 2006/08/30 06:06:26 1.8 @@ -1,6 +1,6 @@ /* * static char *rcsid_arch_c = - * "$Id: arch.C,v 1.7 2006/08/29 08:01:35 root Exp $"; + * "$Id: arch.C,v 1.8 2006/08/30 06:06:26 root Exp $"; */ /* @@ -509,59 +509,43 @@ * Then initialises treasures by calling load_treasures(). */ -void load_archetypes(void) { - FILE *fp; - char filename[MAX_BUF]; - int comp; +void +load_archetypes (void) +{ + char filename[MAX_BUF]; + int comp; #if TIME_ARCH_LOAD - struct timeval tv1,tv2; + struct timeval tv1, tv2; #endif - sprintf(filename,"%s/%s",settings.datadir,settings.archetypes); - LOG(llevDebug,"Reading archetypes from %s...\n",filename); - if((fp=open_and_uncompress(filename,0,&comp))==NULL) { - LOG(llevError," Can't open archetype file.\n"); - return; - } - clear_archetable(); - LOG(llevDebug," arch-pass 1...\n"); -#if TIME_ARCH_LOAD - GETTIMEOFDAY(&tv1); -#endif - { - object_thawer thawer (fp); - first_arch_pass (thawer); - } -#if TIME_ARCH_LOAD - { int sec, usec; - GETTIMEOFDAY(&tv2); - sec = tv2.tv_sec - tv1.tv_sec; - usec = tv2.tv_usec - tv1.tv_usec; - if (usec<0) { usec +=1000000; sec--;} - LOG(llevDebug,"Load took %d.%06d seconds\n", sec, usec); - } -#endif + sprintf (filename, "%s/%s", settings.datadir, settings.archetypes); + LOG (llevDebug, "Reading archetypes from %s:\n", filename); - LOG(llevDebug," done\n"); - init_archetable(); - warn_archetypes=1; - - /* do a close and reopen instead of a rewind - necessary in case the - * file has been compressed. - */ - close_and_delete(fp, comp); - fp=open_and_uncompress(filename,0,&comp); - - LOG(llevDebug," loading treasure...\n"); - load_treasures(); - LOG(llevDebug," done\n arch-pass 2...\n"); - second_arch_pass(fp); - LOG(llevDebug," done\n"); + { + object_thawer thawer (filename); + + clear_archetable (); + LOG (llevDebug, " arch-pass 1...\n"); + first_arch_pass (thawer); + LOG (llevDebug, " done\n"); + + init_archetable (); + warn_archetypes = 1; + } + + { + object_thawer thawer (filename); + + LOG (llevDebug, " loading treasure...\n"); + load_treasures (); + LOG (llevDebug, " done\n arch-pass 2...\n"); + second_arch_pass (thawer); + LOG (llevDebug, " done\n"); #ifdef DEBUG - check_generators(); + check_generators (); #endif - close_and_delete(fp, comp); - LOG(llevDebug," done\n"); + } + LOG (llevDebug, " done\n"); } /*