fixed WIN32 compatibility
authorpk910 <philipp@zoelle1.de>
Wed, 15 Feb 2012 19:48:35 +0000 (20:48 +0100)
committerpk910 <philipp@zoelle1.de>
Wed, 15 Feb 2012 22:39:44 +0000 (23:39 +0100)
Makefile.am
configure.ac
src/ConfigParser.c
src/DBHelper.c
src/QServer.c
src/main.c
src/modules.c
src/modules.h
src/overall.h
src/signal.c

index 97f61f7ae7353c493f210727e3e3087b4d541614..fc146c77057a45c0f29727ccd06846c8b45c6423 100644 (file)
@@ -11,11 +11,13 @@ noinst_LTLIBRARIES = libDummyServ.la libfuncmds.la libglobalcmd.la libNeonHelp.l
 
 libDummyServ_la_SOURCES = src/modules/DummyServ.mod/bot_DummyServ.c \
       src/modules/DummyServ.mod/module.c
-libDummyServ_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libDummyServ_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libDummyServ_la_LIBADD = $(MYSQL_LIBS)
 
 libfuncmds_la_SOURCES = src/modules/funcmd.mod/cmd_funcmds.c \
       src/modules/funcmd.mod/module.c
-libfuncmds_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libfuncmds_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libfuncmds_la_LIBADD = $(MYSQL_LIBS)
 
 libglobalcmd_la_SOURCES = src/modules/global.mod/cmd_global.c \
       src/modules/global.mod/cmd_global_bind.c \
@@ -47,7 +49,8 @@ libglobalcmd_la_SOURCES = src/modules/global.mod/cmd_global.c \
       src/modules/global.mod/cmd_global_meminfo.c \
       src/modules/global.mod/cmd_global_extscript.c \
       src/modules/global.mod/module.c
-libglobalcmd_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libglobalcmd_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libglobalcmd_la_LIBADD = $(MYSQL_LIBS)
 
 libNeonHelp_la_SOURCES = src/modules/NeonHelp.mod/bot_NeonHelp.c \
       src/modules/NeonHelp.mod/cmd_neonhelp.c \
@@ -56,7 +59,8 @@ libNeonHelp_la_SOURCES = src/modules/NeonHelp.mod/bot_NeonHelp.c \
       src/modules/NeonHelp.mod/cmd_neonhelp_requests.c \
       src/modules/NeonHelp.mod/cmd_neonhelp_stats.c \
       src/modules/NeonHelp.mod/module.c
-libNeonHelp_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libNeonHelp_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libNeonHelp_la_LIBADD = $(MYSQL_LIBS)
 
 libNeonServ_la_SOURCES = src/modules/NeonServ.mod/bot_NeonServ.c \
       src/modules/NeonServ.mod/cmd_neonserv.c \
@@ -128,13 +132,15 @@ libNeonServ_la_SOURCES = src/modules/NeonServ.mod/bot_NeonServ.c \
       src/modules/NeonServ.mod/cmd_neonserv_halfopall.c \
       src/modules/NeonServ.mod/cmd_neonserv_dehalfopall.c \
       src/modules/NeonServ.mod/module.c
-libNeonServ_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libNeonServ_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libNeonServ_la_LIBADD = $(MYSQL_LIBS)
 
 libNeonSpam_la_SOURCES = src/modules/NeonSpam.mod/bot_NeonSpam.c \
       src/modules/NeonSpam.mod/cmd_neonspam.c \
       src/modules/NeonSpam.mod/cmd_neonspam_set.c \
       src/modules/NeonSpam.mod/module.c
-libNeonSpam_la_LDFLAGS = -module -rpath /nowhere -avoid-version
+libNeonSpam_la_LDFLAGS = -module -rpath /nowhere -avoid-version -no-undefined
+libNeonSpam_la_LIBADD = $(MYSQL_LIBS)
 
 neonserv_SOURCES = src/version.c \
       src/EventLogger.c \
@@ -166,7 +172,7 @@ neonserv_SOURCES = src/version.c \
       src/module_commands.c \
       src/memoryDebug.c
 
-neonserv_LDADD = $(MYSQL_LIBS) $(WINSOCK_LIBS) -ldl
+neonserv_LDADD = $(MYSQL_LIBS) $(SYSTEM_LIBS)
 
 install-exec-local:
        $(INSTALL) -d -m 755 $(prefix)
index e75bc48a9bcb19ff480853ff11a681f5e7959252..ad949f64cf9beac6629c7abd5a17d1f27d63c88f 100644 (file)
@@ -30,9 +30,9 @@ AC_SUBST([MYSQL_LIBS])
 
 AC_ARG_WITH([winsock],
   [AS_HELP_STRING([--with-winsock], [use winsock (WIN32 systems)])],
-  [WINSOCK_LIBS='-lws2_32'],
-  [WINSOCK_LIBS=''])
-AC_SUBST([WINSOCK_LIBS])
+  [SYSTEM_LIBS='-lws2_32'],
+  [SYSTEM_LIBS='-ldl'])
+AC_SUBST([SYSTEM_LIBS])
 
 do_have_ssl="no";
 AC_CHECK_LIB(ssl, SSL_read, [
@@ -88,7 +88,5 @@ AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stdlib.h string.h sys/socket.
 AC_FUNC_MALLOC
 AC_CHECK_FUNCS([gethostbyname memset select socket strchr strdup strstr])
 
-MY_SUBDIRS="src"
-AC_SUBST(MY_SUBDIRS)
-AC_CONFIG_FILES(Makefile src/Makefile src/modules/Makefile)
+AC_CONFIG_FILES(Makefile)
 AC_OUTPUT
\ No newline at end of file
index bbf479131800b177e0331cc9828f4c4791057d89..41fdc9c6a65fcdecec84ee587504c33489495175 100644 (file)
@@ -156,9 +156,15 @@ static char *parse_config_recursive(struct ConfigEntry *centry, char *buffer, in
         }
         if(flags & PARSER_FLAG_COMMAND) {
             int found_command = 0;
+            char *tmp_buffer;
             switch(*buffer) {
                 case '/':
-                    buffer = strstr(buffer, "\n");
+                    tmp_buffer = buffer;
+                    buffer = strchr(buffer, '\r');
+                    if(!buffer)
+                        buffer = strchr(tmp_buffer, '\n');
+                    if(!buffer)
+                        buffer = tmp_buffer + strlen(tmp_buffer)-1;
                     found_command = 1;
                     break;
                 case '*':
index 20037156cab4819c9c22bd14572393f29170f8e9..56bd924e41f2bb2c2e22add62265ad505ef0f2c4 100644 (file)
@@ -314,7 +314,7 @@ void deleteUser(int userid) {
             //unregister channel
             printf_mysql_query("SELECT `botid`, `channel_name` FROM `bot_channels` LEFT JOIN `channels` ON `chanid` = `channel_id` WHERE `chanid` = '%s' AND `suspended` = '0'", row[1]);
             res2 = mysql_use();
-            while((row2 = mysql_fetch_row(res))) {
+            while((row2 = mysql_fetch_row(res2))) {
                 struct ClientSocket *bot;
                 int clientid = atoi(row2[0]);
                 for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
index 795650b4264133e5ac47aa68e90d4170f01a7106..1f0d435e937ab569a1bec34b310cc48578c0836c 100644 (file)
@@ -205,7 +205,11 @@ void qserver_loop() {
     if(FD_ISSET(server_sockfd, &fds)) {
         //new connection
         struct sockaddr_in cli_addr;
+        #ifdef WIN32
+        int clilen;
+        #else
         socklen_t clilen;
+        #endif
         client = malloc(sizeof(*client));
         clilen = sizeof(cli_addr);
         client->sock = accept(server_sockfd, (struct sockaddr *) &cli_addr, &clilen);
index 8262b4b7179c62f9a9e2987fbd3325a191e03c19..fbf9ed5806f4b93d9cb0c292c1a07feb4ff32794 100644 (file)
@@ -192,10 +192,15 @@ int main(int argc, char *argv[]) {
             break;
         }
     }
+    #ifndef WIN32
     if(geteuid() == 0 || getuid() == 0) {
         fprintf(stderr, "NeonServ may not be run with super user privileges.\n");
         exit(0);
     }
+    #endif
+    #ifdef ENABLE_MEMORY_DEBUG
+    initMemoryDebug();
+    #endif
     if(!loadConfig(CONF_FILE)) {
         fprintf(stderr, "Unable to load " CONF_FILE "\n");
         exit(0);
@@ -244,10 +249,6 @@ main:
     signal(SIGSEGV, sighandler);
     signal(SIGTERM, sighandler);
     
-    #ifdef ENABLE_MEMORY_DEBUG
-    initMemoryDebug();
-    #endif
-    
     start_time = time(0);
     
     #ifdef WIN32
index d29e7a8018515653d5e7ed38b19919be46ee6017..0d65cb8e6eb781474c0cafbe719ad1099b1b3ac9 100644 (file)
@@ -15,7 +15,9 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
  */
 #include "modules.h"
+#ifndef WIN32
 #include <dlfcn.h>
+#endif
 
 /* 000-011 */ #include "main.h"
 /* 012     */ #include "BanNode.h"
@@ -263,7 +265,7 @@ void loadModules() {
         if(get_int_field(tmp)) {
             modinfo = loadModule(modulelist[i]);
             sprintf(tmp, "modules.%s.protected", modulelist[i]);
-            if(!get_int_field(tmp))
+            if(get_int_field(tmp))
                 modinfo->state |= MODINFO_STATE_PROTECTED;
         }
         i++;
@@ -333,6 +335,7 @@ struct ModuleInfo *loadModule(char *name) {
     modinfo->startfunc = startfunc;
     modinfo->loopfunc = loopfunc;
     modinfo->stopfunc = stopfunc;
+    modinfo->state = 0;
     modinfo->next = modules;
     modules = modinfo;
     return modinfo;
index 9df733f97b609b483d22179e0b3fa59dcdb08059..13856ec8cf62b1fdda08bd75f0e7c9378bcfe163 100644 (file)
@@ -16,6 +16,7 @@
  */
 #ifndef _modules_h
 #define _modules_h
+#include "main.h"
 
 #define MODINFO_STATE_STARTED   0x01
 #define MODINFO_STATE_PROTECTED 0x02
index 8f167e960993dfb498966f2cfd09608c6ad0831e..753ec2b9530fb75ba0e9445acf6c87058ab8fd75 100644 (file)
 #include <stdarg.h>
 #include <sys/time.h>
 #include <time.h>
+#include <signal.h>
+#ifdef SYNCHRONIZE
+//some winnt machines do already have a SYNCHRONIZE macro defined...
+#undef SYNCHRONIZE
+#endif
 #ifdef HAVE_THREADS
 #include <pthread.h>
 #ifdef WIN32
index 848828c4a27779c95f6fa42c1eeff527aa800abc..4b13abe2b78af2d2ee4b7745ffc3e164c77debfd 100644 (file)
@@ -40,7 +40,11 @@ void sighandler(int signum) {
             sigcrash(signum);
             break;
     }
+    #ifdef WIN32
+    exit(signum);
+    #else
     kill(getpid(), signum);
+    #endif
 }
 
 static void sigcrash(int signum) {
@@ -86,7 +90,7 @@ static void sigcrash(int signum) {
     }
     putlog(LOGLEVEL_INFO, "hard shutdown...");
     exit_daemon();
-    sleep(1);
+    usleep(1000000);
     //hard restart
     restart_process();
 }