瀏覽代碼

added error checking into getoptions()

svn:r26
Bruce Montrose 23 年之前
父節點
當前提交
a5be23d475
共有 1 個文件被更改,包括 24 次插入15 次删除
  1. 24 15
      src/or/config.c

+ 24 - 15
src/or/config.c

@@ -8,6 +8,9 @@
 /*
  * Changes :
  * $Log$
+ * Revision 1.3  2002/07/03 16:53:34  montrose
+ * added error checking into getoptions()
+ *
  * Revision 1.2  2002/07/03 16:31:22  montrose
  * Added getoptions() and made minor adjustment to poptReadDefaultOptions()
  *
@@ -95,28 +98,34 @@ RETURN VALUE: 0 on success, non-zero on error
    bzero(options,sizeof(or_options_t));   /* zero out options initially */
 
    code = poptGetNextOpt(optCon);         /* first we handle command-line args */
-
-   if ( ConfigFile )                      /* handle user-specified config file if any */
-   {
-      code = poptReadOptions(optCon,ConfigFile);
-      if ( code < -1 ) return code;
-   }
-   else                                   /* load Default configuration files */
+   if ( code == -1 )
    {
-      code = poptReadDefaultOptions(cmd,optCon);
-      if ( code < -1 ) return code;
+      if ( ConfigFile )                   /* handle user-specified config file if any */
+         code = poptReadOptions(optCon,ConfigFile);
+      else                                /* load Default configuration files */
+         code = poptReadDefaultOptions(cmd,optCon);
+   
+      if ( Verbose )                      /* display options upon user request */
+      {
+         printf("\nLogLevel=%s\n",options->LogLevel);
+         printf("RouterFile=%s, PrivateKeyFile=%s\n",options->RouterFile,options->PrivateKeyFile);
+         printf("ORPort=%d, OPPort=%d, APPort=%d\n",options->ORPort,options->OPPort,options->APPort);
+         printf("CoinWeight=%6.4f, MaxConn=%d, TrafficShaping=%d\n\n",options->CoinWeight,options->MaxConn,options->TrafficShaping);
+      }
    }
 
-   if ( Verbose )                         /* display options upon user request */
+   switch(code)                           /* error checking */
    {
-      printf("\nLogLevel=%s\n",options->LogLevel);
-      printf("RouterFile=%s, PrivateKeyFile=%s\n",options->RouterFile,options->PrivateKeyFile);
-      printf("ORPort=%d, OPPort=%d, APPort=%d\n",options->ORPort,options->OPPort,options->APPort);
-      printf("CoinWeight=%6.4f, MaxConn=%d, TrafficShaping=%d\n\n",options->CoinWeight,options->MaxConn,options->TrafficShaping);
+   case INT_MIN:
+      fprintf(stderr, "%s: Unable to open configuration file.\n", ConfigFile);
+   case -1:
+      code = 0;
+   default:
+      fprintf(stderr, "%s: %s\n", poptBadOption(optCon, POPT_BADOPTION_NOALIAS), poptStrerror(code));
    }
 
    poptFreeContext(optCon);
 
-   return 0;
+   return code;
 }