else if (feof (fp)) {  (*line)++; return s; }
char *mutt_read_line (char *s, size_t *size, FILE *fp, int *line){  size_t offset = 0;  char *ch;  if (!s)  {    s = safe_malloc (STRING);    *size = STRING;  }  FOREVER  {    if (fgets (s + offset, *size - offset, fp) == NULL)    {      safe_free ((void **) &s);      return NULL;    }    if ((ch = strchr (s + offset, '\n')) != NULL)    {      (*line)++;      *ch = 0;      if (ch > s && *(ch - 1) == '\r')	*--ch = 0;      if (ch == s || *(ch - 1) != '\\')	return s;      offset = ch - s - 1;    }    else    {      /* There wasn't room for the line -- increase ``s'' */      offset = *size - 1; /* overwrite the terminating 0 */      *size += STRING;      safe_realloc ((void **) &s, *size);    }  }}