From 6bdfe18b67b0eb300cf7d78e6bfddfea59de0594 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 25 Jul 2000 07:34:04 +0000 Subject: [PATCH] Added some logic that now prevents multiple conflicting HTTP request types to get specified with the options. --- src/main.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main.c b/src/main.c index 72fb0504d..9de214c73 100644 --- a/src/main.c +++ b/src/main.c @@ -80,6 +80,16 @@ #include #endif +typedef enum { + HTTPREQ_UNSPEC, + HTTPREQ_GET, + HTTPREQ_HEAD, + HTTPREQ_POST, + HTTPREQ_SIMPLEPOST, + HTTPREQ_CUSTOM, + HTTPREQ_LAST +} HttpReq; + /* Just a set of bits */ #define CONF_DEFAULT 0 @@ -186,6 +196,16 @@ void main_free(void) win32_cleanup(); } +int SetHTTPrequest(HttpReq req, HttpReq *store) +{ + if((*store == HTTPREQ_UNSPEC) || + (*store == req)) { + *store = req; + return CURLE_OK; + } + fprintf(stderr, "You can only select one HTTP request!\n"); + return CURLE_FAILED_INIT; +} static void helpf(char *fmt, ...) { @@ -313,6 +333,8 @@ struct Configurable { struct HttpPost *httppost; struct HttpPost *last_post; + + HttpReq httpreq; }; static int parseconfig(char *filename, @@ -610,6 +632,8 @@ static int getparameter(char *flag, /* f or -long-flag */ } if(config->postfields) config->conf |= CONF_POST; + if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq)) + return CURLE_FAILED_INIT; break; case 'D': /* dump-header to given file name */ @@ -650,6 +674,8 @@ static int getparameter(char *flag, /* f or -long-flag */ &config->httppost, &config->last_post)) return CURLE_FAILED_INIT; + if(SetHTTPrequest(HTTPREQ_POST, &config->httpreq)) + return CURLE_FAILED_INIT; break; case 'h': /* h for help */ @@ -665,6 +691,8 @@ static int getparameter(char *flag, /* f or -long-flag */ 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 CURLE_FAILED_INIT; break; case 'K': res = parseconfig(nextarg, config); @@ -794,6 +822,8 @@ static int getparameter(char *flag, /* f or -long-flag */ case 'X': /* HTTP request */ GetStr(&config->customrequest, nextarg); + if(SetHTTPrequest(HTTPREQ_CUSTOM, &config->httpreq)) + return CURLE_FAILED_INIT; break; case 'y': /* low speed time */