allow daemon mode under cygwin
[srvx.git] / src / main.c
index 38b95be5105c8eff505b1bc66381014287c988bf..c16aafac1b41950a99a5b779442e5bd8d6005ca7 100644 (file)
@@ -1,11 +1,12 @@
 /* main.c - srvx
  * Copyright 2000-2004 srvx Development Team
  *
- * This program is free software; you can redistribute it and/or modify
+ * This file is part of srvx.
+ *
+ * srvx is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.  Important limitations are
- * listed in the COPYING file that accompanies this software.
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -13,7 +14,8 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, email srvx-maintainers@srvx.net.
+ * along with srvx; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
  */
 
 #define PID_FILE "srvx.pid"
@@ -82,7 +84,6 @@ static const struct message_entry msgtab[] = {
     { "MSG_COMMAND_PRIVILEGED", "$b%s$b is a privileged command." },
     { "MSG_COMMAND_DISABLED", "$b%s$b is a disabled command." },
     { "MSG_SETTING_PRIVILEGED", "$b%s$b is a privileged setting." },
-    { "MSG_REGISTER_HANDLE", "You must first register a account with $b$N$b." },
     { "MSG_AUTHENTICATE", "You must first authenticate with $b$N$b." },
     { "MSG_USER_AUTHENTICATE", "%s must first authenticate with $b$N$b." },
     { "MSG_SET_EMAIL_ADDR", "You must first set your account's email address.  (Contact network staff if you cannot auth to your account.)" },
@@ -94,6 +95,7 @@ static const struct message_entry msgtab[] = {
     { "MSG_INVALID_MODES", "$b%s$b is an invalid set of channel modes." },
     { "MSG_INVALID_GLINE", "Invalid G-line '%s'." },
     { "MSG_INVALID_DURATION", "Invalid time span '%s'." },
+    { "MSG_NOT_TARGET_NAME", "You must provide the name of a channel or user." },
     { "MSG_NOT_CHANNEL_NAME", "You must provide a valid channel name." },
     { "MSG_INVALID_CHANNEL", "You must provide the name of a channel that exists." },
     { "MSG_CHANNEL_ABSENT", "You aren't currently in $b%s$b." },
@@ -115,6 +117,20 @@ static const struct message_entry msgtab[] = {
     { "MSG_DB_WRITE_ERROR", "Error while writing database %s." },
     { "MSG_DB_WROTE_DB", "Wrote database %s (in "FMT_TIME_T".%06lu seconds)." },
     { "MSG_DB_WROTE_ALL", "Wrote all databases (in "FMT_TIME_T".%06lu seconds)." },
+    { "MSG_AND", "and" },
+    { "MSG_0_SECONDS", "0 seconds" },
+    { "MSG_YEAR", "year" },
+    { "MSG_YEARS", "years" },
+    { "MSG_WEEK", "week" },
+    { "MSG_WEEKS", "weeks" },
+    { "MSG_DAY", "day" },
+    { "MSG_DAYS", "days" },
+    { "MSG_HOUR", "hour" },
+    { "MSG_HOURS", "hours" },
+    { "MSG_MINUTE", "minute" },
+    { "MSG_MINUTES", "minutes" },
+    { "MSG_SECOND", "second" },
+    { "MSG_SECONDS", "seconds" },
     { NULL, NULL }
 };
 
@@ -161,14 +177,9 @@ uplink_insert(const char *key, void *data, UNUSED_ARG(void *extra))
     uplink->bind_addr_len = sizeof(*sin);
     if (str && getipbyname(str, &addr)) 
     {
-       sin = malloc(uplink->bind_addr_len);
-        sin->sin_port = 0;
+       sin = calloc(1, uplink->bind_addr_len);
        sin->sin_family = AF_INET;
        sin->sin_addr.s_addr = addr;
-#ifdef HAVE_SIN_LEN
-       sin->sin_len = 0;
-#endif
-       memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
        uplink->bind_addr = sin;
     } 
     else 
@@ -235,6 +246,7 @@ uplink_compile(void)
        for(uplink = oldUplinks; uplink; uplink = next)
        {
            next = uplink->next;
+            free(uplink->bind_addr);
            free(uplink);
        }
     }
@@ -614,7 +626,7 @@ void main_shutdown(void)
     ioset_cleanup();
     for (ul = cManager.uplinks; ul; ul = ul_next) {
         ul_next = ul->next;
-        if (ul->bind_addr) free(ul->bind_addr);
+        free(ul->bind_addr);
         free(ul);
     }
     tools_cleanup();
@@ -752,14 +764,6 @@ int main(int argc, char *argv[])
 
     version();
 
-#ifdef __CYGWIN__
-    if(daemon)
-    {
-       fprintf(stderr, "Daemon mode not supported under Cygwin.\n");
-       daemon = 0;
-    }
-#endif
-
     if (replay_file) {
         /* We read a line here to "prime" the replay file parser, but
          * mostly to get the right value of "now" for when we do the
@@ -823,13 +827,14 @@ int main(int argc, char *argv[])
     saxdb_init();
     gline_init();
     sendmail_init();
+    helpfile_init();
     conf_globals(); /* initializes the core services */
     conf_rlimits();
     modules_init();
     message_register_table(msgtab);
     modcmd_finalize();
-    helpfile_finalize();
     saxdb_finalize();
+    helpfile_finalize();
     modules_finalize();
 
     /* The first exit func to be called *should* be saxdb_write_all(). */