git://git.exim.org
/
exim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1058096
)
tidying
author
Jeremy Harris
<jgh146exb@wizmail.org>
Thu, 20 Jan 2022 11:15:36 +0000
(11:15 +0000)
committer
Jeremy Harris
<jgh146exb@wizmail.org>
Thu, 20 Jan 2022 20:53:50 +0000
(20:53 +0000)
src/src/expand.c
patch
|
blob
|
history
diff --git
a/src/src/expand.c
b/src/src/expand.c
index 810fc1cde0dc9881f273c19ffe7502194ea54d07..f7c8f05374e03f28c15911f631830dbb60e13200 100644
(file)
--- a/
src/src/expand.c
+++ b/
src/src/expand.c
@@
-4531,7
+4531,6
@@
while (*s)
yield = string_catn(yield, t, s - t);
if (*s != 0) s += 2;
}
yield = string_catn(yield, t, s - t);
if (*s != 0) s += 2;
}
-
else
{
uschar ch[1];
else
{
uschar ch[1];
@@
-4544,22
+4543,20
@@
while (*s)
s++;
yield = string_catn(yield, ch, 1);
}
s++;
yield = string_catn(yield, ch, 1);
}
-
continue;
}
continue;
}
-
/*
{*/
+
/*{
{*/
/* Anything other than $ is just copied verbatim, unless we are
looking for a terminating } character. */
/* Anything other than $ is just copied verbatim, unless we are
looking for a terminating } character. */
- /*{*/
if (ket_ends && *s == '}') break;
if (*s != '$' || !honour_dollar)
{
int i = 1; /*{*/
if (ket_ends && *s == '}') break;
if (*s != '$' || !honour_dollar)
{
int i = 1; /*{*/
- for
(const uschar * t = s+1; *t && *t != '$' && *t != '}' && *t != '\\'; t++)
- i++;
+ for
(const uschar * t = s+1;
+
*t && *t != '$' && *t != '}' && *t != '\\'; t++)
i++;
DEBUG(D_expand)
DEBUG(D_noutf8)
DEBUG(D_expand)
DEBUG(D_noutf8)
@@
-4582,11
+4579,10
@@
while (*s)
"$header_". A non-existent header yields a NULL value; nothing is
inserted. */ /*}*/
"$header_". A non-existent header yields a NULL value; nothing is
inserted. */ /*}*/
- if (isalpha(
(*(++s))
))
+ if (isalpha(
*++s
))
{
const uschar * value;
{
const uschar * value;
- int len;
- int newsize = 0;
+ int newsize = 0, len;
gstring * g = NULL;
uschar * t;
gstring * g = NULL;
uschar * t;
@@
-4627,7
+4623,7
@@
while (*s)
But there is no error here - nothing gets inserted. */
if (!value)
But there is no error here - nothing gets inserted. */
if (!value)
- { /*{*/
+ {
/*{*/
if (Ustrchr(name, '}')) malformed_header = TRUE;
continue;
}
if (Ustrchr(name, '}')) malformed_header = TRUE;
continue;
}
@@
-4685,12
+4681,12
@@
while (*s)
/* After { there can be various things, but they all start with
an initial word, except for a number for a string match variable. */ /*}*/
/* After { there can be various things, but they all start with
an initial word, except for a number for a string match variable. */ /*}*/
- if (isdigit(
(*(++s))
))
+ if (isdigit(
*++s
))
{
int n;
{
int n;
- s = read_cnumber(&n, s);
/*
{*/
+ s = read_cnumber(&n, s);
/*{
{*/
if (*s++ != '}')
if (*s++ != '}')
- {
/*{*/
+ {
expand_string_message = US"} expected after number";
goto EXPAND_FAILED;
}
expand_string_message = US"} expected after number";
goto EXPAND_FAILED;
}
@@
-5077,15
+5073,15
@@
while (*s)
or ${perl{sub}{arg1}{arg2}} or up to a maximum of EXIM_PERL_MAX_ARGS
arguments (defined below). */
or ${perl{sub}{arg1}{arg2}} or up to a maximum of EXIM_PERL_MAX_ARGS
arguments (defined below). */
-
#define EXIM_PERL_MAX_ARGS 8
+#define EXIM_PERL_MAX_ARGS 8
case EITEM_PERL:
case EITEM_PERL:
-
#ifndef EXIM_PERL
-
expand_string_message = US"\"${perl\" encountered, but this facility "
/*}*/
- "is not included in this binary";
- goto EXPAND_FAILED;
+#ifndef EXIM_PERL
+
expand_string_message = US"\"${perl\" encountered, but this facility "
/*}*/
+
"is not included in this binary";
+
goto EXPAND_FAILED;
-
#else /* EXIM_PERL */
+#else /* EXIM_PERL */
{
uschar *sub_arg[EXIM_PERL_MAX_ARGS + 2];
gstring *new_yield;
{
uschar *sub_arg[EXIM_PERL_MAX_ARGS + 2];
gstring *new_yield;
@@
-5158,7
+5154,7
@@
while (*s)
yield = new_yield;
continue;
}
yield = new_yield;
continue;
}
-
#endif /* EXIM_PERL */
+#endif /* EXIM_PERL */
/* Transform email address to "prvs" scheme to use
as BATV-signed return path */
/* Transform email address to "prvs" scheme to use
as BATV-signed return path */
@@
-5869,8
+5865,7
@@
while (*s)
PCRE2_SIZE roffset;
pcre2_match_data * md;
int err, emptyopt;
PCRE2_SIZE roffset;
pcre2_match_data * md;
int err, emptyopt;
- uschar *subject;
- uschar *sub[3];
+ uschar * subject, * sub[3];
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
@@
-5908,7
+5903,7
@@
while (*s)
PCRE2_SIZE * ovec = pcre2_get_ovector_pointer(md);
int n = pcre2_match(re, (PCRE2_SPTR)subject, slen, moffset + moffsetextra,
PCRE_EOPT | emptyopt, md, pcre_mtc_ctx);
PCRE2_SIZE * ovec = pcre2_get_ovector_pointer(md);
int n = pcre2_match(re, (PCRE2_SPTR)subject, slen, moffset + moffsetextra,
PCRE_EOPT | emptyopt, md, pcre_mtc_ctx);
- uschar *insert;
+ uschar *
insert;
/* No match - if we previously set PCRE_NOTEMPTY after a null match, this
is not necessarily the end. We want to repeat the match from one
/* No match - if we previously set PCRE_NOTEMPTY after a null match, this
is not necessarily the end. We want to repeat the match from one
@@
-5943,7
+5938,9
@@
while (*s)
/* Copy the characters before the match, plus the expanded insertion. */
/* Copy the characters before the match, plus the expanded insertion. */
- yield = string_catn(yield, subject + moffset, ovec[0] - moffset);
+ if (ovec[0] > moffset)
+ yield = string_catn(yield, subject + moffset, ovec[0] - moffset);
+
if (!(insert = expand_string(sub[2])))
goto EXPAND_FAILED;
yield = string_cat(yield, insert);
if (!(insert = expand_string(sub[2])))
goto EXPAND_FAILED;
yield = string_cat(yield, insert);
@@
-5980,8
+5977,7
@@
while (*s)
{
int field_number = 1;
BOOL field_number_set = FALSE;
{
int field_number = 1;
BOOL field_number_set = FALSE;
- uschar *save_lookup_value = lookup_value;
- uschar *sub[3];
+ uschar * save_lookup_value = lookup_value, * sub[3];
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
@@
-6007,7
+6003,7
@@
while (*s)
if (skipping)
{
if (skipping)
{
- for (int j = 5; j > 0 && *s == '{'; j--) /*'}'*/
+ for (int j = 5; j > 0 && *s == '{'; j--)
/*'}'*/
{
if (!expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok))
goto EXPAND_FAILED; /*'{'*/
{
if (!expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok))
goto EXPAND_FAILED; /*'{'*/
@@
-6018,13
+6014,13
@@
while (*s)
}
Uskip_whitespace(&s);
}
}
Uskip_whitespace(&s);
}
- if ( Ustrncmp(s, "fail", 4) == 0 /*'{'*/
+ if ( Ustrncmp(s, "fail", 4) == 0
/*'{'*/
&& (s[4] == '}' || s[4] == ' ' || s[4] == '\t' || !s[4])
)
{
s += 4;
Uskip_whitespace(&s);
&& (s[4] == '}' || s[4] == ' ' || s[4] == '\t' || !s[4])
)
{
s += 4;
Uskip_whitespace(&s);
- } /*'{'*/
+ }
/*'{'*/
if (*s != '}')
{
expand_string_message = US"missing '}' closing extract";
if (*s != '}')
{
expand_string_message = US"missing '}' closing extract";
@@
-6034,10
+6030,10
@@
while (*s)
else for (int i = 0, j = 2; i < j; i++) /* Read the proper number of arguments */
{
else for (int i = 0, j = 2; i < j; i++) /* Read the proper number of arguments */
{
- if (Uskip_whitespace(&s) == '{')
/*'}'*/
+ if (Uskip_whitespace(&s) == '{') /*'}'*/
{
if (!(sub[i] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok)))
{
if (!(sub[i] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok)))
- goto EXPAND_FAILED; /*'{'*/
+ goto EXPAND_FAILED;
/*'{'*/
if (*s++ != '}')
{
expand_string_message = string_sprintf(
if (*s++ != '}')
{
expand_string_message = string_sprintf(
@@
-6054,7
+6050,7
@@
while (*s)
{
int len;
int x = 0;
{
int len;
int x = 0;
- uschar *p = sub[0];
+ uschar *
p = sub[0];
Uskip_whitespace(&p);
sub[0] = p;
Uskip_whitespace(&p);
sub[0] = p;
@@
-6063,7
+6059,7
@@
while (*s)
while (len > 0 && isspace(p[len-1])) len--;
p[len] = 0;
while (len > 0 && isspace(p[len-1])) len--;
p[len] = 0;
- if (
*p == 0
)
+ if (
!*p
)
{
expand_string_message = US"first argument of \"extract\" must "
"not be empty";
{
expand_string_message = US"first argument of \"extract\" must "
"not be empty";
@@
-6075,8
+6071,8
@@
while (*s)
field_number = -1;
p++;
}
field_number = -1;
p++;
}
- while (*p
!= 0
&& isdigit(*p)) x = x * 10 + *p++ - '0';
- if (
*p == 0
)
+ while (*p && isdigit(*p)) x = x * 10 + *p++ - '0';
+ if (
!*p
)
{
field_number *= x;
if (fmt == extract_basic) j = 3; /* Need 3 args */
{
field_number *= x;
if (fmt == extract_basic) j = 3; /* Need 3 args */
@@
-6214,8
+6210,7
@@
while (*s)
case EITEM_LISTEXTRACT:
{
int field_number = 1;
case EITEM_LISTEXTRACT:
{
int field_number = 1;
- uschar *save_lookup_value = lookup_value;
- uschar *sub[2];
+ uschar * save_lookup_value = lookup_value, * sub[2];
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
@@
-6223,15
+6218,15
@@
while (*s)
for (int i = 0; i < 2; i++)
{
for (int i = 0; i < 2; i++)
{
- if (Uskip_whitespace(&s) != '{')
/*'}'
*/
+ if (Uskip_whitespace(&s) != '{')
/*}
*/
{
expand_string_message = string_sprintf(
{
expand_string_message = string_sprintf(
- "missing '{' for arg %d of listextract", i+1);
+ "missing '{' for arg %d of listextract", i+1);
/*}*/
goto EXPAND_FAILED_CURLY;
}
sub[i] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
goto EXPAND_FAILED_CURLY;
}
sub[i] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
- if (!sub[i]) goto EXPAND_FAILED;
/*
{*/
+ if (!sub[i]) goto EXPAND_FAILED;
/*{
{*/
if (*s++ != '}')
{
expand_string_message = string_sprintf(
if (*s++ != '}')
{
expand_string_message = string_sprintf(
@@
-6328,8
+6323,7
@@
while (*s)
#ifndef DISABLE_TLS
case EITEM_CERTEXTRACT:
{
#ifndef DISABLE_TLS
case EITEM_CERTEXTRACT:
{
- uschar *save_lookup_value = lookup_value;
- uschar *sub[2];
+ uschar * save_lookup_value = lookup_value, * sub[2];
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
int save_expand_nmax =
save_expand_strings(save_expand_nstring, save_expand_nlength);
@@
-6337,10
+6331,10
@@
while (*s)
if (Uskip_whitespace(&s) != '{') /*}*/
{
expand_string_message = US"missing '{' for field arg of certextract";
if (Uskip_whitespace(&s) != '{') /*}*/
{
expand_string_message = US"missing '{' for field arg of certextract";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
sub[0] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
}
sub[0] = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
- if (!sub[0]) goto EXPAND_FAILED;
/*
{*/
+ if (!sub[0]) goto EXPAND_FAILED;
/*{
{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing field arg of certextract";
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing field arg of certextract";
@@
-6363,7
+6357,7
@@
while (*s)
if (Uskip_whitespace(&s) != '{') /*}*/
{
expand_string_message = US"missing '{' for cert variable arg of certextract";
if (Uskip_whitespace(&s) != '{') /*}*/
{
expand_string_message = US"missing '{' for cert variable arg of certextract";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
if (*++s != '$')
{
}
if (*++s != '$')
{
@@
-6372,7
+6366,7
@@
while (*s)
goto EXPAND_FAILED;
}
sub[1] = expand_string_internal(s+1, TRUE, &s, skipping, FALSE, &resetok);
goto EXPAND_FAILED;
}
sub[1] = expand_string_internal(s+1, TRUE, &s, skipping, FALSE, &resetok);
- if (!sub[1]) goto EXPAND_FAILED;
/*
{*/
+ if (!sub[1]) goto EXPAND_FAILED;
/*{
{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing cert variable arg of certextract";
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing cert variable arg of certextract";
@@
-6411,27
+6405,24
@@
while (*s)
case EITEM_MAP:
case EITEM_REDUCE:
{
case EITEM_MAP:
case EITEM_REDUCE:
{
- int sep = 0;
- int save_ptr = gstring_length(yield);
+ int sep = 0, save_ptr = gstring_length(yield);
uschar outsep[2] = { '\0', '\0' };
const uschar *list, *expr, *temp;
uschar outsep[2] = { '\0', '\0' };
const uschar *list, *expr, *temp;
- uschar *save_iterate_item = iterate_item;
- uschar *save_lookup_value = lookup_value;
+ uschar *
save_iterate_item = iterate_item;
+ uschar *
save_lookup_value = lookup_value;
Uskip_whitespace(&s);
Uskip_whitespace(&s);
- if (*s++ != '{') /*}*/
+ if (*s++ != '{')
/*}*/
{
expand_string_message =
string_sprintf("missing '{' for first arg of %s", name);
{
expand_string_message =
string_sprintf("missing '{' for first arg of %s", name);
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
if (!(list = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok)))
}
if (!(list = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok)))
- goto EXPAND_FAILED;
- /*{*/
+ goto EXPAND_FAILED; /*{{*/
if (*s++ != '}')
{
if (*s++ != '}')
{
- /*{*/
expand_string_message =
string_sprintf("missing '}' closing first arg of %s", name);
goto EXPAND_FAILED_CURLY;
expand_string_message =
string_sprintf("missing '}' closing first arg of %s", name);
goto EXPAND_FAILED_CURLY;
@@
-6441,14
+6432,14
@@
while (*s)
{
uschar * t;
Uskip_whitespace(&s);
{
uschar * t;
Uskip_whitespace(&s);
- if (*s++ != '{')
+ if (*s++ != '{')
/*}*/
{
expand_string_message = US"missing '{' for second arg of reduce";
{
expand_string_message = US"missing '{' for second arg of reduce";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
t = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok);
if (!t) goto EXPAND_FAILED;
}
t = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok);
if (!t) goto EXPAND_FAILED;
- lookup_value = t;
+ lookup_value = t;
/*{{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing second arg of reduce";
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing second arg of reduce";
@@
-6457,7
+6448,7
@@
while (*s)
}
Uskip_whitespace(&s);
}
Uskip_whitespace(&s);
- if (*s++ != '{') /*}*/
+ if (*s++ != '{')
/*}*/
{
expand_string_message =
string_sprintf("missing '{' for last arg of %s", name); /*}*/
{
expand_string_message =
string_sprintf("missing '{' for last arg of %s", name); /*}*/
@@
-6484,18
+6475,18
@@
while (*s)
goto EXPAND_FAILED;
}
goto EXPAND_FAILED;
}
- Uskip_whitespace(&s);
/*
{*/
+ Uskip_whitespace(&s);
/*{{
{*/
if (*s++ != '}')
if (*s++ != '}')
- {
/*{*/
+ {
expand_string_message = string_sprintf("missing } at end of condition "
"or expression inside \"%s\"; could be an unquoted } in the content",
name);
goto EXPAND_FAILED;
}
expand_string_message = string_sprintf("missing } at end of condition "
"or expression inside \"%s\"; could be an unquoted } in the content",
name);
goto EXPAND_FAILED;
}
- Uskip_whitespace(&s);
/*
{*/
+ Uskip_whitespace(&s);
/*{
{*/
if (*s++ != '}')
if (*s++ != '}')
- {
/*{*/
+ {
expand_string_message = string_sprintf("missing } at end of \"%s\"",
name);
goto EXPAND_FAILED;
expand_string_message = string_sprintf("missing } at end of \"%s\"",
name);
goto EXPAND_FAILED;
@@
-6575,7
+6566,7
@@
while (*s)
too many; backup and end the loop. Otherwise arrange to double the
separator. */
too many; backup and end the loop. Otherwise arrange to double the
separator. */
- if (
temp[seglen] == '\0'
) { yield->ptr--; break; }
+ if (
!temp[seglen]
) { yield->ptr--; break; }
yield = string_catn(yield, outsep, 1);
temp += seglen + 1;
}
yield = string_catn(yield, outsep, 1);
temp += seglen + 1;
}
@@
-6609,23
+6600,21
@@
while (*s)
case EITEM_SORT:
{
case EITEM_SORT:
{
- int cond_type;
- int sep = 0;
- const uschar *srclist, *cmp, *xtract;
+ int sep = 0, cond_type;
+ const uschar * srclist, * cmp, * xtract;
uschar * opname, * srcitem;
uschar * opname, * srcitem;
- const uschar *dstlist = NULL, *dstkeylist = NULL;
- uschar * tmp;
- uschar *save_iterate_item = iterate_item;
+ const uschar * dstlist = NULL, * dstkeylist = NULL;
+ uschar * tmp, * save_iterate_item = iterate_item;
Uskip_whitespace(&s);
Uskip_whitespace(&s);
- if (*s++ != '{')
+ if (*s++ != '{')
/*}*/
{
expand_string_message = US"missing '{' for list arg of sort";
{
expand_string_message = US"missing '{' for list arg of sort";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
srclist = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok);
}
srclist = expand_string_internal(s, TRUE, &s, skipping, TRUE, &resetok);
- if (!srclist) goto EXPAND_FAILED;
+ if (!srclist) goto EXPAND_FAILED;
/*{{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing list arg of sort";
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing list arg of sort";
@@
-6633,14
+6622,14
@@
while (*s)
}
Uskip_whitespace(&s);
}
Uskip_whitespace(&s);
- if (*s++ != '{')
+ if (*s++ != '{')
/*}*/
{
expand_string_message = US"missing '{' for comparator arg of sort";
{
expand_string_message = US"missing '{' for comparator arg of sort";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
cmp = expand_string_internal(s, TRUE, &s, skipping, FALSE, &resetok);
}
cmp = expand_string_internal(s, TRUE, &s, skipping, FALSE, &resetok);
- if (!cmp) goto EXPAND_FAILED;
+ if (!cmp) goto EXPAND_FAILED;
/*{{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing comparator arg of sort";
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing comparator arg of sort";
@@
-6667,25
+6656,25
@@
while (*s)
}
Uskip_whitespace(&s);
}
Uskip_whitespace(&s);
- if (*s++ != '{')
+ if (*s++ != '{')
/*}*/
{
expand_string_message = US"missing '{' for extractor arg of sort";
{
expand_string_message = US"missing '{' for extractor arg of sort";
- goto EXPAND_FAILED_CURLY;
+ goto EXPAND_FAILED_CURLY;
/*}*/
}
xtract = s;
if (!(tmp = expand_string_internal(s, TRUE, &s, TRUE, TRUE, &resetok)))
goto EXPAND_FAILED;
xtract = string_copyn(xtract, s - xtract);
}
xtract = s;
if (!(tmp = expand_string_internal(s, TRUE, &s, TRUE, TRUE, &resetok)))
goto EXPAND_FAILED;
xtract = string_copyn(xtract, s - xtract);
-
+ /*{{*/
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing extractor arg of sort";
goto EXPAND_FAILED_CURLY;
}
if (*s++ != '}')
{
expand_string_message = US"missing '}' closing extractor arg of sort";
goto EXPAND_FAILED_CURLY;
}
-
/*
{*/
+
/*{
{*/
if (*s++ != '}')
if (*s++ != '}')
- {
/*{*/
+ {
expand_string_message = US"missing } at end of \"sort\"";
goto EXPAND_FAILED;
}
expand_string_message = US"missing } at end of \"sort\"";
goto EXPAND_FAILED;
}
@@
-6695,8
+6684,7
@@
while (*s)
while ((srcitem = string_nextinlist(&srclist, &sep, NULL, 0)))
{
uschar * srcfield, * dstitem;
while ((srcitem = string_nextinlist(&srclist, &sep, NULL, 0)))
{
uschar * srcfield, * dstitem;
- gstring * newlist = NULL;
- gstring * newkeylist = NULL;
+ gstring * newlist = NULL, * newkeylist = NULL;
DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", name, srcitem);
DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", name, srcitem);
@@
-6795,13
+6783,13
@@
while (*s)
#else /* EXPAND_DLFUNC */
{
#else /* EXPAND_DLFUNC */
{
- tree_node *t;
- exim_dlfunc_t *func;
- uschar *result;
+ tree_node *
t;
+ exim_dlfunc_t *
func;
+ uschar *
result;
int status, argc;
int status, argc;
- uschar *argv[EXPAND_DLFUNC_MAX_ARGS + 3];
+ uschar *
argv[EXPAND_DLFUNC_MAX_ARGS + 3];
- if (
(expand_forbid & RDO_DLFUNC) != 0
)
+ if (
expand_forbid & RDO_DLFUNC
)
{
expand_string_message =
US"dynamically-loaded functions are not permitted";
{
expand_string_message =
US"dynamically-loaded functions are not permitted";
@@
-6825,7
+6813,7
@@
while (*s)
if (!(t = tree_search(dlobj_anchor, argv[0])))
{
if (!(t = tree_search(dlobj_anchor, argv[0])))
{
- void *handle = dlopen(CS argv[0], RTLD_LAZY);
+ void *
handle = dlopen(CS argv[0], RTLD_LAZY);
if (!handle)
{
expand_string_message = string_sprintf("dlopen \"%s\" failed: %s",
if (!handle)
{
expand_string_message = string_sprintf("dlopen \"%s\" failed: %s",
@@
-6859,15
+6847,9
@@
while (*s)
resetok = FALSE;
result = NULL;
resetok = FALSE;
result = NULL;
- for (argc = 0; argv[argc]; argc++);
- status = func(&result, argc - 2, &argv[2]);
- if(status == OK)
- {
- if (!result) result = US"";
- yield = string_cat(yield, result);
- continue;
- }
- else
+ for (argc = 0; argv[argc]; argc++) ;
+
+ if ((status = func(&result, argc - 2, &argv[2])) != OK)
{
expand_string_message = result ? result : US"(no message)";
if (status == FAIL_FORCED)
{
expand_string_message = result ? result : US"(no message)";
if (status == FAIL_FORCED)
@@
-6877,6
+6859,9
@@
while (*s)
argv[0], argv[1], status, expand_string_message);
goto EXPAND_FAILED;
}
argv[0], argv[1], status, expand_string_message);
goto EXPAND_FAILED;
}
+
+ if (result) yield = string_cat(yield, result);
+ continue;
}
#endif /* EXPAND_DLFUNC */
}
#endif /* EXPAND_DLFUNC */
@@
-6889,10
+6874,10
@@
while (*s)
goto EXPAND_FAILED;
key = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
goto EXPAND_FAILED;
key = expand_string_internal(s+1, TRUE, &s, skipping, TRUE, &resetok);
- if (!key) goto EXPAND_FAILED;
/*
{*/
+ if (!key) goto EXPAND_FAILED;
/*{
{*/
if (*s++ != '}')
{
if (*s++ != '}')
{
- expand_string_message = US"missing '
{' for name arg of env"; /*}*/
+ expand_string_message = US"missing '
}' for name arg of env";
goto EXPAND_FAILED_CURLY;
}
goto EXPAND_FAILED_CURLY;
}