void do_auto_shutdown()
{
FILE *fp;
extern bool merc_down;
DESCRIPTOR_DATA *d,*d_next;
merc_down = TRUE;
fclose(fpReserve);
if((fp = fopen(LAST_COMMAND,"a")) == NULL)
bug("Error in do_auto_save opening last_command.txt",0);
fprintf(fp,"Last Command: %s\n",
last_command);
fclose( fp );
fpReserve = fopen( NULL_FILE, "r" );
for ( d = descriptor_list; d != NULL; d = d_next)
{
if(d->character)
do_save (d->character, "");
d_next = d->next;
attempt_copyover();
}
merc_down = TRUE;
return;
}
void attempt_copyover(void)
{
DESCRIPTOR_DATA *d;
DESCRIPTOR_DATA *d_next;
CHAR_DATA *ch;
FILE *fp;
char buf [100], buf2[100];
int execl( const char *path, const char *arg, ...);
extern bool merc_down;
extern int port,control;
fp = fopen (COPYOVER_FILE, "w");
if (!fp)
return;
log_string("I say I say No core for ya boy!");
for (d = descriptor_list; d; d = d_next)
{
d_next = d->next;
ch = d->original ? d->original : d->character;
save_char_obj(ch);
if (!ch)
{
write_to_descriptor(d->descriptor,"We are crashing. Please
reconnect.\n\r", 0);
close_socket(d);
continue;
}
fprintf(fp, "%d %s %s\n", d->descriptor, d->character->name,
d->host);
write_to_descriptor(d->descriptor, "Damit Jim! Im a doctor not a
programmer!\n\r", 0);
}
fprintf (fp, "-1\n");
fflush(fp);
fclose (fp);
sprintf(buf, "%d", port);
sprintf(buf2, "%d", control);
execl(EXE_FILE, "rom", buf, "copyover", buf2, (char *) NULL);
for (d = descriptor_list; d; d = d->next)
write_to_descriptor(d->descriptor, "COPYOVER FAILED! Attempting
NORMAL boot!\n\r", 0);
if (!execl)
merc_down = TRUE;
return;
}