]> arthur.barton.de Git - netatalk.git/blobdiff - etc/afpd/afp_options.c
/tmp/log
[netatalk.git] / etc / afpd / afp_options.c
index e935afac0cb6bf4de15016999ccdded4a55cc2b8..2e75bcc05f42a22df45b33f78285c834ee7526c0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: afp_options.c,v 1.20 2002-02-16 11:04:50 srittau Exp $
+ * $Id: afp_options.c,v 1.29 2003-01-12 14:39:57 didg Exp $
  *
  * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
@@ -122,6 +122,8 @@ void afp_options_free(struct afp_options *opt,
         free(opt->nlspath);
     if (opt->passwdfile && (opt->passwdfile != save->passwdfile))
         free(opt->passwdfile);
+    if (opt->signature && (opt->signature != save->signature))
+       free(opt->signature);
 }
 
 /* initialize options */
@@ -144,6 +146,7 @@ void afp_options_init(struct afp_options *options)
     options->timeout = 4;
     options->server_notif = 1;
     options->authprintdir = NULL;
+    options->signature = "host";
     options->umask = 0;
 #ifdef ADMIN_GRP
     options->admingid = 0;
@@ -169,6 +172,10 @@ int afp_options_parseline(char *buf, struct afp_options *options)
     /* parse toggles */
     if (strstr(buf, " -nodebug"))
         options->flags &= ~OPTION_DEBUG;
+#ifdef USE_SRVLOC
+    if (strstr(buf, " -noslp"))
+        options->flags |= OPTION_NOSLP;
+#endif /* USE_SRVLOC */
 
     if (strstr(buf, " -nouservolfirst"))
         options->flags &= ~OPTION_USERVOLFIRST;
@@ -243,7 +250,121 @@ int afp_options_parseline(char *buf, struct afp_options *options)
     if ((c = getoption(buf, "-server_quantum")))
         options->server_quantum = strtoul(c, NULL, 0);
 
+#ifndef DISABLE_LOGGER
+    /* -setuplogtype <syslog|filelog> <logtype> <loglevel> <filename>*/
+    /* -[no]setuplog <logtype> <loglevel> [<filename>]*/
+    if ((c = getoption(buf, "-setuplog")))
+    {
+      char *ptr, *logsource, *logtype, *loglevel, *filename;
+
+      LOG(log_debug6, logtype_afpd, "setting up logtype, c is %s", c);
+      ptr = c;
+      
+      /* 
+      logsource = ptr = c;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr) 
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+      */
+
+      logtype = ptr; 
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr) 
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+
+      loglevel = ptr;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr) 
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+
+      filename = ptr;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr) 
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+
+      LOG(log_debug7, logtype_afpd, "calling setuplog %s %s %s", 
+          logtype, loglevel, filename);
+
+      setuplog(logtype, loglevel, filename);
+    }
+
+    if ((c = getoption(buf, "-unsetuplog")))
+    {
+      char *ptr, *logtype, *loglevel, *filename;
+
+      LOG(log_debug6, logtype_afpd, "unsetting up logtype, c is %s", c);
+
+      ptr = c;
+      logtype = ptr;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr)
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+
+      loglevel = ptr;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr)
+        {
+          *ptr++ = 0;
+           while (*ptr && isspace(*ptr))
+             ptr++;
+        }
+      }
+
+      filename = ptr;
+      if (ptr)
+      {
+        ptr = strpbrk(ptr, " \t");
+        if (ptr)
+        {
+          *ptr++ = 0;
+          while (*ptr && isspace(*ptr))
+            ptr++;
+        }
+      }
+      
+      LOG(log_debug7, logtype_afpd, "calling setuplog %s %s %s",
+              logtype, NULL, filename);
 
+      setuplog(logtype, NULL, filename);
+    }
+#endif /* DISABLE_LOGGER */
 #ifdef ADMIN_GRP
     if ((c = getoption(buf, "-admingroup"))) {
         struct group *gr = getgrnam(c);
@@ -266,7 +387,7 @@ int afp_options_parseline(char *buf, struct afp_options *options)
         struct in_addr inaddr;
         if (inet_aton(c, &inaddr) && (opt = strdup(c))) {
             if (!gethostbyaddr((const char *) &inaddr, sizeof(inaddr), AF_INET))
-                LOG(log_info, logtype_default, "WARNING: can't find %s\n", opt);
+                LOG(log_info, logtype_afpd, "WARNING: can't find %s\n", opt);
             options->ipaddr = opt;
         }
     }
@@ -275,6 +396,8 @@ int afp_options_parseline(char *buf, struct afp_options *options)
         options->port = atoi(c);
     if ((c = getoption(buf, "-ddpaddr")))
         atalk_aton(c, &options->ddpaddr);
+    if ((c = getoption(buf, "-signature")) && (opt = strdup(c)))
+        options->signature = opt;
 
     /* do a little checking for the domain name. */
     if ((c = getoption(buf, "-fqdn"))) {
@@ -305,17 +428,17 @@ int afp_options_parse(int ac, char **av, struct afp_options *options)
         perror( "gethostname" );
         return 0;
     }
-    if (( p = strchr(options->hostname, '.' )) != 0 ) {
+    if (NULL != ( p = strchr(options->hostname, '.' )) ) {
         *p = '\0';
     }
 
-    if (( p = strrchr( av[ 0 ], '/' )) == NULL ) {
+    if (NULL == ( p = strrchr( av[ 0 ], '/' )) ) {
         p = av[ 0 ];
     } else {
         p++;
     }
 
-    while (( c = getopt( ac, av, OPTIONS )) != EOF ) {
+    while (EOF != ( c = getopt( ac, av, OPTIONS )) ) {
         switch ( c ) {
         case 'd' :
             options->flags |= OPTION_DEBUG;