aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2015-08-29 23:56:28 +0200
committerDaniel Stenberg <daniel@haxx.se>2015-09-11 08:53:53 +0200
commit481e0de00a9003b9c5220b120e3fc302d9b0932d (patch)
treecff919570ca5e120c731a342652691522e230c67
parentdf6a4d3519655b26137a90a440c5a99f4abe7e22 (diff)
curl: point out unnecessary uses of -X in verbose mode
It uses 'Note:' as a prefix as opposed to the common 'Warning:' to take down the tone a bit. It adds a warning for using -XHEAD on other methods becasue that may lead to a hanging connection.
-rw-r--r--src/tool_helpers.c23
-rw-r--r--src/tool_helpers.h5
-rw-r--r--src/tool_msgs.c51
-rw-r--r--src/tool_msgs.h1
-rw-r--r--src/tool_operate.c1
5 files changed, 65 insertions, 16 deletions
diff --git a/src/tool_helpers.c b/src/tool_helpers.c
index 2f74dc133..f17d09f50 100644
--- a/src/tool_helpers.c
+++ b/src/tool_helpers.c
@@ -89,3 +89,26 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
return 1;
}
+
+void customrequest_helper(struct OperationConfig *config, HttpReq req,
+ char *method)
+{
+ /* this mirrors the HttpReq enum in tool_sdecls.h */
+ const char *dflt[]= {
+ "GET",
+ "GET",
+ "HEAD",
+ "POST",
+ "POST"
+ };
+
+ if(curl_strequal(method, dflt[req])) {
+ notef(config->global, "Unnecessary use of -X or --request, %s is already "
+ "inferred.\n", dflt[req]);
+ }
+ else if(curl_strequal(method, "head")) {
+ warnf(config->global,
+ "Setting custom HTTP method to HEAD may not work the way you "
+ "want.\n");
+ }
+}
diff --git a/src/tool_helpers.h b/src/tool_helpers.h
index 73bcfc771..117334cbc 100644
--- a/src/tool_helpers.h
+++ b/src/tool_helpers.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -28,5 +28,8 @@ const char *param2text(int res);
int SetHTTPrequest(struct OperationConfig *config, HttpReq req,
HttpReq *store);
+void customrequest_helper(struct OperationConfig *config, HttpReq req,
+ char *method);
+
#endif /* HEADER_CURL_TOOL_HELPERS_H */
diff --git a/src/tool_msgs.c b/src/tool_msgs.c
index 38de977aa..565e28381 100644
--- a/src/tool_msgs.c
+++ b/src/tool_msgs.c
@@ -31,31 +31,27 @@
#include "memdebug.h" /* keep this as LAST include */
#define WARN_PREFIX "Warning: "
-#define WARN_TEXTWIDTH (79 - (int)strlen(WARN_PREFIX))
+#define NOTE_PREFIX "Note: "
-/*
- * Emit warning formatted message on configured 'errors' stream unless
- * mute (--silent) was selected.
- */
-
-void warnf(struct GlobalConfig *config, const char *fmt, ...)
+static void voutf(struct GlobalConfig *config,
+ const char *prefix,
+ const char *fmt,
+ va_list ap)
{
+ size_t width = (79 - (int)strlen(prefix));
if(!config->mute) {
- va_list ap;
- int len;
+ size_t len;
char *ptr;
char print_buffer[256];
- va_start(ap, fmt);
len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap);
- va_end(ap);
ptr = print_buffer;
while(len > 0) {
- fputs(WARN_PREFIX, config->errors);
+ fputs(prefix, config->errors);
- if(len > (int)WARN_TEXTWIDTH) {
- int cut = WARN_TEXTWIDTH-1;
+ if(len > width) {
+ size_t cut = width-1;
while(!ISSPACE(ptr[cut]) && cut) {
cut--;
@@ -63,7 +59,7 @@ void warnf(struct GlobalConfig *config, const char *fmt, ...)
if(0 == cut)
/* not a single cutting position was found, just cut it at the
max text width then! */
- cut = WARN_TEXTWIDTH-1;
+ cut = width-1;
(void)fwrite(ptr, cut + 1, 1, config->errors);
fputs("\n", config->errors);
@@ -79,6 +75,31 @@ void warnf(struct GlobalConfig *config, const char *fmt, ...)
}
/*
+ * Emit 'note' formatted message on configured 'errors' stream, if verbose was
+ * selected.
+ */
+void notef(struct GlobalConfig *config, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ if(config->tracetype)
+ voutf(config, NOTE_PREFIX, fmt, ap);
+ va_end(ap);
+}
+
+/*
+ * Emit warning formatted message on configured 'errors' stream unless
+ * mute (--silent) was selected.
+ */
+
+void warnf(struct GlobalConfig *config, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ voutf(config, WARN_PREFIX, fmt, ap);
+ va_end(ap);
+}
+/*
* Emit help formatted message on given stream.
*/
diff --git a/src/tool_msgs.h b/src/tool_msgs.h
index bf97bfba7..e8ad259c5 100644
--- a/src/tool_msgs.h
+++ b/src/tool_msgs.h
@@ -24,6 +24,7 @@
#include "tool_setup.h"
void warnf(struct GlobalConfig *config, const char *fmt, ...);
+void notef(struct GlobalConfig *config, const char *fmt, ...);
void helpf(FILE *errors, const char *fmt, ...);
diff --git a/src/tool_operate.c b/src/tool_operate.c
index b3fa14644..38d355da5 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -1108,6 +1108,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
+ customrequest_helper(config, config->httpreq, config->customrequest);
my_setopt(curl, CURLOPT_STDERR, global->errors);
/* three new ones in libcurl 7.3: */