]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tool: log when loading .curlrc in verbose mode
authorYedaya Katsman <yedaya.ka@gmail.com>
Sun, 23 Nov 2025 19:29:46 +0000 (21:29 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 25 Nov 2025 15:06:27 +0000 (16:06 +0100)
Inspired by @vszakats in
https://github.com/curl/curl/pull/19631#issuecomment-3560803674

Closes #19663

src/tool_getparam.c
src/tool_operate.c
src/tool_parsecfg.c
src/tool_parsecfg.h

index 0bb1329b54957c5213828c83b403a13486d1a028..76113e45bd0df329d9c114b7cdfb8942a4324842 100644 (file)
@@ -2225,7 +2225,7 @@ static ParameterError opt_file(struct OperationConfig *config,
       err = PARAM_BAD_USE;
     }
     else {
-      err = parseconfig(nextarg, max_recursive);
+      err = parseconfig(nextarg, max_recursive, NULL);
     }
     break;
   case C_CRLFILE: /* --crlfile */
index 69cfef96d78617f819d1eb671f8e9377a38d6a38..eb591935db4fffeb3806dd88f3f4589678e8194b 100644 (file)
@@ -2227,6 +2227,8 @@ CURLcode operate(int argc, argv_item_t argv[])
 {
   CURLcode result = CURLE_OK;
   const char *first_arg;
+  char *curlrc_path = NULL;
+  bool found_curlrc = FALSE;
 
   first_arg = argc > 1 ? convert_tchar_to_UTF8(argv[1]) : NULL;
 
@@ -2240,7 +2242,8 @@ CURLcode operate(int argc, argv_item_t argv[])
   if((argc == 1) ||
      (first_arg && strncmp(first_arg, "-q", 2) &&
       strcmp(first_arg, "--disable"))) {
-    parseconfig(NULL, CONFIG_MAX_LEVELS); /* ignore possible failure */
+    if(!parseconfig(NULL, CONFIG_MAX_LEVELS, &curlrc_path))
+      found_curlrc = TRUE;
 
     /* If we had no arguments then make sure a URL was specified in .curlrc */
     if((argc < 2) && (!global->first->url_list)) {
@@ -2254,6 +2257,11 @@ CURLcode operate(int argc, argv_item_t argv[])
   if(!result) {
     /* Parse the command line arguments */
     ParameterError res = parse_args(argc, argv);
+    if(found_curlrc) {
+      /* After parse_args so notef knows the verbosity */
+      notef("Read config file from '%s'", curlrc_path);
+      free(curlrc_path);
+    }
     if(res) {
       result = CURLE_OK;
 
index 53b63746b5acccb80405860e35ac121910f596c8..e7a00cf70883ee77b2864975e47f58cb5f5a2509 100644 (file)
@@ -81,7 +81,8 @@ static int unslashquote(const char *line, struct dynbuf *param)
 #define MAX_CONFIG_LINE_LENGTH (10*1024*1024)
 
 /* return 0 on everything-is-fine, and non-zero otherwise */
-ParameterError parseconfig(const char *filename, int max_recursive)
+ParameterError parseconfig(const char *filename, int max_recursive,
+                           char **resolved)
 {
   FILE *file = NULL;
   bool usedarg = FALSE;
@@ -264,6 +265,11 @@ ParameterError parseconfig(const char *filename, int max_recursive)
   if((err == PARAM_READ_ERROR) && filename)
     errorf("cannot read config from '%s'", filename);
 
+  if(!err && resolved) {
+    *resolved = strdup(filename);
+    if(!*resolved)
+      err = PARAM_NO_MEM;
+  }
   free(pathalloc);
   return err;
 }
index 3aad9bdd9cbd3699c4c96c42371eec9b49ffc328..860b9df38eda90d0ad86aeaa89d3992a7b6eb7ba 100644 (file)
@@ -27,7 +27,8 @@
 
 /* only allow this many levels of recursive --config use */
 #define CONFIG_MAX_LEVELS 5
-ParameterError parseconfig(const char *filename, int max_recursive);
+ParameterError parseconfig(const char *filename, int max_recursive,
+                           char **resolved);
 bool my_get_line(FILE *fp, struct dynbuf *db, bool *error);
 
 #endif /* HEADER_CURL_TOOL_PARSECFG_H */