2.11BSD/src/usr.bin/uucp/cfgets.c
#ifndef lint
static char sccsid[] = "@(#)cfgets.c	5.3 (Berkeley) 6/19/85";
#endif
/*
 * get nonblank, non-comment, (possibly continued) line. Alan S. Watt 
 */
#include <stdio.h>
#define COMMENT		'#'
#define CONTINUE	'\\'
#define EOLN		'\n'
#define EOS		'\0'
/*LINTLIBRARY*/
char *
cfgets(buf, siz, fil)
register char *buf;
int siz;
FILE *fil;
{
	register char *s;
	register i, c, len;
	char *fgets();
	for (i=0,s=buf; i = (fgets(s, siz-i, fil) != NULL); i = s - buf) {
		/* get last character of line */
		c = s[len = (strlen(s) - 1)];
		/* skip comments; make sure end of comment line seen */
		if (*s == COMMENT) {
			while (c != EOLN && c != EOF)
				c = getc(fil);
			*s = EOS;
		}
		/* skip blank lines */
		else if (*s != EOLN) {
			s += len;
			/* continue lines ending with CONTINUE */
			if (c != EOLN || *--s != CONTINUE)
				break;
		}
	}
	
	return i ? buf : NULL;
}
#ifdef TEST
main()
{
	char buf[512];
	while (cfgets(buf, sizeof buf, stdin))
		fputs(buf, stdout);
}
#endif TEST