|
|
1.1 ! root 1: #ident "@(#)hostname.c 1.3 'attmail mail(1) command'" ! 2: #ident "@(#)mailx:hostname.c 1.3.1.1" ! 3: /* Copyright (c) 1984 AT&T */ ! 4: /* All Rights Reserved */ ! 5: ! 6: /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ ! 7: /* The copyright notice above does not evidence any */ ! 8: /* actual or intended publication of such source code. */ ! 9: ! 10: #ident "@(#)mailx:hostname.c 1.3" ! 11: /* ! 12: * mailx -- a modified version of a University of California at Berkeley ! 13: * mail program ! 14: * ! 15: * Code to figure out what host we are on. ! 16: */ ! 17: ! 18: #include "rcv.h" ! 19: #include "configdefs.h" ! 20: ! 21: #ifdef preSVr4 ! 22: # define MAILCNFG "/usr/lib/mail/mailcnfg" ! 23: #else ! 24: # define MAILCNFG "/etc/mail/mailcnfg" ! 25: # include "maillock.h" ! 26: # include <sys/utsname.h> ! 27: #endif ! 28: ! 29: ! 30: char host[64]; ! 31: char domain[128]; ! 32: /* ! 33: * Initialize the network name of the current host. ! 34: */ ! 35: void ! 36: inithost() ! 37: { ! 38: register struct netmach *np; ! 39: #ifdef GATEWAY ! 40: FILE *fp; /* adb */ ! 41: ! 42: if (fp = fopen(GATEWAY, "r")) { /* adb */ ! 43: fgets(host, sizeof host, fp); /* adb */ ! 44: host[strlen(host)-1] = 0; /* adb */ ! 45: fclose(fp); /* adb */ ! 46: } else { /* adb */ ! 47: getuname(host, sizeof host); /* adb */ ! 48: } ! 49: #else ! 50: struct utsname name; ! 51: char *fp; ! 52: extern char *xgetenv(); ! 53: extern int xsetenv(); ! 54: ! 55: xsetenv(MAILCNFG); ! 56: if (fp = xgetenv("CLUSTER")) { ! 57: strncpy(host, fp, sizeof(host)); ! 58: } else { ! 59: uname(&name); ! 60: strncpy(host, name.nodename, sizeof host); ! 61: } ! 62: #endif ! 63: strcpy(domain, host); ! 64: strcat(domain, maildomain()); ! 65: for (np = netmach; np->nt_machine != 0; np++) ! 66: if (strcmp(np->nt_machine, EMPTY) == 0) ! 67: break; ! 68: if (np->nt_machine == 0) { ! 69: printf("Cannot find empty slot for dynamic host entry\n"); ! 70: exit(1); ! 71: } ! 72: np->nt_machine = host; ! 73: np++; ! 74: np->nt_machine = domain; ! 75: if (debug) fprintf(stderr, "host '%s', domain '%s'\n", host, domain); ! 76: } ! 77: ! 78: #ifdef WHOAMI ! 79: getuname(sys,length) ! 80: char *sys; ! 81: int length; ! 82: { ! 83: FILE *fp; ! 84: ! 85: if (fp = fopen(WHOAMI, "r")) { ! 86: fgets(sys, length, fp); ! 87: sys[strlen(sys)-1] = 0; ! 88: fclose(fp); ! 89: } else { ! 90: strcpy(sys,"????"); ! 91: } ! 92: } ! 93: #else ! 94: #include <sys/utsname.h> ! 95: char * ! 96: getuname(sys,length) ! 97: char *sys; ! 98: int length; ! 99: { ! 100: struct utsname name; ! 101: uname(&name); ! 102: strncpy(sys, getuname(), length); ! 103: return; ! 104: } ! 105: #endif /* WHOAMI */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.