From e6e8b144053f4eeda369e53cde01056daceddd03 Mon Sep 17 00:00:00 2001
From: Steve Holme <steve_holme@hotmail.com>
Date: Sat, 22 Feb 2014 20:58:43 +0000
Subject: [PATCH] tool_cfgable: Removed list_engine flag from config structure

In preparation for separating the global config options from the per
operation config options, reworked the list engines code to not use a
member variable in the Configurable structure.
---
 src/tool_cfgable.h  |  1 -
 src/tool_getparam.c |  7 ++++---
 src/tool_getparam.h |  1 +
 src/tool_operate.c  | 13 ++++++-------
 src/tool_parsecfg.c |  5 +++--
 5 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index 2462ac7cdd..9cc2625264 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -120,7 +120,6 @@ struct Configurable {
   char *pubkey;
   char *hostpubmd5;
   char *engine;
-  bool list_engines;
   bool crlf;
   char *customrequest;
   char *krblevel;
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 5e7962cfcc..05dd64853c 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -1310,7 +1310,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       case 'f': /* crypto engine */
         GetStr(&config->engine, nextarg);
         if(config->engine && curlx_raw_equal(config->engine,"list"))
-          config->list_engines = TRUE;
+          return PARAM_ENGINES_REQUESTED;
         break;
       case 'g': /* CA info PEM file */
         /* CA cert directory */
@@ -1819,7 +1819,7 @@ ParameterError parse_args(struct Configurable *config, int argc,
     orig_opt = argv[i];
 
     if(curlx_strequal(":", argv[i]) &&
-       ((config->url_list && config->url_list->url) || config->list_engines)) {
+       (config->url_list && config->url_list->url)) {
 
       /* Allocate the next config */
       config->next = malloc(sizeof(struct Configurable));
@@ -1865,7 +1865,8 @@ ParameterError parse_args(struct Configurable *config, int argc,
     }
   }
 
-  if(result && result != PARAM_HELP_REQUESTED) {
+  if(result && result != PARAM_HELP_REQUESTED &&
+     result != PARAM_ENGINES_REQUESTED) {
     const char *reason = param2text(result);
 
     if(!curlx_strequal(":", orig_opt))
diff --git a/src/tool_getparam.h b/src/tool_getparam.h
index cf1496c508..1fac8daefe 100644
--- a/src/tool_getparam.h
+++ b/src/tool_getparam.h
@@ -30,6 +30,7 @@ typedef enum {
   PARAM_REQUIRES_PARAMETER,
   PARAM_BAD_USE,
   PARAM_HELP_REQUESTED,
+  PARAM_ENGINES_REQUESTED,
   PARAM_GOT_EXTRA_PARAMETER,
   PARAM_BAD_NUMERIC,
   PARAM_NEGATIVE_NUMERIC,
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 0a3c4f6ac9..f6ebf5f3e6 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -1826,14 +1826,13 @@ CURLcode operate(struct Configurable *config, int argc, argv_item_t argv[])
     /* Parse the command line arguments */
     ParameterError res = parse_args(config, argc, argv);
     if(res) {
-      if(res != PARAM_HELP_REQUESTED)
+      result = CURLE_OK;
+
+      /* Check if we were asked to list the SSL engines */
+      if(res == PARAM_ENGINES_REQUESTED)
+        tool_list_engines(config->easy);
+      else if(res != PARAM_HELP_REQUESTED)
         result = CURLE_FAILED_INIT;
-      else
-        result = CURLE_OK;
-    }
-    /* Check if we were asked to list the SSL engines */
-    else if(config->list_engines) {
-      tool_list_engines(config->easy);
     }
     /* Perform the main operations */
     else {
diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index 71be83d71e..44d7001f0f 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, 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
@@ -230,7 +230,8 @@ int parseconfig(const char *filename,
         if(!strcmp(filename, "-")) {
           filename = (char *)"<stdin>";
         }
-        if(PARAM_HELP_REQUESTED != res) {
+        if(res != PARAM_HELP_REQUESTED &&
+           res != PARAM_ENGINES_REQUESTED) {
           const char *reason = param2text(res);
           warnf(config, "%s:%d: warning: '%s' %s\n",
                 filename, lineno, option, reason);
-- 
GitLab