This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
VMS does have fchmod and fchown.
authorCraig A. Berry <craigberry@mac.com>
Sun, 14 Jan 2018 19:42:05 +0000 (13:42 -0600)
committerCraig A. Berry <craigberry@mac.com>
Mon, 15 Jan 2018 13:00:40 +0000 (07:00 -0600)
The test for fchmod in t/io/fs.t does, however, reveal a wrinkle
that is also true of chmod on VMS: a mode argument of zero does
not mean turn off all permisions but rather set permissions to the
user's default.  This is probably an ancient behavior from
pre-standard days.  For now, just skip the affected test and
document what's different.

configure.com
pod/perlport.pod
t/io/fs.t

index e060f45..8cb8afe 100644 (file)
@@ -6021,9 +6021,14 @@ $ WC "d_erfc='" + d_erfc + "'"
 $ WC "d_eunice='undef'"
 $ WC "d_exp2='" + d_exp2 + "'"
 $ WC "d_expm1='" + d_expm1 + "'"
-$ WC "d_fchmod='undef'"
+$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."8.3")
+$ THEN
+$   WC "d_fchmod='define'"
+$ ELSE
+$   WC "d_fchmod='undef'"
+$ ENDIF
 $ WC "d_fchdir='undef'"
-$ WC "d_fchown='undef'"
+$ WC "d_fchown='define'"
 $ WC "d_fcntl='" + d_fcntl + "'"
 $ WC "d_fcntl_can_lock='" + d_fcntl_can_lock + "'"
 $ WC "d_fd_set='" + d_fd_set + "'"
index 36c217d..45158d5 100644 (file)
@@ -1591,6 +1591,10 @@ in the SYSTEM environment settings.
 Setting the exec bit on some locations (generally F</sdcard>) will return true
 but not actually set the bit.
 
+(VMS)
+A mode argument of zero sets permissions to the user's default permission mask
+rather than disabling all permissions.
+
 =item chown
 
 (S<Plan 9>, S<RISC OS>)
index 09eede1..f35b907 100644 (file)
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -192,6 +192,7 @@ SKIP: {
     $mode = (stat "a")[2];
     SKIP: {
         skip "no mode checks", 1 if $skip_mode_checks;
+        skip "chmod(0, FH) means assume user defaults on VMS", 1 if $^O eq 'VMS';
         is($mode & 0777, 0, "perm reset");
     }
     is(chmod($newmode, "a"), 1, "fchmod");