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