aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/sendmail/src/stab.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1996-10-24 04:51:14 +0000
committerPeter Wemm <peter@FreeBSD.org>1996-10-24 04:51:14 +0000
commit3b50ea913d769957ab9b7033645004280e6ba4bb (patch)
treeefb7adf2e82400d24328b6391407afe19db7f244 /usr.sbin/sendmail/src/stab.c
parent70cd2f632d3327a2ce3dbaca1da559601d7b7fc1 (diff)
parent606a9934698724ead709ea8f66eeb8831ae541bf (diff)
downloadsrc-3b50ea913d769957ab9b7033645004280e6ba4bb.tar.gz
src-3b50ea913d769957ab9b7033645004280e6ba4bb.zip
This commit was generated by cvs2svn to compensate for changes in r19146,
which included commits to RCS files with non-trunk default branches.
Notes
Notes: svn path=/head/; revision=19147
Diffstat (limited to 'usr.sbin/sendmail/src/stab.c')
-rw-r--r--usr.sbin/sendmail/src/stab.c71
1 files changed, 67 insertions, 4 deletions
diff --git a/usr.sbin/sendmail/src/stab.c b/usr.sbin/sendmail/src/stab.c
index cfb02c69686b..5f707b118581 100644
--- a/usr.sbin/sendmail/src/stab.c
+++ b/usr.sbin/sendmail/src/stab.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1983, 1995 Eric P. Allman
+ * Copyright (c) 1983, 1995, 1996 Eric P. Allman
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
@@ -33,7 +33,7 @@
*/
#ifndef lint
-static char sccsid[] = "@(#)stab.c 8.6 (Berkeley) 8/31/95";
+static char sccsid[] = "@(#)stab.c 8.9 (Berkeley) 10/17/96";
#endif /* not lint */
# include "sendmail.h"
@@ -71,6 +71,7 @@ stab(name, type, op)
register STAB **ps;
register int hfunc;
register char *p;
+ int len;
extern char lower();
if (tTd(36, 5))
@@ -129,11 +130,73 @@ stab(name, type, op)
if (tTd(36, 5))
printf("entered\n");
+ /* determine size of new entry */
+#ifdef FFR_MEMORY_MISER
+ if (type >= ST_MCI)
+ len = sizeof s->s_mci;
+ else
+ len = -1;
+ switch (type)
+ {
+ case ST_CLASS:
+ len = sizeof s->s_class;
+ break;
+
+ case ST_ADDRESS:
+ len = sizeof s->s_address;
+ break;
+
+ case ST_MAILER:
+ len = sizeof s->s_mailer;
+
+ case ST_ALIAS:
+ len = sizeof s->s_alias;
+ break;
+
+ case ST_MAPCLASS:
+ len = sizeof s->s_mapclass;
+ break;
+
+ case ST_MAP:
+ len = sizeof s->s_map;
+ break;
+
+ case ST_HOSTSIG:
+ len = sizeof s->s_hostsig;
+ break;
+
+ case ST_NAMECANON:
+ len = sizeof s->s_namecanon;
+ break;
+
+ case ST_MACRO:
+ len = sizeof s->s_macro;
+ break;
+
+ case ST_RULESET:
+ len = sizeof s->s_ruleset;
+ break;
+
+ case ST_SERVICE:
+ len = sizeof s->s_service;
+ break;
+ }
+ if (len < 0)
+ {
+ syserr("stab: unknown symbol type %d", type);
+ len = sizeof s->s_value;
+ }
+ len += sizeof *s - sizeof s->s_value;
+#else
+ len = sizeof *s;
+#endif
+
/* make new entry */
- s = (STAB *) xalloc(sizeof *s);
- bzero((char *) s, sizeof *s);
+ s = (STAB *) xalloc(len);
+ bzero((char *) s, len);
s->s_name = newstr(name);
s->s_type = type;
+ s->s_len = len;
/* link it in */
*ps = s;