Subject: bin/19359: mkdep breaks for #*.c files
To: None <gnats-bugs@gnats.netbsd.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: netbsd-bugs
Date: 12/11/2002 20:11:13
>Number:         19359
>Category:       bin
>Synopsis:       [dM] mkdep breaks for #*.c files
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 11 17:12:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     der Mouse
>Release:        1.6_BETA4
>Organization:
	Dis-
>Environment:
	Noticed on /sparc 1.4T; verified present on /i386 1.6_BETA4.
>Description:
	If mkdep is passed .c filenames beginning with a # character,
	and those files do enough including to generate more than one
	line in .depend (#include <stdio.h> is enough), the resulting
	.depend file produces fatal errors from make, because mkdep
	generates what make interprets as a comment line.
>How-To-Repeat:
	$ mkdir testdir
	$ cd testdir
	$ echo '#include <stdio.h>' > \#foo.c
	$ mkdep \#foo.c
	$ make
	watch make produce errors for the last line of #foo.c's
	dependencies in .depend, saying "Need an operator".
>Fix:
	Make mkdep convert # to \# when writing .depend?  (Doing this
	by hand after mkdep runs produces a .depend make is happy
	with.)  Alternatively, document it and forget it; such files
	are obviously not much used, or the bug would not have lasted
	this long.  (Other characters in .c filenames can cause
	problems; for example, a newline in a .c filename produces
	broken .depend files; a colon does too, though the brokenness
	is subtler.  I do note space and tab get escaped correctly;
	perhaps it's as simple as adding # to that list.)

/~\ The ASCII				der Mouse
\ / Ribbon Campaign
 X  Against HTML	       mouse@rodents.montreal.qc.ca
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
>Release-Note:
>Audit-Trail:
>Unformatted: