X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FFile%2FCopy.pm;h=31fad2ac5d6b2cc59cf71f522019add623d75cbf;hb=be6afa270448343c16f7ca13b43bcc64ac015945;hp=afb7635f69b82173e9546d3ee673fdb0db6c9862;hpb=3b825e419da1c361eab06a1e6d287276c0aef241;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm index afb7635..31fad2a 100644 --- a/lib/File/Copy.pm +++ b/lib/File/Copy.pm @@ -72,6 +72,7 @@ sub copy { if ($Config{d_symlink} && $Config{d_readlink} && !($^O eq 'Win32' || $^O eq 'os2' || $^O eq 'vms')) { + no warnings 'io'; # don't warn if -l on filehandle if ((-e $from && -l $from) || (-e $to && -l $to)) { my @fs = stat($from); my @ts = stat($to); @@ -128,8 +129,7 @@ sub copy { $size = shift(@_) + 0; croak("Bad buffer size for copy: $size\n") unless ($size > 0); } else { - no warnings 'uninitialized'; - $size = -s $from_h; + $size = tied(*$from_h) ? 0 : -s $from_h || 0; $size = 1024 if ($size < 512); $size = $Too_Big if ($size > $Too_Big); } @@ -333,9 +333,10 @@ File::Copy also provides the C routine, which copies the file specified in the first parameter to the file specified in the second parameter, preserving OS-specific attributes and file structure. For Unix systems, this is equivalent to the simple -C routine. For VMS systems, this calls the C -routine (see below). For OS/2 systems, this calls the C -XSUB directly. For Win32 systems, this calls C. +C routine, which doesn't preserve OS-specific attributes. For +VMS systems, this calls the C routine (see below). For OS/2 +systems, this calls the C XSUB directly. For Win32 systems, +this calls C. =head2 Special behaviour if C is defined (OS/2, VMS and Win32)