#include <sys/socket.h>
#include <netdb.h>
-#ifdef HAVE_SYS_UTSNAME_H
-# include <sys/utsname.h>
-#endif
-
-#define NOTOK (-1)
-#define OK 0
-
/*
* static prototypes
*/
void
mts_init (char *name)
{
+ NMH_UNUSED (name);
+
const char *cp;
FILE *fp;
static int inited = 0;
{
static char buffer[BUFSIZ] = "";
struct addrinfo hints, *res;
-#ifdef HAVE_UNAME
- struct utsname name;
-#endif
/* check if we have cached the local name */
if (buffer[0])
strncpy (buffer, localname, sizeof(buffer));
} else {
memset(buffer, 0, sizeof(buffer));
-#ifdef HAVE_UNAME
- /* first get our local name */
- uname (&name);
- strncpy (buffer, name.nodename, sizeof(buffer) - 1);
-#else
/* first get our local name */
gethostname (buffer, sizeof(buffer) - 1);
-#endif
/* now fully qualify our name */
memset(&hints, 0, sizeof(hints));
{
static char buffer[BUFSIZ] = "";
-#ifdef HAVE_UNAME
- struct utsname name;
-#endif
-
/* check if we have cached the system name */
if (buffer[0])
return buffer;
return buffer;
}
-#ifdef HAVE_UNAME
- uname (&name);
- strncpy (buffer, name.nodename, sizeof(buffer));
-#else
gethostname (buffer, sizeof(buffer));
-#endif
return buffer;
}
field, like phone number. Also, if mmailid masquerading is turned on due
to "mmailid" appearing on the "masquerade:" line of mts.conf, stop if we
hit a '<' (which should precede any ','s). */
-#ifndef BSD42
if (mmailid_masquerading)
/* Stop at ',' or '<'. */
for (cp = fullname; *np != '\0' && *np != ',' && *np != '<';
for (cp = fullname; *np != '\0' && *np != ',';
*cp++ = *np++)
continue;
-#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. */
- if (mmailid_masquerading)
- /* Stop at ',' or '<'. */
- for (cp = fullname;
- *np != '\0' && *np != ',' && *np != '<';) {
- if (*np == '&') { /* blech! */
- strcpy (cp, pw->pw_name);
- *cp = toupper(*cp);
- while (*cp)
- cp++;
- np++;
- } else {
- *cp++ = *np++;
- }
- }
- else
- /* Allow '<' as a legal character of the user's name. This code is
- basically a duplicate of the code above the "else" -- we don't
- collapse it down to one copy and put the mmailid_masquerading check
- inside the loop with "(x ? y : z)" because that's inefficient and the
- value'll never change while it's in there. */
- for (cp = fullname;
- *np != '\0' && *np != ',';) {
- if (*np == '&') { /* blech! */
- strcpy (cp, pw->pw_name);
- *cp = toupper(*cp);
- while (*cp)
- cp++;
- np++;
- } else {
- *cp++ = *np++;
- }
- }
-#endif /* BSD42 */
*cp = '\0';
if (mmailid_masquerading) {