return(bufend);
return(nbuf);
skin(name)	char *name;{	register int c;	register char *cp, *cp2;	char *bufend;	int gotlt, lastsp;	if (name == NULL)		return(NULL);	if (strchr(name, '(') == NULL && strchr(name, '<') == NULL	    && strchr(name, ' ') == NULL)		return(name);	/* We assume that length(input) <= length(output) */	if ((bufend = (char *)malloc(strlen(name) + 1)) == NULL)		panic("Out of memory");	gotlt = 0;	lastsp = 0;	for (cp = name, cp2 = bufend; (c = *cp++) != '\0'; ) {		switch (c) {		case '(':			cp = skip_comment(cp);			lastsp = 0;			break;		case '"':			/*			 * Start of a "quoted-string".			 * Copy it in its entirety.			 */			while ((c = *cp) != '\0') {				cp++;				if (c == '"')					break;				if (c != '\\')					*cp2++ = c;				else if ((c = *cp) != '\0') {					*cp2++ = c;					cp++;				}			}			lastsp = 0;			break;		case ' ':			if (cp[0] == 'a' && cp[1] == 't' && cp[2] == ' ')				cp += 3, *cp2++ = '@';			else			if (cp[0] == '@' && cp[1] == ' ')				cp += 2, *cp2++ = '@';			else				lastsp = 1;			break;		case '<':			cp2 = bufend;			gotlt++;			lastsp = 0;			break;		case '>':			if (gotlt) {				gotlt = 0;				while ((c = *cp) && c != ',') {					cp++;					if (c == '(')						cp = skip_comment(cp);					else if (c == '"')						while ((c = *cp) != '\0') {							cp++;							if (c == '"')								break;							if (c == '\\' && *cp)								cp++;						}				}				lastsp = 0;				break;			}			/* Fall into . . . */		default:			if (lastsp) {				lastsp = 0;				*cp2++ = ' ';			}			*cp2++ = c;			if (c == ',' && !gotlt) {				*cp2++ = ' ';				for (; *cp == ' '; cp++)					;				lastsp = 0;				bufend = cp2;			}		}	}	*cp2 = 0;	if ((bufend = realloc(bufend, strlen(bufend) + 1)) == NULL)		panic("Out of memory");	return(bufend);}