CONST_PTR_OFFSET(info->defaults, def->offset);
change_value = CONST_PTR_OFFSET(change_set, def->offset);
switch (ctx->scope) {
- case CONFIG_DUMP_SCOPE_ALL:
+ case CONFIG_DUMP_SCOPE_ALL_WITH_HIDDEN:
dump_default = TRUE;
break;
+ case CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN:
+ if ((def->flags & SET_FLAG_HIDDEN) == 0) {
+ /* not hidden - dump it */
+ dump_default = TRUE;
+ break;
+ }
+ /* hidden - dump default only if it's explicitly set */
+ /* fall through */
case CONFIG_DUMP_SCOPE_SET:
dump_default = *((const char *)change_value) != 0;
break;
struct master_service_settings_output;
enum config_dump_scope {
- /* Dump all settings */
- CONFIG_DUMP_SCOPE_ALL,
+ /* Dump all settings, including hidden settings */
+ CONFIG_DUMP_SCOPE_ALL_WITH_HIDDEN,
+ /* Dump all non-hidden settings */
+ CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN,
/* Dump all that have explicitly been set */
CONFIG_DUMP_SCOPE_SET,
/* Dump only settings that differ from defaults */
MASTER_SERVICE_FLAG_DONT_SEND_STATS |
MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME;
- enum config_dump_scope scope = CONFIG_DUMP_SCOPE_ALL;
+ enum config_dump_scope scope = CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN;
const char *orig_config_path, *config_path, *module;
ARRAY(const char *) module_names;
struct config_filter filter;
} else if (argv[optind] != NULL) {
/* print only a single config setting */
setting_name_filters = argv+optind;
+ if (scope == CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN)
+ scope = CONFIG_DUMP_SCOPE_ALL_WITH_HIDDEN;
} else if (!simple_output) {
/* print the config file path before parsing it, so in case
of errors it's still shown */
printf("# Hostname: %s\n", my_hostdomain());
if (!config_path_specified)
check_wrong_config(config_path);
- if (scope == CONFIG_DUMP_SCOPE_ALL)
+ if (scope == CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN)
printf("# NOTE: Send doveconf -n output instead when asking for help.\n");
fflush(stdout);
ret2 = config_dump_human(&filter, wanted_modules, scope, NULL, hide_passwords);