diff options
-rwxr-xr-x | Configure | 16 | ||||
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | README.amiga | 41 | ||||
-rw-r--r-- | ext/NDBM_File/hints/dec_osf.pl | 2 | ||||
-rw-r--r-- | ext/ODBM_File/hints/dec_osf.pl | 4 | ||||
-rw-r--r-- | hints/amigaos.sh | 11 | ||||
-rw-r--r-- | hints/dec_osf.sh | 120 | ||||
-rwxr-xr-x | installperl | 146 | ||||
-rw-r--r-- | patchlevel.h | 2 | ||||
-rw-r--r-- | plan9/buildinfo | 2 | ||||
-rw-r--r-- | pod/perltoc.pod | 36 | ||||
-rwxr-xr-x | t/io/fs.t | 6 | ||||
-rwxr-xr-x | t/lib/anydbm.t | 6 | ||||
-rwxr-xr-x | t/lib/db-btree.t | 2 | ||||
-rwxr-xr-x | t/lib/db-hash.t | 2 | ||||
-rwxr-xr-x | t/lib/db-recno.t | 3 | ||||
-rwxr-xr-x | t/lib/gdbm.t | 3 | ||||
-rwxr-xr-x | t/lib/ndbm.t | 3 | ||||
-rwxr-xr-x | t/lib/odbm.t | 3 | ||||
-rwxr-xr-x | t/lib/sdbm.t | 3 | ||||
-rwxr-xr-x | t/op/magic.t | 5 | ||||
-rwxr-xr-x | t/op/stat.t | 11 |
22 files changed, 270 insertions, 158 deletions
@@ -4718,7 +4718,7 @@ if "$useshrplib"; then freebsd) xxx="-Wl,-R$shrpdir" ;; - linux|irix*) + linux|irix*|dec_osf) xxx="-Wl,-rpath,$shrpdir" ;; *) @@ -4727,14 +4727,20 @@ if "$useshrplib"; then esac case "$xxx" in '') ;; - *) ccdlflags="$ccdlflags $xxx" - cat <<EOM >&4 + *) + # Only add $xxx if it isn't already in ccdlflags. + case " $ccdlflags " in + *" $xxx "*) ;; + *) ccdlflags="$ccdlflags $xxx" + cat <<EOM >&4 Adding $xxx to the flags passed to $ld so that the perl executable will find the installed shared $libperl. EOM + ;; + esac ;; esac fi @@ -8569,7 +8575,7 @@ main() printf("%d\n",i); } EOCP - if $cc try.c -o try >/dev/null 2>&1 ; then + if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then dflt=`try` else dflt='?' @@ -8583,7 +8589,7 @@ esac rp='How many bits does your rand() function produce?' . ./myread randbits="$ans" -$rm -f try.c try +$rm -f try.c try.o try : see if ar generates random libraries by itself echo " " @@ -120,6 +120,7 @@ ext/IO/lib/IO/Socket.pm IO::Socket extension Perl module ext/NDBM_File/Makefile.PL NDBM extension makefile writer ext/NDBM_File/NDBM_File.pm NDBM extension Perl module ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines +ext/NDBM_File/hints/dec_osf.pl Hint for NDBM_File for named architecture ext/NDBM_File/hints/dynixptx.pl Hint for NDBM_File for named architecture ext/NDBM_File/hints/solaris.pl Hint for NDBM_File for named architecture ext/NDBM_File/hints/svr4.pl Hint for NDBM_File for named architecture diff --git a/README.amiga b/README.amiga index 110f9cf696..e4d4071188 100644 --- a/README.amiga +++ b/README.amiga @@ -27,6 +27,7 @@ Contents DESCRIPTION - Prerequisites - Starting Perl programs under AmigaOS + - Shortcomings of Perl under AmigaOS INSTALLATION Accessing documentation - Manpages @@ -94,6 +95,24 @@ of your scripts. Then you can invoke your scripts like under UNIX with necessary, F<perl> would be enough, but having full path would make it easier to use your script under *nix.) +=head2 Shortcomings of Perl under AmigaOS + +Perl under AmigaOS lacks some features of perl under UNIX because of +deficiencies in the UNIX-emulation, most notably: + +=over 6 + +=item fork() + +=item some features of the UNIX filesystem regarding link count and file dates + +=item inplace operation (the -i switch) without backup file + +=item umask() works, but the correct permissions are only set when the file is + finally close()d + +=back + =head1 INSTALLATION Change to the installation directory (most probably ADE:), and @@ -199,26 +218,10 @@ Now run make test -Some tests will fail. Here is which, and why: - -=over 8 - -=item F<io/fs.t>, F<op/stat.t>, F<lib/*dbm.t>, F<lib/db-*.t> - -Check I<file system> operations. Failures result from the inability to -emulate some Unixisms with the standard Amiga filesystem. - -=item F<io/pipe.t>, F<op/fork.t>, F<lib/filehand.t>, F<lib/open2.t>, - F<lib/open3.t>, F<lib/io_pipe.t>, F<lib/io_sock.t> +Some tests will be skipped because they need the fork() function: -These tests will be skipped because they use the fork() function, which is not -supported under AmigaOS. - -=item F<op/magic.t> - -The ixemul.library doesn't set the expected values for $0 and $^X. - -=back +F<io/pipe.t>, F<op/fork.t>, F<lib/filehand.t>, F<lib/open2.t>, F<lib/open3.t>, +F<lib/io_pipe.t>, F<lib/io_sock.t> =head2 Installing the built perl diff --git a/ext/NDBM_File/hints/dec_osf.pl b/ext/NDBM_File/hints/dec_osf.pl new file mode 100644 index 0000000000..e96d907e10 --- /dev/null +++ b/ext/NDBM_File/hints/dec_osf.pl @@ -0,0 +1,2 @@ +# Spider Boardman <spider@Orb.Nashua.NH.US> +$self->{LIBS} = ['']; diff --git a/ext/ODBM_File/hints/dec_osf.pl b/ext/ODBM_File/hints/dec_osf.pl index f041bf96c0..febb7cdb21 100644 --- a/ext/ODBM_File/hints/dec_osf.pl +++ b/ext/ODBM_File/hints/dec_osf.pl @@ -3,3 +3,7 @@ # Sat Jan 13 16:29:52 EST 1996 $self->{LDDLFLAGS} = $Config{lddlflags}; $self->{LDDLFLAGS} =~ s/-hidden//; +# As long as we're hinting, note the known location of the dbm routines. +# Spider Boardman <spider@Orb.Nashua.NH.US> +# Fri Feb 21 14:50:31 EST 1997 +$self->{LIBS} = ['-ldbm']; diff --git a/hints/amigaos.sh b/hints/amigaos.sh index 5f10e1144d..57c7b62aeb 100644 --- a/hints/amigaos.sh +++ b/hints/amigaos.sh @@ -49,6 +49,17 @@ optimize='-O2 -fomit-frame-pointer' # ccdlflags='none' # lddlflags='-oformat a.out-amiga -r' +# When AmigaOS runs a script with "#!", it sets argv[0] to the script name. +toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' + # Avoid telldir prototype conflict in pp_sys.c (AmigaOS uses const DIR *) # Configure should test for this. Volunteers? pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"' + +# AmigaOS always reports only two links to directories, even if they +# contain subdirectories. Consequently, we use this variable to stop +# File::Find using the link count to determine whether there are +# subdirectories to be searched. This will generate a harmless message: +# Hmm...You had some extra variables I don't know about...I'll try to keep 'em. +# Propagating recommended variable dont_use_nlink +dont_use_nlink='define' diff --git a/hints/dec_osf.sh b/hints/dec_osf.sh index 6bde1b4514..d50c4c60dc 100644 --- a/hints/dec_osf.sh +++ b/hints/dec_osf.sh @@ -1,9 +1,6 @@ # hints/dec_osf.sh -# -# How to make a DEBUGGING VERSION of perl for DECs cc compiler -# -# If you want to debug perl or want to send a +# * If you want to debug perl or want to send a # stack trace for inclusion into an bug report, call # Configure with the additional argument -Doptimize=-g2 # or uncomment this assignment to "optimize": @@ -13,19 +10,19 @@ # If you want both to optimise and debug with the DEC cc # you must have -g3, e.g. "-O4 -g3", and (re)run Configure. # -# Note 1: gcc can always have both -g and optimisation on. +# * gcc can always have both -g and optimisation on. # -# Note 2: debugging optimised code, no matter what compiler +# * debugging optimised code, no matter what compiler # one is using, can be surprising and confusing because of # the optimisation tricks like code motion, code removal, # loop unrolling, and inlining. The source code and the # executable code simply do not agree any more while in # mid-execution, the optimiser only cares about the results. # -# Note 3: Configure will automatically add the often quoted +# * Configure will automatically add the often quoted # -DDEBUGGING for you if the -g is specified. # -# Note 4: There is even more optimisation available in the new +# * There is even more optimisation available in the new # (GEM) DEC cc: -O5 and -fast. "man cc" will tell more about them. # The jury is still out whether either or neither help for Perl # and how much. Based on very quick testing, -fast boosts @@ -34,7 +31,7 @@ # hand searching things (index, m//, s///), seems to get slower. # Your mileage will vary. # -# Note 5: The -std is needed because the following compiled +# * The -std is needed because the following compiled # without the -std and linked with -lm # # #include <math.h> @@ -45,6 +42,14 @@ # UNIX 4.0{,a} dump core: Floating point exception in the printf(), # the y has become a signaling NaN. # +# * Compilation warnings like: +# +# "Undefined the ANSI standard macro ..." +# +# can be ignored, at least while compiling the POSIX extension +# and especially if using the sfio (the latter is not a standard +# part of Perl, never mind if it says little to you). +# # If using the DEC compiler we must find out the DEC compiler style: # the style changed between Digital UNIX (aka DEC OSF/1) 3 and @@ -53,8 +58,13 @@ # and it is called GEM. Many of the options we are going to use depend # on the compiler style. -# do NOT, I repeat, *NOT* take away that leading tab +# do NOT, I repeat, *NOT* take away those leading tabs + # reset + _DEC_uname_r= _DEC_cc_style= + # set + _DEC_uname_r=`uname -r` + # _DEC_cc_style set soon below # Configure Black Magic (TM) case "$cc" in @@ -74,6 +84,17 @@ case "$cc" in ;; esac +# be nauseatingly ANSI +case "$cc" in +gcc) ccflags="$ccflags -ansi" + ;; +*) ccflags="$ccflags -std" + ;; +esac + +# for gcc the Configure knows about the -fpic: +# position-independent code for dynamic loading + # we want optimisation case "$optimize" in @@ -84,48 +105,60 @@ case "$optimize" in new) optimize='-O4' ;; old) optimize='-O2 -Olimit 3200' ;; esac + ccflags="$ccflags -D_INTRINSICS" ;; esac ;; esac -# all compilers are ANSI -ccflags="$ccflags -DSTANDARD_C" - -# be nauseatingly ANSI -case "$cc" in -gcc) ccflags="$ccflags -ansi" - ;; -*) ccflags="$ccflags -std" - ;; -esac - # dlopen() is in libc libswanted="`echo $libswanted | sed -e 's/ dl / /'`" -# PW contains nothing useful for perl +# libPW contains nothing useful for perl libswanted="`echo $libswanted | sed -e 's/ PW / /'`" -# bsd contains nothing used by perl that is not already in libc +# libbsd contains nothing used by perl that is not already in libc libswanted="`echo $libswanted | sed -e 's/ bsd / /'`" -# c need not be separately listed +# libc need not be separately listed libswanted="`echo $libswanted | sed -e 's/ c / /'`" -# dbm is already in libc (as is ndbm) -libswanted="`echo $libswanted | sed -e 's/ dbm / /'`" +# ndbm is already in libc +libswanted="`echo $libswanted | sed -e 's/ ndbm / /'`" # the basic lddlflags used always lddlflags='-shared -expect_unresolved "*"' -# Check if it's a CMW version of OSF1, -# if so, do not hide the symbols. -test `uname -s` = "MLS+" || lddlflags="$lddlflags -hidden" +# Fancy compiler suites use optimising linker as well as compiler. +# <spider@Orb.Nashua.NH.US> +case "$_DEC_uname_r" in +*[123].*) # old loader + lddlflags="$lddlflags -O3" + ;; +*) lddlflags="$lddlflags $optimize -msym" + # -msym: If using a sufficiently recent /sbin/loader, + # keep the module symbols with the modules. + ;; +esac +# Yes, the above loses if gcc does not use the system linker. +# If that happens, let me know about it. <jhi@iki.fi> + -# If debugging (-g) do not strip the objects, otherwise, strip. +# If debugging or (old systems and doing shared) +# then do not strip the lib, otherwise, strip. +# As noted above the -DDEBUGGING is added automagically by Configure if -g. case "$optimize" in *-g*) ;; # left intentionally blank +*) case "$_DEC_uname_r" in + *[123].*) + case "$useshrplib" in + false|undef|'') lddlflags="$lddlflags -s" ;; + esac + ;; *) lddlflags="$lddlflags -s" + ;; + esac + ;; esac # @@ -133,10 +166,37 @@ esac # unset _DEC_cc_style +unset _DEC_uname_r # # History: # +# perl5.003_28: +# +# 22-Feb-1997 Jarkko Hietaniemi <jhi@iki.fi> +# +# * Restructuring Spider's suggestions. +# +# * Older Digital UNIXes cannot handle -Olimit ... for $lddlflags. +# +# * ld -s cannot be used in older Digital UNIXes when doing shared. +# +# +# 21-Feb-1997 Spider Boardman <spider@Orb.Nashua.NH.US> +# +# * -hidden removed. +# +# * -DSTANDARD_C removed. +# +# * -D_INTRINSICS added. (that -fast does not seem to buy much confirmed) +# +# * odbm not in libc, only ndbm. Therefore dbm back to $libswanted. +# +# * -msym for the newer runtime loaders. +# +# * $optimize also in $lddflags. +# +# # perl5.003_27: # # 18-Feb-1997 Jarkko Hietaniemi <jhi@iki.fi> diff --git a/installperl b/installperl index d4cb71185a..1267f49efc 100755 --- a/installperl +++ b/installperl @@ -90,54 +90,6 @@ if ($d_dosuid) { &chmod(04711, "$installbin/sperl$ver$exe_ext"); } -exit 0 if $versiononly; - -# Make links to ordinary names if installbin directory isn't current directory. - -if (! &samepath($installbin, '.')) { - &safe_unlink("$installbin/perl$exe_ext", "$installbin/suidperl$exe_ext"); - &link("$installbin/perl$ver$exe_ext", "$installbin/perl$exe_ext"); - &link("$installbin/sperl$ver$exe_ext", "$installbin/suidperl$exe_ext") - if $d_dosuid; -} - -if (! &samepath($installbin, 'x2p')) { - &safe_unlink("$installbin/a2p$exe_ext"); - &cmd("cp x2p/a2p$exe_ext $installbin/a2p$exe_ext"); - &chmod(0755, "$installbin/a2p$exe_ext"); -} - -# cppstdin is just a script, but it is architecture-dependent, so -# it can't safely be shared. Place it in $installbin. -# Note that Configure doesn't build cppstin if it isn't needed, so -# we skip this if cppstdin doesn't exist. -if ((-f cppstdin) && (! &samepath($installbin, '.'))) { - &safe_unlink("$installbin/cppstdin"); - &cmd("cp cppstdin $installbin/cppstdin"); - &chmod(0755, "$installbin/cppstdin"); -} - -# Install scripts. - -mkpath($installscript, 1, 0777); - -for (@scripts) { - &cmd("cp $_ $installscript"); - s#.*/##; &chmod(0755, "$installscript/$_"); -} - -# pstruct should be a link to c2ph - -&safe_unlink("$installscript/pstruct"); -&link("$installscript/c2ph","$installscript/pstruct"); - -# Install pod pages. Where? I guess in $installprivlib/pod. -mkpath("${installprivlib}/pod", 1, 0777); -foreach $file (@pods) { - # $file is a name like pod/perl.pod - cp_if_diff($file, "${installprivlib}/${file}"); -} - # Install library files. $do_installarchlib = $do_installprivlib = 0; @@ -150,6 +102,7 @@ mkpath($installsitearch, 1, 0777) if ($installsitearch); if (chdir "lib") { $do_installarchlib = ! &samepath($installarchlib, '.'); $do_installprivlib = ! &samepath($installprivlib, '.'); + $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$]/); if ($do_installarchlib || $do_installprivlib) { find(\&installlib, '.'); @@ -179,7 +132,7 @@ foreach $file (@corefiles) { $mainperl_is_instperl = 0; -if (!$nonono && -t STDIN && -t STDERR +if (!$versiononly && !$nonono && -t STDIN && -t STDERR && -w $mainperldir && ! &samepath($mainperldir, $installbin)) { local($usrbinperl) = "$mainperldir/perl$exe_ext"; local($instperl) = "$installbin/perl$exe_ext"; @@ -210,32 +163,89 @@ if (!$nonono && -t STDIN && -t STDERR } } +# Make links to ordinary names if installbin directory isn't current directory. + +if (! $versiononly && ! &samepath($installbin, '.')) { + &safe_unlink("$installbin/perl$exe_ext", "$installbin/suidperl$exe_ext"); + &link("$installbin/perl$ver$exe_ext", "$installbin/perl$exe_ext"); + &link("$installbin/sperl$ver$exe_ext", "$installbin/suidperl$exe_ext") + if $d_dosuid; +} + +if (!$versiononly && ! &samepath($installbin, 'x2p')) { + &safe_unlink("$installbin/a2p$exe_ext"); + &cmd("cp x2p/a2p$exe_ext $installbin/a2p$exe_ext"); + &chmod(0755, "$installbin/a2p$exe_ext"); +} + +# cppstdin is just a script, but it is architecture-dependent, so +# it can't safely be shared. Place it in $installbin. +# Note that Configure doesn't build cppstin if it isn't needed, so +# we skip this if cppstdin doesn't exist. +if (! $versiononly && (-f cppstdin) && (! &samepath($installbin, '.'))) { + &safe_unlink("$installbin/cppstdin"); + &cmd("cp cppstdin $installbin/cppstdin"); + &chmod(0755, "$installbin/cppstdin"); +} + +# Install scripts. + +mkpath($installscript, 1, 0777); + +if (! $versiononly) { + for (@scripts) { + &cmd("cp $_ $installscript"); + s#.*/##; &chmod(0755, "$installscript/$_"); + } +} + +# pstruct should be a link to c2ph + +if (! $versiononly) { + &safe_unlink("$installscript/pstruct"); + &link("$installscript/c2ph","$installscript/pstruct"); +} + +# Install pod pages. Where? I guess in $installprivlib/pod. + +if (! $versiononly && !($installprivlib =~ m/\Q$]/)) { + mkpath("${installprivlib}/pod", 1, 0777); + foreach $file (@pods) { + # $file is a name like pod/perl.pod + cp_if_diff($file, "${installprivlib}/${file}"); + } +} + # Check to make sure there aren't other perls around in installer's # path. This is probably UNIX-specific. Check all absolute directories # in the path except for where public executables are supposed to live. # Also skip $mainperl if the user opted to have it be a link to the # installed perl. -$dirsep = ($^O eq 'os2') ? ';' : ':' ; -($path = $ENV{"PATH"}) =~ s:\\:/:g ; -@path = split(/$dirsep/, $path); -@otherperls = (); -for (@path) { - next unless m,^/,; - next if ($_ eq $binexp); - # Use &samepath here because some systems have other dirs linked - # to $mainperldir (like SunOS) - next if ($mainperl_is_instperl && &samepath($_, $mainperldir)); - push(@otherperls, "$_/perl$exe_ext") - if (-x "$_/perl$exe_ext" && ! -d "$_/perl$exe_ext"); -} -if (@otherperls) { - print STDERR "\nWarning: perl appears in your path in the following " . - "locations beyond where\nwe just installed it:\n"; - for (@otherperls) { - print STDERR " ", $_, "\n"; +if (!$versiononly) { + + $dirsep = ($^O eq 'os2') ? ';' : ':' ; + ($path = $ENV{"PATH"}) =~ s:\\:/:g ; + @path = split(/$dirsep/, $path); + @otherperls = (); + for (@path) { + next unless m,^/,; + # Use &samepath here because some systems have other dirs linked + # to $mainperldir (like SunOS) + next if &samepath($_, $binexp); + next if ($mainperl_is_instperl && &samepath($_, $mainperldir)); + push(@otherperls, "$_/perl$exe_ext") + if (-x "$_/perl$exe_ext" && ! -d "$_/perl$exe_ext"); + } + if (@otherperls) { + print STDERR "\nWarning: perl appears in your path in the following " . + "locations beyond where\nwe just installed it:\n"; + for (@otherperls) { + print STDERR " ", $_, "\n"; + } + print STDERR "\n"; } - print STDERR "\n"; + } print STDERR " Installation complete\n"; diff --git a/patchlevel.h b/patchlevel.h index 0314619d6e..47ca5dd51a 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -1,5 +1,5 @@ #define PATCHLEVEL 3 -#define SUBVERSION 28 +#define SUBVERSION 90 /* local_patches -- list of locally applied less-than-subversion patches. diff --git a/plan9/buildinfo b/plan9/buildinfo index 4fcbae698f..4d4407eade 100644 --- a/plan9/buildinfo +++ b/plan9/buildinfo @@ -1 +1 @@ -p9pvers = 5.003_08 +p9pvers = 5.003_90 diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 992cd2c3f5..01a03f3e05 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -130,8 +130,8 @@ C<gv_fetchmethod> and C<perl_call_sv> =item Documentation Changes -L<perldelta>, L<perllocale>, L<perltoot>, L<perlapio>, L<perldebug>, -L<perlsec> +L<perlbug>, L<perldelta>, L<perllocale>, L<perltoot>, L<perlapio>, +L<perldebug>, L<perlsec> =item New Diagnostics @@ -400,19 +400,20 @@ SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, sort SUBNAME LIST, sort BLOCK LIST, sort LIST, splice ARRAY,OFFSET,LENGTH,LIST, splice ARRAY,OFFSET,LENGTH, splice ARRAY,OFFSET, split /PATTERN/,EXPR,LIMIT, split /PATTERN/,EXPR, split /PATTERN/, split, sprintf FORMAT, LIST, sqrt EXPR, sqrt, srand EXPR, -stat FILEHANDLE, stat EXPR, stat, study SCALAR, study, sub BLOCK, sub NAME, -sub NAME BLOCK, substr EXPR,OFFSET,LEN, substr EXPR,OFFSET, symlink -OLDFILE,NEWFILE, syscall LIST, sysopen FILEHANDLE,FILENAME,MODE, sysopen -FILEHANDLE,FILENAME,MODE,PERMS, sysread FILEHANDLE,SCALAR,LENGTH,OFFSET, -sysread FILEHANDLE,SCALAR,LENGTH, system LIST, syswrite -FILEHANDLE,SCALAR,LENGTH,OFFSET, syswrite FILEHANDLE,SCALAR,LENGTH, tell -FILEHANDLE, tell, telldir DIRHANDLE, tie VARIABLE,CLASSNAME,LIST, tied -VARIABLE, time, times, tr///, truncate FILEHANDLE,LENGTH, truncate -EXPR,LENGTH, uc EXPR, uc, ucfirst EXPR, ucfirst, umask EXPR, umask, undef -EXPR, undef, unlink LIST, unlink, unpack TEMPLATE,EXPR, untie VARIABLE, -unshift ARRAY,LIST, use Module LIST, use Module, use Module VERSION LIST, -use VERSION, utime LIST, values HASH, vec EXPR,OFFSET,BITS, wait, waitpid -PID,FLAGS, wantarray, warn LIST, write FILEHANDLE, write EXPR, write, y/// +srand, stat FILEHANDLE, stat EXPR, stat, study SCALAR, study, sub BLOCK, +sub NAME, sub NAME BLOCK, substr EXPR,OFFSET,LEN, substr EXPR,OFFSET, +symlink OLDFILE,NEWFILE, syscall LIST, sysopen FILEHANDLE,FILENAME,MODE, +sysopen FILEHANDLE,FILENAME,MODE,PERMS, sysread +FILEHANDLE,SCALAR,LENGTH,OFFSET, sysread FILEHANDLE,SCALAR,LENGTH, system +LIST, syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET, syswrite +FILEHANDLE,SCALAR,LENGTH, tell FILEHANDLE, tell, telldir DIRHANDLE, tie +VARIABLE,CLASSNAME,LIST, tied VARIABLE, time, times, tr///, truncate +FILEHANDLE,LENGTH, truncate EXPR,LENGTH, uc EXPR, uc, ucfirst EXPR, +ucfirst, umask EXPR, umask, undef EXPR, undef, unlink LIST, unlink, unpack +TEMPLATE,EXPR, untie VARIABLE, unshift ARRAY,LIST, use Module LIST, use +Module, use Module VERSION LIST, use VERSION, utime LIST, values HASH, vec +EXPR,OFFSET,BITS, wait, waitpid PID,FLAGS, wantarray, warn LIST, write +FILEHANDLE, write EXPR, write, y/// =back @@ -1098,6 +1099,8 @@ Prompt, Multi-line commands, Stack backtrace, Listing, Frame listing =item Laundering and Detecting Tainted Data +=item Switches On the "#!" Line + =item Cleaning Up Your Path =item Security Bugs @@ -1163,7 +1166,8 @@ Regular Expression =item Subroutine, Signal, Sorting Traps -(Signals), (Sort Subroutine), warn() won't let you specify a filehandle +Subroutine calls provide lvalue context to arguments, (Signals), (Sort +Subroutine), warn() won't let you specify a filehandle =item OS Traps @@ -36,7 +36,8 @@ if (eval {link('b','c')}) {print "ok 3\n";} else {print "not ok 3\n";} if ($Config{dont_use_nlink} || $nlink == 3) {print "ok 4\n";} else {print "not ok 4\n";} -if (($mode & 0777) == 0666) {print "ok 5\n";} else {print "not ok 5\n";} +if (($mode & 0777) == 0666 || $^O eq 'amigaos') + {print "ok 5\n";} else {print "not ok 5\n";} if ((chmod 0777,'a') == 1) {print "ok 6\n";} else {print "not ok 6\n";} @@ -70,7 +71,8 @@ if ($foo == 1) {print "ok 16\n";} else {print "not ok 16 $foo\n";} ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat('b'); if ($ino) {print "ok 17\n";} else {print "not ok 17\n";} -if (($atime == 500000000 && $mtime == 500000001) || $wd =~ m#/afs/#) +if (($atime == 500000000 && $mtime == 500000001) + || $wd =~ m#/afs/# || $^O eq 'amigaos') {print "ok 18\n";} else {print "not ok 18 $atime $mtime\n";} diff --git a/t/lib/anydbm.t b/t/lib/anydbm.t index 52ab22b13e..eeec2caca9 100755 --- a/t/lib/anydbm.t +++ b/t/lib/anydbm.t @@ -15,7 +15,8 @@ print "1..12\n"; unlink <Op.dbmx*>; umask(0); -print (tie(%h,AnyDBM_File,'Op.dbmx', O_RDWR|O_CREAT, 0640) ? "ok 1\n" : "not ok 1\n"); +print (tie(%h,AnyDBM_File,'Op.dbmx', O_RDWR|O_CREAT, 0640) + ? "ok 1\n" : "not ok 1\n"); $Dfile = "Op.dbmx.pag"; if (! -e $Dfile) { @@ -23,7 +24,8 @@ if (! -e $Dfile) { } ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ? "ok 2\n" : "not ok 2\n"); +print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' + ? "ok 2\n" : "not ok 2\n"); while (($key,$value) = each(%h)) { $i++; } diff --git a/t/lib/db-btree.t b/t/lib/db-btree.t index 0e2a7c34eb..10f585304a 100755 --- a/t/lib/db-btree.t +++ b/t/lib/db-btree.t @@ -94,7 +94,7 @@ ok(19, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -ok(20, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ); +ok(20, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos'); while (($key,$value) = each(%h)) { $i++; diff --git a/t/lib/db-hash.t b/t/lib/db-hash.t index 09c0ee2151..9ebd060e0a 100755 --- a/t/lib/db-hash.t +++ b/t/lib/db-hash.t @@ -72,7 +72,7 @@ ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -ok(16, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ); +ok(16, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos'); while (($key,$value) = each(%h)) { $i++; diff --git a/t/lib/db-recno.t b/t/lib/db-recno.t index 045ddd99b0..b5b4f9404d 100755 --- a/t/lib/db-recno.t +++ b/t/lib/db-recno.t @@ -93,7 +93,8 @@ my $X ; my @h ; ok(17, $X = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; -ok(18, ( (stat($Dfile))[2] & 0777) == ($^O eq 'os2' ? 0666 : 0640)) ; +ok(18, ((stat($Dfile))[2] & 0777) == ($^O eq 'os2' ? 0666 : 0640) + || $^O eq 'amigaos') ; #my $l = @h ; my $l = $X->length ; diff --git a/t/lib/gdbm.t b/t/lib/gdbm.t index 62bb936ff1..6a2d5fa54e 100755 --- a/t/lib/gdbm.t +++ b/t/lib/gdbm.t @@ -26,7 +26,8 @@ if (! -e $Dfile) { } ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ? "ok 2\n" : "not ok 2\n"); +print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' + ? "ok 2\n" : "not ok 2\n"); while (($key,$value) = each(%h)) { $i++; } diff --git a/t/lib/ndbm.t b/t/lib/ndbm.t index 8e2ba8164a..48f64fef09 100755 --- a/t/lib/ndbm.t +++ b/t/lib/ndbm.t @@ -29,7 +29,8 @@ if (! -e $Dfile) { } ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ? "ok 2\n" : "not ok 2\n"); +print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' + ? "ok 2\n" : "not ok 2\n"); while (($key,$value) = each(%h)) { $i++; } diff --git a/t/lib/odbm.t b/t/lib/odbm.t index 0c530d2238..e83d0f979c 100755 --- a/t/lib/odbm.t +++ b/t/lib/odbm.t @@ -29,7 +29,8 @@ if (! -e $Dfile) { } ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ? "ok 2\n" : "not ok 2\n"); +print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' + ? "ok 2\n" : "not ok 2\n"); while (($key,$value) = each(%h)) { $i++; } diff --git a/t/lib/sdbm.t b/t/lib/sdbm.t index 65419f9711..b8e02ec3c6 100755 --- a/t/lib/sdbm.t +++ b/t/lib/sdbm.t @@ -28,7 +28,8 @@ if (! -e $Dfile) { } ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) ? "ok 2\n" : "not ok 2\n"); +print (($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' + ? "ok 2\n" : "not ok 2\n"); while (($key,$value) = each(%h)) { $i++; } diff --git a/t/op/magic.t b/t/op/magic.t index f3e6ba3cc2..70f2bec2c3 100755 --- a/t/op/magic.t +++ b/t/op/magic.t @@ -1,7 +1,5 @@ #!./perl -# $RCSfile: magic.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:05 $ - BEGIN { $^W = 1; $| = 1; @@ -97,7 +95,7 @@ ok 17, $@ eq "foo\n", $@; ok 18, $$ > 0, $$; # $^X and $0 -if ($^O eq 'qnx') { +if ($^O eq 'qnx' || $^O eq 'amigaos') { chomp($wd = `pwd`); } else { @@ -118,6 +116,7 @@ EOF ok 21, close(SCRIPT), $!; ok 22, chmod(0755, $script), $!; $_ = `$script`; +s{\bminiperl\b}{perl}; # so that test doesn't fail with miniperl s{is perl}{is $wd/perl}; # for systems where $^X is only a basename ok 23, $_ eq $s2, ":$_:!=:$s2:"; $_ = `$wd/perl $script`; diff --git a/t/op/stat.t b/t/op/stat.t index 0c9c025bf3..f0fd9a00b1 100755 --- a/t/op/stat.t +++ b/t/op/stat.t @@ -40,7 +40,7 @@ sleep 2; if ($Config{dont_use_nlink} || $nlink == 2) {print "ok 3\n";} else {print "not ok 3\n";} -if (($mtime && $mtime != $ctime) || $cwd =~ m#/afs/#) { +if (($mtime && $mtime != $ctime) || $cwd =~ m#/afs/# || $^O eq 'amigaos') { print "ok 4\n"; } else { @@ -123,18 +123,21 @@ else {print "not ok 33\n";} if (! -b '.') {print "ok 34\n";} else {print "not ok 34\n";} +if ($^O eq 'amigaos') {print "ok 35\n"; goto tty_test;} + $cnt = $uid = 0; die "Can't run op/stat.t test 35 without pwd working" unless $cwd; ($bin) = grep {-d} qw(/bin /usr/bin) or print ("not ok 35\n"), goto tty_test; -chdir $bin || die "Can't cd to $bin: $!"; -while (defined($_ = <*>)) { +opendir BIN, $bin or die "Can't opendir $bin: $!"; +while (defined($_ = readdir BIN)) { + $_ = "$bin/$_"; $cnt++; $uid++ if -u; last if $uid && $uid < $cnt; } -chdir $cwd || die "Can't cd back to $cwd"; +closedir BIN; # I suppose this is going to fail somewhere... if ($uid > 0 && $uid < $cnt) |