Re: ChangeLog Entry: Saving MUD time

From: Zeavon Calatin (zeavon@kilnar.com)
Date: 06/20/01


On Wed, 20 Jun 2001, Peter Ajamian wrote:

> I got to thinking (not a good thing, I know ;) ), why not throw that part
> in a function (say something like save_mud_time) and then call it from
> both init_game() and heartbeat() so that the mud_time file will get
> updated regularily in case of a crash?  Note that separating this into a
> function will also make it easier to update for things like copyover.

I added this to my mud before it got added to the stock Circle code. I
call save_time_to_disk() at the very end of another_hour() since that is
the only place that time gets changed.

Here's the code:
void save_time_to_disk(void)
{
  FILE *f;

  f = fopen("etc/date", "w");
  fwrite(&time_info, sizeof(time_info_data), 1, f);
  fclose(f);
}

At the top of reset_time() in db.c, I have:
  FILE *f;
  long beginning_of_time = 650336715;

  time_info = mud_time_passed(time(0), beginning_of_time);

  if (!(f = fopen("etc/date", "r"))) {
    log("SYSERR: File etc/date not found, mud date reverted to default!");
  }
  else {
    fread(&time_info, sizeof(time_info_data), 1, f);
    fclose(f);
  }


--
Zeavon Calatin, Magemaster of the Realms
Spear of Insanity  --  telnet://spear.kilnar.com:1066
http://spear.kilnar.com/

--
   +---------------------------------------------------------------+
   | 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/05/01 PST