aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 0e82748cc..bb63527d1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
}
- /* Append / before the ? to create a well-formed url
- if the url contains a hostname only
- */
if (pc)
- sprintf(urlbuffer, "%s?%s", url, httpgetfields);
+ 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
+ */
sprintf(urlbuffer, "%s/?%s", url, httpgetfields);
free(url); /* free previous URL */