1: #if !defined(lint) && defined(DOSCCS) 2: static char sccsid[] = "@(#)versys.c 5.5.1 (2.11BSD) 1997/10/2"; 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 = (char *)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: }