Changed how -I/--head works when --include is also used... Test case 104
authorDaniel Stenberg <daniel@haxx.se>
Thu, 3 Jan 2002 08:07:29 +0000 (08:07 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 3 Jan 2002 08:07:29 +0000 (08:07 +0000)
stopped working after the dec-20 fixes that now supports FTP operations to
skip the transfer phase.

src/main.c

index 54ad587..696f768 100644 (file)
@@ -1279,10 +1279,23 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       config->conf ^= CONF_HEADER; /* include the HTTP header as well */
       break;
     case 'I':
-      config->conf ^= CONF_HEADER; /* include the HTTP header in the output */
-      config->conf ^= CONF_NOBODY; /* don't fetch the body at all */
-      if(SetHTTPrequest(HTTPREQ_HEAD, &config->httpreq))
-        return PARAM_BAD_USE;
+      /*
+       * This is a bit tricky. We either SET both bits, or we clear both
+       * bits. Let's not make any other outcomes from this.
+       */
+      if((CONF_HEADER|CONF_NOBODY) !=
+         (config->conf&(CONF_HEADER|CONF_NOBODY)) ) {
+        /* one of them weren't set, set both */
+        config->conf |= (CONF_HEADER|CONF_NOBODY);
+        if(SetHTTPrequest(HTTPREQ_HEAD, &config->httpreq))
+          return PARAM_BAD_USE;
+      }
+      else {
+        /* both were set, clear both */
+        config->conf &= ~(CONF_HEADER|CONF_NOBODY);
+        if(SetHTTPrequest(HTTPREQ_GET, &config->httpreq))
+          return PARAM_BAD_USE;
+      }
       break;
     case 'K':
       res = parseconfig(nextarg, config);