Another year is about to end... So we have to update these damn copyright information :P
[NeonServV5.git] / src / cmd_neonserv_extscript.c
index 67374d15668560da89f828ff930925c1f8ac990c..d060d57e1ddc2155ca34d9bd7538aed04a1b0bd2 100644 (file)
@@ -1,5 +1,5 @@
-/* cmd_neonserv_extscript.c - NeonServ v5.2
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* cmd_neonserv_extscript.c - NeonServ v5.3
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@ static TIMEQ_CALLBACK(neonserv_cmd_extscript_callback);
 
 struct neonserv_cmd_extscript_cache {
     struct ClientSocket *client, *textclient;
+    struct Event *event;
     struct UserNode *user;
     struct ChanNode *chan;
     int answere_channel;
@@ -130,11 +131,14 @@ CMD_BIND(neonserv_cmd_extscript) {
     }
     cache->client = client;
     cache->textclient = getTextBot();
+    cache->event = event;
     cache->user = user;
     cache->chan = chan;
     cache->answere_channel = answere_channel;
     cache->pipe = popen(command, "r");
+    #ifndef WIN32
     fcntl(fileno(cache->pipe), F_SETFL, O_NONBLOCK);
+    #endif
     timeq_add(1, neonserv_cmd_extscript_callback, cache);
 }
 
@@ -150,6 +154,10 @@ static TIMEQ_CALLBACK(neonserv_cmd_extscript_callback) {
     while (fgets(command, 512, cache->pipe) != NULL) {
         if((a = strchr(command, '\n'))) 
             *a = '\0';
+        if(!stricmp(command, "/log")) {
+            logEvent(cache->event);
+            continue;
+        }
         if(cache->answere_channel)
             putsock(cache->client, "PRIVMSG %s :%s", cache->chan->name, command);
         else