git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Recast more internal string routines to use growable-strings
[exim.git]
/
src
/
src
/
header.c
diff --git
a/src/src/header.c
b/src/src/header.c
index 1b6bf56d1d2eba734c1f217b456a8205090f5bc3..74df32ca1decb2c7f52f9420910b2d5eb44a4a6c 100644
(file)
--- a/
src/src/header.c
+++ b/
src/src/header.c
@@
-1,10
+1,8
@@
-/* $Cambridge: exim/src/src/header.c,v 1.8 2009/11/16 19:50:37 nm4 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 20
09
*/
+/* Copyright (c) University of Cambridge 1995 - 20
16
*/
/* See the file NOTICE for conditions of use and distribution. */
/* See the file NOTICE for conditions of use and distribution. */
@@
-30,7
+28,7
@@
Returns: TRUE or FALSE
*/
BOOL
*/
BOOL
-header_testname(header_line *h, uschar *name, int len, BOOL notdel)
+header_testname(header_line *h,
const
uschar *name, int len, BOOL notdel)
{
uschar *tt;
if (h->type == '*' && notdel) return FALSE;
{
uschar *tt;
if (h->type == '*' && notdel) return FALSE;
@@
-46,7
+44,8
@@
return *tt == ':';
header_testname() above. */
BOOL
header_testname() above. */
BOOL
-header_testname_incomplete(header_line *h, uschar *name, int len, BOOL notdel)
+header_testname_incomplete(header_line *h, const uschar *name,
+ int len, BOOL notdel)
{
if (h->type == '*' && notdel) return FALSE;
if (h->text == NULL || strncmpic(h->text, name, len) != 0) return FALSE;
{
if (h->type == '*' && notdel) return FALSE;
if (h->text == NULL || strncmpic(h->text, name, len) != 0) return FALSE;
@@
-92,23
+91,25
@@
Returns: nothing
static void
header_add_backend(BOOL after, uschar *name, BOOL topnot, int type,
static void
header_add_backend(BOOL after, uschar *name, BOOL topnot, int type,
- char *format, va_list ap)
+ c
onst c
har *format, va_list ap)
{
header_line *h, *new;
header_line **hptr;
uschar *p, *q;
uschar buffer[HEADER_ADD_BUFFER_SIZE];
{
header_line *h, *new;
header_line **hptr;
uschar *p, *q;
uschar buffer[HEADER_ADD_BUFFER_SIZE];
+gstring gs = { .size = HEADER_ADD_BUFFER_SIZE, .ptr = 0, .s = buffer };
-if (
header_last == NULL
) return;
+if (
!header_last
) return;
-if (!string_vformat(
buffer, sizeof(buffer)
, format, ap))
+if (!string_vformat(
&gs, FALSE
, format, ap))
log_write(0, LOG_MAIN|LOG_PANIC_DIE, "string too long in header_add: "
log_write(0, LOG_MAIN|LOG_PANIC_DIE, "string too long in header_add: "
- "%.100s ...", buffer);
+ "%.100s ...", string_from_gstring(&gs));
+string_from_gstring(&gs);
/* Find where to insert this header */
/* Find where to insert this header */
-if (
name == NULL
)
+if (
!name
)
{
if (after)
{
{
if (after)
{
@@
-120,10
+121,10
@@
if (name == NULL)
hptr = &header_list;
/* header_list->text can be NULL if we get here between when the new
hptr = &header_list;
/* header_list->text can be NULL if we get here between when the new
- received header is allocated and when it is ac
ut
ally filled in. We want
+ received header is allocated and when it is ac
tu
ally filled in. We want
that header to be first, so skip it for now. */
that header to be first, so skip it for now. */
- if (
header_list->text == NULL
)
+ if (
!header_list->text
)
hptr = &header_list->next;
h = *hptr;
}
hptr = &header_list->next;
h = *hptr;
}
@@
-133,17
+134,16
@@
else
{
int len = Ustrlen(name);
{
int len = Ustrlen(name);
- /* Find the first non-deleted header with
t
the correct name. */
+ /* Find the first non-deleted header with the correct name. */
- for (hptr = &header_list; (h = *hptr) != NULL; hptr = &(h->next))
- {
- if (header_testname(h, name, len, TRUE)) break;
- }
+ for (hptr = &header_list; (h = *hptr); hptr = &h->next)
+ if (header_testname(h, name, len, TRUE))
+ break;
/* Handle the case where no header is found. To insert at the bottom, nothing
needs to be done. */
/* Handle the case where no header is found. To insert at the bottom, nothing
needs to be done. */
- if (
h == NULL
)
+ if (
!h
)
{
if (topnot)
{
{
if (topnot)
{
@@
-156,14
+156,12
@@
else
true. In this case, we want to include deleted headers in the block. */
else if (after)
true. In this case, we want to include deleted headers in the block. */
else if (after)
- {
for (;;)
{
for (;;)
{
- if (
h->next == NULL
|| !header_testname(h, name, len, FALSE)) break;
+ if (
!h->next
|| !header_testname(h, name, len, FALSE)) break;
hptr = &(h->next);
h = h->next;
}
hptr = &(h->next);
h = h->next;
}
- }
}
/* Loop for multiple header lines, taking care about continuations. At this
}
/* Loop for multiple header lines, taking care about continuations. At this
@@
-175,7
+173,7
@@
for (p = q = buffer; *p != 0; )
for (;;)
{
q = Ustrchr(q, '\n');
for (;;)
{
q = Ustrchr(q, '\n');
- if (
q == NULL
) q = p + Ustrlen(p);
+ if (
!q
) q = p + Ustrlen(p);
if (*(++q) != ' ' && *q != '\t') break;
}
if (*(++q) != ' ' && *q != '\t') break;
}
@@
-188,7
+186,7
@@
for (p = q = buffer; *p != 0; )
*hptr = new;
hptr = &(new->next);
*hptr = new;
hptr = &(new->next);
- if (
h == NULL
) header_last = new;
+ if (
!h
) header_last = new;
p = q;
}
}
p = q;
}
}
@@
-213,7
+211,7
@@
Returns: nothing
void
header_add_at_position(BOOL after, uschar *name, BOOL topnot, int type,
void
header_add_at_position(BOOL after, uschar *name, BOOL topnot, int type,
- char *format, ...)
+ c
onst c
har *format, ...)
{
va_list ap;
va_start(ap, format);
{
va_list ap;
va_start(ap, format);
@@
-238,7
+236,7
@@
Returns: nothing
*/
void
*/
void
-header_add(int type, char *format, ...)
+header_add(int type, c
onst c
har *format, ...)
{
va_list ap;
va_start(ap, format);
{
va_list ap;
va_start(ap, format);
@@
-264,7
+262,7
@@
Returns: nothing
*/
void
*/
void
-header_remove(int occ, uschar *name)
+header_remove(int occ,
const
uschar *name)
{
header_line *h;
int hcount = 0;
{
header_line *h;
int hcount = 0;
@@
-451,10
+449,11
@@
for (s = strings; s != NULL; s = s->next)
va_start(ap, count);
for (i = 0; i < count; i++)
va_start(ap, count);
for (i = 0; i < count; i++)
- {
if (one_pattern_match(name, slen, has_addresses, va_arg(ap, uschar *)))
if (one_pattern_match(name, slen, has_addresses, va_arg(ap, uschar *)))
+ {
+ va_end(ap);
return cond;
return cond;
- }
+
}
va_end(ap);
return !cond;
va_end(ap);
return !cond;