ptserver: convert the ptserver to opr softsig
[openafs.git] / src / ptserver / ptserver.c
index b73e0c5..fdf37c1 100644 (file)
 
 #include <roken.h>
 #include <afs/opr.h>
+#ifdef AFS_PTHREAD_ENV
+# include <opr/softsig.h>
+# include <afs/procmgmt_softsig.h> /* must come after softsig.h */
+#endif
 
 #ifdef AFS_NT40_ENV
 #include <WINNT/afsevent.h>
@@ -147,6 +151,7 @@ extern afs_int32 depthsg;
 #endif
 
 int restricted = 0;
+int restrict_anonymous = 0;
 int rxMaxMTU = -1;
 int rxBind = 0;
 int rxkadDisableDotCheck = 0;
@@ -214,6 +219,7 @@ enum optionsList {
     OPT_access,
     OPT_groupdepth,
     OPT_restricted,
+    OPT_restrict_anonymous,
     OPT_auditlog,
     OPT_auditiface,
     OPT_config,
@@ -300,22 +306,24 @@ main(int argc, char **argv)
 
     cmd_DisableAbbreviations();
     cmd_DisablePositionalCommands();
-    opts = cmd_CreateSyntax(NULL, NULL, NULL, NULL);
+    opts = cmd_CreateSyntax(NULL, NULL, NULL, 0, NULL);
 
 /* ptserver specific options */
     cmd_AddParmAtOffset(opts, OPT_database, "-database", CMD_SINGLE,
                        CMD_OPTIONAL, "database file");
-    cmd_AddParmAlias(opts, OPT_database, "db");
+    cmd_AddParmAlias(opts, OPT_database, "-db");
 
-    cmd_AddParmAtOffset(opts, OPT_access, "-default_access", CMD_SINGLE,
+    cmd_AddParmAtOffset(opts, OPT_access, "-default_access", CMD_LIST,
                        CMD_OPTIONAL, "default access flags for new entries");
 #if defined(SUPERGROUPS)
     cmd_AddParmAtOffset(opts, OPT_groupdepth, "-groupdepth", CMD_SINGLE,
                        CMD_OPTIONAL, "max search depth for supergroups");
-    cmd_AddParmAlias(opts, OPT_groupdepth, "depth");
+    cmd_AddParmAlias(opts, OPT_groupdepth, "-depth");
 #endif
     cmd_AddParmAtOffset(opts, OPT_restricted, "-restricted", CMD_FLAG,
                        CMD_OPTIONAL, "enable restricted mode");
+    cmd_AddParmAtOffset(opts, OPT_restrict_anonymous, "-restrict_anonymous",
+                       CMD_FLAG, CMD_OPTIONAL, "enable restricted anonymous mode");
 
     /* general server options */
     cmd_AddParmAtOffset(opts, OPT_auditlog, "-auditlog", CMD_SINGLE,
@@ -351,6 +359,9 @@ main(int argc, char **argv)
                        "permit Kerberos 5 principals with dots");
 
     code = cmd_Parse(argc, argv, &opts);
+    if (code == CMD_HELP) {
+       PT_EXIT(0);
+    }
     if (code)
        PT_EXIT(1);
 
@@ -373,6 +384,7 @@ main(int argc, char **argv)
 #endif
 
     cmd_OptionAsFlag(opts, OPT_restricted, &restricted);
+    cmd_OptionAsFlag(opts, OPT_restrict_anonymous, &restrict_anonymous);
 
     /* general server options */
     cmd_OptionAsString(opts, OPT_auditlog, &auditFileName);
@@ -390,10 +402,10 @@ main(int argc, char **argv)
     cmd_OptionAsString(opts, OPT_logfile, &logFile);
 
     if (cmd_OptionAsInt(opts, OPT_threads, &lwps) == 0) {
-       if (lwps > 16) {        /* maximum of 16 */
+       if (lwps > 64) {        /* maximum of 64 */
            printf("Warning: '-p %d' is too big; using %d instead\n",
-                  lwps, 16);
-           lwps = 16;
+                  lwps, 64);
+           lwps = 64;
        } else if (lwps < 3) {  /* minimum of 3 */
            printf("Warning: '-p %d' is too small; using %d instead\n",
                   lwps, 3);
@@ -433,7 +445,12 @@ main(int argc, char **argv)
     serverLogSyslogTag = "ptserver";
 #endif
     OpenLog(logFile);  /* set up logging */
+#ifdef AFS_PTHREAD_ENV
+    opr_softsig_Init();
+    SetupLogSoftSignals();
+#else
     SetupLogSignals();
+#endif
 
     prdir = afsconf_Open(configDir);
     if (!prdir) {
@@ -568,6 +585,9 @@ main(int argc, char **argv)
                   "1.0",
 #endif
                   "Starting AFS", FSLog);
+    if (afsconf_GetLatestKey(prdir, NULL, NULL) == 0) {
+       LogDesWarning();
+    }
 
     rx_StartServer(1);
     osi_audit(PTS_FinishEvent, -1, AUD_END);