char *whoami = "mailhub.gen";
char *ingres_date_and_time();
char *perm_malloc();
+char *pstrsave();
char *divide = "##############################################################";
#define ML_WID 72
if (s = index(name, '.'))
*s = 0;
#ifdef ATHENA
- sprintf(buf, "%s.LOCAL", name);
- if (hash_store(machines, id, strsave(buf)) < 0) {
-#else
- if (hash_store(machines, id, strsave(name)) < 0) {
+ strcat(name, ".LOCAL");
#endif
+ if (hash_store(machines, id, pstrsave(name)) < 0) {
fprintf(stderr, "Out of memory!\n");
exit(MR_NO_MEM);
}
cnt = 0;
strings = create_hash(2000);
## retrieve (id = strings.string_id, name = strings.string) {
- if (hash_store(strings, id, strsave(strtrim(name))) < 0) {
+ if (hash_store(strings, id, pstrsave(strtrim(name))) < 0) {
fprintf(stderr, "Out of memory!\n");
exit(MR_NO_MEM);
}
## type = u.potype, pid = u.pop_id, bid = u.box_id)
## where u.status != 3 {
u = (struct user *) perm_malloc(sizeof(struct user));
- u->login = strsave(strtrim(name));
- u->first = strsave(strtrim(fname));
- u->last = strsave(strtrim(lname));
+ u->login = pstrsave(strtrim(name));
+ u->first = pstrsave(strtrim(fname));
+ u->last = pstrsave(strtrim(lname));
if (mname[0] != ' ')
u->mi = mname[0];
else
if (type[0] == 'P' && (s = hash_lookup(machines, pid))) {
sprintf(buf, "%s@%s", strtrim(name), s);
- u->pobox = strsave(buf);
+ u->pobox = pstrsave(buf);
} else if (type[0] == 'S') {
u->pobox = hash_lookup(strings, bid);
} else
## type = l.acl_type, acl = l.acl_id)
## where l.active != 0 {
l = (struct list *) perm_malloc(sizeof(struct list));
- l->name = strsave(strtrim(name));
+ l->name = pstrsave(strtrim(name));
l->maillist = maillistp;
l->acl_t = type[0];
l->acl_id = acl;
exit(MR_NO_MEM);
}
if (copy)
- ns->name = strsave(s);
+ ns->name = pstrsave(s);
else
ns->name = s;
ns->keep = nodups;
}
ns = ns->next;
if (copy)
- ns->name = strsave(s);
+ ns->name = pstrsave(s);
else
ns->name = s;
ns->keep = nodups;
else if (l->acl_t == 'U' &&
(u = (struct user *) hash_lookup(users, l->acl_id)))
fprintf(out, "owner-%s: %s\n%s: ", l->name, u->login, l->name);
+ else
+ fprintf(out, "%s: ", l->name);
+
lwid = strlen(l->name) + 2;
bol = 1;
return(ret);
}
+
+/*
+ * Make a (permenant) copy of a string.
+ */
+char *
+pstrsave(s)
+ char *s;
+{
+ register int len;
+ register char *p;
+ /* Kludge for sloppy string semantics */
+ if (!s) {
+ printf("NULL != \"\" !!!!\r\n");
+ p = perm_malloc(1);
+ *p = '\0';
+ return p;
+ }
+ len = strlen(s) + 1;
+ p = perm_malloc((u_int)len);
+ if (p) bcopy(s, p, len);
+ return p;
+}