David Byron cleaned up how --trace with no option was treated, and also
authorDaniel Stenberg <daniel@haxx.se>
Mon, 19 Jan 2004 22:15:59 +0000 (22:15 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 19 Jan 2004 22:15:59 +0000 (22:15 +0000)
arguments in a config file without a required parameter!

src/main.c

index 65d9b0a..2c13c70 100644 (file)
@@ -2117,12 +2117,21 @@ static int parseconfig(const char *filename,
           line++;
         *line=0; /* zero terminate */
       }
+
+      if (param && !*param) {
+        /* do this so getparameter can check for required parameters.
+           Otherwise it always thinks there's a parameter. */
+        if (alloced_param)
+          free(param);
+        param = NULL;
+      }
+
 #ifdef DEBUG_CONFIG
-      fprintf(stderr, "PARAM: \"%s\"\n", param);
+      fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
 #endif
       res = getparameter(option, param, &usedarg, config);
 
-      if(*param && !usedarg)
+      if (param && *param && !usedarg)
         /* we passed in a parameter that wasn't used! */
         res = PARAM_GOT_EXTRA_PARAMETER;
 
@@ -2139,7 +2148,10 @@ static int parseconfig(const char *filename,
       }
 
       if(alloced_param)
+      {
         free(param);
+       param = NULL;
+      }
 
       free(aline);
     }
@@ -3371,7 +3383,7 @@ operate(struct Configurable *config, int argc, char *argv[])
   if(config->headerfile && !headerfilep && heads.stream)
     fclose(heads.stream);
 
-  if(config->trace_fopened)
+  if(config->trace_fopened && config->trace_stream)
     fclose(config->trace_stream);
 
   if(allocuseragent)