static char fullname[BUFSIZ];
/* variables for username masquerading */
-static int MMailids = 0;
+int MMailids = 0; /* used from post.c as well as here */
static char *mmailid = "0";
/*
* Find the user's username and full name, and cache them.
- * It also handles mmailid processing (username masquerading)
+ * Also, handle "mmailid" username masquerading controlled from the GECOS field
+ * of the passwd file.
*/
static void
/*
* Do mmailid (username masquerading) processing. The GECOS
- * field should have the form "Full Name <fakeusername>".
+ * field should have the form "Full Name <fakeusername>". For instance,
+ * "Dan Harkless <Dan.Harkless>". Naturally, you'll want your MTA to have
+ * an alias (e.g. in /etc/aliases) from "fakeusername" to your account name.
*/
-#ifndef GCOS_HACK
+#ifndef BSD42
for (cp = fullname; *np && *np != (MMailids ? '<' : ','); *cp++ = *np++)
continue;
-#else
+#else /* BSD42 */
+ /* On BSD(-derived) systems, the system utilities that deal with the GECOS
+ field (finger, mail, sendmail, etc.) translate any '&' character in it to
+ the login name, with the first letter capitalized. So, for instance,
+ fingering a user "bob" with the GECOS field "& Jones" would reveal him to
+ be "In real life: Bob Jones". Surprisingly, though, the OS doesn't do
+ the translation for you, so we have to do it manually here. */
for (cp = fullname; *np && *np != (MMailids ? '<' : ','); ) {
if (*np == '&') { /* blech! */
strcpy (cp, pw->pw_name);
*cp++ = *np++;
}
}
-#endif
+#endif /* BSD42 */
*cp = '\0';
if (MMailids) {