| 526 |
return undef; |
return undef; |
| 527 |
} # uri_to_name |
} # uri_to_name |
| 528 |
|
|
| 529 |
|
require IO::Handle; |
| 530 |
|
|
| 531 |
|
package Whatpm::Charset::DecodeHandle::ByteBuffer; |
| 532 |
|
|
| 533 |
|
sub new ($$) { |
| 534 |
|
my $self = bless { |
| 535 |
|
buffer => '', |
| 536 |
|
}, shift; |
| 537 |
|
$self->{filehandle} = shift; |
| 538 |
|
return $self; |
| 539 |
|
} # new |
| 540 |
|
|
| 541 |
|
sub read { |
| 542 |
|
my $self = shift; |
| 543 |
|
my $pos = length $self->{buffer}; |
| 544 |
|
my $r = $self->{filehandle}->read ($self->{buffer}, $_[1], $pos); |
| 545 |
|
substr ($_[0], $_[2]) = substr ($self->{buffer}, $pos); |
| 546 |
|
return $r; |
| 547 |
|
} # read |
| 548 |
|
|
| 549 |
|
sub close { $_[0]->{filehandle}->close } |
| 550 |
|
|
| 551 |
package Whatpm::Charset::DecodeHandle::Encode; |
package Whatpm::Charset::DecodeHandle::Encode; |
| 552 |
|
|
| 553 |
sub charset ($) { $_[0]->{charset} } |
sub charset ($) { $_[0]->{charset} } |
| 554 |
|
|
| 555 |
sub close ($) { CORE::close $_[0]->{filehandle} } |
sub close ($) { $_[0]->{filehandle}->close } |
| 556 |
|
|
| 557 |
sub getc ($) { |
sub getc ($) { |
| 558 |
my $self = $_[0]; |
my $self = $_[0]; |
| 560 |
|
|
| 561 |
my $error; |
my $error; |
| 562 |
if ($self->{continue}) { |
if ($self->{continue}) { |
| 563 |
if (read $self->{filehandle}, $self->{byte_buffer}, 256, |
if ($self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 564 |
length $self->{byte_buffer}) { |
length $self->{byte_buffer})) { |
| 565 |
# |
# |
| 566 |
} else { |
} else { |
| 567 |
$error = 1; |
$error = 1; |
| 568 |
} |
} |
| 569 |
$self->{continue} = 0; |
$self->{continue} = 0; |
| 570 |
} elsif (512 > length $self->{byte_buffer}) { |
} elsif (512 > length $self->{byte_buffer}) { |
| 571 |
read $self->{filehandle}, $self->{byte_buffer}, 256, |
$self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 572 |
length $self->{byte_buffer}; |
length $self->{byte_buffer}); |
| 573 |
} |
} |
| 574 |
|
|
| 575 |
my $r; |
my $r; |
| 635 |
|
|
| 636 |
my $error; |
my $error; |
| 637 |
if ($self->{continue}) { |
if ($self->{continue}) { |
| 638 |
if (read $self->{filehandle}, $self->{byte_buffer}, 256, |
if ($self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 639 |
length $self->{byte_buffer}) { |
length $self->{byte_buffer})) { |
| 640 |
# |
# |
| 641 |
} else { |
} else { |
| 642 |
$error = 1; |
$error = 1; |
| 643 |
} |
} |
| 644 |
$self->{continue} = 0; |
$self->{continue} = 0; |
| 645 |
} elsif (512 > length $self->{byte_buffer}) { |
} elsif (512 > length $self->{byte_buffer}) { |
| 646 |
read $self->{filehandle}, $self->{byte_buffer}, 256, |
$self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 647 |
length $self->{byte_buffer}; |
length $self->{byte_buffer}); |
| 648 |
} |
} |
| 649 |
|
|
| 650 |
my $r; |
my $r; |
| 705 |
A: { |
A: { |
| 706 |
my $error; |
my $error; |
| 707 |
if ($self->{continue}) { |
if ($self->{continue}) { |
| 708 |
if (read $self->{filehandle}, $self->{byte_buffer}, 256, |
if ($self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 709 |
length $self->{byte_buffer}) { |
length $self->{byte_buffer})) { |
| 710 |
# |
# |
| 711 |
} else { |
} else { |
| 712 |
$error = 1; |
$error = 1; |
| 713 |
} |
} |
| 714 |
$self->{continue} = 0; |
$self->{continue} = 0; |
| 715 |
} elsif (512 > length $self->{byte_buffer}) { |
} elsif (512 > length $self->{byte_buffer}) { |
| 716 |
read $self->{filehandle}, $self->{byte_buffer}, 256, |
$self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 717 |
length $self->{byte_buffer}; |
length $self->{byte_buffer}); |
| 718 |
} |
} |
| 719 |
|
|
| 720 |
unless ($error) { |
unless ($error) { |
| 819 |
|
|
| 820 |
my $error; |
my $error; |
| 821 |
if ($self->{continue}) { |
if ($self->{continue}) { |
| 822 |
if (read $self->{filehandle}, $self->{byte_buffer}, 256, |
if ($self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 823 |
length $self->{byte_buffer}) { |
length $self->{byte_buffer})) { |
| 824 |
# |
# |
| 825 |
} else { |
} else { |
| 826 |
$error = 1; |
$error = 1; |
| 827 |
} |
} |
| 828 |
$self->{continue} = 0; |
$self->{continue} = 0; |
| 829 |
} elsif (512 > length $self->{byte_buffer}) { |
} elsif (512 > length $self->{byte_buffer}) { |
| 830 |
read $self->{filehandle}, $self->{byte_buffer}, 256, |
$self->{filehandle}->read ($self->{byte_buffer}, 256, |
| 831 |
length $self->{byte_buffer}; |
length $self->{byte_buffer}); |
| 832 |
} |
} |
| 833 |
|
|
| 834 |
my $r; |
my $r; |