4.3BSD/usr/contrib/notes/src/nfalias.c
#include "parms.h"
#include "structs.h"
#ifdef RCSIDENT
static char rcsid[] = "$Header: nfalias.c,v 1.7 85/01/18 15:24:36 notes Rel $";
#endif RCSIDENT
#include "net.h"
/*
* nfalias(local, remote, remotesys)
* char *local, *remote, *remotesys;
*
* nfalias looks in the alias file for the remote system and
* tries to find a match for the local notesfile.
* If a match is found, it is copied to *remote, otherwise
* the original name is copied over.
*
* The routine returns -1 if there is no file.
* A zero is returned if no match is found.
* A 1 is returned if a match is found.
*
* Original Coding: Ray Essick April 25, 1982
*/
nfalias (local, remote, remotesys)
char *local;
char *remote;
char *remotesys;
{
FILE * aliases;
char linebuf[100]; /* hold lines from file */
char *p,
*q;
int c;
strcpy (remote, local); /* pessimism - ready to fail */
sprintf (linebuf, "%s/%s/%s/%s", Mstdir, UTILITY, ALIASES, remotesys);
if ((aliases = fopen (linebuf, "r")) == NULL)
return (-1); /* no file, too bad */
while (1)
{
p = linebuf; /* start line */
while ((c = getc (aliases)) != EOF && c != '\n')
*p++ = c;
if (c == EOF)
{
fclose (aliases);
return 0; /* no match */
}
*p = '\0'; /* terminate string */
if (linebuf[0] == '#' || linebuf[0] == '\0')
continue; /* comment or empty line */
q = linebuf; /* find colon */
while (*q != ':' && *q)
q++; /* try next */
if (*q != ':') /* properly formatted? */
{
fprintf (stderr, "Bad line in alias file for system %s: %s\n",
remotesys, linebuf);
continue; /* skip the line */
}
*q++ = '\0'; /* break into two parts */
if (strcmp (linebuf, local) == 0) /* match ? */
{
strcpy (remote, q); /* copy the name over */
fclose (aliases);
return 1; /* success */
}
}
/* yes, we know that this statement is unreachable! */
return (-1); /* to satisfy lint */
}