4.3BSD/usr/contrib/notes/src/nfalias.c

Compare this file to the similar file:
Show the results in this format:

#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 */
}