|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)versys.c 5.7 (Berkeley) 4/5/88"; ! 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 (name[0] == '\0' || strncmp(name, Myname, MAXBASENAME) == 0) ! 36: return SUCCESS; ! 37: ! 38: fp = fopen(SYSFILE, "r"); ! 39: if (fp == NULL) { ! 40: syslog(LOG_ERR, "fopen(%s) failed: %m", SYSFILE); ! 41: cleanup(FAIL); ! 42: } ! 43: PhoneNumber[0] = '\0'; ! 44: while (cfgets(line, sizeof(line), fp) != NULL) { ! 45: char *targs[100]; ! 46: ! 47: getargs(line, targs, 100); ! 48: if (strncmp(name, targs[0], MAXBASENAME) == SAME) { ! 49: fclose(fp); ! 50: if (targs[F_PHONE]) ! 51: strncpy(PhoneNumber, targs[F_PHONE], MAXPH); ! 52: return SUCCESS; ! 53: } ! 54: } ! 55: fclose(fp); ! 56: return FAIL; ! 57: } ! 58: ! 59: /* ! 60: * Works (sort of) like rhost(3) on 4.1[abc] Bsd systems. ! 61: * ! 62: * Looks for the host in the L.aliases file and returns the ! 63: * "standard" name by modifying the pointer. The returned ! 64: * value is saved with malloc(3) so it isn't zapped by ! 65: * subsequent calls. ! 66: * ! 67: * Returns: ! 68: * FAIL No L.aliases file ! 69: * SUCCESS Anything else ! 70: */ ! 71: ! 72: uualias(hostptr) ! 73: char **hostptr; /* we change it */ ! 74: { ! 75: FILE *Aliases; /* list of aliases */ ! 76: char buf[BUFSIZ]; ! 77: int atend; ! 78: char *p, *q; ! 79: char *koshername; /* "official" name */ ! 80: ! 81: if ((Aliases = fopen(ALIASFILE, "r")) == NULL) { ! 82: DEBUG(11, "No %s file\n", ALIASFILE); ! 83: return FAIL; /* no alias file */ ! 84: } ! 85: ! 86: DEBUG (11, "Alias expansion for %s\n", *hostptr); ! 87: while (cfgets(buf, sizeof (buf), Aliases)) { ! 88: p = &buf[0]; ! 89: atend = 0; ! 90: DEBUG(11, "Alias line: %s\n", buf); ! 91: ! 92: while (!atend) { ! 93: while (isspace(*p) && *p != '\n') ! 94: p++; /* skip white space */ ! 95: q = p; ! 96: while (!isspace(*q) && *q != '\n') ! 97: q++; /* find end */ ! 98: if (*q == '\n') ! 99: atend++; /* last entry */ ! 100: *q = '\0'; ! 101: DEBUG(11, "Compare against: %s\n", p); ! 102: if (strcmp(*hostptr, p) == 0)/* match? */ { ! 103: koshername = malloc((unsigned)strlen(buf) + 1); ! 104: strcpy(koshername, buf); /* save it */ ! 105: fclose(Aliases); ! 106: DEBUG(4, "Alias: %s to ", *hostptr); ! 107: DEBUG(4, "%s\n", koshername); ! 108: *hostptr = koshername; /* correct one */ ! 109: return SUCCESS; /* all is well */ ! 110: } ! 111: p = q + 1; /* try next entry */ ! 112: } ! 113: ! 114: } ! 115: fclose(Aliases); ! 116: DEBUG(11, "Alias doesn't match %s, remains unchanged\n", *hostptr); ! 117: return SUCCESS; /* unchanged host */ ! 118: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.