1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-30 23:46:38 +02:00
Files
unrealircd/src/Config.c
T
2000-05-28 08:55:44 +00:00

379 lines
10 KiB
C

/*
* $Id$
*/
#include <stdio.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#ifdef _WIN32
#include <sys\stat.h>
#endif
#include <time.h>
int _FD_SETSIZE = 1024;
char _NS_ADDRESS[256], _KLINE_ADDRESS[256];
char Makefile[] =
"CC=cl\n"
"FD_SETSIZE=/D FD_SETSIZE=$FD_SETSIZE\n"
"CFLAGS=/MT /O2 /I ./INCLUDE /Fosrc/ /nologo $(FD_SETSIZE) $(NS_ADDRESS) /D NOSPOOF=1 /c\n"
"INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \\\n"
" ./include/common.h ./include/settings.h ./include/h.h ./include/numeric.h \\\n"
" ./include/msg.h ./include/setup.h\n"
"LINK=link.exe\n"
"LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib wsock32.lib \\\n"
" oldnames.lib libcmt.lib /nodefaultlib /nologo /out:SRC/WIRCD.EXE\n"
"OBJ_FILES=SRC/CHANNEL.OBJ SRC/USERLOAD.OBJ SRC/SEND.OBJ SRC/BSD.OBJ \\\n"
" SRC/CIO_MAIN.OBJ SRC/S_CONF.OBJ SRC/DBUF.OBJ SRC/RES.OBJ \\\n"
" SRC/HASH.OBJ SRC/CIO_INIT.OBJ SRC/PARSE.OBJ SRC/IRCD.OBJ \\\n"
" SRC/S_NUMERIC.OBJ SRC/WHOWAS.OBJ SRC/RES_COMP.OBJ SRC/S_AUTH.OBJ \\\n"
" SRC/HELP.OBJ SRC/S_MISC.OBJ SRC/MATCH.OBJ SRC/CRULE.OBJ \\\n"
" SRC/S_DEBUG.OBJ SRC/RES_INIT.OBJ SRC/SUPPORT.OBJ SRC/LIST.OBJ \\\n"
" SRC/S_ERR.OBJ SRC/PACKET.OBJ SRC/CLASS.OBJ SRC/S_BSD.OBJ \\\n"
" SRC/MD5.OBJ SRC/S_SERV.OBJ SRC/S_USER.OBJ SRC/WIN32.OBJ \\\n"
" SRC/DYNCONF.OBJ\\\n"
" SRC/VERSION.OBJ SRC/WIN32.RES SRC/CLOAK.OBJ SRC/S_UNREAL.OBJ\n"
"RC=rc.exe\n"
"\n"
"ALL: SRC/WIRCD.EXE SRC/CHKCONF.EXE\n"
" @echo Complete.\n"
"\n"
"CLEAN:\n"
" -@erase src\\*.exe 2>NUL\n"
" -@erase src\\*.obj 2>NUL\n"
" -@erase src\\win32.res 2>NUL\n"
" -@erase src\\version.c 2>NUL\n"
"\n"
"include/setup.h:\n"
" @echo Hmm...doesn't look like you've run Config...\n"
" @echo Doing so now.\n"
" @config.exe\n"
"\n"
"src/version.c: dummy\n"
" @config.exe -v\n"
"\n"
"src/version.obj: src/version.c\n"
" $(CC) $(CFLAGS) src/version.c\n"
"\n"
"SRC/WIRCD.EXE: $(OBJ_FILES) src/version.obj\n"
" $(LINK) $(LFLAGS) $(OBJ_FILES)\n"
"\n"
"SRC/CHKCONF.EXE: ./include/struct.h ./include/config.h ./include/sys.h \\\n"
" ./include/common.h ./src/crule.c ./src/match.c ./src/chkconf.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkcrule.obj /c src/crule.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkmatch.obj /c src/match.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkconf.obj /c src/chkconf.c\n"
" $(LINK) /nologo /out:src/chkconf.exe src/chkconf.obj src/chkmatch.obj \\\n"
" src/chkcrule.obj\n"
"\n"
"src/parse.obj: src/parse.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/parse.c\n"
"\n"
"src/bsd.obj: src/bsd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/bsd.c\n"
"\n"
"src/dbuf.obj: src/dbuf.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/dbuf.c\n"
"\n"
"src/packet.obj: src/packet.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/packet.c\n"
"\n"
"src/send.obj: src/send.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/send.c\n"
"\n"
"src/match.obj: src/match.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/match.c\n"
"\n"
"src/support.obj: src/support.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/support.c\n"
"\n"
"src/channel.obj: src/channel.c $(INCLUDES) ./include/channel.h\n"
" $(CC) $(CFLAGS) src/channel.c\n"
"\n"
"src/class.obj: src/class.c $(INCLUDES) ./include/class.h\n"
" $(CC) $(CFLAGS) src/class.c\n"
"\n"
"src/ircd.obj: src/ircd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/ircd.c\n"
"\n"
"src/list.obj: src/list.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/list.c\n"
"\n"
"src/res.obj: src/res.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res.c\n"
"\n"
"src/s_bsd.obj: src/s_bsd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_bsd.c\n"
"\n"
"src/s_auth.obj: src/s_auth.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_auth.c\n"
"\n"
"src/s_conf.obj: src/s_conf.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_conf.c\n"
"\n"
"src/s_debug.obj: src/s_debug.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_debug.c\n"
"\n"
"src/s_err.obj: src/s_err.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_err.c\n"
"\n"
"src/s_misc.obj: src/s_misc.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/s_misc.c\n"
"\n"
"src/s_user.obj: src/s_user.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_user.c\n"
"\n"
"src/dynconf.obj: src/dynconf.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h ./include/dynconf.h\n"
" $(CC) $(CFLAGS) src/dynconf.c\n"
"\n"
"src/s_unreal.obj: src/s_unreal.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_unreal.c\n"
"\n"
"src/cloak.obj: src/cloak.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_unreal.c\n"
"\n"
"src/s_serv.obj: src/s_serv.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_serv.c\n"
"\n"
"src/s_numeric.obj: src/s_numeric.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/s_numeric.c\n"
"\n"
"src/whowas.obj: src/whowas.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/whowas.c\n"
"\n"
"src/hash.obj: src/hash.c $(INCLUDES) ./include/hash.h\n"
" $(CC) $(CFLAGS) src/hash.c\n"
"\n"
"src/crule.obj: src/crule.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/crule.c\n"
"\n"
"src/win32.obj: src/win32.c $(INCLUDES) ./include/resource.h\n"
" $(CC) $(CFLAGS) src/win32.c\n"
"\n"
"src/cio_main.obj: src/cio_main.c $(INCLUDES) ./include/cio.h ./include/ciofunc.h\n"
" $(CC) $(CFLAGS) src/cio_main.c\n"
"\n"
"src/cio_init.obj: src/cio_init.c $(INCLUDES) ./include/cio.h ./include/ciofunc.h\n"
" $(CC) $(CFLAGS) src/cio_init.c\n"
"\n"
"src/res_comp.obj: src/res_comp.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res_comp.c\n"
"\n"
"src/res_init.obj: src/res_init.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res_init.c\n"
"\n"
"src/help.obj: src/help.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/help.c\n"
"\n"
"src/md5.obj: src/md5.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/md5.c\n"
"\n"
"src/win32.res: src/win32.rc\n"
" $(RC) /l 0x409 /fosrc/win32.res /i ./include /i ./src \\\n"
" /d NDEBUG src/win32.rc\n" "\n" "dummy:\n" "\n";
char SetupH[] =
"/* This is only a wrapper.. --Stskeeps */\n"
"#include \"win32/setup.h\"\n";
int main(int argc, char *argv[])
{
if (argc > 1)
{
if (!strcmp(argv[1], "-v"))
return do_version();
if (!strcmp(argv[1], "-n"))
return do_config(1);
}
printf
("To do win32 compiling copy include/win32/setup.h to include/\n");
printf("Copy include/win32/settings.h to include/ and modify it\n");
printf("and copy makefile.win32 to Makefile\n");
// return do_config(0);
}
int do_config(int autoconf)
{
int fd;
char str[128];
if ((fd =
open("include\\setup.h", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
printf("Error opening include\\setup.h\n\r");
else
{
write(fd, SetupH, strlen(SetupH));
close(fd);
}
while (1)
{
/*
* FD_SETSIZE
*/
printf("\n");
printf
("How many file descriptors (or sockets) can the irc server use?");
printf("\n");
printf("[%d] -> ", _FD_SETSIZE);
gets(str);
if (*str != '\n' && *str != '\r')
sscanf(str, "%d", &_FD_SETSIZE);
if (_FD_SETSIZE >= 100)
{
printf("\n");
printf("FD_SETSIZE will be overridden using -D "
"FD_SETSIZE=%d when compiling ircd.", _FD_SETSIZE);
printf("\n");
break;
}
printf("\n");
printf
("You need to enter a number here, greater or equal to 100.\n");
}
while (1)
{
}
/*
* Now write the makefile out.
*/
write_makefile();
return 0;
}
int write_makefile(void)
{
int fd, makfd, len;
char *buffer, *s;
buffer = (char *)malloc(strlen(Makefile) + 4096);
memcpy(buffer, Makefile, strlen(Makefile) + 1);
s = (char *)strstr(buffer, "$FD_SETSIZE");
if (s)
{
itoa(_FD_SETSIZE, s, 10);
memmove(s + strlen(s), s + 11, strlen(s + 11) + 1);
}
if ((makfd = open("Makefile", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
{
printf("Error creating Makefile\n\r");
return 1;
}
write(makfd, buffer, strlen(buffer));
close(makfd);
free(buffer);
return 0;
}
int do_version(void)
{
int fd, verfd, generation = 0, len, doingvernow = 0;
char buffer[16384], *s;
if ((verfd = open("src\\version.c", O_RDONLY | O_TEXT)) != -1)
{
while (!eof(verfd))
{
len = read(verfd, buffer, sizeof(buffer) - 1);
if (len == -1)
break;
buffer[len] = 0;
s = (char *)strstr(buffer, "char *generation = \"");
if (s)
{
s += 20;
generation = atoi(s);
break;
}
}
close(verfd);
}
if ((fd = open("src\\version.c.SH", O_RDONLY | O_TEXT)) == -1)
{
printf("Error opening src\\version.c.SH\n\r");
return 1;
}
if ((verfd =
open("src\\version.c", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
{
printf("Error opening src\\version.c\n\r");
return 1;
}
generation++;
printf("Extracting IRC/ircd/version.c...\n\r");
while (!eof(fd))
{
len = read(fd, buffer, sizeof(buffer) - 1);
if (len == -1)
break;
buffer[len] = 0;
if (!doingvernow)
{
s = (char *)strstr(buffer, "/*");
if (!s)
continue;
memmove(buffer, s, strlen(s) + 1);
doingvernow = 1;
}
s = (char *)strstr(buffer, "$generation");
if (s)
{
itoa(generation, s, 10);
memmove(s + strlen(s), s + 11, strlen(s + 11) + 1);
}
s = (char *)strstr(buffer, "$creation");
if (s)
{
time_t t = time(0);
char *ct = ctime(&t);
memmove(s + strlen(ct) - 1, s + 9, strlen(s + 9) + 1);
memmove(s, ct, strlen(ct) - 1);
}
s = (char *)strstr(buffer, "$package");
if (s)
{
memmove(s, "IRC", 3);
memmove(s + 3, s + 8, strlen(s + 8) + 1);
}
s = (char *)strstr(buffer, "!SUB!THIS!");
if (s)
*s = 0;
write(verfd, buffer, strlen(buffer));
}
close(fd);
close(verfd);
return 0;
}