#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#define emberver "EmberMUD v0.9.40"
#define defport 9000
#define logdir "..\\log"
#define areadir "..\\area"
#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;
// Make the area directory the current directory.
if (chdir((char*)areadir)==-1)
{
fprintf(stdout, "Could not change to area directory: %s", (char*)areadir);
exit(1);
}
// 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);
}