From 433acd8a47ae1642ba234baa73b43933be6a53e5 Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Wed, 23 Dec 1998 10:38:18 +0000 Subject: [PATCH] More porting notes about filesystems, AmigaOS, and MiNT. p4raw-id: //depot/cfgperl@2500 --- pod/perlport.pod | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/pod/perlport.pod b/pod/perlport.pod index 6faa0d0..7a03c12 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -175,7 +175,7 @@ transfer and store numbers always in text format, instead of raw binary, or consider using modules like C (included in the standard distribution as of Perl 5.005) and C. -=head2 Files +=head2 Files and Filesystems Most platforms these days structure files in a hierarchical fashion. So, it is reasonably safe to assume that any platform supports the @@ -194,6 +194,14 @@ LPT:). S uses C<:> as a path separator instead of C. +The filesystem may not support neither hard links (C) nor +symbolic links (C, C, C). + +The filesystem may not support neither access timestamp nor change +timestamp (meaning that about the only portable timestamp is the +modification timestamp), or one second granularity of any timestamps +(e.g. the FAT filesystem limits the time granularity to two seconds). + VOS perl can emulate Unix filenames with C as path separator. The native pathname characters greater-than, less-than, number-sign, and percent-sign are always accepted. @@ -252,8 +260,11 @@ Likewise, if using C, try to keep the split functions to make it so the resulting files have a unique (case-insensitively) first 8 characters. -Don't assume C> won't be the first character of a filename. Always -use C> explicitly to open a file for reading. +There certainly can be whitespace in filenames. Many systems (DOS, +VMS) cannot have more than one C<"."> in their filenames. + +Don't assume C> won't be the first character of a filename. +Always use C> explicitly to open a file for reading. open(FILE, "<$existing_file") or die $!; @@ -829,7 +840,7 @@ an effect on what happens with some perl functions (such as C, C, C, C, C, C, C, C), as well as bit-fiddling with ASCII constants using operators like C<^>, C<&> and C<|>, not to mention dealing with socket interfaces to ASCII computers -(see L). +(see L<"NEWLINES">). Fortunately, most web servers for the mainframe will correctly translate the C<\n> in the following statement to its ASCII equivalent (note that @@ -1314,6 +1325,9 @@ method of spawning a process. (Win32) Not implemented. (S, Win32, VMS, S) +Link count not updated because hard links are not quite that hard +(They are sort of half-way between hard and soft links). (AmigaOS) + =item lstat FILEHANDLE =item lstat EXPR @@ -1347,6 +1361,8 @@ open to C<|-> and C<-|> are unsupported. (S, Win32, S) Not implemented. (S) +Very limited functionality. (MiNT) + =item readlink EXPR =item readlink @@ -1444,6 +1460,11 @@ the child program uses a compatible version of the emulation library. I will call the native command line direct and no such emulation of a child Unix program will exists. Mileage B vary. (S) +Far from being POSIX compliant. Because there may be no underlying +/bin/sh tries to work around the problem by forking and execing the +first token in its argument string. Handles basic redirection ("<" or +">") on its own behalf. (MiNT) + =item times Only the first entry returned is nonzero. (S) @@ -1473,6 +1494,9 @@ should not be held open elsewhere. (Win32) Returns undef where unavailable, as of version 5.005. +C works but the correct permissions are only set when the file is +finally close()d. + =item utime LIST Only the modification time is updated. (S, VMS, S) -- 1.8.3.1