+/*
+ * Get sender's name from this message. If the message has
+ * a bunch of arpanet stuff in it, we may have to skin the name
+ * before returning it.
+ */
+char *
+nameof(mp, reptype)
+ register struct message *mp;
+{
+
+ return(skin(name1(mp, reptype)));
+}
+
+/*
+ * Skin an arpa net address according to the RFC 733 interpretation
+ * of "host-phrase."
+ */
+char *
+skin(name)
+ char *name;
+{
+ register int c;
+ register char *cp, *cp2;
+ int gotlt, lastsp;
+ char nbuf[BUFSIZ];
+
+ if (name == NOSTR)
+ return(NOSTR);
+ if (index(name, '(') == NOSTR && index(name, '<') == NOSTR)
+ return(name);
+ gotlt = 0;
+ lastsp = 0;
+ for (cp = name, cp2 = nbuf, c = *cp++; *cp; c = *cp++) {
+ switch (c) {
+ case '(':
+ while (*cp != ')' && *cp != 0)
+ cp++;
+ if (*cp)
+ cp++;
+ break;
+
+ case ' ':
+ lastsp = 1;
+ break;
+
+ case '<':
+ cp2 = nbuf;
+ gotlt++;
+ lastsp = 0;
+ break;
+
+ case '>':
+ if (gotlt)
+ goto done;
+
+ /* Fall into . . . */
+
+ default:
+ if (lastsp) {
+ lastsp = 0;
+ *cp2++ = ' ';
+ }
+ *cp2++ = c;
+ break;
+ }
+ }
+done:
+ *cp2 = 0;
+
+ return(savestr(nbuf));
+}
+