use rxpd_fail rxpd_die for expected failures in main.c pth
authorChristian Thaeter <ct@pipapo.org>
Mon, 22 Oct 2007 11:42:38 +0000 (13:42 +0200)
committerChristian Thaeter <ct@pipapo.org>
Mon, 22 Oct 2007 11:42:38 +0000 (13:42 +0200)
src/main.c
src/rxpd.h
src/rxpd_base.c

index fc1b322..37de058 100644 (file)
@@ -44,27 +44,25 @@ version (void)
 void
 usage (void)
 {
 void
 usage (void)
 {
-  /*
-    rxpd [OPTIONS] RULES..
-    -v          verbosity
-    -V          version
-    -d          daemonize
-    -D          debug
-    -b dir      basedir for rules
-    -q          quiet
-    -t port     tcp
-    -u name     unix
-    -p policy   access policies
-    -i          case insensitive
-    -4          ipv4
-    -6          ipv6
-    -r          resolve names
-    -l log      log hits to logfile
-    -h          usage
-
-    -U user     switch to user
-  */
-
+  printf (
+    "rxpd [OPTIONS] RULES..\n"
+    " -v          increase verbosity level\n"
+    " -V          show version\n"
+    " -d          daemonize into background\n"
+    " -D          debug mode\n"
+    " -b dir      basedir for rules\n"
+    " -q          be quiet\n"
+    " -t port     listen on tcp port\n"
+    //" -u name     unix\n"
+    " -p policy   define a list for access policies\n"
+    //" -i          case insensitive\n"
+    //" -4          ipv4\n"
+    //" -6          ipv6\n"
+    //" -r          resolve names\n"
+    //" -l log      log hits to logfile\n"
+    " -h          this usage information\n"
+    //" -U user     switch to user\n"
+    );
 }
 
 
 }
 
 
@@ -72,7 +70,7 @@ int
 main (int argc, char** argv)
 {
   if (pth_init() == FALSE)
 main (int argc, char** argv)
 {
   if (pth_init() == FALSE)
-    rxpd_die ("pth initialization failed\n");
+    rxpd_fail (NULL, "pth initialization failed\n");
 
   struct rxpd_base* rxpd;
 
 
   struct rxpd_base* rxpd;
 
@@ -80,11 +78,7 @@ main (int argc, char** argv)
 
   rxpd = rxpd_init ();
 
 
   rxpd = rxpd_init ();
 
-  rxpd_log (rxpd, LOG_NOTICE, PACKAGE_STRING" starting up\n");
-
-  // parse commandline args
   opterr = 0;
   opterr = 0;
-
   int opt;
 
   while ((opt = getopt (argc, argv, "vVdDb:qt:u:p:i46rl:h")) != -1)
   int opt;
 
   while ((opt = getopt (argc, argv, "vVdDb:qt:u:p:i46rl:h")) != -1)
@@ -109,7 +103,7 @@ main (int argc, char** argv)
         if (!rxpd->basedir)
           rxpd->basedir = rxpd_strdup (optarg);
         else
         if (!rxpd->basedir)
           rxpd->basedir = rxpd_strdup (optarg);
         else
-          rxpd_die ("basedir already set\n");
+          rxpd_fail (rxpd, "basedir already set\n");
         break;
       case 'q':
         rxpd->verbosity = LOG_ALERT;
         break;
       case 'q':
         rxpd->verbosity = LOG_ALERT;
@@ -123,10 +117,7 @@ main (int argc, char** argv)
               // TODO error handling
             }
           else
               // TODO error handling
             }
           else
-            {
-              rxpd_log (rxpd, LOG_ALERT, "Illegal port number\n");
-              exit (EXIT_FAILURE);
-            }
+            rxpd_fail (rxpd, "Illegal port number\n");
         }
         // TODO rxpd_socket_new_tcp6 (rxpd, NULL, 2374)
         break;
         }
         // TODO rxpd_socket_new_tcp6 (rxpd, NULL, 2374)
         break;
@@ -139,7 +130,7 @@ main (int argc, char** argv)
         if (!rxpd->policy)
           rxpd->policy = rxpd_file_new (rxpd, optarg);
         else
         if (!rxpd->policy)
           rxpd->policy = rxpd_file_new (rxpd, optarg);
         else
-          rxpd_die ("policy already set\n");
+          rxpd_fail (rxpd, "policy already set\n");
         break;
       case 'i':
         rxpd->regflags |= REG_ICASE; 
         break;
       case 'i':
         rxpd->regflags |= REG_ICASE; 
@@ -159,44 +150,33 @@ main (int argc, char** argv)
         exit (0);
         break;
       default:
         exit (0);
         break;
       default:
-        rxpd_log (rxpd, LOG_ALERT, "Unknown option\n");
-        exit (EXIT_FAILURE);
+        rxpd_fail (rxpd, "Unknown option '-%c'\n", opt);
       }
 
   if (!rxpd->basedir)
       }
 
   if (!rxpd->basedir)
-    {
-      rxpd_log (rxpd, LOG_ALERT, "Basedir not set (use -b BASEDIR)\n");
-      exit (EXIT_FAILURE);
-    }
+    rxpd_fail (rxpd, "Basedir not set (use -b BASEDIR)\n");
 
   if (llist_is_empty (&rxpd->sockets))
 
   if (llist_is_empty (&rxpd->sockets))
-    {
-      rxpd_log (rxpd, LOG_ALERT, "No listening sockets (use -t TCP or -u UNIX)\n");
-      exit (EXIT_FAILURE);
-    }
+    rxpd_fail (rxpd, "No listening sockets given (use -t TCP or -u UNIX)\n");
 
   if (rxpd->policy)
     {
       if (rxpd_file_load (rxpd->policy))
         rxpd_log (rxpd, LOG_INFO, "Loaded policy '%s'\n", rxpd->policy->filename);
       else
 
   if (rxpd->policy)
     {
       if (rxpd_file_load (rxpd->policy))
         rxpd_log (rxpd, LOG_INFO, "Loaded policy '%s'\n", rxpd->policy->filename);
       else
-        {
-          rxpd_log (rxpd, LOG_ALERT, "Failed loading policy file\n");
-          exit (EXIT_FAILURE);
-        }
+        rxpd_fail (rxpd, "Failed loading policy '%s'\n", rxpd->policy->filename);
     }
 
   for (int i = optind; i < argc; ++i)
     {
       if (!rxpd_file_load (rxpd_file_new (rxpd, argv[i])))
     }
 
   for (int i = optind; i < argc; ++i)
     {
       if (!rxpd_file_load (rxpd_file_new (rxpd, argv[i])))
-        {
-          //rxpd_log (rxpd, LOG_ALERT, "Failed loading file '%s'\n");
-          exit (EXIT_FAILURE);
-        }
+        rxpd_fail (rxpd, "Failed loading file '%s'\n", argv[i]);
     }
 
   if (rxpd->daemonize && daemon(1, 0))
     }
 
   if (rxpd->daemonize && daemon(1, 0))
-    rxpd_die ("Couldn't daemonize\n");
+    rxpd_fail (rxpd, "Couldn't daemonize\n");
+
+  rxpd_log (rxpd, LOG_NOTICE, PACKAGE_STRING" starting up\n");
 
   LLIST_FOREACH (&rxpd->sockets, n)
     {
 
   LLIST_FOREACH (&rxpd->sockets, n)
     {
index 7954225..ff81f62 100644 (file)
@@ -110,6 +110,9 @@ rxpd_destroy (void);
 void
 rxpd_log (struct rxpd_base*, int level, const char* fmt, ...);
 
 void
 rxpd_log (struct rxpd_base*, int level, const char* fmt, ...);
 
+void
+rxpd_fail (struct rxpd_base*, const char* fmt, ...);
+
 void
 rxpd_die (const char* fmt, ...);
 
 void
 rxpd_die (const char* fmt, ...);
 
index 6867734..e316b97 100644 (file)
@@ -73,6 +73,18 @@ rxpd_log (struct rxpd_base* self, int level, const char* fmt, ...)
   va_end (ap);
 }
 
   va_end (ap);
 }
 
+void
+rxpd_fail (struct rxpd_base* self, const char* fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  if (!self || self->daemonize)
+    vsyslog (LOG_ALERT, fmt, ap);
+  vfprintf (stderr, fmt, ap);
+  va_end (ap);
+  exit (EXIT_FAILURE);
+}
+
 void
 rxpd_die (const char* fmt, ...)
 {
 void
 rxpd_die (const char* fmt, ...)
 {