From: Willy Tarreau Date: Mon, 5 May 2025 14:13:33 +0000 (+0200) Subject: MINOR: cfgparse: visually show the input line on empty args X-Git-Tag: v3.2-dev15~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08d3caf30;p=thirdparty%2Fhaproxy.git MINOR: cfgparse: visually show the input line on empty args Now when an empty arg is found on a line, we emit the sanitized input line and the position of the first empty arg so as to help the user figure the cause (likely an empty environment variable). Co-authored-by: Valentine Krasnobaeva --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 2123dd4c5..3421a0997 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2066,11 +2066,17 @@ next_line: } for (check_arg = 0; check_arg < arg; check_arg++) { - if (*args[check_arg]) - continue; - ha_warning("parsing [%s:%d]: argument number %d is empty and marks the end of the argument list; all subsequent arguments will be ignored.\n", - file, linenum, check_arg + 1); - break; + if (!*args[check_arg]) { + /* if an empty arg was found, its pointer is in */ + size_t newpos; + + /* sanitize input line in-place */ + newpos = sanitize_for_printing(line, errptr - line, 80); + ha_warning("parsing [%s:%d]: argument number %d at position %d is empty and marks the end of the " + "argument list; all subsequent arguments will be ignored:\n %s\n %*s\n", + file, linenum, check_arg + 1, (int)(errptr - thisline + 1), line, (int)(newpos+1), "^"); + break; + } } /* everything's OK */