|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)versys.c 5.5 (Berkeley) 10/9/85";
3: #endif
4:
5: #include "uucp.h"
6: #include <stdio.h>
7: #include <ctype.h>
8:
9: /*LINTLIBRARY*/
10:
11: char PhoneNumber[MAXPH];
12:
13: /*
14: * verify system names n1 and n2
15: * return codes: SUCCESS | FAIL
16: *
17: * NOTE:
18: * the old calling sequence was versys(name) but is
19: * now versys(&name) so that we can perform aliasing!!!!
20: * See accompanying changes in uucp.c and uux.c
21: * -- Ray Essick, April 27, 1984
22: */
23: versys(nameptr)
24: register char **nameptr;
25: {
26: register FILE *fp;
27: char line[BUFSIZ];
28: char *name;
29:
30: DEBUG (11, "Before Alias: %s\n", *nameptr);
31: uualias (nameptr); /* alias expansion */
32: DEBUG (11, "After Alias: %s\n", *nameptr);
33: name = *nameptr; /* dereference */
34:
35: if (strncmp(name, Myname, MAXBASENAME) == 0)
36: return SUCCESS;
37:
38: fp = fopen(SYSFILE, "r");
39: ASSERT(fp != NULL, CANTOPEN, SYSFILE, 0);
40: PhoneNumber[0] = '\0';
41: while (cfgets(line, sizeof(line), fp) != NULL) {
42: char *targs[100];
43:
44: getargs(line, targs, 100);
45: if (strncmp(name, targs[0], MAXBASENAME) == SAME) {
46: fclose(fp);
47: strncpy(PhoneNumber, targs[F_PHONE], MAXPH);
48: return SUCCESS;
49: }
50: }
51: fclose(fp);
52: return FAIL;
53: }
54:
55: /*
56: * Works (sort of) like rhost(3) on 4.1[abc] Bsd systems.
57: *
58: * Looks for the host in the L.aliases file and returns the
59: * "standard" name by modifying the pointer. The returned
60: * value is saved with malloc(3) so it isn't zapped by
61: * subsequent calls.
62: *
63: * Returns:
64: * FAIL No L.aliases file
65: * SUCCESS Anything else
66: */
67:
68: uualias(hostptr)
69: char **hostptr; /* we change it */
70: {
71: FILE *Aliases; /* list of aliases */
72: char buf[BUFSIZ];
73: int atend;
74: char *p, *q;
75: char *koshername; /* "official" name */
76:
77: if ((Aliases = fopen(ALIASFILE, "r")) == NULL) {
78: DEBUG(11, "No %s file\n", ALIASFILE);
79: return FAIL; /* no alias file */
80: }
81:
82: DEBUG (11, "Alias expansion for %s\n", *hostptr);
83: while (cfgets(buf, sizeof (buf), Aliases)) {
84: p = &buf[0];
85: atend = 0;
86: DEBUG(11, "Alias line: %s\n", buf);
87:
88: while (!atend) {
89: while (isspace(*p) && *p != '\n')
90: p++; /* skip white space */
91: q = p;
92: while (!isspace(*q) && *q != '\n')
93: q++; /* find end */
94: if (*q == '\n')
95: atend++; /* last entry */
96: *q = '\0';
97: DEBUG(11, "Compare against: %s\n", p);
98: if (strcmp(*hostptr, p) == 0)/* match? */ {
99: koshername = malloc((unsigned)strlen(buf) + 1);
100: strcpy(koshername, buf); /* save it */
101: fclose(Aliases);
102: DEBUG(4, "Alias: %s to ", *hostptr);
103: DEBUG(4, "%s\n", koshername);
104: *hostptr = koshername; /* correct one */
105: return SUCCESS; /* all is well */
106: }
107: p = q + 1; /* try next entry */
108: }
109:
110: }
111: fclose(Aliases);
112: DEBUG(11, "Alias doesn't match %s, remains unchanged\n", *hostptr);
113: return SUCCESS; /* unchanged host */
114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.