Re: [Circle][Code] ACMD(do_saveall)

From: Mike Breuer (mbreuer@new.rr.com)
Date: 09/27/01


----- Original Message -----
From: "Daniel A. Koepke" <dkoepke@CIRCLEMUD.ORG>

> I'm guessing (I don't really know) that your problem is that the
> xxx_save_to_disk() functions expect a zone real number, rather than the
> virtual number you've passed....

That is correct, although I noticed some of the declarations are like this
one:
void redit_save_to_disk(zone_vnum zone_num);

Obviously if pass an rnum instead of a vnum there is no compiler error, but
this is misleading to say the least, since an rnum is definitely required.

>   ACMD(do_saveall)
-- snip --
>     /* No arguments: write all zones. */
>     if (!*arg) {
>       for (rzone = 0; rzone <= top_of_zone_table; rzone++) {
>         save_objects(rzone);
>         save_mobiles(rzone);
>         save_zone(rzone);
>         save_rooms(rzone);
>         save_shops(rzone);
>       }
>
>       sprintf(buf, "Saved %d zones.\r\n", (int) top_of_zone_table+1);
>       send_to_char(buf, ch);
>       return;
>     }

This chunk of code could call the save_all() function in genolc.c, which
walks the save list and saves everything in it.  It would be a bit more
efficient, and it wouldn't mess up the modification times of the files that
are not in need of saving.  If you want the message at the end, you may want
to modify save_all to return the actual number of zones saved.

Mike

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/06/01 PST