diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2021-05-16 12:52:36 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2021-06-28 00:30:02 +0100 |
commit | d21db862df4dff3a73fb4bb4adb9d3e2bfa5c57e (patch) | |
tree | 9c4640d31f8e4b4af60a2f8dc53760eabe23210f | |
parent | 421ca3fabe03ef9b76cfbd72491b8cc98effa83e (diff) |
Config lines are immutable during -bP config dump
-rw-r--r-- | src/src/readconf.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/src/readconf.c b/src/src/readconf.c index 5d14be811..01e85a329 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -4419,25 +4419,28 @@ print_config(BOOL admin, BOOL terse) { const int TS = terse ? 0 : 2; int indent = 0; +rmark r = NULL; -for (config_line_item * i = config_lines; i; i = i->next) +for (const config_line_item * i = config_lines; i; i = i->next) { - uschar *current; - uschar *p; + uschar * current, * p; + + if (r) store_reset(r); + r = store_mark(); /* skip over to the first non-space */ - for (current = i->line; *current && isspace(*current); ++current) + for (current = string_copy(i->line); *current && isspace(*current); ++current) ; - if (*current == '\0') + if (!*current) continue; /* Collapse runs of spaces. We stop this if we encounter one of the - * following characters: "'$, as this may indicate careful formatting */ - for (p = current; *p; ++p) + following characters: "'$, as this may indicate careful formatting */ + + for (p = current; *p; p++) if (isspace(*p)) { uschar *next; - if (!isspace(*p)) continue; if (*p != ' ') *p = ' '; for (next = p; isspace(*next); ++next) @@ -4491,6 +4494,7 @@ for (config_line_item * i = config_lines; i; i = i->next) /* rest is public */ printf("%*s%s\n", indent, "", current); } +if (r) store_reset(r); } #endif /*!MACRO_PREDEF*/ |