cannot create files with trailing dots on network share

Douglas Seay seay_douglas@emc.com
Thu Mar 18 23:14:00 GMT 2010


I’ve had some problems, and it looks like it boils down to handling . 
(dot) characters.  I created a little script to create some files with 
dots in various places.  This script works fine in my $HOME directory 
(C:\cygwin\home\SEAYD).  The name is wrong when the last character of 
the filename is a dot and subdir is on a network share (H: in this 
case).  The rest of the file operations seem to work because when I cat 
them, you can see the file name inside the body (yes, I left of the \n).

Is there a known work around for this?

> /cygdrive/h/foo> ./fubar
> mkdir subdir
> create subdir/none
> create subdir/in.middle
> create subdir/.before
> create subdir/after.
> create subdir/.every.where.
> finished successfully

> /cygdrive/h/foo> ls -al subdir
> total 5120
> drwxr-xr-x+ 1 ???????? ????????  0 2010-03-18 18:31 .
> drwxrwxrwx  7 ???????? ????????  0 2010-03-18 18:31 ..
> -rwxr--r--  1 ???????? ????????  7 2010-03-18 18:31 .before
> -rwxr--r--  1 ???????? ????????  6 2010-03-18 18:31 ARO60A~X
> -rwxr--r--  1 ???????? ???????? 13 2010-03-18 18:31 _IQDF8~T
> -rwxr--r--  1 ???????? ????????  9 2010-03-18 18:31 in.middle
> -rwxr--r--  1 ???????? ????????  4 2010-03-18 18:31 none

> /cygdrive/h/foo> cat subdir/ARO60A~X
> after./cygdrive/h/foo> cat subdir/_IQDF8~T
> .every.where./cygdrive/h/foo>

A bit more background: I’m trying to use cvs and I’m getting errors.  I 
cannot tell if this is the same issue as is going back and forth on the 
mailing list right now, or if I’ve bumped into something else.  When I 
ran my “cvs co” with strace, I see what appears to be CVS getting the 
files in temp names that have a lot of dots, and then doing a rename 
after the file has downloaded.  The download seems to work, but it puts 
the file in an incorrectly named temp file, and then the rename to the 
proper name is what fails and causes the error.  Since that doesn’t 
really sound cvs specific (ie – it should work), I went off and 
reproduced it outside of CVS.

In case I’m not clear, this is cygwin 1.7.1.  Mostly I’ve been using 
Server 2008.

- doug

Here is the perl script “fubar” that I used to generate these files, 
just in case it matters.  It really isn't fancy.

> #!/bin/perl
> 
> use strict;
> use warnings;
> 
> my $SUBDIR      = 'subdir';
> my @TEST_CASES  = qw(   none
>                         in.middle
>                         .before
>                         after.
>                         .every.where.
>                 );
> 
> print "mkdir $SUBDIR\n";
> mkdir $SUBDIR unless ( -d $SUBDIR );
> chdir $SUBDIR or die "chdir($SUBDIR) failed: $!";
> 
> foreach my $filename ( @TEST_CASES ) {
>         print "create $SUBDIR/$filename\n";
>         open TESTCASE, ">$filename" or die "error opening $filename: $!";
>         print TESTCASE $filename;
>         close TESTCASE;
> }
> 
> print "finished successfully\n";





--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list