Commit 5323340c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Kevin Roth's comments about -G have been addressed:

o -G -I works on the same command line and makes HEAD instead of GET
o -G with an already present question mark in the URL makes an ampersand get
  added as a separator instead
parent 3aae2ec5
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -1654,7 +1654,8 @@ operate(struct Configurable *config, int argc, char *argv[])
      httpgetfields = strdup(config->postfields);
      free(config->postfields);
      config->postfields = NULL;
      if(SetHTTPrequest(HTTPREQ_GET, &config->httpreq)) {
      if(SetHTTPrequest((config->conf&CONF_NOBODY?HTTPREQ_HEAD:HTTPREQ_GET),
                        &config->httpreq)) {
        free(httpgetfields);
        return PARAM_BAD_USE;
      }
@@ -1858,12 +1859,22 @@ operate(struct Configurable *config, int argc, char *argv[])
      if (httpgetfields) {
        /* Find out whether the url contains a file name */
        char *pc =strstr(url, "://");
        char separator='?';
        if(pc)
          pc+=3;
        else
          pc=url;
        pc = strrchr(pc, '/');

        pc = strrchr(pc, '/'); /* check for a slash */

        if(pc) {
          /* there is a slash present in the URL */

          if(strchr(pc, '?'))
          /* Ouch, there's already a question mark in the URL string, we
             then appead the data with an amperand separator instead! */
            separator='&';
        }
        /*
         * Then append ? followed by the get fields to the url.
         */
@@ -1872,12 +1883,12 @@ operate(struct Configurable *config, int argc, char *argv[])
          helpf("out of memory\n");
          return CURLE_OUT_OF_MEMORY;
        }
        if (pc)
          sprintf(urlbuffer, "%s%c%s", url, separator, httpgetfields);
        else
          /* Append  / before the ? to create a well-formed url
             if the url contains a hostname only
          */
        if (pc)
          sprintf(urlbuffer, "%s?%s", url, httpgetfields);
        else
          sprintf(urlbuffer, "%s/?%s", url, httpgetfields);
 
        free(url); /* free previous URL */