c = getc (f_in);
       if (c == 'N')
        {
-         if (fgets (buf, sizeof (buf), f_in)
-             && startswith (buf, "O_APP") && ISSPACE (buf[5]))
+         char *p = fgets (buf, sizeof (buf), f_in);
+         if (p && startswith (p, "O_APP") && ISSPACE (p[5]))
            preprocess = 0;
-         if (!strchr (buf, '\n'))
-           ungetc ('#', f_in); /* It was longer.  */
+         if (!p || !strchr (p, '\n'))
+           ungetc ('#', f_in);
          else
            ungetc ('\n', f_in);
        }
       else if (c == 'A')
        {
-         if (fgets (buf, sizeof (buf), f_in)
-             && startswith (buf, "PP") && ISSPACE (buf[2]))
+         char *p = fgets (buf, sizeof (buf), f_in);
+         if (p && startswith (p, "PP") && ISSPACE (p[2]))
            preprocess = 1;
-         if (!strchr (buf, '\n'))
+         if (!p || !strchr (p, '\n'))
            ungetc ('#', f_in);
          else
            ungetc ('\n', f_in);