#include <stdio.h> #include <stdlib.h> #include <string.h> #include <direct.h> #define emberver "EmberMUD v0.9.44a" #define defport 9000 #define logdir "..\\log" #define defindex 1000 #define maxindex 2000 void main( int argc, char *argv[] ) { FILE *fp; char logfile[1024]; char buf[1024]; int port = defport; int index = defindex - 1; int loop; memset( logfile, '\0', sizeof( logfile ) ); if ( argc > 1 ) { port = atoi( argv[1] ); } // Make sure ebmer.exe exists. fp = fopen( "ember.exe", "r" ); if ( fp == NULL ) { fprintf( stdout, "Could not open ember.exe!" ); exit( 1 ); } fclose( fp ); fp = NULL; // Remove any stale shutdown.txt files that are found. fp = fopen( "shutdown.txt", "r" ); if ( fp != NULL ) { fclose( fp ); fp = NULL; system( "del shutdown.txt" ); } // Keep re-starting the MUD until a shutdown.txt is found. while ( fp == NULL ) { loop = 1; while ( loop ) { index++; if ( index > maxindex ) { fprintf( stdout, "Could not start %s. Max logfile index reached (%d.log)", ( char * ) emberver, index - 1 ); exit( 1 ); } sprintf( logfile, "%s\\%d.log", ( char * ) logdir, index ); fp = fopen( logfile, "r" ); if ( fp == NULL ) { loop = 0; fp = fopen( logfile, "w" ); if ( fp == NULL ) { fprintf( stdout, "Could not write to logfile: %s", logfile ); exit( 1 ); } else { fclose( fp ); fp = NULL; } } else { fclose( fp ); fp = NULL; } } fprintf( stdout, "\nOpening logfile: %s\n\n", logfile ); fprintf( stdout, "%s is rockin' on port %d...\n", ( char * ) emberver, port ); sprintf( buf, "..\\src\\ember %d > %s", port, logfile ); system( buf ); fp = fopen( "shutdown.txt", "r" ); if ( fp == NULL ) fprintf( stdout, "\nREBOOT!\n" ); } fprintf( stdout, "\nSHUTDOWN!\n" ); fclose( fp ); }