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;
}



Reply via email to