home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
perl_ste.zip
/
auto
/
LWP
/
IO
/
write.al
< prev
Wrap
Text File
|
1997-11-28
|
909b
|
39 lines
# NOTE: Derived from ./blib/lib/LWP/IO.pm. Changes made here will be lost.
package LWP::IO;
sub write
{
my $fd = shift;
my $timeout = $_[1]; # we don't want to copy data in $_[0]
my $len = length $_[0];
my $offset = 0;
while ($offset < $len) {
my $win = '';
vec($win, fileno($fd), 1) = 1;
my $err;
my $nfound = select(undef, $win, $err = $win, $timeout);
if ($nfound == 0) {
die "Timeout";
} elsif ($nfound < 0) {
die "Select failed: $!";
} elsif ($err =~ /[^\0]/) {
die "Exception while writing on socket handle";
} else {
my $n = syswrite($fd, $_[0], $len-$offset, $offset);
return $bytes_written unless defined $n;
if ($LWP::Debug::current_level{'conns'}) {
LWP::Debug::conns("Write $n bytes: '" .
substr($_[0], $offset, $n) .
"'");
}
$offset += $n;
}
}
$offset;
}
1;
1;