Subject: Re: bin/962: file(1) doesn't recognize man pages beginning with .\" as [nt]roff
To: None <netbsd-bugs@NetBSD.ORG>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: netbsd-bugs
Date: 04/14/1995 06:51:56
> "file" keeps misinterpreting man pages that begin with .\" as
> "English text":  [demo]

>> Fix:
> 	Unknown as yet.  Some test in ascmagic() isn't working, methinks.

Fix is very simple: make the test you quoted check for what it's
supposed to be checking for.

At its most rudimentary, this would be (consed up by hand, so no diff
header):

                  while (isascii(*tp) && isspace(*tp))
                          ++tp;   /* skip leading whitespace */
                  if ((isascii(*tp) && (isalnum(*tp) || *tp=='\\') &&
-                     isascii(*(tp+1)) && (isalnum(*(tp+1)) || *tp=='"'))) {
+                     isascii(*(tp+1)) && (isalnum(*(tp+1)) || *(tp+1)=='"'))) {
                          ckfputs("troff or preprocessor input text", stdout);
                          return 1;
                  }

IMO another change is crying out to be made; I would strongly suggest
changing *(tp+1) to tp[1].

Of course, even with this change it's still possible to mistake a tar
archive whose first filename begins with .\" or .xx for [nt]roff input.
Perhaps file should do a tar header consistency check on the first
block.

					der Mouse

			    mouse@collatz.mcrcim.mcgill.edu