printf("421 4.3.0 memory exhausted\r\n");
mailerr("421 4.3.0", "Memory exhausted");
parseaddr(s, rcpt)	char *s;	bool rcpt;{	char *p;	int l;	if (*s++ != '<')		return NULL;	p = s;	/* at-domain-list */	while (*p == '@')	{		p++;		while (*p != ',' && *p != ':' && *p != '\0')			p++;		if (*p == '\0')			return NULL;		/* Skip over , or : */		p++;	}	s = p;	/* local-part */	while (*p != '\0' && *p != '@' && *p != '>')	{		if (*p == '\\')		{			if (*++p == '\0')				return NULL;		}		else if (*p == '\"')		{			p++;			while (*p != '\0' && *p != '\"')			{				if (*p == '\\')				{					if (*++p == '\0')						return NULL;				}				p++;			}			if (*p == '\0' || *(p + 1) == '\0')				return NULL;		}		/* +detail ? */		if (*p == '+' && rcpt)			*p = '\0';		p++;	}	/* @domain */	if (*p == '@')	{		if (rcpt)			*p++ = '\0';		while (*p != '\0' && *p != '>')			p++;	}	if (*p != '>')		return NULL;	else		*p = '\0';	p++;	if (*p != '\0' && *p != ' ')		return NULL;	if (*s == '\0')		s = MAILER_DAEMON;	l = strlen(s) + 1;	p = malloc(l);	if (p == NULL)	{		printf("421 4.3.0 memory exhausted\r\n");		exit(EX_TEMPFAIL);	}	(void) strlcpy(p, s, l);	return p;}