|
|
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.