date and time created 83/07/02 17:56:44 by sam
[unix-history] / usr / src / usr.bin / uucp / libuu / cfgets.c
#ifndef lint
static char sccsid[] = "@(#)cfgets.c 5.1 (Berkeley) %G%";
#endif
/*
* get nonblank, non-comment, (possibly continued) line. Alan S. Watt
*/
#include <stdio.h>
#define COMMENT '#'
#define CONTINUE '\\'
#define EOLN '\n'
#define EOS '\0'
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 = fgetc (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