|
|
1.1 ! root 1: #include "parms.h" ! 2: #include "structs.h" ! 3: ! 4: #ifdef RCSIDENT ! 5: static char rcsid[] = "$Header: nfalias.c,v 1.7 85/01/18 15:24:36 notes Rel $"; ! 6: #endif RCSIDENT ! 7: ! 8: #include "net.h" ! 9: /* ! 10: * nfalias(local, remote, remotesys) ! 11: * char *local, *remote, *remotesys; ! 12: * ! 13: * nfalias looks in the alias file for the remote system and ! 14: * tries to find a match for the local notesfile. ! 15: * If a match is found, it is copied to *remote, otherwise ! 16: * the original name is copied over. ! 17: * ! 18: * The routine returns -1 if there is no file. ! 19: * A zero is returned if no match is found. ! 20: * A 1 is returned if a match is found. ! 21: * ! 22: * Original Coding: Ray Essick April 25, 1982 ! 23: */ ! 24: ! 25: nfalias (local, remote, remotesys) ! 26: char *local; ! 27: char *remote; ! 28: char *remotesys; ! 29: { ! 30: ! 31: FILE * aliases; ! 32: char linebuf[100]; /* hold lines from file */ ! 33: char *p, ! 34: *q; ! 35: int c; ! 36: ! 37: strcpy (remote, local); /* pessimism - ready to fail */ ! 38: ! 39: sprintf (linebuf, "%s/%s/%s/%s", Mstdir, UTILITY, ALIASES, remotesys); ! 40: if ((aliases = fopen (linebuf, "r")) == NULL) ! 41: return (-1); /* no file, too bad */ ! 42: ! 43: while (1) ! 44: { ! 45: p = linebuf; /* start line */ ! 46: while ((c = getc (aliases)) != EOF && c != '\n') ! 47: *p++ = c; ! 48: if (c == EOF) ! 49: { ! 50: fclose (aliases); ! 51: return 0; /* no match */ ! 52: } ! 53: *p = '\0'; /* terminate string */ ! 54: if (linebuf[0] == '#' || linebuf[0] == '\0') ! 55: continue; /* comment or empty line */ ! 56: ! 57: q = linebuf; /* find colon */ ! 58: while (*q != ':' && *q) ! 59: q++; /* try next */ ! 60: if (*q != ':') /* properly formatted? */ ! 61: { ! 62: fprintf (stderr, "Bad line in alias file for system %s: %s\n", ! 63: remotesys, linebuf); ! 64: continue; /* skip the line */ ! 65: } ! 66: *q++ = '\0'; /* break into two parts */ ! 67: if (strcmp (linebuf, local) == 0) /* match ? */ ! 68: { ! 69: strcpy (remote, q); /* copy the name over */ ! 70: fclose (aliases); ! 71: return 1; /* success */ ! 72: } ! 73: } ! 74: /* yes, we know that this statement is unreachable! */ ! 75: return (-1); /* to satisfy lint */ ! 76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.