summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2021-05-16 12:52:36 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2021-06-28 00:30:02 +0100
commitd21db862df4dff3a73fb4bb4adb9d3e2bfa5c57e (patch)
tree9c4640d31f8e4b4af60a2f8dc53760eabe23210f
parent421ca3fabe03ef9b76cfbd72491b8cc98effa83e (diff)
downloadexim4-d21db862df4dff3a73fb4bb4adb9d3e2bfa5c57e.tar.gz
Config lines are immutable during -bP config dump
-rw-r--r--src/src/readconf.c20
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*/