len1 = PL_strlen(s1); len2 = PL_strlen(s2);
len1 = nsCRT::strlen(s1); len2 = nsCRT::strlen(s2);
msg_extract_Header_address_names(const char *line){	char *names = 0;	char *addrs = 0;	char *result, *s1, *s2, *out;	PRUint32 i, size = 0;	int status = msg_parse_Header_addresses(line, &names, &addrs);	if (status <= 0)		return 0;  PRUint32 len1, len2;	s1 = names;	s2 = addrs;	for (i = 0; (int)i < status; i++)	{		len1 = PL_strlen(s1);		len2 = PL_strlen(s2);		s1 += len1 + 1;		s2 += len2 + 1;		size += (len1 ? len1 : len2) + 2;	}	result = (char *)PR_Malloc(size + 1);	if (!result)	{		PR_Free(names);		PR_Free(addrs);		return 0;	}	out = result;	s1 = names;	s2 = addrs;	for (i = 0; (int)i < status; i++)	{		len1 = PL_strlen(s1);		len2 = PL_strlen(s2);		if (len1)		{			nsCRT::memcpy(out, s1, len1);			out += len1;		}		else		{			nsCRT::memcpy(out, s2, len2);			out += len2;		}		if ((int)(i+1) < status)		{			*out++ = ',';			*out++ = ' ';		}		s1 += len1 + 1;		s2 += len2 + 1;	}	*out = 0;	PR_Free(names);	PR_Free(addrs);	return result;}