Forwarding this report from Debian bug #1068478. Please see the full report for more context. [1]
Per the documentation on "Including config files", "It’s not an error if wildcards don’t result in any matching files." [2]
However, that statement does not seem to reflect the actual behavior of the code.
Some relevant snippets of code from src/config/config-parser.c:
from config_parse_line(): if (strcmp(key, "!include") == 0) return CONFIG_LINE_TYPE_INCLUDE; if (strcmp(key, "!include_try") == 0) return CONFIG_LINE_TYPE_INCLUDE_TRY;
This return value is later handled with a case statement in config_parser_apply_line(): case CONFIG_LINE_TYPE_INCLUDE: case CONFIG_LINE_TYPE_INCLUDE_TRY: (void)settings_include(ctx, fix_relative_path(value, ctx->cur_input), type == CONFIG_LINE_TYPE_INCLUDE_TRY); break;
The result of the "type == CONFIG_LINE_TYPE_INCLUDE_TRY" statement is passed as the bool ignore_errors parameter to bool ignore_errors(), so if it evaluates to false as it does when type == CONFIG_LINE_TYPE_INCLUDE, then we return an error:
case GLOB_NOMATCH:
if (ignore_errors)
return 0;
ctx->error = "No matches";
return -1;
The code is pretty straightforward in how it handles this scenario, so maybe the documentation should be clarified?
Thanks noah