diff options
-rw-r--r-- | src/main.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c index 948bfab0d..0e82748cc 100644 --- a/src/main.c +++ b/src/main.c @@ -314,10 +314,10 @@ static void help(void) " -f/--fail Fail silently (no output at all) on errors (H)\n" " -F/--form <name=content> Specify HTTP POST data (H)\n" " -g/--globoff Disable URL sequences and ranges using {} and []\n" - " -G/--get HTTP GET(H)\n" - " -h/--help This help text\n" - " -H/--header <line> Custom header to pass to server. (H)"); - puts(" -i/--include Include the HTTP-header in the output (H)\n" + " -G/--get Send the -d data with a HTTP GET (H)\n"); + puts(" -h/--help This help text\n" + " -H/--header <line> Custom header to pass to server. (H)" + " -i/--include Include the HTTP-header in the output (H)\n" " -I/--head Fetch document info only (HTTP HEAD/FTP SIZE)\n" " --interface <interface> Specify the interface to be used\n" " --krb4 <level> Enable krb4 with specified security level (F)\n" @@ -1856,6 +1856,14 @@ operate(struct Configurable *config, int argc, char *argv[]) printf("%s%s\n", CURLseparator, url); } if (httpgetfields) { + /* Find out whether the url contains a file name */ + char *pc =strstr(url, "://"); + if(pc) + pc+=3; + else + pc=url; + pc = strrchr(pc, '/'); + /* * Then append ? followed by the get fields to the url. */ @@ -1864,7 +1872,14 @@ operate(struct Configurable *config, int argc, char *argv[]) helpf("out of memory\n"); return CURLE_OUT_OF_MEMORY; } - sprintf(urlbuffer, "%s?%s", url, httpgetfields); + /* 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 */ url = urlbuffer; /* use our new URL instead! */ } |