if (feof(fp) || ferror(fp)) {
if (ferror(fp)) { FREE(result); } else if (feof(fp) && result && *result == '\0') {
PUBLIC char *LYSafeGets ARGS2(	char **,	src,	FILE *,		fp){    char buffer[BUFSIZ];    char *result = 0;    if (src != 0)	result = *src;    if (result != 0)	*result = 0;    while (fgets(buffer, sizeof(buffer), fp) != 0) {	if (*buffer)	    result = StrAllocCat(result, buffer);	if (strchr(buffer, '\n') != 0)	    break;    }    if (feof(fp)     || ferror(fp)) {	FREE(result);    }    if (src != 0)	*src = result;    return result;}