Re: Nearly OK for cygwin@15318
Slaven Rezic [Tue, 19 Mar 2002 21:47:49 +0000 (22:47 +0100)]
Date: Tue, 19 Mar 2002 21:47:49 +0100
Message-Id: <20020319204958.PTWF27460.mailoutvl21@[192.168.139.30]>

Subject: Re: Nearly OK for cygwin@15318
From: <slaven.rezic@berlin.de>
Date: Tue, 19 Mar 2002 21:37:18 +0100
Message-Id: <20020319203927.PTPI27460.mailoutvl21@[192.168.139.30]>

p4raw-id: //depot/perl@15343

pod/perlport.pod
t/io/fs.t

index 9ca3f15..5edbf27 100644 (file)
@@ -1440,6 +1440,9 @@ Only good for changing "owner" and "other" read-write access. (S<RISC OS>)
 
 Access permissions are mapped onto VOS access-control list changes. (VOS)
 
+The actual permissions set depend on the value of the C<CYGWIN>
+environment variable. (Cygwin)
+
 =item chown LIST
 
 Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>, VOS)
index c30e14a..e7a7cb7 100755 (executable)
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -41,6 +41,9 @@ my $needs_fh_reopen =
 
 $needs_fh_reopen = 1 if (defined &Win32::IsWin95 && Win32::IsWin95());
 
+my $skip_mode_checks =
+    $^O eq 'cygwin' && $ENV{CYGWIN} !~ /ntsec/;
+
 plan tests => 36;
 
 
@@ -93,8 +96,13 @@ SKIP: {
 
     SKIP: {
         skip "hard links not that hard in $^O", 1 if $^O eq 'amigaos';
+       skip "no mode checks", 1 if $skip_mode_checks;
 
-        is($mode & 0777, 0666, "mode of triply-linked file");
+       if ($^O eq 'cygwin') { # new files on cygwin get rwx instead of rw-
+           is($mode & 0777, 0777, "mode of triply-linked file");
+       } else {
+            is($mode & 0777, 0666, "mode of triply-linked file");
+       }
     }
 }
 
@@ -108,7 +116,11 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through");
+    }
 
     $newmode = 0700;
     chmod 0444, 'x';
@@ -119,12 +131,20 @@ SKIP: {
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('c');
 
-    is($mode & 0777, $newmode, "chmod going through to c");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to c");
+    }
 
     ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
      $blksize,$blocks) = stat('x');
 
-    is($mode & 0777, $newmode, "chmod going through to x");
+    SKIP: {
+       skip "no mode checks", 1 if $skip_mode_checks;
+
+        is($mode & 0777, $newmode, "chmod going through to x");
+    }
 
     is(unlink('b','x'), 2, "unlink two files");