summaryrefslogtreecommitdiff
path: root/img/lib/IM/EncDec.pm
diff options
context:
space:
mode:
Diffstat (limited to 'img/lib/IM/EncDec.pm')
-rw-r--r--img/lib/IM/EncDec.pm134
1 files changed, 73 insertions, 61 deletions
diff --git a/img/lib/IM/EncDec.pm b/img/lib/IM/EncDec.pm
index acc1b9a0..11ac71cb 100644
--- a/img/lib/IM/EncDec.pm
+++ b/img/lib/IM/EncDec.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Apr 14, 2000
+### Revised: Dec 7, 2002
###
-my $PM_VERSION = "IM::EncDec.pm version 20000414(IM141)";
+my $PM_VERSION = "IM::EncDec.pm version 20021207(IM142)";
package IM::EncDec;
require 5.003;
@@ -23,40 +23,6 @@ use vars qw(@ISA @EXPORT);
b_encode_string b_decode_string
q_encode_string q_decode_string);
-=head1 NAME
-
-EncDec - MIME header encoder/decoder
-
-=head1 SYNOPSIS
-
- use IM::EncDec;
-
- $mime_header_encoded_string =
- mime_encode_string(string, iso7bit, iso8bit);
- $string =
- mime_decode_string(mime_header_encoded_string);
-
- $B_encoded_string = b_encode_string(string);
- $string = b_decode_string(B_encoded_string);
-
- $Q_encoded_string = q_encode_string(string);
- $string = q_decode_string(Q_encoded_string);
-
-=head1 DESCRIPTION
-
-MIME header encoder/decoder package.
-
- $_ = "JAPANESE (Kazuhiko Yamamoto)";
- mime_encode_string($_, 'iso-2022-jp', 'iso-8859-1');
- => =?iso-2022-jp?B?GyRCOzNLXE9CSScbKEI=?=
- (Kazuhiko Yamamoto)
-
- s/\n[\t ]+//g;
- print mime_decode_string($_), "\n";
- => "JAPANESE (Kazuhiko Yamamoto)"
-
-=cut
-
use vars qw(@D2H
$mime_encode_switch
$mime_decode_switch
@@ -90,7 +56,7 @@ $mime_decode_switch = {
## String Encoder/Decoder
##
-sub mime_encode_string ($$$) {
+sub mime_encode_string($$$) {
my($str, $iso7, $iso8) = (@_);
my($point, $len, $nstr, $s) = (0, length($str), '', '');
my($single, $double) = ('', '');
@@ -155,12 +121,12 @@ sub mime_encode_string ($$$) {
return $nstr;
}
-sub mime_decode_string ($) {
+sub mime_decode_string($) {
my $in = shift;
return '' if ($in eq '');
if (!$main::opt_mimedecodequoted) {
if ($in =~ /^([^"]*)("[^"]*")([\0-\255]*)$/) {
- return mime_decode_string($1) . $2 . mime_decode_string($3);
+ return &mime_decode_string($1) . $2 . &mime_decode_string($3);
}
}
$in =~ s/\?=\s+=\?/?==?/g;
@@ -170,7 +136,7 @@ sub mime_decode_string ($) {
}
sub mime_decode($$$) {
- my ($cs, $bq, $str) = @_;
+ my($cs, $bq, $str) = @_;
my $ret = &{$$mime_decode_switch{uc($3)}}($4);
if ($cs =~ /iso-8859-([2-9])/i) {
$ret = iso_8859_to_ctext($ret, $1);
@@ -194,8 +160,8 @@ sub mime_decode($$$) {
return $ret;
}
-sub iso_8859_to_ctext ($$) {
- my ($str, $num) = @_;
+sub iso_8859_to_ctext($$) {
+ my($str, $num) = @_;
my @index = ("A", "A", "B", "C", "D", "L", "G", "F", "H", "M");
$str =~ s/([\x80-\xff]+)/\e-$index[$num]$1\e-A/g;
return $str;
@@ -217,9 +183,9 @@ sub iso_8859_to_ctext ($$) {
"\xce", "\xb0", "\xb1", "\xc6", "\xb4", "\xb5", "\xc4", "\xb3",
"\xc5", "\xb8", "\xb9", "\xba", "\xbb", "\xbc", "\xbd", "\xbe",
"\xbf", "\xcf", "\xc0", "\xc1", "\xc2", "\xc3", "\xb6", "\xb2",
- "\xcc", "\xcb", "\xb7", "\xc8", "\xcd", "\xc9", "\xc7", "\xca" );
+ "\xcc", "\xcb", "\xb7", "\xc8", "\xcd", "\xc9", "\xc7", "\xca");
-sub koi2iso ($) {
+sub koi2iso($) {
my $str = shift;
$str =~ s/(.)/$koi_iso[ord($1)-128]/ge;
return $str;
@@ -232,12 +198,12 @@ sub koi8r_to_ctext($) {
}
sub tis_620_to_ctext($) {
- my ($str) = shift;
+ my($str) = shift;
$str =~ s/([\x80-\xff]+)/\e-T$1\e-A/g;
return $str;
}
-sub cn_gb_to_ctext ($) {
+sub cn_gb_to_ctext($) {
my $str = shift;
$str =~ s/([\x80-\xff]+)/"\e\$(A" . remove_msb($1) . "\e(B"/ge;
return $str;
@@ -251,7 +217,7 @@ sub hz_to_ctext($) {
return $str;
}
-sub euc_jp_to_ctext ($) {
+sub euc_jp_to_ctext($) {
my $str = shift;
$str =~ s/((\x8f[\xa0-\xff][\xa0-\xff])+)/"\e\$(D"
. remove_msb(remove_ss($1, "\x8f")) . "\e-A"/ge;
@@ -261,25 +227,25 @@ sub euc_jp_to_ctext ($) {
return $str;
}
-sub euc_kr_to_ctext ($) {
+sub euc_kr_to_ctext($) {
my $str = shift;
$str =~ s/([\x80-\xff]+)/"\e\$(C" . remove_msb($1) . "\e(B"/ge;
return $str;
}
-sub remove_msb ($) {
+sub remove_msb($) {
my $str = shift;
$str =~ tr/\x80-\xff/\x00-\x7f/;
return $str;
}
-sub remove_ss ($$) {
- my ($str, $si) = @_;
+sub remove_ss($$) {
+ my($str, $si) = @_;
$str =~ s/$si//g;
return $str;
}
-sub shift_jis_to_ctext ($) {
+sub shift_jis_to_ctext($) {
my $str = shift;
my $kanji = "[\x81-\x9f\xe0-\xef].";
my $kana = "[\xa0-\xdf]";
@@ -292,7 +258,7 @@ sub shift_jis_to_ctext ($) {
sub s2j($) {
my $str = shift;
- my ($c1, $c2);
+ my($c1, $c2);
my $ret = "";
while ($str) {
@@ -311,9 +277,9 @@ sub s2j($) {
return $ret;
}
-sub b157to94 ($) {
+sub b157to94($) {
my $str = shift;
- my ($c1, $c2, $tmp);
+ my($c1, $c2, $tmp);
my $ret = "";
while ($str) {
@@ -350,14 +316,14 @@ sub big5_to_ctext($) {
## B Encoder/Decoder
##
-sub b_encode_string ($) {
+sub b_encode_string($) {
my $mod3 = length($_[0]) % 3;
local($_);
$_ = pack('u', $_[0]);
chop;
s/(^|\n).//mg;
- tr[`!-_][A-Za-z0-9+/];
+ tr[`!-_][A-Za-z0-9+/]; #`
if ($mod3 == 1) { s/..$/==/; }
elsif ($mod3 == 2) { s/.$/=/; }
@@ -365,7 +331,7 @@ sub b_encode_string ($) {
$_;
}
-sub b_decode_string ($) {
+sub b_decode_string($) {
my $s64 = shift;
my $len;
my $res = '';
@@ -378,7 +344,7 @@ sub b_decode_string ($) {
if (/(=+)$/) {
$len -= length($1);
}
- tr[A-Za-z0-9+/=][`!-_A];
+ tr[A-Za-z0-9+/=][`!-_A]; #`
$res .= sprintf("%c%s\n", $len + 32, $_);
}
@@ -390,7 +356,7 @@ sub b_decode_string ($) {
## Q Encoder/Decoder
##
-sub q_encode_string ($;$) {
+sub q_encode_string($;$) {
my($line, $struct) = @_;
local($_);
@@ -404,7 +370,7 @@ sub q_encode_string ($;$) {
$_;
}
-sub q_decode_string ($) {
+sub q_decode_string($) {
my($qstr) = @_;
local($_);
@@ -416,6 +382,52 @@ sub q_decode_string ($) {
1;
+__END__
+
+=head1 NAME
+
+IM::EncDec - MIME header encoder/decoder
+
+=head1 SYNOPSIS
+
+ use IM::EncDec;
+
+ $mime_header_encoded_string =
+ mime_encode_string(string, iso7bit, iso8bit);
+ $string =
+ mime_decode_string(mime_header_encoded_string);
+
+ $B_encoded_string = b_encode_string(string);
+ $string = b_decode_string(B_encoded_string);
+
+ $Q_encoded_string = q_encode_string(string);
+ $string = q_decode_string(Q_encoded_string);
+
+=head1 DESCRIPTION
+
+The I<IM::EncDec> module is encoder/decoder for MIME header.
+
+This modules is provided by IM (Internet Message).
+
+=head1 EXAMPLES
+
+ $_ = "JAPANESE (Kazuhiko Yamamoto)";
+ mime_encode_string($_, 'iso-2022-jp', 'iso-8859-1');
+ => =?iso-2022-jp?B?GyRCOzNLXE9CSScbKEI=?=
+ (Kazuhiko Yamamoto)
+
+ s/\n[\t ]+//g;
+ print mime_decode_string($_), "\n";
+ => "JAPANESE (Kazuhiko Yamamoto)"
+
+=head1 COPYRIGHT
+
+IM (Internet Message) is copyrighted by IM developing team.
+You can redistribute it and/or modify it under the modified BSD
+license. See the copyright file for more details.
+
+=cut
+
### Copyright (C) 1997, 1998, 1999 IM developing team
### All rights reserved.
###