summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sendmail/src/map.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sendmail/src/map.c')
-rw-r--r--usr.sbin/sendmail/src/map.c36
1 files changed, 13 insertions, 23 deletions
diff --git a/usr.sbin/sendmail/src/map.c b/usr.sbin/sendmail/src/map.c
index 01ba411..a2b3337 100644
--- a/usr.sbin/sendmail/src/map.c
+++ b/usr.sbin/sendmail/src/map.c
@@ -33,7 +33,7 @@
*/
#ifndef lint
-static char sccsid[] = "@(#)map.c 8.25 (Berkeley) 4/17/94";
+static char sccsid[] = "@(#)map.c 8.25.1.1 (Berkeley) 2/10/95";
#endif /* not lint */
#include "sendmail.h"
@@ -189,20 +189,13 @@ map_parseargs(map, ap)
** av -- arguments to interpolate into buf.
**
** Returns:
-** Pointer to rewritten result.
+** Pointer to rewritten result. This is static data that
+** should be copied if it is to be saved!
**
** Side Effects:
** none.
*/
-struct rwbuf
-{
- int rwb_len; /* size of buffer */
- char *rwb_buf; /* ptr to buffer */
-};
-
-struct rwbuf RwBufs[2]; /* buffers for rewriting output */
-
char *
map_rewrite(map, s, slen, av)
register MAP *map;
@@ -214,9 +207,10 @@ map_rewrite(map, s, slen, av)
register char c;
char **avp;
register char *ap;
- register struct rwbuf *rwb;
int i;
int len;
+ static int buflen = -1;
+ static char *buf = NULL;
if (tTd(39, 1))
{
@@ -231,10 +225,6 @@ map_rewrite(map, s, slen, av)
printf("\n");
}
- rwb = RwBufs;
- if (av == NULL)
- rwb++;
-
/* count expected size of output (can safely overestimate) */
i = len = slen;
if (av != NULL)
@@ -258,16 +248,16 @@ map_rewrite(map, s, slen, av)
}
if (map->map_app != NULL)
len += strlen(map->map_app);
- if (rwb->rwb_len < ++len)
+ if (buflen < ++len)
{
/* need to malloc additional space */
- rwb->rwb_len = len;
- if (rwb->rwb_buf != NULL)
- free(rwb->rwb_buf);
- rwb->rwb_buf = xalloc(rwb->rwb_len);
+ buflen = len;
+ if (buf != NULL)
+ free(buf);
+ buf = xalloc(buflen);
}
- bp = rwb->rwb_buf;
+ bp = buf;
if (av == NULL)
{
bcopy(s, bp, slen);
@@ -307,8 +297,8 @@ map_rewrite(map, s, slen, av)
else
*bp = '\0';
if (tTd(39, 1))
- printf("map_rewrite => %s\n", rwb->rwb_buf);
- return rwb->rwb_buf;
+ printf("map_rewrite => %s\n", buf);
+ return buf;
}
/*
** INITMAPS -- initialize for aliasing
OpenPOWER on IntegriCloud