tplate at acm.org
2007-Apr-19  04:08 UTC
[Rd] minor omissions re "special" windows file names (PR#9622)
"lpt1" through "lpt9" and "com1" through
"com9"  are in fact "special"
file names under various versions of Microsoft Windows.  However, "R 
Extensions" says only that "lpt1" through "lpt4" and
"com1" through
"com3" cannot be used as filenames, and "R CMD check" checks
for just
these filenames.  Consequently, "R CMD check" can let through
filenames
that are disallowed under Windows.
For references, see http://en.wikipedia.org/wiki/Filename and 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/naming_a_file.asp
(FWIW, note however that Wikipedia *may* be mistaken in claiming that 
"com0" and "lpt0" are special file names -- these are not
listed on the
Microsoft page, and I verified that they can be used as normal file 
names on my Windows XP machine at least.)
Accordingly, the following changes might be desired:
In src/scripts/check.in:
OLD LINE:
          if(grep(/^(con|prn|aux|clock\$|nul|lpt[1-3]|com[1-4])$/,
NEW LINE:
         if(grep(/^(con|prn|aux|clock\$|nul|lpt[1-9]|com[1-9])$/,
ALSO: fix comment at beginning of check.in (search for "com1")
In doc/manuals/R-exts.texi, I would suggest changing
-----
names.  In addition, files with names @samp{con}, @samp{prn},
@samp{aux}, @samp{clock$}, @samp{nul}, @samp{com1} to @samp{com4}, and
@samp{lpt1} to @samp{lpt3} after conversion to lower case and stripping
possible ``extensions'', are disallowed.  Also, file names in the same
-----
to
-----
names.  In addition, files with names @samp{con}, @samp{prn},
@samp{aux}, @samp{clock$}, @samp{nul}, @samp{com1} to @samp{com9}, and
@samp{lpt1} to @samp{lpt9} after conversion to lower case and stripping
possible ``extensions'', are disallowed
(e.g., @samp{lpt5.foo.bar} is disallowed.)  Also, file names in the same
-----
(with the example added to clarify what "stripping possible
extensions"
means).
Obviously, not a high-priority error.
-- Tony Plate
