-#include <fstream.h>
+#include <fstream>
#include <string.h>
+#include <stdlib.h>
#include <stdio.h>
#include "extern.h"
-void load_config_file(char *config);
+using std::ifstream;
+using std::cerr;
+using std::endl;
+
+int load_config_file(char *config);
void unload_config_file();
-int stricmp(const char *s1, const char *s2);
-int strnicmp(const char *s1, const char *s2, size_t len);
/* Random Configuration Stuff Goes Here until I code it to load from a .conf file :)*/
char *servername; // GameServ's Server
char *c_Forest; // Forest channel
char *c_ForestTopic; // Forest Channel Topic
-
+char *adminpass; // Administrator password
+char *welcomemsg; // Welcome Message
+int welcomedelay; // Welcome Message Delay
+int updateperiod; // Seconds until another player database update
+int forestfights; // Forest fights per day
// Remote server stuff. This is used for the outgoing connection gameserv needs to make
// to a real ircd.
char *remotepass; // Password for the server link
char *playerdata; // File to store player data in
+char *monsterdata; // File to load monster data from
+
+#if defined(P10)
+ char *gsnum = "[]AAA"; // GameServ Numeric
+#endif
void unload_config_file()
{
if (s_GameServ)
- delete s_GameServ;
+ delete [] s_GameServ;
if (gshost)
- delete gshost;
+ delete [] gshost;
if (gsident)
- delete gsident;
+ delete [] gsident;
if (servername)
- delete servername;
+ delete [] servername;
if (c_Forest)
- delete c_Forest;
+ delete [] c_Forest;
if (c_ForestTopic)
- delete c_ForestTopic;
+ delete [] c_ForestTopic;
if (remoteserver)
- delete remoteserver;
+ delete [] remoteserver;
if (remoteport)
- delete remoteport;
+ delete [] remoteport;
if (remotepass)
- delete remotepass;
+ delete [] remotepass;
if (playerdata)
- delete playerdata;
+ delete [] playerdata;
+ if (monsterdata)
+ delete [] monsterdata;
+ if (adminpass)
+ delete [] adminpass;
+ if (welcomemsg)
+ delete [] welcomemsg;
}
-void load_config_file(char *config)
+
+int load_config_file(char *config)
{
char *buf, *directive, *value;
buf = new char[1024];
infile.open(config);
if (infile.fail())
{
+ log("Error opening %s", config);
cerr << "Error opening " << config << endl;
- return;
+ return 0;
}
while (infile.getline(buf, 1024, '\n'))
{
- cout << "Buf: " << buf << endl;
+ #ifdef DEBUGMODE
+ log("Config file entry buf: %s", buf);
+ #endif
- if (buf[0] == '#' || buf[0] == ' ' || buf[0] == '\0')
+ if (buf[0] == '#' || buf[0] == ' ' || buf[0] == '\0' || buf[0] == '\n' || buf[0] == '\r')
continue;
directive = strtok(buf, " ");
+ if (stricmp(directive, "DIE") == 0)
+ {
+ value = strtok(NULL, "");
+ log("You should read the entire %s file!", config);
+ cerr << "You should read the entire " << config << " file!"
+ << endl;
+ exit(0);
+ }
if (stricmp(directive, "S_GAMESERV") == 0)
{
value = strtok(NULL, " ");
playerdata = new char[strlen(value) + 1];
strcpy(playerdata, value);
}
+ else if (stricmp(directive, "MONSTERDATA") == 0)
+ {
+ value = strtok(NULL, "");
+ monsterdata = new char[strlen(value) + 1];
+ strcpy(monsterdata, value);
+ }
+ else if (stricmp(directive, "ADMINPASS") == 0)
+ {
+ value = strtok(NULL, "");
+ adminpass = new char[strlen(value) + 1];
+ strcpy(adminpass, value);
+ }
+ else if (stricmp(directive, "WELCOMEDELAY") == 0)
+ {
+ value = strtok(NULL, " ");
+ welcomedelay = stringtoint(value);
+ }
+ else if (stricmp(directive, "FORESTFIGHTS") == 0)
+ {
+ value = strtok(NULL, " ");
+ forestfights = stringtoint(value);
+ }
+ else if (stricmp(directive, "UPDATEPERIOD") == 0)
+ {
+ value = strtok(NULL, " ");
+ updateperiod = stringtoint(value);
+ }
+ else if (stricmp(directive, "WELCOMEMSG") == 0)
+ {
+ value = strtok(NULL, "");
+ welcomemsg = new char[strlen(value) + 1];
+ strcpy(welcomemsg, value);
+ }
else
{
- cerr << "Unknown Directive. Buffer: " << buf << endl;
+ #ifdef DEBUGMODE
+ log("Unknown Directive. Buffer: %s", buf);
+ cerr << "Unknown " << config << " directive. Buffer: "
+ << buf << endl;
+ #endif
continue;
}
- //infile.ignore(1);
}
-delete buf;
+delete [] buf;
infile.close();
+return 1;
}