Kevin P Roth's idea of supporting multiple -d options was turned into reality
authorDaniel Stenberg <daniel@haxx.se>
Thu, 26 Oct 2000 07:06:52 +0000 (07:06 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 26 Oct 2000 07:06:52 +0000 (07:06 +0000)
src/main.c

index d997d7b..d9bbd7c 100644 (file)
@@ -686,28 +686,43 @@ static int getparameter(char *flag, /* f or -long-flag */
       break;
     case 'd':
       /* postfield data */
-      if('@' == *nextarg) {
-        /* the data begins with a '@' letter, it means that a file name
-           or - (stdin) follows */
-        FILE *file;
-        char *ptr;
-
-        nextarg++; /* pass the @ */
-
-        if(strequal("-", nextarg))
-          file = stdin;
-        else 
-          file = fopen(nextarg, "r");
+      {
+        char *postdata=NULL;
+
+        if('@' == *nextarg) {
+          /* the data begins with a '@' letter, it means that a file name
+             or - (stdin) follows */
+          FILE *file;
+          char *ptr;
+
+          nextarg++; /* pass the @ */
+
+          if(strequal("-", nextarg))
+            file = stdin;
+          else 
+            file = fopen(nextarg, "r");
+
+          if(subletter == 'b') /* forced binary */
+            postdata = file2memory(file, &config->postfieldsize);
+          else
+            postdata = file2string(file);
+          if(file && (file != stdin))
+            fclose(stdin);
+        }
+        else {
+          GetStr(&postdata, nextarg);
+        }
 
-        if(subletter == 'b') /* forced binary */
-          config->postfields = file2memory(file, &config->postfieldsize);
+        if(config->postfields && *config->postfields) {
+          /* we already have a string, we append this one
+             with a separating &-letter */
+          char *oldpost=config->postfields;
+          config->postfields=maprintf("%s&%s", oldpost, postdata);
+          free(oldpost);
+          free(postdata);
+        }
         else
-          config->postfields = file2string(file);
-        if(file && (file != stdin))
-          fclose(stdin);
-      }
-      else {
-        GetStr(&config->postfields, nextarg);
+          config->postfields=postdata;
       }
       if(config->postfields)
         config->conf |= CONF_POST;