richter     00/07/16 22:16:28

  Modified:    .        Changes.pod Embperl.pm Embperl.pod EmbperlD.pod
                        EmbperlObject.pm INSTALL.pod MANIFEST Makefile.PL
                        TODO epchar.c.min epmain.c epnames.h test.pl
                        typemap
               Embperl  Mail.pm
               test/cmp eponotfound.htm epoobj1.htm epoobj2.htm epoobj3.htm
                        epopage1.htm epopage2.htm escape.htm object.htm
               test/conf httpd.conf.src
               test/html escape.htm
               test/html/EmbperlObject epofoot.htm
               test/html/EmbperlObject/obj epobase.htm epofoot.htm
                        epoobj3.htm
  Added:       test/cmp epoobj4.htm
               test/html/EmbperlObject/obj epoobj4.htm
  Log:
     - correct spelling error and renamed ScanEnvironement to ScanEnvironment.
       (ScanEnvironement still works).
     - EmbperlObject can now be used also offline (via HTML::EmbperlObject::Execute)
     - MailFormTo and HTML::Embperl::Mail::Execute now have a configuration
       directive EMBPERL_MAILHELO, can be used to specify the host/domain for the
       HELO/EHLO command. Suggested by Remco Brink.
     - Fixed a bug that caused the default drive to be incorrectly set on Win 32.
  
  Revision  Changes    Path
  1.119     +9 -5      embperl/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Changes.pod,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -r1.118 -r1.119
  --- Changes.pod       2000/07/16 17:45:52     1.118
  +++ Changes.pod       2000/07/17 05:16:03     1.119
  @@ -1,11 +1,7 @@
   =pod
   
  -=head1 1.3b4_dev -- That's what currently under developement
  +=head1 1.3b4 (BETA)  17.07.2000
   
  -Last Update: <$localtime$> (MET)
  -
  -NOTE: This version is only available via L<"CVS"|CVS/"INTRO">
  -
      - New $escmode (or EMBPERL_ESCMODE) to disable the possiblilty
        to turn off escaping with a leading backslash. Adding 4 to
        any escmode will cause Embperl to do no special processing
  @@ -45,8 +41,16 @@
        and the Embperl request object is blessed into the packages of the
        requested page, so you can do methods calls to subs that are defined
        inside the requested page.
  +   - correct spelling error and renamed ScanEnvironement to ScanEnvironment.
  +     (ScanEnvironement still works).
  +   - EmbperlObject can now be used also offline (via HTML::EmbperlObject::Execute)  
 
  +   - MailFormTo and HTML::Embperl::Mail::Execute now have a configuration
  +     directive EMBPERL_MAILHELO, can be used to specify the host/domain for the 
  +     HELO/EHLO command. Suggested by Remco Brink.
  +   - Fixed a bug that caused the default drive to be incorrectly set on Win 32.
   
    
  +
   =head1 1.3b3 (BETA)  25.04.2000
   
      - Fixed SIGSEGV which occurs in cleanup with Perl 5.6. Spotted by 
  
  
  
  1.108     +14 -10    embperl/Embperl.pm
  
  Index: Embperl.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.pm,v
  retrieving revision 1.107
  retrieving revision 1.108
  diff -u -r1.107 -r1.108
  --- Embperl.pm        2000/07/16 17:45:52     1.107
  +++ Embperl.pm        2000/07/17 05:16:03     1.108
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Embperl.pm,v 1.107 2000/07/16 17:45:52 richter Exp $
  +#   $Id: Embperl.pm,v 1.108 2000/07/17 05:16:03 richter Exp $
   #
   ###################################################################################
   
  @@ -79,7 +79,7 @@
   @ISA = qw(Exporter DynaLoader);
   
   
  -$VERSION = '1.3b4_dev';
  +$VERSION = '1.3b4';
   
   
   # HTML::Embperl cannot be bootstrapped in nonlazy mode except
  @@ -322,14 +322,10 @@
       { 
       eval 'use Apache' ; # make sure Apache.pm is loaded (is not at server startup 
in mod_perl < 1.11)
       die "use Apache failed: $@" if ($@); 
  -    #eval 'use Apache::Constants qw(:common &OPT_EXECCGI)' ;
  -    eval 'use Apache::Constants qw(&OPT_EXECCGI &DECLINED &OK &FORBIDDEN)' ;
  +    eval 'use Apache::Constants qw(&OPT_EXECCGI &DECLINED &OK &FORBIDDEN 
&NOT_FOUND) ;' ;
       die "use Apache::Constants failed: $@" if ($@); 
  -    XS_Init (epIOMod_Perl, $DefaultLog, $DebugDefault) ;
  -#    eval 'sub OK        { 0 ;   }' if (!defined (&OK)) ;
  -    eval 'sub NOT_FOUND { 404 ; }' if (!defined (&NOT_FOUND)) ;
  -#    eval 'sub FORBIDDEN { 403 ; }' if (!defined (&FORBIDDEN)) ;
   
  +    XS_Init (epIOMod_Perl, $DefaultLog, $DebugDefault) ;
       }
   else
       {
  @@ -621,7 +617,7 @@
   
   
##########################################################################################
   
  -sub ScanEnvironement
  +sub ScanEnvironment
   
       {
       my ($req, $req_rec) = @_ ; 
  @@ -643,6 +639,8 @@
       $$req{'input_func'}  = $ENV{EMBPERL_INPUT_FUNC}  if (exists 
($ENV{EMBPERL_INPUT_FUNC})) ;
       $$req{'output_func'} = $ENV{EMBPERL_OUTPUT_FUNC} if (exists 
($ENV{EMBPERL_OUTPUT_FUNC})) ;
       $$req{'allow'}       = $ENV{EMBPERL_ALLOW}       if (exists 
($ENV{EMBPERL_ALLOW})) ;
  +    $$req{'filesmatch'}  = $ENV{EMBPERL_FILESMATCH}  if (exists 
($ENV{EMBPERL_FILESMATCH})) ;
  +    $$req{'decline'}     = $ENV{EMBPERL_DECLINE}     if (exists 
($ENV{EMBPERL_DECLINE})) ;
       $$req{'debug'}       = $ENV{EMBPERL_DEBUG}   || 0 ;
       $$req{'options'}     = $ENV{EMBPERL_OPTIONS} || 0 ;
       $$req{'log'}         = $ENV{EMBPERL_LOG}     || $DefaultLog ;
  @@ -660,7 +658,9 @@
       }
   
   
  +*ScanEnvironement = \&ScanEnvironment ; # for backward compatibility (was typo)
   
  +
   
#######################################################################################
   
   sub CleanCallExecuteReq
  @@ -1439,8 +1439,12 @@
       #die "require Net::SMTP failed: $@" if ($@); 
       require Net::SMTP ;
   
  -    $smtp = Net::SMTP->new($ENV{'EMBPERL_MAILHOST'} || 'localhost', Debug => 
$ENV{'EMBPERL_MAILDEBUG'}) or die "Cannot connect to mailhost" ;
  -    { $smtp->mail($ENV{'EMBPERL_MAILFROM'} || "WWW-Server\@$ENV{SERVER_NAME}");}
  +    $smtp = Net::SMTP->new($ENV{'EMBPERL_MAILHOST'} || 'localhost', 
  +                           Debug => $ENV{'EMBPERL_MAILDEBUG'} || 0,
  +                           $ENV{'EMBPERL_MAILHELO'}?(Hello => 
$ENV{'EMBPERL_MAILDEBUG'}):()) 
  +             or die "Cannot connect to mailhost" ;
  +    
  +    $smtp->mail($ENV{'EMBPERL_MAILFROM'} || "WWW-Server\@$ENV{SERVER_NAME}");
       $smtp->to($to);
       $ok = $smtp->data();
       $ok = $smtp->datasend("Reply-To: $ret\n") if ($ok && $ret) ;
  
  
  
  1.50      +10 -1     embperl/Embperl.pod
  
  Index: Embperl.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.pod,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- Embperl.pod       2000/05/02 06:43:26     1.49
  +++ Embperl.pod       2000/07/17 05:16:06     1.50
  @@ -396,7 +396,7 @@
   of Embperl takes place automatically when it is loaded.
   
   
  -=item B<HTML::Embperl::ScanEnvironement (\%params)>
  +=item B<HTML::Embperl::ScanEnvironment (\%params)>
   
   Scans the B<%ENV> and setups B<%params> for use by B<Execute>. All
   Embperl runtime configuration options are recognized, except EMBPERL_LOG.
  @@ -958,6 +958,15 @@
   
   Specifies which host the L<MailFormTo|"MailFormTo($MailTo, $Subject, 
$ReturnField)"> function uses as SMTP server.
   Default is B<localhost>.
  +
  +=head2 EMBPERL_MAILHELO 
  +
  +(only 1.3b4 or above) Specifies which host/domain the 
  +L<MailFormTo|"MailFormTo($MailTo, $Subject, $ReturnField)"> function uses
  +in the HELO/EHLO command.
  +A reasonable default is normaly choosen by I<Net::SMTP>, but
  +depending on your installation it may neccessary to set it
  +manualy.
   
   =head2 EMBPERL_MAILFROM 
   
  
  
  
  1.23      +9 -1      embperl/EmbperlD.pod
  
  Index: EmbperlD.pod
  ===================================================================
  RCS file: /home/cvs/embperl/EmbperlD.pod,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- EmbperlD.pod      2000/05/02 06:43:26     1.22
  +++ EmbperlD.pod      2000/07/17 05:16:06     1.23
  @@ -337,7 +337,7 @@
   zu setzen. Es kann immer nur eine Logdatei existieren, der Pfad kann jedoch 
jederzeit
   ge�ndert werden.
   
  -=item B<HTML::Embperl::ScanEnvironement (\%params)>
  +=item B<HTML::Embperl::ScanEnvironment (\%params)>
   
   Durchsucht alle Umgebungsvariablen (B<%ENV>) und setzt B<%params> f�r die Benutzung 
von C<Execute>. Alle
   Embperl Konfigurationsvariablen, au�er EMBPERL_LOG, werden erkannt.
  @@ -884,6 +884,14 @@
   Gibt den Rechner an, der von der L<MailFormTo|"MailFormTo($MailTo, $Subject, 
$ReturnField)"> 
   Funktion als SMTP Server genutzt wird.
   Default ist B<localhost>.
  +
  +=head2 EMBPERL_MAILHELO (ab 1.3b4)
  +
  +Gibt den Rechner/die Domain an, der von der L<MailFormTo|"MailFormTo($MailTo, 
$Subject, $ReturnField)"> 
  +Funktion im HELO/EHLO Befehl angegeben wird.
  +Normalerweise setzt I<Net::SMTP> einen sinnvollen Defaultwert ein. In
  +Abh�nigkeit von der Installation kann es jedoch manchmal n�tig sein
  +diesen Wert von Hand zu setzen.
   
   =head2 EMBPERL_MAILFROM (ab 1.2.1)
   
  
  
  
  1.33      +202 -39   embperl/EmbperlObject.pm
  
  Index: EmbperlObject.pm
  ===================================================================
  RCS file: /home/cvs/embperl/EmbperlObject.pm,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- EmbperlObject.pm  2000/07/16 17:45:52     1.32
  +++ EmbperlObject.pm  2000/07/17 05:16:06     1.33
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: EmbperlObject.pm,v 1.32 2000/07/16 17:45:52 richter Exp $
  +#   $Id: EmbperlObject.pm,v 1.33 2000/07/17 05:16:06 richter Exp $
   #
   ###################################################################################
   
  @@ -25,8 +25,20 @@
   
   require HTML::Embperl ;
   
  -use Apache::Constants qw(&OPT_EXECCGI &DECLINED &OK &FORBIDDEN &NOT_FOUND) ;
  +if (defined ($ENV{MOD_PERL}))
  +    { 
  +    eval 'use Apache::Constants qw(&OPT_EXECCGI &DECLINED &OK &FORBIDDEN 
&NOT_FOUND) ;' ;
  +    die "use Apache::Constants failed: $@" if ($@); 
  +    }
  +else
  +    {
  +    eval 'sub OK        { 0 ;   }' ;
  +    eval 'sub NOT_FOUND { 404 ; }' ;
  +    eval 'sub FORBIDDEN { 403 ; }' ;
  +    eval 'sub DECLINED  { 403 ; }' ; # in non mod_perl environement, same as 
FORBIDDEN
  +    }
   
  +
   use File::Spec ;
   use File::Basename ;
   
  @@ -40,7 +52,7 @@
   @ISA = qw(Exporter DynaLoader);
   
   
  -$VERSION = '0.02_dev-1';
  +$VERSION = '1.3b4';
   
   
   #############################################################################
  @@ -64,6 +76,22 @@
       return $path ;
       }
   
  
+##########################################################################################
  +
  +sub ScanEnvironment
  +
  +    {
  +    my ($req, $req_rec) = @_ ; 
  +
  +    HTML::Embperl::ScanEnvironment ($req, $req_rec) ;
  +
  +    $req -> {object_base}           = $ENV{EMBPERL_OBJECT_BASE} || '_base.html' ;
  +    $req -> {object_addpath}        = $ENV{EMBPERL_OBJECT_ADDPATH} if (exists 
($ENV{EMBPERL_OBJECT_ADDPATH})) ;
  +    $req -> {object_stopdir}        = $ENV{EMBPERL_OBJECT_STOPDIR} if (exists 
($ENV{EMBPERL_OBJECT_STOPDIR})) ;
  +    $req -> {object_fallback}       = $ENV{EMBPERL_OBJECT_FALLBACK} if (exists 
($ENV{EMBPERL_OBJECT_FALLBACK})) ;
  +    $req -> {object_handler_class}  = $ENV{EMBPERL_OBJECT_HANDLER_CLASS} if (exists 
($ENV{EMBPERL_OBJECT_HANDLER_CLASS})) ;
  +    }
  +
   
   #############################################################################
   
  @@ -87,36 +115,52 @@
   
       my %req ;
   
  -    HTML::Embperl::ScanEnvironement (\%req, $r) ;
  +    ScanEnvironment (\%req, $r) ;
  +    
  +    $req{'inputfile'} = $filename ;
  +    $req{'object_base_modifier'}  = $mod ;
       $req{'uri'}       = $r -> Apache::uri ;
       $req{'cleanup'} = -1 if (($req{'options'} & 
HTML::Embperl::optDisableVarCleanup)) ;
       $req{'options'} |= HTML::Embperl::optSendHttpHeader ;
       $req{'req_rec'} = $r ;
  -
  +    
  +    Execute (\%req) ;
  +    }
  +        
  +    
  +    
  +#############################################################################
   
  +sub Execute
   
  +    {
  +    my $req = shift ;
  +    
  +    my $filename = $req -> {inputfile} ;
  +    my $r        ;
  +    $r = $req -> {req_rec} if ($req -> {req_rec}) ;
   
  -    if (exists $ENV{EMBPERL_FILESMATCH} && 
  -                         !($filename =~ m{$ENV{EMBPERL_FILESMATCH}})) 
  +    if (exists $req -> {filesmatch} && 
  +                         !($filename =~ m{$req->{filesmatch}})) 
           {
           return &DECLINED ;
           }
   
  -    if (exists $ENV{EMBPERL_DECLINE} && 
  -                         ($filename =~ m{$ENV{EMBPERL_DECLINE}})) 
  +    if (exists $req -> {decline} && 
  +                         ($filename =~ m{$req->{decline}})) 
           {
           return &DECLINED ;
           }
   
   
  -    my $basename  = $ENV{EMBPERL_OBJECT_BASE} ;
  -    $basename     =~ s/%modifier%/$mod/ ;
  -    my $addpath   = $ENV{EMBPERL_OBJECT_ADDPATH}  ;
  +    my $basename  = $req -> {object_base} ;
  +    $basename     =~ s/%modifier%/$req->{object_base_modifier}/ ;
  +    my $addpath   =  $req -> {object_addpath}  ;
       my @addpath   = $addpath?split (/:/, $addpath):() ;
       my $directory ;
  -    my $rootdir   = norm_path ($r -> document_root) ;
  -    my $stopdir   = norm_path ($ENV{EMBPERL_OBJECT_STOPDIR}) ;
  -    my $debug     = $ENV{EMBPERL_DEBUG} & HTML::Embperl::dbgObjectSearch ;
  +    my $rootdir   = $r?norm_path ($r -> document_root):'/' ;
  +    my $stopdir   = norm_path ($req -> {object_stopdir}) ;
  +    my $debug     = $req -> {debug} & HTML::Embperl::dbgObjectSearch ;
       
       if (-d $filename)
           {
  @@ -129,7 +173,7 @@
       
       my $searchpath  ;
         
  -    $r -> notes ('EMBPERL_orgfilename',  $filename) ;
  +    $r -> notes ('EMBPERL_orgfilename',  $filename) if ($r) ;
    
       print HTML::Embperl::LOG "[$$]EmbperlObject Request Filename: $filename\n" if 
($debug);
       print HTML::Embperl::LOG "[$$]EmbperlObject basename: $basename\n"  if ($debug);
  @@ -147,8 +191,8 @@
           print HTML::Embperl::LOG "[$$]EmbperlObject Check for base: $fn\n"  if 
($debug);
           if (-e $fn)
               {
  -            $r -> filename ($fn) ;
  -            $r -> notes ('EMBPERL_searchpath',  $searchpath) ;
  +            $r -> filename ($fn) if ($r) ;
  +            $r -> notes ('EMBPERL_searchpath',  $searchpath) if ($r) ;
               $found = 1 ;
               }
           else
  @@ -169,8 +213,8 @@
               print HTML::Embperl::LOG "[$$]EmbperlObject Check for base: $fn\n"  if 
($debug);
               if (-e $fn)
                   {
  -                $r -> filename ($fn) ;
  -                $r -> notes ('EMBPERL_searchpath',  $searchpath) ;
  +                $r -> filename ($fn) if ($r) ;
  +                $r -> notes ('EMBPERL_searchpath',  $searchpath) if ($r) ;
                   $found = 1 ;
                   last ;
                   }
  @@ -183,28 +227,28 @@
           {
           print HTML::Embperl::LOG "[$$]EmbperlObject Found Base: $fn\n"  if ($debug);
           print HTML::Embperl::LOG "[$$]EmbperlObject path: $searchpath\n"  if 
($debug);
  -        my ($basenew, $basepackage) = HTML::Embperl::GetPackageOfFile ($fn, 
$req{'package'} || '', -M _) ;
  +        my ($basenew, $basepackage) = HTML::Embperl::GetPackageOfFile ($fn, $req -> 
{'package'} || '', -M _) ;
   
  -        if (!-f $filename && exists $ENV{EMBPERL_OBJECT_FALLBACK})
  +        if (!-f $filename && exists $req -> {object_fallback})
               {
               $fallback = 1 ;
  -            $filename = $ENV{EMBPERL_OBJECT_FALLBACK} ;
  +            $filename = $req -> {object_fallback} ;
               print HTML::Embperl::LOG "[$$]EmbperlObject use fallback: $filename\n"  
if ($debug);
  -            $r -> notes ('EMBPERL_orgfilename',  $filename) ;
  +            $r -> notes ('EMBPERL_orgfilename',  $filename) if ($r) ;
               }
   
   
           my ($new, $package)  ;
  -        ($new, $package) = HTML::Embperl::GetPackageOfFile ($filename, 
$req{'package'} || '', -M _) if (!$fallback) ;
  +        ($new, $package) = HTML::Embperl::GetPackageOfFile ($filename, $req -> 
{'package'} || '', -M _) if (!$fallback) ;
   
           if ($basenew)
               {
               print HTML::Embperl::LOG "[$$]EmbperlObject new Base: $fn, package = 
$basepackage\n"  if ($debug);
               
  -            HTML::Embperl::Execute ({%req, inputfile => $fn, import => 0 }) ;
  +            HTML::Embperl::Execute ({%$req, inputfile => $fn, import => 0 }) ;
   
               no strict ;
  -            @{"$basepackage\:\:ISA"} = ($ENV{EMBPERL_OBJECT_HANDLER_CLASS} || 
'HTML::Embperl::Req') ;
  +            @{"$basepackage\:\:ISA"} = ($req -> {object_handler_class} || 
'HTML::Embperl::Req') ;
               use strict ;
               }
   
  @@ -212,7 +256,7 @@
               {
               print HTML::Embperl::LOG "[$$]EmbperlObject new file: $filename, 
package = $package\n"  if ($debug && !$fallback);
               
  -            HTML::Embperl::Execute ({%req, inputfile => $filename, import => 0, 
'path' => $searchpath }) ;
  +            HTML::Embperl::Execute ({%$req, inputfile => $filename, import => 0, 
'path' => $searchpath }) ;
   
               if ($fallback)
                   {
  @@ -225,17 +269,16 @@
               use strict ;
               }
   
  -        $req{'inputfile'} = $ENV{PATH_TRANSLATED} = $r -> filename ;
  -        $req{'bless'}     = $package ;
  -        $req{'path'}      = $searchpath ;
  -        $req{'reqfilename'} = $filename ;
  -        return HTML::Embperl::Execute (\%req) ;
  +        $req -> {'inputfile'} = $ENV{PATH_TRANSLATED} = $fn ;
  +        $req -> {'bless'}     = $package ;
  +        $req -> {'path'}      = $searchpath ;
  +        $req -> {'reqfilename'} = $filename ;
  +        return HTML::Embperl::Execute ($req) ;
           }
   
      
  +    $r -> log_error ("EmbperlObject searched '$searchpath'" . ($addpath?" and 
'$addpath' ":''))  if ($r) ;
   
  -    $r -> log_error ("EmbperlObject searched '$searchpath'" . ($addpath?" and 
'$addpath' ":'')) ;
  -
       return &NOT_FOUND ;
       }
   
  @@ -245,7 +288,7 @@
   
   =head1 NAME
   
  -HTML::EmbperlObject - Extents HTML::Embperl for building webpages out of small 
objects
  +HTML::EmbperlObject - Extents HTML::Embperl for building whole website with 
reusable components and objects
   
   
   =head1 SYNOPSIS
  @@ -262,10 +305,11 @@
   
   =head1 DESCRIPTION
   
  -I<HTML::EmbperlObject> is basicly a I<mod_perl> handler that helps you to
  +I<HTML::EmbperlObject> is basicly a I<mod_perl> handler or could be invoked
  +offline and helps you to
   build a whole page out of smaller parts. Basicly it does the following:
   
  -When a request comes in a page which name is specified by L<EMBPERL_OBJECT_BASE>, is
  +When a request comes in a page, which name is specified by L<EMBPERL_OBJECT_BASE>, 
is
   searched in the same directory as the requested page. If the pages isn't found, 
   I<EmbperlObject> walking up the directory tree until it finds the page, or it
   reaches C<DocumentRoot> or the directory specified by L<EMBPERL_OBJECT_STOPDIR>.
  @@ -281,6 +325,17 @@
   
   To include the original requested file, you need to call C<Execute> with a C<'*'> 
as filename.
   
  +Additionaly I<EmbperlObject> sets up a inherence hierachie for you: The requested 
page
  +inherit from the base page and the base page inherit from a class which could be
  +specified by C<EMBPERL_OBJECT_HANDLER_CLASS>, or if C<EMBPERL_OBJECT_HANDLER_CLASS> 
is
  +not set, from C<HTML::Embperl::Req>. That allows you to define methods in base page 
and
  +overwrite them as neccessary in the original requested files. For this purpose a 
request
  +object, which is blessed into the package of the requested page, is given as first 
  +parameter to each page (in C<$_[0]>). Because this request object is a hashref, you 
can
  +also use it to store additional data, which should be available in all components. 
  +I<Embperl> does not use this hash itself, so you are free to store whatever you 
want.
  +Methods can be ordinary Perl sub's (defined with [! sub foo { ... } !] ) or Embperl 
sub's
  +(defined with [$sub foo $] .... [$endsub $]) .
   
   =head1 Runtime configuration
   
  @@ -318,12 +373,47 @@
   directories as C<EMBPERL_OBJECT_BASE>.
   
   =head2 EMBPERL_OBJECT_HANDLER_CLASS
  +
  +If you specify this call the template base and the requested page inherit all
  +methods from this class. This class must contain C<HTML::Embperl::Req> in his
  +@ISA array.
  +
  +
  +=head1 Execute
  +
  +You can use I<EmbperlObject> also offline. You can do this by calling the function
  +C<HTML::EmbperlObject::Execute>. C<Execute> takes a hashref as argument, which can
  +contains the same parameters as the C<HTML::Embperl::Execute> function. Additionaly
  +you may specify the following parameters:
  +
  +=over 4
  +
  +=item object_base
  +
  +same as $ENV{EMBPERL_OBJECT_BASE} 
  +
  +=item object_addpath
  +
  +same as $ENV{EMBPERL_OBJECT_ADDPATH} 
   
  -comming soon
  +=item object_stopdir
   
  -=head1 Example
  +same as $ENV{EMBPERL_OBJECT_STOPDIR} 
   
  +=item object_fallback
   
  +same as $ENV{EMBPERL_OBJECT_FALLBACK} 
  +
  +=item object_handler_class
  +
  +same as $ENV{EMBPERL_OBJECT_HANDLER_CLASS}
  +
  +=back
  +
  +
  +=head1 Basic Example
  +
  +
   With the following setup:
   
   
  @@ -430,6 +520,79 @@
    </html>
   
    
  +
  +=head1 Example for using method calls
  +
  +(Everything not given here is the same as in the example above)
  +
  +
  +B</foo/base.htm:>
  +
  + [!
  + 
  + $req = shift ;
  + 
  + sub new
  +    {
  +    my $self = shift ; 
  +
  +    # here we attach some data to the request object
  +    $self -> {fontsize} = 3 ;
  +    }
  +
  + # Here we give a default title
  + sub title { 'Title not given' } ;
  +
  + # here we call the method new
  + $req -> new ;
  + 
  + !]
  +
  + <html>
  + <head>
  + <title>[+ $req -> title +]</title>
  + </head>
  + <body>
  + [- Execute ('head.htm') -]
  + [- Execute ('*') -]
  + [- Execute ('foot.htm') -]
  + </body>
  + </html>
  +
  +
  +B</foo/head.htm:>
  +
  +
  + [# 
  +    here we use the fontsize
  +    Note that 
  +      $foo = $_[0] 
  +    is the same as writing 
  +      $foo = shift  
  + #]
  +
  + <font size=[+ $_[0] -> {fontsize} +]>header</font>
  +
  +B</foo/sub/page2.htm:>
  +
  + [!
  +
  + sub new
  +    {
  +    my $self = shift ; 
  +
  +    # here we overwrite the new method form base.htm
  +    $self -> {fontsize} = 5 ;
  +    }
  +
  + # Here we overwrite the default title
  + sub title { 'Title form page 2' } ;
  +
  + !]
  +
  + PAGE 2
  +
  +
     
   
   =head1 Author
  
  
  
  1.11      +20 -2     embperl/INSTALL.pod
  
  Index: INSTALL.pod
  ===================================================================
  RCS file: /home/cvs/embperl/INSTALL.pod,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- INSTALL.pod       1999/11/17 07:29:24     1.10
  +++ INSTALL.pod       2000/07/17 05:16:07     1.11
  @@ -22,7 +22,8 @@
   - B<make install>
   
   B<NOTE 1:> (only Embperl-1.2b1 or higher) For using session handling you need
  -Apache::Session-0.17 or higher. If possible use Apache::Session 1.00 or higher.
  +Apache::Session-0.17 or higher. If possible use Apache::Session 1.00.
  +Currently Apache::Session 1.50 or higher is B<not> supported. (Coming soon)
   
   B<NOTE 2:> I<Embperl> runs without additional Perl modules, but the C<make test>
   needs the following modules to work:
  @@ -47,6 +48,14 @@
   
   =back
   
  +B<NOTE 3:> I<EmbperlObject> needs the following modules to work:
  +
  +=over 4
  +
  +=item * File::Spec
  +
  +=back
  +
   If you have already successfully build and tested C<mod_perl> all modules
   will already be there.
   
  @@ -92,7 +101,8 @@
   B<nmake install>
   
   B<NOTE 1:> (only Embperl-1.2b1 or higher) For using session handling you need
  -Apache::Session-0.17 or higher. If possible use Apache::Session 1.00 or higher.
  +Apache::Session-0.17 or higher. If possible use Apache::Session 1.00.
  +Currently Apache::Session 1.50 or higher is B<not> supported. (Coming soon)
   
   B<NOTE 2:> I<Embperl> runs without additional Perl modules, but the C<make test>
   needs the following modules to work:
  @@ -114,6 +124,14 @@
   =item * libwww 
   
   =item * libwin32 (only Win32) 
  +
  +=back
  +
  +B<NOTE 3:> I<EmbperlObject> needs the following modules to work:
  +
  +=over 4
  +
  +=item * File::Spec
   
   =back
   
  
  
  
  1.45      +2 -0      embperl/MANIFEST
  
  Index: MANIFEST
  ===================================================================
  RCS file: /home/cvs/embperl/MANIFEST,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- MANIFEST  2000/07/16 17:45:52     1.44
  +++ MANIFEST  2000/07/17 05:16:07     1.45
  @@ -144,6 +144,7 @@
   test/html/EmbperlObject/obj/epoobj1.htm
   test/html/EmbperlObject/obj/epoobj2.htm
   test/html/EmbperlObject/obj/epoobj3.htm
  +test/html/EmbperlObject/obj/epoobj4.htm
   test/cmp/ascii
   test/cmp/pure.htm
   test/cmp/plain.htm
  @@ -216,6 +217,7 @@
   test/cmp/epoobj1.htm
   test/cmp/epoobj2.htm
   test/cmp/epoobj3.htm
  +test/cmp/epoobj4.htm
   test/cmp/eponotfound.htm
   test/conf/httpd.conf.src
   test/conf/startup.pl
  
  
  
  1.30      +1 -0      embperl/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /home/cvs/embperl/Makefile.PL,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Makefile.PL       2000/07/07 21:55:57     1.29
  +++ Makefile.PL       2000/07/17 05:16:07     1.30
  @@ -897,6 +897,7 @@
       'clean'        => { FILES => 'dirent.h test/tmp/*' },
       'dist'         => { COMPRESS => 'gzip', SUFFIX => 'gz'},
       'dynamic_lib'  => $dynlib,
  +    'PREREQ_PM'    => { 'File::Spec' => 0 },
   );
   
   
  
  
  
  1.94      +6 -24     embperl/TODO
  
  Index: TODO
  ===================================================================
  RCS file: /home/cvs/embperl/TODO,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- TODO      2000/07/16 17:45:52     1.93
  +++ TODO      2000/07/17 05:16:08     1.94
  @@ -5,13 +5,13 @@
   
   - Apache::Symbol::undef (avoid function redefinition warning)
   
  -- @param -> @_
  +- @param -> @_  -> done in 2.0
   
  -- make optUndefToEmptyValue default [Steve Willer]
  +- make optUndefToEmptyValue default [Steve Willer] -> done in 2.0
   
   - whitespace intention [Todd Eigenshink]
   
  -- make checkbox and option work without value attribute
  +- make checkbox and option work without value attribute -> done in 2.0
   
   - used named subroutines for debugging [Ert Dredge]
   
  @@ -21,7 +21,7 @@
   
   - gzip output [Andreas Koenig]
   
  -- custom html tags
  +- custom html tags -> done in 2.0
   
   - url rewriting for session id
   
  @@ -43,7 +43,7 @@
   
   - url escape <input src>
   
  -- allow null bytes in output [ARnel Estanisloa 4.12.99]
  +- allow null bytes in output [ARnel Estanisloa 4.12.99] -> done in 2.0
   
   - handle input image (add field.x/y to %idat) [Pierre Etchemaite 13.12.99]
   
  @@ -64,10 +64,6 @@
   
   - optDisableSelectScan [ Robert 14.5.00]
   
  -- %20 instead of + [Michael Blakely 28.6.00]
  -
  -- EMBPERL_MAILHELO [Remco Brink 10.7.00]
  -
   - APache::Session 1.5
   
   Test
  @@ -80,7 +76,7 @@
   
   - errorright output
   
  -- [* *] inside if [Vasco Chita 1.5.99]
  +- [* *] inside if [Vasco Chita 1.5.99] -> done in 2.0
   
   - use Embperl Module later than startup -> cleanup fails on first request
   
  @@ -88,22 +84,12 @@
   
   - SIG DIE missing message arg [Alex Schmelkin 24.8.99]
   
  -- norm path before chdir on win32
  -
  -- requrie in [!  !] Blocks? [Jens Alm 22.9.99]
  -
  -- don�t find end of href inside of [+ +]  [James Sheridan-Peters 29.11.99]
  -
   - contrib from Ken Hinckley 2.12.99
   
  -- perl 5.6 [Matthias Ulrichs 06.3.2000]
  -
   - var cleanup of in imported subs [Lai Yiu Fai 14.3.00] 
   
   - using outputfile inside a outputfile crashs
   
  -- define _MSWSOCK_ with apache 1.3.12 [Randy Kobes 23.3.00]
  -
   - entity decoding radi/checkboxes [Chris Thorman 20.6.00]
   
   Docs
  @@ -122,10 +108,6 @@
   - make [+ +] configurable [ Christian Gilmore 16.10.99]
   
   - "$urlprefix" [Steve Willer 14.2.99]
  -
  -- make Not found case configurable [Steve Willer 14.2.99]
  -
  -- filename prefix in path [Steve Willer 14.2.99]
   
   2.0
   __
  
  
  
  1.2       +664 -664  embperl/epchar.c.min
  
  Index: epchar.c.min
  ===================================================================
  RCS file: /home/cvs/embperl/epchar.c.min,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epchar.c.min      2000/04/25 04:25:53     1.1
  +++ epchar.c.min      2000/07/17 05:16:08     1.2
  @@ -1,668 +1,668 @@
  
-/*###################################################################################
  -#
  -#   Embperl - Copyright (c) 1997-2000 Gerald Richter / ECOS
  -#
  -#   You may distribute under the terms of either the GNU General Public
  -#   License or the Artistic License, as specified in the Perl README file.
  -#   For use with Apache httpd and mod_perl, see also Apache copyright.
  -#
  -#   THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
  -#   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  -#   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  -#
  
-###################################################################################*/
  -
  
+/*###################################################################################
  +#
  +#   Embperl - Copyright (c) 1997-2000 Gerald Richter / ECOS
  +#
  +#   You may distribute under the terms of either the GNU General Public
  +#   License or the Artistic License, as specified in the Perl README file.
  +#   For use with Apache httpd and mod_perl, see also Apache copyright.
  +#
  +#   THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
  +#   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  +#   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  +#
  
+###################################################################################*/
  +
   /* minimal input and output escaping. It's usefull for other charsets then
      iso-8859-1 (iso-latin-1) and for two byte charset 
   
      This translation tables will leave any characters above 128 untouchted 
  -*/
  -
  -#include "ep.h"
  -
  -
  -
  -/*
  -* Character Translation
  -*/
  -
  -
  -struct tCharTrans Char2Html [] = 
  -
  -    {
  -        { ' ' ,   ""         },    /* &#00;          Unused */ 
  -        { ' ' ,   ""         },    /* &#01;          Unused */
  -        { ' ' ,   ""         },    /* &#02;          Unused  */
  -        { ' ' ,   ""         },    /* &#03;          Unused  */
  -        { ' ' ,   ""         },    /* &#04;          Unused  */
  -        { ' ' ,   ""         },    /* &#05;          Unused  */
  -        { ' ' ,   ""         },    /* &#06;          Unused  */
  -        { ' ' ,   ""         },    /* &#07;          Unused  */
  -        { ' ' ,   ""         },    /* &#08;          Unused  */
  -        { ' ' ,   ""         },    /* &#09;          Horizontal tab  */
  -        { ' ' ,   ""         },    /* &#10;          Line feed  */
  -        { ' ' ,   ""         },    /* &#11;          Unused  */
  -        { ' ' ,   ""         },    /* &#12;          Unused  */
  -        { ' ' ,   ""         },    /* &#13;          Carriage Return  */
  -        { ' ' ,   ""         },    /* &#14;          Unused  */
  -        { ' ' ,   ""         },    /* &#15;          Unused  */
  -        { ' ' ,   ""         },    /* &#16;          Unused  */
  -        { ' ' ,   ""         },    /* &#17;          Unused  */
  -        { ' ' ,   ""         },    /* &#18;          Unused  */
  -        { ' ' ,   ""         },    /* &#19;          Unused  */
  -        { ' ' ,   ""         },    /* &#20;          Unused  */
  -        { ' ' ,   ""         },    /* &#21;          Unused  */
  -        { ' ' ,   ""         },    /* &#22;          Unused  */
  -        { ' ' ,   ""         },    /* &#23;          Unused  */
  -        { ' ' ,   ""         },    /* &#24;          Unused  */
  -        { ' ' ,   ""         },    /* &#25;          Unused  */
  -        { ' ' ,   ""         },    /* &#26;          Unused  */
  -        { ' ' ,   ""         },    /* &#27;          Unused  */
  -        { ' ' ,   ""         },    /* &#28;          Unused  */
  -        { ' ' ,   ""         },    /* &#29;          Unused  */
  -        { ' ' ,   ""         },    /* &#30;          Unused  */
  -        { ' ' ,   ""         },    /* &#31;          Unused  */
  -        { ' ' ,   ""         },    /*        &#32;           Space  */
  -        { '!' ,   ""         },    /*        &#33;           Exclamation mark  */
  -        { '"' ,   "&quot;"   },    /*        Quotation mark  */
  -        { '#' ,   ""         },    /*        &#35;           Number sign  */
  -        { '$' ,   ""         },    /*        &#36;           Dollar sign  */
  -        { '%' ,   ""         },    /*        &#37;           Percent sign  */
  -        { '&' ,   "&amp;"    },    /*        Ampersand  */
  -        { '\'' ,  ""         },    /*        &#39;           Apostrophe  */
  -        { '(' ,   ""         },    /*        &#40;           Left parenthesis  */
  -        { ')' ,   ""         },    /*        &#41;           Right parenthesis  */
  -        { '*' ,   ""         },    /*        &#42;           Asterisk  */
  -        { '+' ,   ""         },    /*        &#43;           Plus sign  */
  -        { ',' ,   ""         },    /*        &#44;           Comma  */
  -        { '-' ,   ""         },    /*        &#45;           Hyphen  */
  -        { '.' ,   ""         },    /*        &#46;           Period (fullstop)  */
  -        { '/' ,   ""         },    /*        &#47;           Solidus (slash)  */
  -        { '0' ,   ""         },    /*        &#48;           Digit 0  */
  -        { '1' ,   ""         },    /*        &#49;           Digit 1  */
  -        { '2' ,   ""         },    /*        &#50;           Digit 2  */
  -        { '3' ,   ""         },    /*        &#51;           Digit 3  */
  -        { '4' ,   ""         },    /*        &#52;           Digit 4  */
  -        { '5' ,   ""         },    /*        &#53;           Digit 5  */
  -        { '6' ,   ""         },    /*        &#54;           Digit 6  */
  -        { '7' ,   ""         },    /*        &#55;           Digit 7  */
  -        { '8' ,   ""         },    /*        &#56;           Digit 8  */
  -        { '9' ,   ""         },    /*        &#57;           Digit 9  */
  -        { ':' ,   ""         },    /*        &#58;           Colon  */
  -        { ';' ,   ""         },    /*        &#59;           Semicolon  */
  -        { '<' ,   "&lt;"     },    /*        Less than  */
  -        { '=' ,   ""         },    /*        &#61;           Equals sign  */
  -        { '>' ,   "&gt;"     },    /*        Greater than  */
  -        { '?' ,   ""         },    /*        &#63;           Question mark  */
  -        { '@' ,   ""         },    /*        &#64;           Commercial at  */
  -        { 'A' ,   ""         },    /*        &#65;           Capital A  */
  -        { 'B' ,   ""         },    /*        &#66;           Capital B  */
  -        { 'C' ,   ""         },    /*        &#67;           Capital C  */
  -        { 'D' ,   ""         },    /*        &#68;           Capital D  */
  -        { 'E' ,   ""         },    /*        &#69;           Capital E  */
  -        { 'F' ,   ""         },    /*        &#70;           Capital F  */
  -        { 'G' ,   ""         },    /*        &#71;           Capital G  */
  -        { 'H' ,   ""         },    /*        &#72;           Capital H  */
  -        { 'I' ,   ""         },    /*        &#73;           Capital I  */
  -        { 'J' ,   ""         },    /*        &#74;           Capital J  */
  -        { 'K' ,   ""         },    /*        &#75;           Capital K  */
  -        { 'L' ,   ""         },    /*        &#76;           Capital L  */
  -        { 'M' ,   ""         },    /*        &#77;           Capital M  */
  -        { 'N' ,   ""         },    /*        &#78;           Capital N  */
  -        { 'O' ,   ""         },    /*        &#79;           Capital O  */
  -        { 'P' ,   ""         },    /*        &#80;           Capital P  */
  -        { 'Q' ,   ""         },    /*        &#81;           Capital Q  */
  -        { 'R' ,   ""         },    /*        &#82;           Capital R  */
  -        { 'S' ,   ""         },    /*        &#83;           Capital S  */
  -        { 'T' ,   ""         },    /*        &#84;           Capital T  */
  -        { 'U' ,   ""         },    /*        &#85;           Capital U  */
  -        { 'V' ,   ""         },    /*        &#86;           Capital V  */
  -        { 'W' ,   ""         },    /*        &#87;           Capital W  */
  -        { 'X' ,   ""         },    /*        &#88;           Capital X  */
  -        { 'Y' ,   ""         },    /*        &#89;           Capital Y  */
  -        { 'Z' ,   ""         },    /*        &#90;           Capital Z  */
  -        { '[' ,   ""         },    /*        &#91;           Left square bracket  
*/
  -        { '\\' ,  ""         },    /*        &#92;           Reverse solidus 
(backslash)  */
  -        { ']' ,   ""         },    /*        &#93;           Right square bracket  
*/
  -        { '^' ,   ""         },    /*        &#94;           Caret  */
  -        { '_' ,   ""         },    /*        &#95;           Horizontal bar 
(underscore)  */
  -        { '`' ,   ""         },    /*        &#96;           Acute accent  */
  -        { 'a' ,   ""         },    /*        &#97;           Small a  */
  -        { 'b' ,   ""         },    /*        &#98;           Small b  */
  -        { 'c' ,   ""         },    /*        &#99;           Small c  */
  -        { 'd' ,   ""         },    /*        &#100;          Small d  */
  -        { 'e' ,   ""         },    /*        &#101;          Small e  */
  -        { 'f' ,   ""         },    /*        &#102;          Small f  */
  -        { 'g' ,   ""         },    /*        &#103;          Small g  */
  -        { 'h' ,   ""         },    /*        &#104;          Small h  */
  -        { 'i' ,   ""         },    /*        &#105;          Small i  */
  -        { 'j' ,   ""         },    /*        &#106;          Small j  */
  -        { 'k' ,   ""         },    /*        &#107;          Small k  */
  -        { 'l' ,   ""         },    /*        &#108;          Small l  */
  -        { 'm' ,   ""         },    /*        &#109;          Small m  */
  -        { 'n' ,   ""         },    /*        &#110;          Small n  */
  -        { 'o' ,   ""         },    /*        &#111;          Small o  */
  -        { 'p' ,   ""         },    /*        &#112;          Small p  */
  -        { 'q' ,   ""         },    /*        &#113;          Small q  */
  -        { 'r' ,   ""         },    /*        &#114;          Small r  */
  -        { 's' ,   ""         },    /*        &#115;          Small s  */
  -        { 't' ,   ""         },    /*        &#116;          Small t  */
  -        { 'u' ,   ""         },    /*        &#117;          Small u  */
  -        { 'v' ,   ""         },    /*        &#118;          Small v  */
  -        { 'w' ,   ""         },    /*        &#119;          Small w  */
  -        { 'x' ,   ""         },    /*        &#120;          Small x  */
  -        { 'y' ,   ""         },    /*        &#121;          Small y  */
  -        { 'z' ,   ""         },    /*        &#122;          Small z  */
  -        { '{' ,   ""         },    /*        &#123;          Left curly brace  */
  -        { '|' ,   ""         },    /*        &#124;          Vertical bar  */
  -        { '}' ,   ""         },    /*        &#125;          Right curly brace  */
  -        { '~' ,   ""         },    /*        &#126;          Tilde  */
  -        { '' ,   ""         },    /*        &#127;          Unused  */
  -        { '�' ,   ""         },    /*        &#128;          Unused */
  -        { ' ' ,   ""         },    /* &#129;         Unused  */
  -        { ' ' ,   ""         },    /* &#130;         Unused  */
  -        { ' ' ,   ""         },    /* &#131;         Unused  */
  -        { ' ' ,   ""         },    /* &#132;         Unused  */
  -        { ' ' ,   ""         },    /* &#133;         Unused  */
  -        { ' ' ,   ""         },    /* &#134;         Unused  */
  -        { ' ' ,   ""         },    /* &#135;         Unused  */
  -        { ' ' ,   ""         },    /* &#136;         Unused  */
  -        { ' ' ,   ""         },    /* &#137;         Unused  */
  -        { ' ' ,   ""         },    /* &#138;         Horizontal tab  */
  -        { ' ' ,   ""         },    /* &#139;         Line feed  */
  -        { ' ' ,   ""         },    /* &#140;         Unused  */
  -        { ' ' ,   ""         },    /* &#141;         Unused  */
  -        { ' ' ,   ""         },    /* &#142;         Carriage Return  */
  -        { ' ' ,   ""         },    /* &#143;         Unused  */
  -        { ' ' ,   ""         },    /* &#144;         Unused  */
  -        { ' ' ,   ""         },    /* &#145;         Unused  */
  -        { ' ' ,   ""         },    /* &#146;         Unused  */
  -        { ' ' ,   ""         },    /* &#147;         Unused  */
  -        { ' ' ,   ""         },    /* &#148;         Unused  */
  -        { ' ' ,   ""         },    /* &#149;         Unused  */
  -        { ' ' ,   ""         },    /* &#150;         Unused  */
  -        { ' ' ,   ""         },    /* &#151;         Unused  */
  -        { ' ' ,   ""         },    /* &#152;         Unused  */
  -        { ' ' ,   ""         },    /* &#153;         Unused  */
  -        { ' ' ,   ""         },    /* &#154;         Unused  */
  -        { ' ' ,   ""         },    /* &#155;         Unused  */
  -        { ' ' ,   ""         },    /* &#156;         Unused  */
  -        { ' ' ,   ""         },    /* &#157;         Unused  */
  -        { ' ' ,   ""         },    /* &#158;         Unused  */
  -        { ' ' ,   ""         },    /* &#159;         Unused  */
  -        { ' ' ,   ""   },    /*      Non-breaking Space  */
  -        { '�' ,   ""  },    /*       Inverted exclamation    */
  -        { '�' ,   ""   },    /*      Cent sign               */
  -        { '�' ,   ""  },    /*       Pound sterling  */
  -        { '�' ,   "" },    /*        General currency sign  */
  -        { '�' ,   ""    },    /*     Yen sign  */
  -/*        { '�' ,   "" },    / *     Broken vertical bar  */
  -        { '�' ,   "" },    /*        Broken vertical bar  */
  -        { '�' ,   ""  },    /*       Section sign  */
  -/*        { '�' ,   ""    },    / *          Di�resis / Umlaut  */
  -        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  -        { '�' ,   ""  },    /*       Copyright               */
  -        { '�' ,   ""  },    /*       Feminine ordinal  */
  -        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  -        { '�' ,   ""   },    /*      Not sign  */
  -        { '�' ,   ""    },    /*     Soft hyphen  */
  -        { '�' ,   ""    },    /*     Registered trademark  */
  -/*        { '�' ,   ""   },    / *   Macron accent  */
  -        { '�' ,   ""  },    /*       Macron accent  */
  -        { '�' ,   ""    },    /*     Degree sign  */
  -        { '�' ,   "" },    /*        Plus or minus  */
  -        { '�' ,   ""   },    /*      Superscript two  */
  -        { '�' ,   ""   },    /*      Superscript three  */
  -        { '�' ,   ""  },    /*       Acute accent  */
  -        { '�' ,   ""  },    /*       Micro sign  */
  -        { '�' ,   ""   },    /*      Paragraph sign  */
  -        { '�' ,   "" },    /*        Middle dot  */
  -        { '�' ,   ""  },    /*       Cedilla  */
  -        { '�' ,   ""   },    /*      Superscript one  */
  -        { '�' ,   ""   },    /*      Masculine ordinal  */
  -        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  -        { '�' ,   "" },    /*        Fraction one-fourth  */
  -        { '�' ,   "" },    /*        Fraction one-half  */
  -        { '�' ,   "" },    /*        Fraction three-fourths  */
  -        { '�' ,   "" },    /*        Inverted question mark  */
  -        { '�' ,   "" },    /*        Capital A, grave accent  */
  -        { '�' ,   "" },    /*        Capital A, acute accent  */
  -        { '�' ,   ""  },    /*       Capital A, circumflex  */
  -        { '�' ,   "" },    /*        Capital A, tilde  */
  -        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Capital A, ring  */
  -        { '�' ,   ""  },    /*       Capital AE ligature  */
  -        { '�' ,   "" },    /*        Capital C, cedilla  */
  -        { '�' ,   "" },    /*        Capital E, grave accent  */
  -        { '�' ,   "" },    /*        Capital E, acute accent  */
  -        { '�' ,   ""  },    /*       Capital E, circumflex  */
  -        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital I, grave accent  */
  -        { '�' ,   "" },    /*        Capital I, acute accent  */
  -        { '�' ,   ""  },    /*       Capital I, circumflex  */
  -        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  -        { '�' ,   ""    },    /*     Capital Eth, Icelandic  */
  -        { '�' ,   "" },    /*        Capital N, tilde  */
  -        { '�' ,   "" },    /*        Capital O, grave accent  */
  -        { '�' ,   "" },    /*        Capital O, acute accent  */
  -        { '�' ,   ""  },    /*       Capital O, circumflex  */
  -        { '�' ,   "" },    /*        Capital O, tilde  */
  -        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Multiply sign  */
  -        { '�' ,   "" },    /*        Capital O, slash  */
  -        { '�' ,   "" },    /*        Capital U, grave accent  */
  -        { '�' ,   "" },    /*        Capital U, acute accent  */
  -        { '�' ,   ""  },    /*       Capital U, circumflex  */
  -        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital Y, acute accent  */
  -        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  -        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  -        { '�' ,   "" },    /*        Small a, grave accent  */
  -        { '�' ,   "" },    /*        Small a, acute accent  */
  -        { '�' ,   ""  },    /*       Small a, circumflex  */
  -        { '�' ,   "" },    /*        Small a, tilde  */
  -        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Small a, ring  */
  -        { '�' ,   ""  },    /*       Small ae ligature  */
  -        { '�' ,   "" },    /*        Small c, cedilla  */
  -        { '�' ,   "" },    /*        Small e, grave accent  */
  -        { '�' ,   "" },    /*        Small e, acute accent  */
  -        { '�' ,   ""  },    /*       Small e, circumflex  */
  -        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Small i, grave accent  */
  -        { '�' ,   "" },    /*        Small i, acute accent  */
  -        { '�' ,   ""  },    /*       Small i, circumflex  */
  -        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  -        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  -        { '�' ,   "" },    /*        Small n, tilde  */
  -        { '�' ,   "" },    /*        Small o, grave accent  */
  -        { '�' ,   "" },    /*        Small o, acute accent  */
  -        { '�' ,   ""  },    /*       Small o, circumflex  */
  -        { '�' ,   "" },    /*        Small o, tilde  */
  -        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Division sign  */
  -        { '�' ,   "" },    /*        Small o, slash  */
  -        { '�' ,   "" },    /*        Small u, grave accent  */
  -        { '�' ,   "" },    /*        Small u, acute accent  */
  -        { '�' ,   ""  },    /*       Small u, circumflex  */
  -        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Small y, acute accent  */
  -        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  -        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  -    } ; 
  - 
  -
  -struct tCharTrans Char2Url [] = 
  -
  -    {
  -        { ' ' ,   "%00"         },    /* &#00;               Unused */ 
  -        { ' ' ,   "%01"         },    /* &#01;               Unused */
  -        { ' ' ,   "%02"         },    /* &#02;               Unused  */
  -        { ' ' ,   "%03"         },    /* &#03;               Unused  */
  -        { ' ' ,   "%04"         },    /* &#04;               Unused  */
  -        { ' ' ,   "%05"         },    /* &#05;               Unused  */
  -        { ' ' ,   "%06"         },    /* &#06;               Unused  */
  -        { ' ' ,   "%07"         },    /* &#07;               Unused  */
  -        { ' ' ,   "%08"         },    /* &#08;               Unused  */
  -        { ' ' ,   "%09"         },    /* &#09;               Horizontal tab  */
  -        { ' ' ,   "%0A"         },    /* &#10;               Line feed  */
  -        { ' ' ,   "%0B"         },    /* &#11;               Unused  */
  -        { ' ' ,   "%0C"         },    /* &#12;               Unused  */
  -        { ' ' ,   "%0D"         },    /* &#13;               Carriage Return  */
  -        { ' ' ,   "%0E"         },    /* &#14;               Unused  */
  -        { ' ' ,   "%0F"         },    /* &#15;               Unused  */
  -        { ' ' ,   "%10"         },    /* &#16;               Unused  */
  -        { ' ' ,   "%11"         },    /* &#17;               Unused  */
  -        { ' ' ,   "%12"         },    /* &#18;               Unused  */
  -        { ' ' ,   "%13"         },    /* &#19;               Unused  */
  -        { ' ' ,   "%14"         },    /* &#20;               Unused  */
  -        { ' ' ,   "%15"         },    /* &#21;               Unused  */
  -        { ' ' ,   "%16"         },    /* &#22;               Unused  */
  -        { ' ' ,   "%17"         },    /* &#23;               Unused  */
  -        { ' ' ,   "%18"         },    /* &#24;               Unused  */
  -        { ' ' ,   "%19"         },    /* &#25;               Unused  */
  -        { ' ' ,   "%1A"         },    /* &#26;               Unused  */
  -        { ' ' ,   "%1B"         },    /* &#27;               Unused  */
  -        { ' ' ,   "%1C"         },    /* &#28;               Unused  */
  -        { ' ' ,   "%1D"         },    /* &#29;               Unused  */
  -        { ' ' ,   "%1E"         },    /* &#30;               Unused  */
  -        { ' ' ,   "%1F"         },    /* &#31;               Unused  */
  -        { ' ' ,   "+"           },    /* &#32;               Space  */
  -        { '!' ,   ""         },    /*        &#33;           Exclamation mark  */
  -        { '"' ,   "%22"   },    /*   Quotation mark  */
  -        { '#' ,   ""         },    /*        &#35;           Number sign  */
  -        { '$' ,   ""         },    /*        &#36;           Dollar sign  */
  -        { '%' ,   "%25"      },    /*        &#37;           Percent sign  */
  -        { '&' ,   "%26"    },    /*  Ampersand  */
  -        { '\'' ,  ""         },    /*        &#39;           Apostrophe  */
  -        { '(' ,   ""         },    /*        &#40;           Left parenthesis  */
  -        { ')' ,   ""         },    /*        &#41;           Right parenthesis  */
  -        { '*' ,   ""         },    /*        &#42;           Asterisk  */
  -        { '+' ,   "%2B"         },    /*     &#43;           Plus sign  */
  -        { ',' ,   ""         },    /*        &#44;           Comma  */
  -        { '-' ,   ""         },    /*        &#45;           Hyphen  */
  -        { '.' ,   ""         },    /*        &#46;           Period (fullstop)  */
  -        { '/' ,   ""         },    /*        &#47;           Solidus (slash)  */
  -        { '0' ,   ""         },    /*        &#48;           Digit 0  */
  -        { '1' ,   ""         },    /*        &#49;           Digit 1  */
  -        { '2' ,   ""         },    /*        &#50;           Digit 2  */
  -        { '3' ,   ""         },    /*        &#51;           Digit 3  */
  -        { '4' ,   ""         },    /*        &#52;           Digit 4  */
  -        { '5' ,   ""         },    /*        &#53;           Digit 5  */
  -        { '6' ,   ""         },    /*        &#54;           Digit 6  */
  -        { '7' ,   ""         },    /*        &#55;           Digit 7  */
  -        { '8' ,   ""         },    /*        &#56;           Digit 8  */
  -        { '9' ,   ""         },    /*        &#57;           Digit 9  */
  -        { ':' ,   ""         },    /*        &#58;           Colon  */
  -        { ';' ,   ""      },    /*   &#59;           Semicolon  */
  -        { '<' ,   ""      },    /*   Less than  */
  -        { '=' ,   "%3D"      },    /*        &#61;           Equals sign  */
  -        { '>' ,   ""      },    /*   Greater than  */
  -        { '?' ,   "%3F"      },    /*        &#63;           Question mark  */
  -        { '@' ,   ""      },    /*   &#64;           Commercial at  */
  -        { 'A' ,   ""         },    /*        &#65;           Capital A  */
  -        { 'B' ,   ""         },    /*        &#66;           Capital B  */
  -        { 'C' ,   ""         },    /*        &#67;           Capital C  */
  -        { 'D' ,   ""         },    /*        &#68;           Capital D  */
  -        { 'E' ,   ""         },    /*        &#69;           Capital E  */
  -        { 'F' ,   ""         },    /*        &#70;           Capital F  */
  -        { 'G' ,   ""         },    /*        &#71;           Capital G  */
  -        { 'H' ,   ""         },    /*        &#72;           Capital H  */
  -        { 'I' ,   ""         },    /*        &#73;           Capital I  */
  -        { 'J' ,   ""         },    /*        &#74;           Capital J  */
  -        { 'K' ,   ""         },    /*        &#75;           Capital K  */
  -        { 'L' ,   ""         },    /*        &#76;           Capital L  */
  -        { 'M' ,   ""         },    /*        &#77;           Capital M  */
  -        { 'N' ,   ""         },    /*        &#78;           Capital N  */
  -        { 'O' ,   ""         },    /*        &#79;           Capital O  */
  -        { 'P' ,   ""         },    /*        &#80;           Capital P  */
  -        { 'Q' ,   ""         },    /*        &#81;           Capital Q  */
  -        { 'R' ,   ""         },    /*        &#82;           Capital R  */
  -        { 'S' ,   ""         },    /*        &#83;           Capital S  */
  -        { 'T' ,   ""         },    /*        &#84;           Capital T  */
  -        { 'U' ,   ""         },    /*        &#85;           Capital U  */
  -        { 'V' ,   ""         },    /*        &#86;           Capital V  */
  -        { 'W' ,   ""         },    /*        &#87;           Capital W  */
  -        { 'X' ,   ""         },    /*        &#88;           Capital X  */
  -        { 'Y' ,   ""         },    /*        &#89;           Capital Y  */
  -        { 'Z' ,   ""         },    /*        &#90;           Capital Z  */
  -        { '[' ,   ""         },    /*        &#91;           Left square bracket  
*/
  -        { '\\' ,  ""         },    /*        &#92;           Reverse solidus 
(backslash)  */
  -        { ']' ,   ""         },    /*        &#93;           Right square bracket  
*/
  -        { '^' ,   ""         },    /*        &#94;           Caret  */
  -        { '_' ,   ""         },    /*        &#95;           Horizontal bar 
(underscore)  */
  -        { '`' ,   ""         },    /*        &#96;           Acute accent  */
  -        { 'a' ,   ""         },    /*        &#97;           Small a  */
  -        { 'b' ,   ""         },    /*        &#98;           Small b  */
  -        { 'c' ,   ""         },    /*        &#99;           Small c  */
  -        { 'd' ,   ""         },    /*        &#100;          Small d  */
  -        { 'e' ,   ""         },    /*        &#101;          Small e  */
  -        { 'f' ,   ""         },    /*        &#102;          Small f  */
  -        { 'g' ,   ""         },    /*        &#103;          Small g  */
  -        { 'h' ,   ""         },    /*        &#104;          Small h  */
  -        { 'i' ,   ""         },    /*        &#105;          Small i  */
  -        { 'j' ,   ""         },    /*        &#106;          Small j  */
  -        { 'k' ,   ""         },    /*        &#107;          Small k  */
  -        { 'l' ,   ""         },    /*        &#108;          Small l  */
  -        { 'm' ,   ""         },    /*        &#109;          Small m  */
  -        { 'n' ,   ""         },    /*        &#110;          Small n  */
  -        { 'o' ,   ""         },    /*        &#111;          Small o  */
  -        { 'p' ,   ""         },    /*        &#112;          Small p  */
  -        { 'q' ,   ""         },    /*        &#113;          Small q  */
  -        { 'r' ,   ""         },    /*        &#114;          Small r  */
  -        { 's' ,   ""         },    /*        &#115;          Small s  */
  -        { 't' ,   ""         },    /*        &#116;          Small t  */
  -        { 'u' ,   ""         },    /*        &#117;          Small u  */
  -        { 'v' ,   ""         },    /*        &#118;          Small v  */
  -        { 'w' ,   ""         },    /*        &#119;          Small w  */
  -        { 'x' ,   ""         },    /*        &#120;          Small x  */
  -        { 'y' ,   ""         },    /*        &#121;          Small y  */
  -        { 'z' ,   ""         },    /*        &#122;          Small z  */
  -        { '{' ,   ""         },    /*        &#123;          Left curly brace  */
  -        { '|' ,   ""         },    /*        &#124;          Vertical bar  */
  -        { '}' ,   ""         },    /*        &#125;          Right curly brace  */
  -        { '~' ,   ""         },    /*        &#126;          Tilde  */
  -        { '' ,   ""         },    /*        &#127;          Unused  */
  -        { '�' ,   ""         },    /*        &#128;          Unused */
  -         
  -        { ' ' ,   ""         },    /* &#129;         Unused  */
  -        { ' ' ,   ""         },    /* &#130;         Unused  */
  -        { ' ' ,   ""         },    /* &#131;         Unused  */
  -        { ' ' ,   ""         },    /* &#132;         Unused  */
  -        { ' ' ,   ""         },    /* &#133;         Unused  */
  -        { ' ' ,   ""         },    /* &#134;         Unused  */
  -        { ' ' ,   ""         },    /* &#135;         Unused  */
  -        { ' ' ,   ""         },    /* &#136;         Unused  */
  -        { ' ' ,   ""         },    /* &#137;         Unused  */
  -        { ' ' ,   ""         },    /* &#138;         Horizontal tab  */
  -        { ' ' ,   ""         },    /* &#139;         Line feed  */
  -        { ' ' ,   ""         },    /* &#140;         Unused  */
  -        { ' ' ,   ""         },    /* &#141;         Unused  */
  -        { ' ' ,   ""         },    /* &#142;         Carriage Return  */
  -        { ' ' ,   ""         },    /* &#143;         Unused  */
  -        { ' ' ,   ""         },    /* &#144;         Unused  */
  -        { ' ' ,   ""         },    /* &#145;         Unused  */
  -        { ' ' ,   ""         },    /* &#146;         Unused  */
  -        { ' ' ,   ""         },    /* &#147;         Unused  */
  -        { ' ' ,   ""         },    /* &#148;         Unused  */
  -        { ' ' ,   ""         },    /* &#149;         Unused  */
  -        { ' ' ,   ""         },    /* &#150;         Unused  */
  -        { ' ' ,   ""         },    /* &#151;         Unused  */
  -        { ' ' ,   ""         },    /* &#152;         Unused  */
  -        { ' ' ,   ""         },    /* &#153;         Unused  */
  -        { ' ' ,   ""         },    /* &#154;         Unused  */
  -        { ' ' ,   ""         },    /* &#155;         Unused  */
  -        { ' ' ,   ""         },    /* &#156;         Unused  */
  -        { ' ' ,   ""         },    /* &#157;         Unused  */
  -        { ' ' ,   ""         },    /* &#158;         Unused  */
  -        { ' ' ,   ""         },    /* &#159;         Unused  */
  -        { '�' ,   ""   },    /*      Non-breaking Space  */
  -        { '�' ,   ""  },    /*       Inverted exclamation    */
  -        { '�' ,   ""   },    /*      Cent sign               */
  -        { '�' ,   ""  },    /*       Pound sterling  */
  -        { '�' ,   "" },    /*        General currency sign  */
  -        { '�' ,   ""    },    /*     Yen sign  */
  -        { '�' ,   "" },    /*        Broken vertical bar  */
  -        { '�' ,   ""  },    /*       Section sign  */
  -        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  -        { '�' ,   ""  },    /*       Copyright               */
  -        { '�' ,   ""  },    /*       Feminine ordinal  */
  -        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  -        { '�' ,   ""   },    /*      Not sign  */
  -        { '�' ,   ""    },    /*     Soft hyphen  */
  -        { '�' ,   ""    },    /*     Registered trademark  */
  -        { '�' ,   ""  },    /*       Macron accent  */
  -        { '�' ,   ""    },    /*     Degree sign  */
  -        { '�' ,   "" },    /*        Plus or minus  */
  -        { '�' ,   ""   },    /*      Superscript two  */
  -        { '�' ,   ""   },    /*      Superscript three  */
  -        { '�' ,   ""  },    /*       Acute accent  */
  -        { '�' ,   ""  },    /*       Micro sign  */
  -        { '�' ,   ""   },    /*      Paragraph sign  */
  -        { '�' ,   "" },    /*        Middle dot  */
  -        { '�' ,   ""  },    /*       Cedilla  */
  -        { '�' ,   ""   },    /*      Superscript one  */
  -        { '�' ,   ""   },    /*      Masculine ordinal  */
  -        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  -        { '�' ,   "" },    /*        Fraction one-fourth  */
  -        { '�' ,   "" },    /*        Fraction one-half  */
  -        { '�' ,   "" },    /*        Fraction three-fourths  */
  -        { '�' ,   "" },    /*        Inverted question mark  */
  -        { '�' ,   "" },    /*        Capital A, grave accent  */
  -        { '�' ,   "" },    /*        Capital A, acute accent  */
  -        { '�' ,   ""  },    /*       Capital A, circumflex  */
  -        { '�' ,   "" },    /*        Capital A, tilde  */
  -        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Capital A, ring  */
  -        { '�' ,   ""  },    /*       Capital AE ligature  */
  -        { '�' ,   "" },    /*        Capital C, cedilla  */
  -        { '�' ,   "" },    /*        Capital E, grave accent  */
  -        { '�' ,   "" },    /*        Capital E, acute accent  */
  -        { '�' ,   ""  },    /*       Capital E, circumflex  */
  -        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital I, grave accent  */
  -        { '�' ,   "" },    /*        Capital I, acute accent  */
  -        { '�' ,   ""  },    /*       Capital I, circumflex  */
  -        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  -        { '�' ,   ""    },    /*     Capital Eth, Icelandic  */
  -        { '�' ,   "" },    /*        Capital N, tilde  */
  -        { '�' ,   "" },    /*        Capital O, grave accent  */
  -        { '�' ,   "" },    /*        Capital O, acute accent  */
  -        { '�' ,   ""  },    /*       Capital O, circumflex  */
  -        { '�' ,   "" },    /*        Capital O, tilde  */
  -        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Multiply sign  */
  -        { '�' ,   "" },    /*        Capital O, slash  */
  -        { '�' ,   "" },    /*        Capital U, grave accent  */
  -        { '�' ,   "" },    /*        Capital U, acute accent  */
  -        { '�' ,   ""  },    /*       Capital U, circumflex  */
  -        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital Y, acute accent  */
  -        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  -        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  -        { '�' ,   "" },    /*        Small a, grave accent  */
  -        { '�' ,   "" },    /*        Small a, acute accent  */
  -        { '�' ,   ""  },    /*       Small a, circumflex  */
  -        { '�' ,   "" },    /*        Small a, tilde  */
  -        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Small a, ring  */
  -        { '�' ,   ""  },    /*       Small ae ligature  */
  -        { '�' ,   "" },    /*        Small c, cedilla  */
  -        { '�' ,   "" },    /*        Small e, grave accent  */
  -        { '�' ,   "" },    /*        Small e, acute accent  */
  -        { '�' ,   ""  },    /*       Small e, circumflex  */
  -        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Small i, grave accent  */
  -        { '�' ,   "" },    /*        Small i, acute accent  */
  -        { '�' ,   ""  },    /*       Small i, circumflex  */
  -        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  -        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  -        { '�' ,   "" },    /*        Small n, tilde  */
  -        { '�' ,   "" },    /*        Small o, grave accent  */
  -        { '�' ,   "" },    /*        Small o, acute accent  */
  -        { '�' ,   ""  },    /*       Small o, circumflex  */
  -        { '�' ,   "" },    /*        Small o, tilde  */
  -        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Division sign  */
  -        { '�' ,   "" },    /*        Small o, slash  */
  -        { '�' ,   "" },    /*        Small u, grave accent  */
  -        { '�' ,   "" },    /*        Small u, acute accent  */
  -        { '�' ,   ""  },    /*       Small u, circumflex  */
  -        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Small y, acute accent  */
  -        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  -        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  -    } ; 
  -    
  -    
  -struct tCharTrans Html2Char [] = 
  - 
  -    {
  -        { '�' ,  ""  },    /*        Capital AE ligature  */
  -        { '�' ,   "" },    /*        Capital A, acute accent  */
  -        { '�' ,   ""  },    /*       Capital A, circumflex  */
  -        { '�' ,   "" },    /*        Capital A, grave accent  */
  -        { '�' ,   ""  },    /*       Capital A, ring  */
  -        { '�' ,   "" },    /*        Capital A, tilde  */
  -        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital C, cedilla  */
  -        { '�' ,  ""    },    /*      Capital Eth, Icelandic  */
  -        { '�' ,   "" },    /*        Capital E, acute accent  */
  -        { '�' ,   ""  },    /*       Capital E, circumflex  */
  -        { '�' ,   "" },    /*        Capital E, grave accent  */
  -        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital I, acute accent  */
  -        { '�' ,   ""  },    /*       Capital I, circumflex  */
  -        { '�' ,   "" },    /*        Capital I, grave accent  */
  -        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital N, tilde  */
  -        { '�' ,   "" },    /*        Capital O, acute accent  */
  -        { '�' ,   ""  },    /*       Capital O, circumflex  */
  -        { '�' ,   "" },    /*        Capital O, grave accent  */
  -        { '�' ,   "" },    /*        Capital O, slash  */
  -        { '�' ,   "" },    /*        Capital O, tilde  */
  -        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  -        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  -        { '�' ,   "" },    /*        Capital U, acute accent  */
  -        { '�' ,   ""  },    /*       Capital U, circumflex  */
  -        { '�' ,   "" },    /*        Capital U, grave accent  */
  -        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Capital Y, acute accent  */
  -        { '�' ,   "" },    /*        Small a, acute accent  */
  -        { '�' ,   ""  },    /*       Small a, circumflex  */
  -        { '�' ,   ""  },    /*       Acute accent  */
  -        { '�' ,   ""  },    /*       Small ae ligature  */
  -        { '�' ,   "" },    /*        Small a, grave accent  */
  -        { '&' ,   ""    },    /*     Ampersand  */
  -        { '�' ,   ""  },    /*       Small a, ring  */
  -        { '�' ,   "" },    /*        Small a, tilde  */
  -        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Broken vertical bar  */
  -        { '�' ,   "" },    /*        Broken vertical bar  */
  -        { '�' ,   "" },    /*        Small c, cedilla  */
  -        { '�' ,   ""  },    /*       Cedilla  */
  -        { '�' ,   ""   },    /*      Cent sign  */
  -        { '�' ,   ""  },    /*       Copyright  */
  -        { '�' ,   "" },    /*        General currency sign  */
  -        { '�' ,   ""    },    /*     Degree sign  */
  -        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  -        { '�' ,   "" },    /*        Division sign  */
  -        { '�' ,   "" },    /*        Small e, acute accent  */
  -        { '�' ,   ""  },    /*       Small e, circumflex  */
  -        { '�' ,   "" },    /*        Small e, grave accent  */
  -        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  -        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Fraction one-half  */
  -        { '�' ,   "" },    /*        Fraction one-fourth  */
  -        { '�' ,   "" },    /*        Fraction three-fourths  */
  -        { '>' ,   ""     },    /*    Greater than  */
  -        { '�' ,   ""  },    /*       Macron accent  */
  -        { '�' ,   "" },    /*        Small i, acute accent  */
  -        { '�' ,   ""  },    /*       Small i, circumflex  */
  -        { '�' ,   ""  },    /*       Inverted exclamation  */
  -        { '�' ,   "" },    /*        Small i, grave accent  */
  -        { '�' ,   "" },    /*        Inverted question mark  */
  -        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  -        { '<' ,   ""     },    /*    Less than  */
  -        { '�' ,   ""   },    /*      Macron accent  */
  -        { '�' ,   ""  },    /*       Micro sign  */
  -        { '�' ,   "" },    /*        Middle dot  */
  -        { ' ' ,   ""   },    /*      Non-breaking Space  */
  -        { '�' ,   ""   },    /*      Not sign  */
  -        { '�' ,   "" },    /*        Small n, tilde  */
  -        { '�' ,   "" },    /*        Small o, acute accent  */
  -        { '�' ,   ""  },    /*       Small o, circumflex  */
  -        { '�' ,   "" },    /*        Small o, grave accent  */
  -        { '�' ,   ""  },    /*       Feminine ordinal  */
  -        { '�' ,   ""   },    /*      Masculine ordinal  */
  -        { '�' ,   "" },    /*        Small o, slash  */
  -        { '�' ,   "" },    /*        Small o, tilde  */
  -        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  -        { '�' ,   ""   },    /*      Paragraph sign  */
  -        { '�' ,   "" },    /*        Plus or minus  */
  -        { '�' ,   ""  },    /*       Pound sterling  */
  -        { '"' ,   ""   },    /*      Quotation mark  */
  -        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  -        { '�' ,   ""    },    /*     Registered trademark  */
  -        { '�' ,   ""  },    /*       Section sign  */
  -        { '�' ,   ""    },    /*     Soft hyphen  */
  -        { '�' ,   ""   },    /*      Superscript one  */
  -        { '�' ,   ""   },    /*      Superscript two  */
  -        { '�' ,   ""   },    /*      Superscript three  */
  -        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  -        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  -        { '�' ,   ""  },    /*       Multiply sign  */
  -        { '�' ,   "" },    /*        Small u, acute accent  */
  -        { '�' ,   ""  },    /*       Small u, circumflex  */
  -        { '�' ,   "" },    /*        Small u, grave accent  */
  -        { '�' ,   ""    },    /*     Di�resis / Umlaut  */
  -        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  -        { '�' ,   "" },    /*        Small y, acute accent  */
  -        { '�' ,   ""    },    /*     Yen sign  */
  -        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  -} ;
  -
  -
  -int sizeHtml2Char = sizeof (Html2Char) / sizeof (struct tCharTrans) ;
  -
  +*/
  +
  +#include "ep.h"
  +
  +
  +
  +/*
  +* Character Translation
  +*/
  +
  +
  +struct tCharTrans Char2Html [] = 
  +
  +    {
  +        { ' ' ,   ""         },    /* &#00;          Unused */ 
  +        { ' ' ,   ""         },    /* &#01;          Unused */
  +        { ' ' ,   ""         },    /* &#02;          Unused  */
  +        { ' ' ,   ""         },    /* &#03;          Unused  */
  +        { ' ' ,   ""         },    /* &#04;          Unused  */
  +        { ' ' ,   ""         },    /* &#05;          Unused  */
  +        { ' ' ,   ""         },    /* &#06;          Unused  */
  +        { ' ' ,   ""         },    /* &#07;          Unused  */
  +        { ' ' ,   ""         },    /* &#08;          Unused  */
  +        { ' ' ,   ""         },    /* &#09;          Horizontal tab  */
  +        { ' ' ,   ""         },    /* &#10;          Line feed  */
  +        { ' ' ,   ""         },    /* &#11;          Unused  */
  +        { ' ' ,   ""         },    /* &#12;          Unused  */
  +        { ' ' ,   ""         },    /* &#13;          Carriage Return  */
  +        { ' ' ,   ""         },    /* &#14;          Unused  */
  +        { ' ' ,   ""         },    /* &#15;          Unused  */
  +        { ' ' ,   ""         },    /* &#16;          Unused  */
  +        { ' ' ,   ""         },    /* &#17;          Unused  */
  +        { ' ' ,   ""         },    /* &#18;          Unused  */
  +        { ' ' ,   ""         },    /* &#19;          Unused  */
  +        { ' ' ,   ""         },    /* &#20;          Unused  */
  +        { ' ' ,   ""         },    /* &#21;          Unused  */
  +        { ' ' ,   ""         },    /* &#22;          Unused  */
  +        { ' ' ,   ""         },    /* &#23;          Unused  */
  +        { ' ' ,   ""         },    /* &#24;          Unused  */
  +        { ' ' ,   ""         },    /* &#25;          Unused  */
  +        { ' ' ,   ""         },    /* &#26;          Unused  */
  +        { ' ' ,   ""         },    /* &#27;          Unused  */
  +        { ' ' ,   ""         },    /* &#28;          Unused  */
  +        { ' ' ,   ""         },    /* &#29;          Unused  */
  +        { ' ' ,   ""         },    /* &#30;          Unused  */
  +        { ' ' ,   ""         },    /* &#31;          Unused  */
  +        { ' ' ,   ""         },    /*        &#32;           Space  */
  +        { '!' ,   ""         },    /*        &#33;           Exclamation mark  */
  +        { '"' ,   "&quot;"   },    /*        Quotation mark  */
  +        { '#' ,   ""         },    /*        &#35;           Number sign  */
  +        { '$' ,   ""         },    /*        &#36;           Dollar sign  */
  +        { '%' ,   ""         },    /*        &#37;           Percent sign  */
  +        { '&' ,   "&amp;"    },    /*        Ampersand  */
  +        { '\'' ,  ""         },    /*        &#39;           Apostrophe  */
  +        { '(' ,   ""         },    /*        &#40;           Left parenthesis  */
  +        { ')' ,   ""         },    /*        &#41;           Right parenthesis  */
  +        { '*' ,   ""         },    /*        &#42;           Asterisk  */
  +        { '+' ,   ""         },    /*        &#43;           Plus sign  */
  +        { ',' ,   ""         },    /*        &#44;           Comma  */
  +        { '-' ,   ""         },    /*        &#45;           Hyphen  */
  +        { '.' ,   ""         },    /*        &#46;           Period (fullstop)  */
  +        { '/' ,   ""         },    /*        &#47;           Solidus (slash)  */
  +        { '0' ,   ""         },    /*        &#48;           Digit 0  */
  +        { '1' ,   ""         },    /*        &#49;           Digit 1  */
  +        { '2' ,   ""         },    /*        &#50;           Digit 2  */
  +        { '3' ,   ""         },    /*        &#51;           Digit 3  */
  +        { '4' ,   ""         },    /*        &#52;           Digit 4  */
  +        { '5' ,   ""         },    /*        &#53;           Digit 5  */
  +        { '6' ,   ""         },    /*        &#54;           Digit 6  */
  +        { '7' ,   ""         },    /*        &#55;           Digit 7  */
  +        { '8' ,   ""         },    /*        &#56;           Digit 8  */
  +        { '9' ,   ""         },    /*        &#57;           Digit 9  */
  +        { ':' ,   ""         },    /*        &#58;           Colon  */
  +        { ';' ,   ""         },    /*        &#59;           Semicolon  */
  +        { '<' ,   "&lt;"     },    /*        Less than  */
  +        { '=' ,   ""         },    /*        &#61;           Equals sign  */
  +        { '>' ,   "&gt;"     },    /*        Greater than  */
  +        { '?' ,   ""         },    /*        &#63;           Question mark  */
  +        { '@' ,   ""         },    /*        &#64;           Commercial at  */
  +        { 'A' ,   ""         },    /*        &#65;           Capital A  */
  +        { 'B' ,   ""         },    /*        &#66;           Capital B  */
  +        { 'C' ,   ""         },    /*        &#67;           Capital C  */
  +        { 'D' ,   ""         },    /*        &#68;           Capital D  */
  +        { 'E' ,   ""         },    /*        &#69;           Capital E  */
  +        { 'F' ,   ""         },    /*        &#70;           Capital F  */
  +        { 'G' ,   ""         },    /*        &#71;           Capital G  */
  +        { 'H' ,   ""         },    /*        &#72;           Capital H  */
  +        { 'I' ,   ""         },    /*        &#73;           Capital I  */
  +        { 'J' ,   ""         },    /*        &#74;           Capital J  */
  +        { 'K' ,   ""         },    /*        &#75;           Capital K  */
  +        { 'L' ,   ""         },    /*        &#76;           Capital L  */
  +        { 'M' ,   ""         },    /*        &#77;           Capital M  */
  +        { 'N' ,   ""         },    /*        &#78;           Capital N  */
  +        { 'O' ,   ""         },    /*        &#79;           Capital O  */
  +        { 'P' ,   ""         },    /*        &#80;           Capital P  */
  +        { 'Q' ,   ""         },    /*        &#81;           Capital Q  */
  +        { 'R' ,   ""         },    /*        &#82;           Capital R  */
  +        { 'S' ,   ""         },    /*        &#83;           Capital S  */
  +        { 'T' ,   ""         },    /*        &#84;           Capital T  */
  +        { 'U' ,   ""         },    /*        &#85;           Capital U  */
  +        { 'V' ,   ""         },    /*        &#86;           Capital V  */
  +        { 'W' ,   ""         },    /*        &#87;           Capital W  */
  +        { 'X' ,   ""         },    /*        &#88;           Capital X  */
  +        { 'Y' ,   ""         },    /*        &#89;           Capital Y  */
  +        { 'Z' ,   ""         },    /*        &#90;           Capital Z  */
  +        { '[' ,   ""         },    /*        &#91;           Left square bracket  */
  +        { '\\' ,  ""         },    /*        &#92;           Reverse solidus 
(backslash)  */
  +        { ']' ,   ""         },    /*        &#93;           Right square bracket  
*/
  +        { '^' ,   ""         },    /*        &#94;           Caret  */
  +        { '_' ,   ""         },    /*        &#95;           Horizontal bar 
(underscore)  */
  +        { '`' ,   ""         },    /*        &#96;           Acute accent  */
  +        { 'a' ,   ""         },    /*        &#97;           Small a  */
  +        { 'b' ,   ""         },    /*        &#98;           Small b  */
  +        { 'c' ,   ""         },    /*        &#99;           Small c  */
  +        { 'd' ,   ""         },    /*        &#100;          Small d  */
  +        { 'e' ,   ""         },    /*        &#101;          Small e  */
  +        { 'f' ,   ""         },    /*        &#102;          Small f  */
  +        { 'g' ,   ""         },    /*        &#103;          Small g  */
  +        { 'h' ,   ""         },    /*        &#104;          Small h  */
  +        { 'i' ,   ""         },    /*        &#105;          Small i  */
  +        { 'j' ,   ""         },    /*        &#106;          Small j  */
  +        { 'k' ,   ""         },    /*        &#107;          Small k  */
  +        { 'l' ,   ""         },    /*        &#108;          Small l  */
  +        { 'm' ,   ""         },    /*        &#109;          Small m  */
  +        { 'n' ,   ""         },    /*        &#110;          Small n  */
  +        { 'o' ,   ""         },    /*        &#111;          Small o  */
  +        { 'p' ,   ""         },    /*        &#112;          Small p  */
  +        { 'q' ,   ""         },    /*        &#113;          Small q  */
  +        { 'r' ,   ""         },    /*        &#114;          Small r  */
  +        { 's' ,   ""         },    /*        &#115;          Small s  */
  +        { 't' ,   ""         },    /*        &#116;          Small t  */
  +        { 'u' ,   ""         },    /*        &#117;          Small u  */
  +        { 'v' ,   ""         },    /*        &#118;          Small v  */
  +        { 'w' ,   ""         },    /*        &#119;          Small w  */
  +        { 'x' ,   ""         },    /*        &#120;          Small x  */
  +        { 'y' ,   ""         },    /*        &#121;          Small y  */
  +        { 'z' ,   ""         },    /*        &#122;          Small z  */
  +        { '{' ,   ""         },    /*        &#123;          Left curly brace  */
  +        { '|' ,   ""         },    /*        &#124;          Vertical bar  */
  +        { '}' ,   ""         },    /*        &#125;          Right curly brace  */
  +        { '~' ,   ""         },    /*        &#126;          Tilde  */
  +        { '' ,   ""         },    /*        &#127;          Unused  */
  +        { '�' ,   ""         },    /*        &#128;          Unused */
  +        { ' ' ,   ""         },    /* &#129;         Unused  */
  +        { ' ' ,   ""         },    /* &#130;         Unused  */
  +        { ' ' ,   ""         },    /* &#131;         Unused  */
  +        { ' ' ,   ""         },    /* &#132;         Unused  */
  +        { ' ' ,   ""         },    /* &#133;         Unused  */
  +        { ' ' ,   ""         },    /* &#134;         Unused  */
  +        { ' ' ,   ""         },    /* &#135;         Unused  */
  +        { ' ' ,   ""         },    /* &#136;         Unused  */
  +        { ' ' ,   ""         },    /* &#137;         Unused  */
  +        { ' ' ,   ""         },    /* &#138;         Horizontal tab  */
  +        { ' ' ,   ""         },    /* &#139;         Line feed  */
  +        { ' ' ,   ""         },    /* &#140;         Unused  */
  +        { ' ' ,   ""         },    /* &#141;         Unused  */
  +        { ' ' ,   ""         },    /* &#142;         Carriage Return  */
  +        { ' ' ,   ""         },    /* &#143;         Unused  */
  +        { ' ' ,   ""         },    /* &#144;         Unused  */
  +        { ' ' ,   ""         },    /* &#145;         Unused  */
  +        { ' ' ,   ""         },    /* &#146;         Unused  */
  +        { ' ' ,   ""         },    /* &#147;         Unused  */
  +        { ' ' ,   ""         },    /* &#148;         Unused  */
  +        { ' ' ,   ""         },    /* &#149;         Unused  */
  +        { ' ' ,   ""         },    /* &#150;         Unused  */
  +        { ' ' ,   ""         },    /* &#151;         Unused  */
  +        { ' ' ,   ""         },    /* &#152;         Unused  */
  +        { ' ' ,   ""         },    /* &#153;         Unused  */
  +        { ' ' ,   ""         },    /* &#154;         Unused  */
  +        { ' ' ,   ""         },    /* &#155;         Unused  */
  +        { ' ' ,   ""         },    /* &#156;         Unused  */
  +        { ' ' ,   ""         },    /* &#157;         Unused  */
  +        { ' ' ,   ""         },    /* &#158;         Unused  */
  +        { ' ' ,   ""         },    /* &#159;         Unused  */
  +        { ' ' ,   ""   },    /*      Non-breaking Space  */
  +        { '�' ,   ""  },    /*       Inverted exclamation    */
  +        { '�' ,   ""   },    /*      Cent sign               */
  +        { '�' ,   ""  },    /*       Pound sterling  */
  +        { '�' ,   "" },    /*        General currency sign  */
  +        { '�' ,   ""    },    /*     Yen sign  */
  +/*        { '�' ,   "" },    / *     Broken vertical bar  */
  +        { '�' ,   "" },    /*        Broken vertical bar  */
  +        { '�' ,   ""  },    /*       Section sign  */
  +/*        { '�' ,   ""    },    / *          Di�resis / Umlaut  */
  +        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  +        { '�' ,   ""  },    /*       Copyright               */
  +        { '�' ,   ""  },    /*       Feminine ordinal  */
  +        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  +        { '�' ,   ""   },    /*      Not sign  */
  +        { '�' ,   ""    },    /*     Soft hyphen  */
  +        { '�' ,   ""    },    /*     Registered trademark  */
  +/*        { '�' ,   ""   },    / *   Macron accent  */
  +        { '�' ,   ""  },    /*       Macron accent  */
  +        { '�' ,   ""    },    /*     Degree sign  */
  +        { '�' ,   "" },    /*        Plus or minus  */
  +        { '�' ,   ""   },    /*      Superscript two  */
  +        { '�' ,   ""   },    /*      Superscript three  */
  +        { '�' ,   ""  },    /*       Acute accent  */
  +        { '�' ,   ""  },    /*       Micro sign  */
  +        { '�' ,   ""   },    /*      Paragraph sign  */
  +        { '�' ,   "" },    /*        Middle dot  */
  +        { '�' ,   ""  },    /*       Cedilla  */
  +        { '�' ,   ""   },    /*      Superscript one  */
  +        { '�' ,   ""   },    /*      Masculine ordinal  */
  +        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  +        { '�' ,   "" },    /*        Fraction one-fourth  */
  +        { '�' ,   "" },    /*        Fraction one-half  */
  +        { '�' ,   "" },    /*        Fraction three-fourths  */
  +        { '�' ,   "" },    /*        Inverted question mark  */
  +        { '�' ,   "" },    /*        Capital A, grave accent  */
  +        { '�' ,   "" },    /*        Capital A, acute accent  */
  +        { '�' ,   ""  },    /*       Capital A, circumflex  */
  +        { '�' ,   "" },    /*        Capital A, tilde  */
  +        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Capital A, ring  */
  +        { '�' ,   ""  },    /*       Capital AE ligature  */
  +        { '�' ,   "" },    /*        Capital C, cedilla  */
  +        { '�' ,   "" },    /*        Capital E, grave accent  */
  +        { '�' ,   "" },    /*        Capital E, acute accent  */
  +        { '�' ,   ""  },    /*       Capital E, circumflex  */
  +        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital I, grave accent  */
  +        { '�' ,   "" },    /*        Capital I, acute accent  */
  +        { '�' ,   ""  },    /*       Capital I, circumflex  */
  +        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  +        { '�' ,   ""    },    /*     Capital Eth, Icelandic  */
  +        { '�' ,   "" },    /*        Capital N, tilde  */
  +        { '�' ,   "" },    /*        Capital O, grave accent  */
  +        { '�' ,   "" },    /*        Capital O, acute accent  */
  +        { '�' ,   ""  },    /*       Capital O, circumflex  */
  +        { '�' ,   "" },    /*        Capital O, tilde  */
  +        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Multiply sign  */
  +        { '�' ,   "" },    /*        Capital O, slash  */
  +        { '�' ,   "" },    /*        Capital U, grave accent  */
  +        { '�' ,   "" },    /*        Capital U, acute accent  */
  +        { '�' ,   ""  },    /*       Capital U, circumflex  */
  +        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital Y, acute accent  */
  +        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  +        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  +        { '�' ,   "" },    /*        Small a, grave accent  */
  +        { '�' ,   "" },    /*        Small a, acute accent  */
  +        { '�' ,   ""  },    /*       Small a, circumflex  */
  +        { '�' ,   "" },    /*        Small a, tilde  */
  +        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Small a, ring  */
  +        { '�' ,   ""  },    /*       Small ae ligature  */
  +        { '�' ,   "" },    /*        Small c, cedilla  */
  +        { '�' ,   "" },    /*        Small e, grave accent  */
  +        { '�' ,   "" },    /*        Small e, acute accent  */
  +        { '�' ,   ""  },    /*       Small e, circumflex  */
  +        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Small i, grave accent  */
  +        { '�' ,   "" },    /*        Small i, acute accent  */
  +        { '�' ,   ""  },    /*       Small i, circumflex  */
  +        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  +        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  +        { '�' ,   "" },    /*        Small n, tilde  */
  +        { '�' ,   "" },    /*        Small o, grave accent  */
  +        { '�' ,   "" },    /*        Small o, acute accent  */
  +        { '�' ,   ""  },    /*       Small o, circumflex  */
  +        { '�' ,   "" },    /*        Small o, tilde  */
  +        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Division sign  */
  +        { '�' ,   "" },    /*        Small o, slash  */
  +        { '�' ,   "" },    /*        Small u, grave accent  */
  +        { '�' ,   "" },    /*        Small u, acute accent  */
  +        { '�' ,   ""  },    /*       Small u, circumflex  */
  +        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Small y, acute accent  */
  +        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  +        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  +    } ; 
  + 
  +
  +struct tCharTrans Char2Url [] = 
  +
  +    {
  +        { ' ' ,   "%00"         },    /* &#00;               Unused */ 
  +        { ' ' ,   "%01"         },    /* &#01;               Unused */
  +        { ' ' ,   "%02"         },    /* &#02;               Unused  */
  +        { ' ' ,   "%03"         },    /* &#03;               Unused  */
  +        { ' ' ,   "%04"         },    /* &#04;               Unused  */
  +        { ' ' ,   "%05"         },    /* &#05;               Unused  */
  +        { ' ' ,   "%06"         },    /* &#06;               Unused  */
  +        { ' ' ,   "%07"         },    /* &#07;               Unused  */
  +        { ' ' ,   "%08"         },    /* &#08;               Unused  */
  +        { ' ' ,   "%09"         },    /* &#09;               Horizontal tab  */
  +        { ' ' ,   "%0A"         },    /* &#10;               Line feed  */
  +        { ' ' ,   "%0B"         },    /* &#11;               Unused  */
  +        { ' ' ,   "%0C"         },    /* &#12;               Unused  */
  +        { ' ' ,   "%0D"         },    /* &#13;               Carriage Return  */
  +        { ' ' ,   "%0E"         },    /* &#14;               Unused  */
  +        { ' ' ,   "%0F"         },    /* &#15;               Unused  */
  +        { ' ' ,   "%10"         },    /* &#16;               Unused  */
  +        { ' ' ,   "%11"         },    /* &#17;               Unused  */
  +        { ' ' ,   "%12"         },    /* &#18;               Unused  */
  +        { ' ' ,   "%13"         },    /* &#19;               Unused  */
  +        { ' ' ,   "%14"         },    /* &#20;               Unused  */
  +        { ' ' ,   "%15"         },    /* &#21;               Unused  */
  +        { ' ' ,   "%16"         },    /* &#22;               Unused  */
  +        { ' ' ,   "%17"         },    /* &#23;               Unused  */
  +        { ' ' ,   "%18"         },    /* &#24;               Unused  */
  +        { ' ' ,   "%19"         },    /* &#25;               Unused  */
  +        { ' ' ,   "%1A"         },    /* &#26;               Unused  */
  +        { ' ' ,   "%1B"         },    /* &#27;               Unused  */
  +        { ' ' ,   "%1C"         },    /* &#28;               Unused  */
  +        { ' ' ,   "%1D"         },    /* &#29;               Unused  */
  +        { ' ' ,   "%1E"         },    /* &#30;               Unused  */
  +        { ' ' ,   "%1F"         },    /* &#31;               Unused  */
  +        { ' ' ,   "+"           },    /* &#32;               Space  */
  +        { '!' ,   ""         },    /*        &#33;           Exclamation mark  */
  +        { '"' ,   "%22"   },    /*   Quotation mark  */
  +        { '#' ,   ""         },    /*        &#35;           Number sign  */
  +        { '$' ,   ""         },    /*        &#36;           Dollar sign  */
  +        { '%' ,   "%25"      },    /*        &#37;           Percent sign  */
  +        { '&' ,   "%26"    },    /*  Ampersand  */
  +        { '\'' ,  ""         },    /*        &#39;           Apostrophe  */
  +        { '(' ,   ""         },    /*        &#40;           Left parenthesis  */
  +        { ')' ,   ""         },    /*        &#41;           Right parenthesis  */
  +        { '*' ,   ""         },    /*        &#42;           Asterisk  */
  +        { '+' ,   "%2B"         },    /*     &#43;           Plus sign  */
  +        { ',' ,   ""         },    /*        &#44;           Comma  */
  +        { '-' ,   ""         },    /*        &#45;           Hyphen  */
  +        { '.' ,   ""         },    /*        &#46;           Period (fullstop)  */
  +        { '/' ,   ""         },    /*        &#47;           Solidus (slash)  */
  +        { '0' ,   ""         },    /*        &#48;           Digit 0  */
  +        { '1' ,   ""         },    /*        &#49;           Digit 1  */
  +        { '2' ,   ""         },    /*        &#50;           Digit 2  */
  +        { '3' ,   ""         },    /*        &#51;           Digit 3  */
  +        { '4' ,   ""         },    /*        &#52;           Digit 4  */
  +        { '5' ,   ""         },    /*        &#53;           Digit 5  */
  +        { '6' ,   ""         },    /*        &#54;           Digit 6  */
  +        { '7' ,   ""         },    /*        &#55;           Digit 7  */
  +        { '8' ,   ""         },    /*        &#56;           Digit 8  */
  +        { '9' ,   ""         },    /*        &#57;           Digit 9  */
  +        { ':' ,   ""         },    /*        &#58;           Colon  */
  +        { ';' ,   ""      },    /*   &#59;           Semicolon  */
  +        { '<' ,   ""      },    /*   Less than  */
  +        { '=' ,   "%3D"      },    /*        &#61;           Equals sign  */
  +        { '>' ,   ""      },    /*   Greater than  */
  +        { '?' ,   "%3F"      },    /*        &#63;           Question mark  */
  +        { '@' ,   ""      },    /*   &#64;           Commercial at  */
  +        { 'A' ,   ""         },    /*        &#65;           Capital A  */
  +        { 'B' ,   ""         },    /*        &#66;           Capital B  */
  +        { 'C' ,   ""         },    /*        &#67;           Capital C  */
  +        { 'D' ,   ""         },    /*        &#68;           Capital D  */
  +        { 'E' ,   ""         },    /*        &#69;           Capital E  */
  +        { 'F' ,   ""         },    /*        &#70;           Capital F  */
  +        { 'G' ,   ""         },    /*        &#71;           Capital G  */
  +        { 'H' ,   ""         },    /*        &#72;           Capital H  */
  +        { 'I' ,   ""         },    /*        &#73;           Capital I  */
  +        { 'J' ,   ""         },    /*        &#74;           Capital J  */
  +        { 'K' ,   ""         },    /*        &#75;           Capital K  */
  +        { 'L' ,   ""         },    /*        &#76;           Capital L  */
  +        { 'M' ,   ""         },    /*        &#77;           Capital M  */
  +        { 'N' ,   ""         },    /*        &#78;           Capital N  */
  +        { 'O' ,   ""         },    /*        &#79;           Capital O  */
  +        { 'P' ,   ""         },    /*        &#80;           Capital P  */
  +        { 'Q' ,   ""         },    /*        &#81;           Capital Q  */
  +        { 'R' ,   ""         },    /*        &#82;           Capital R  */
  +        { 'S' ,   ""         },    /*        &#83;           Capital S  */
  +        { 'T' ,   ""         },    /*        &#84;           Capital T  */
  +        { 'U' ,   ""         },    /*        &#85;           Capital U  */
  +        { 'V' ,   ""         },    /*        &#86;           Capital V  */
  +        { 'W' ,   ""         },    /*        &#87;           Capital W  */
  +        { 'X' ,   ""         },    /*        &#88;           Capital X  */
  +        { 'Y' ,   ""         },    /*        &#89;           Capital Y  */
  +        { 'Z' ,   ""         },    /*        &#90;           Capital Z  */
  +        { '[' ,   ""         },    /*        &#91;           Left square bracket  */
  +        { '\\' ,  ""         },    /*        &#92;           Reverse solidus 
(backslash)  */
  +        { ']' ,   ""         },    /*        &#93;           Right square bracket  
*/
  +        { '^' ,   ""         },    /*        &#94;           Caret  */
  +        { '_' ,   ""         },    /*        &#95;           Horizontal bar 
(underscore)  */
  +        { '`' ,   ""         },    /*        &#96;           Acute accent  */
  +        { 'a' ,   ""         },    /*        &#97;           Small a  */
  +        { 'b' ,   ""         },    /*        &#98;           Small b  */
  +        { 'c' ,   ""         },    /*        &#99;           Small c  */
  +        { 'd' ,   ""         },    /*        &#100;          Small d  */
  +        { 'e' ,   ""         },    /*        &#101;          Small e  */
  +        { 'f' ,   ""         },    /*        &#102;          Small f  */
  +        { 'g' ,   ""         },    /*        &#103;          Small g  */
  +        { 'h' ,   ""         },    /*        &#104;          Small h  */
  +        { 'i' ,   ""         },    /*        &#105;          Small i  */
  +        { 'j' ,   ""         },    /*        &#106;          Small j  */
  +        { 'k' ,   ""         },    /*        &#107;          Small k  */
  +        { 'l' ,   ""         },    /*        &#108;          Small l  */
  +        { 'm' ,   ""         },    /*        &#109;          Small m  */
  +        { 'n' ,   ""         },    /*        &#110;          Small n  */
  +        { 'o' ,   ""         },    /*        &#111;          Small o  */
  +        { 'p' ,   ""         },    /*        &#112;          Small p  */
  +        { 'q' ,   ""         },    /*        &#113;          Small q  */
  +        { 'r' ,   ""         },    /*        &#114;          Small r  */
  +        { 's' ,   ""         },    /*        &#115;          Small s  */
  +        { 't' ,   ""         },    /*        &#116;          Small t  */
  +        { 'u' ,   ""         },    /*        &#117;          Small u  */
  +        { 'v' ,   ""         },    /*        &#118;          Small v  */
  +        { 'w' ,   ""         },    /*        &#119;          Small w  */
  +        { 'x' ,   ""         },    /*        &#120;          Small x  */
  +        { 'y' ,   ""         },    /*        &#121;          Small y  */
  +        { 'z' ,   ""         },    /*        &#122;          Small z  */
  +        { '{' ,   ""         },    /*        &#123;          Left curly brace  */
  +        { '|' ,   ""         },    /*        &#124;          Vertical bar  */
  +        { '}' ,   ""         },    /*        &#125;          Right curly brace  */
  +        { '~' ,   ""         },    /*        &#126;          Tilde  */
  +        { '' ,   ""         },    /*        &#127;          Unused  */
  +        { '�' ,   ""         },    /*        &#128;          Unused */
  +         
  +        { ' ' ,   ""         },    /* &#129;         Unused  */
  +        { ' ' ,   ""         },    /* &#130;         Unused  */
  +        { ' ' ,   ""         },    /* &#131;         Unused  */
  +        { ' ' ,   ""         },    /* &#132;         Unused  */
  +        { ' ' ,   ""         },    /* &#133;         Unused  */
  +        { ' ' ,   ""         },    /* &#134;         Unused  */
  +        { ' ' ,   ""         },    /* &#135;         Unused  */
  +        { ' ' ,   ""         },    /* &#136;         Unused  */
  +        { ' ' ,   ""         },    /* &#137;         Unused  */
  +        { ' ' ,   ""         },    /* &#138;         Horizontal tab  */
  +        { ' ' ,   ""         },    /* &#139;         Line feed  */
  +        { ' ' ,   ""         },    /* &#140;         Unused  */
  +        { ' ' ,   ""         },    /* &#141;         Unused  */
  +        { ' ' ,   ""         },    /* &#142;         Carriage Return  */
  +        { ' ' ,   ""         },    /* &#143;         Unused  */
  +        { ' ' ,   ""         },    /* &#144;         Unused  */
  +        { ' ' ,   ""         },    /* &#145;         Unused  */
  +        { ' ' ,   ""         },    /* &#146;         Unused  */
  +        { ' ' ,   ""         },    /* &#147;         Unused  */
  +        { ' ' ,   ""         },    /* &#148;         Unused  */
  +        { ' ' ,   ""         },    /* &#149;         Unused  */
  +        { ' ' ,   ""         },    /* &#150;         Unused  */
  +        { ' ' ,   ""         },    /* &#151;         Unused  */
  +        { ' ' ,   ""         },    /* &#152;         Unused  */
  +        { ' ' ,   ""         },    /* &#153;         Unused  */
  +        { ' ' ,   ""         },    /* &#154;         Unused  */
  +        { ' ' ,   ""         },    /* &#155;         Unused  */
  +        { ' ' ,   ""         },    /* &#156;         Unused  */
  +        { ' ' ,   ""         },    /* &#157;         Unused  */
  +        { ' ' ,   ""         },    /* &#158;         Unused  */
  +        { ' ' ,   ""         },    /* &#159;         Unused  */
  +        { '�' ,   ""   },    /*      Non-breaking Space  */
  +        { '�' ,   ""  },    /*       Inverted exclamation    */
  +        { '�' ,   ""   },    /*      Cent sign               */
  +        { '�' ,   ""  },    /*       Pound sterling  */
  +        { '�' ,   "" },    /*        General currency sign  */
  +        { '�' ,   ""    },    /*     Yen sign  */
  +        { '�' ,   "" },    /*        Broken vertical bar  */
  +        { '�' ,   ""  },    /*       Section sign  */
  +        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  +        { '�' ,   ""  },    /*       Copyright               */
  +        { '�' ,   ""  },    /*       Feminine ordinal  */
  +        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  +        { '�' ,   ""   },    /*      Not sign  */
  +        { '�' ,   ""    },    /*     Soft hyphen  */
  +        { '�' ,   ""    },    /*     Registered trademark  */
  +        { '�' ,   ""  },    /*       Macron accent  */
  +        { '�' ,   ""    },    /*     Degree sign  */
  +        { '�' ,   "" },    /*        Plus or minus  */
  +        { '�' ,   ""   },    /*      Superscript two  */
  +        { '�' ,   ""   },    /*      Superscript three  */
  +        { '�' ,   ""  },    /*       Acute accent  */
  +        { '�' ,   ""  },    /*       Micro sign  */
  +        { '�' ,   ""   },    /*      Paragraph sign  */
  +        { '�' ,   "" },    /*        Middle dot  */
  +        { '�' ,   ""  },    /*       Cedilla  */
  +        { '�' ,   ""   },    /*      Superscript one  */
  +        { '�' ,   ""   },    /*      Masculine ordinal  */
  +        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  +        { '�' ,   "" },    /*        Fraction one-fourth  */
  +        { '�' ,   "" },    /*        Fraction one-half  */
  +        { '�' ,   "" },    /*        Fraction three-fourths  */
  +        { '�' ,   "" },    /*        Inverted question mark  */
  +        { '�' ,   "" },    /*        Capital A, grave accent  */
  +        { '�' ,   "" },    /*        Capital A, acute accent  */
  +        { '�' ,   ""  },    /*       Capital A, circumflex  */
  +        { '�' ,   "" },    /*        Capital A, tilde  */
  +        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Capital A, ring  */
  +        { '�' ,   ""  },    /*       Capital AE ligature  */
  +        { '�' ,   "" },    /*        Capital C, cedilla  */
  +        { '�' ,   "" },    /*        Capital E, grave accent  */
  +        { '�' ,   "" },    /*        Capital E, acute accent  */
  +        { '�' ,   ""  },    /*       Capital E, circumflex  */
  +        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital I, grave accent  */
  +        { '�' ,   "" },    /*        Capital I, acute accent  */
  +        { '�' ,   ""  },    /*       Capital I, circumflex  */
  +        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  +        { '�' ,   ""    },    /*     Capital Eth, Icelandic  */
  +        { '�' ,   "" },    /*        Capital N, tilde  */
  +        { '�' ,   "" },    /*        Capital O, grave accent  */
  +        { '�' ,   "" },    /*        Capital O, acute accent  */
  +        { '�' ,   ""  },    /*       Capital O, circumflex  */
  +        { '�' ,   "" },    /*        Capital O, tilde  */
  +        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Multiply sign  */
  +        { '�' ,   "" },    /*        Capital O, slash  */
  +        { '�' ,   "" },    /*        Capital U, grave accent  */
  +        { '�' ,   "" },    /*        Capital U, acute accent  */
  +        { '�' ,   ""  },    /*       Capital U, circumflex  */
  +        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital Y, acute accent  */
  +        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  +        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  +        { '�' ,   "" },    /*        Small a, grave accent  */
  +        { '�' ,   "" },    /*        Small a, acute accent  */
  +        { '�' ,   ""  },    /*       Small a, circumflex  */
  +        { '�' ,   "" },    /*        Small a, tilde  */
  +        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Small a, ring  */
  +        { '�' ,   ""  },    /*       Small ae ligature  */
  +        { '�' ,   "" },    /*        Small c, cedilla  */
  +        { '�' ,   "" },    /*        Small e, grave accent  */
  +        { '�' ,   "" },    /*        Small e, acute accent  */
  +        { '�' ,   ""  },    /*       Small e, circumflex  */
  +        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Small i, grave accent  */
  +        { '�' ,   "" },    /*        Small i, acute accent  */
  +        { '�' ,   ""  },    /*       Small i, circumflex  */
  +        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  +        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  +        { '�' ,   "" },    /*        Small n, tilde  */
  +        { '�' ,   "" },    /*        Small o, grave accent  */
  +        { '�' ,   "" },    /*        Small o, acute accent  */
  +        { '�' ,   ""  },    /*       Small o, circumflex  */
  +        { '�' ,   "" },    /*        Small o, tilde  */
  +        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Division sign  */
  +        { '�' ,   "" },    /*        Small o, slash  */
  +        { '�' ,   "" },    /*        Small u, grave accent  */
  +        { '�' ,   "" },    /*        Small u, acute accent  */
  +        { '�' ,   ""  },    /*       Small u, circumflex  */
  +        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Small y, acute accent  */
  +        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  +        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  +    } ; 
  +    
  +    
  +struct tCharTrans Html2Char [] = 
  + 
  +    {
  +        { '�' ,  ""  },    /*        Capital AE ligature  */
  +        { '�' ,   "" },    /*        Capital A, acute accent  */
  +        { '�' ,   ""  },    /*       Capital A, circumflex  */
  +        { '�' ,   "" },    /*        Capital A, grave accent  */
  +        { '�' ,   ""  },    /*       Capital A, ring  */
  +        { '�' ,   "" },    /*        Capital A, tilde  */
  +        { '�' ,   ""   },    /*      Capital A, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital C, cedilla  */
  +        { '�' ,  ""    },    /*      Capital Eth, Icelandic  */
  +        { '�' ,   "" },    /*        Capital E, acute accent  */
  +        { '�' ,   ""  },    /*       Capital E, circumflex  */
  +        { '�' ,   "" },    /*        Capital E, grave accent  */
  +        { '�' ,   ""   },    /*      Capital E, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital I, acute accent  */
  +        { '�' ,   ""  },    /*       Capital I, circumflex  */
  +        { '�' ,   "" },    /*        Capital I, grave accent  */
  +        { '�' ,   ""   },    /*      Capital I, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital N, tilde  */
  +        { '�' ,   "" },    /*        Capital O, acute accent  */
  +        { '�' ,   ""  },    /*       Capital O, circumflex  */
  +        { '�' ,   "" },    /*        Capital O, grave accent  */
  +        { '�' ,   "" },    /*        Capital O, slash  */
  +        { '�' ,   "" },    /*        Capital O, tilde  */
  +        { '�' ,   ""   },    /*      Capital O, di�resis / umlaut  */
  +        { '�' ,   ""  },    /*       Capital Thorn, Icelandic  */
  +        { '�' ,   "" },    /*        Capital U, acute accent  */
  +        { '�' ,   ""  },    /*       Capital U, circumflex  */
  +        { '�' ,   "" },    /*        Capital U, grave accent  */
  +        { '�' ,   ""   },    /*      Capital U, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Capital Y, acute accent  */
  +        { '�' ,   "" },    /*        Small a, acute accent  */
  +        { '�' ,   ""  },    /*       Small a, circumflex  */
  +        { '�' ,   ""  },    /*       Acute accent  */
  +        { '�' ,   ""  },    /*       Small ae ligature  */
  +        { '�' ,   "" },    /*        Small a, grave accent  */
  +        { '&' ,   ""    },    /*     Ampersand  */
  +        { '�' ,   ""  },    /*       Small a, ring  */
  +        { '�' ,   "" },    /*        Small a, tilde  */
  +        { '�' ,   ""   },    /*      Small a, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Broken vertical bar  */
  +        { '�' ,   "" },    /*        Broken vertical bar  */
  +        { '�' ,   "" },    /*        Small c, cedilla  */
  +        { '�' ,   ""  },    /*       Cedilla  */
  +        { '�' ,   ""   },    /*      Cent sign  */
  +        { '�' ,   ""  },    /*       Copyright  */
  +        { '�' ,   "" },    /*        General currency sign  */
  +        { '�' ,   ""    },    /*     Degree sign  */
  +        { '�' ,   ""   },    /*      Di�resis / Umlaut  */
  +        { '�' ,   "" },    /*        Division sign  */
  +        { '�' ,   "" },    /*        Small e, acute accent  */
  +        { '�' ,   ""  },    /*       Small e, circumflex  */
  +        { '�' ,   "" },    /*        Small e, grave accent  */
  +        { '�' ,   ""    },    /*     Small eth, Icelandic  */
  +        { '�' ,   ""   },    /*      Small e, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Fraction one-half  */
  +        { '�' ,   "" },    /*        Fraction one-fourth  */
  +        { '�' ,   "" },    /*        Fraction three-fourths  */
  +        { '>' ,   ""     },    /*    Greater than  */
  +        { '�' ,   ""  },    /*       Macron accent  */
  +        { '�' ,   "" },    /*        Small i, acute accent  */
  +        { '�' ,   ""  },    /*       Small i, circumflex  */
  +        { '�' ,   ""  },    /*       Inverted exclamation  */
  +        { '�' ,   "" },    /*        Small i, grave accent  */
  +        { '�' ,   "" },    /*        Inverted question mark  */
  +        { '�' ,   ""   },    /*      Small i, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Left angle quote, guillemot left  */
  +        { '<' ,   ""     },    /*    Less than  */
  +        { '�' ,   ""   },    /*      Macron accent  */
  +        { '�' ,   ""  },    /*       Micro sign  */
  +        { '�' ,   "" },    /*        Middle dot  */
  +        { ' ' ,   ""   },    /*      Non-breaking Space  */
  +        { '�' ,   ""   },    /*      Not sign  */
  +        { '�' ,   "" },    /*        Small n, tilde  */
  +        { '�' ,   "" },    /*        Small o, acute accent  */
  +        { '�' ,   ""  },    /*       Small o, circumflex  */
  +        { '�' ,   "" },    /*        Small o, grave accent  */
  +        { '�' ,   ""  },    /*       Feminine ordinal  */
  +        { '�' ,   ""   },    /*      Masculine ordinal  */
  +        { '�' ,   "" },    /*        Small o, slash  */
  +        { '�' ,   "" },    /*        Small o, tilde  */
  +        { '�' ,   ""   },    /*      Small o, di�resis / umlaut  */
  +        { '�' ,   ""   },    /*      Paragraph sign  */
  +        { '�' ,   "" },    /*        Plus or minus  */
  +        { '�' ,   ""  },    /*       Pound sterling  */
  +        { '"' ,   ""   },    /*      Quotation mark  */
  +        { '�' ,   ""  },    /*       Right angle quote, guillemot right  */
  +        { '�' ,   ""    },    /*     Registered trademark  */
  +        { '�' ,   ""  },    /*       Section sign  */
  +        { '�' ,   ""    },    /*     Soft hyphen  */
  +        { '�' ,   ""   },    /*      Superscript one  */
  +        { '�' ,   ""   },    /*      Superscript two  */
  +        { '�' ,   ""   },    /*      Superscript three  */
  +        { '�' ,   ""  },    /*       Small sharp s, German sz  */
  +        { '�' ,   ""  },    /*       Small thorn, Icelandic  */
  +        { '�' ,   ""  },    /*       Multiply sign  */
  +        { '�' ,   "" },    /*        Small u, acute accent  */
  +        { '�' ,   ""  },    /*       Small u, circumflex  */
  +        { '�' ,   "" },    /*        Small u, grave accent  */
  +        { '�' ,   ""    },    /*     Di�resis / Umlaut  */
  +        { '�' ,   ""   },    /*      Small u, di�resis / umlaut  */
  +        { '�' ,   "" },    /*        Small y, acute accent  */
  +        { '�' ,   ""    },    /*     Yen sign  */
  +        { '\255', ""   },    /*      Small y, di�resis / umlaut  */
  +} ;
  +
  +
  +int sizeHtml2Char = sizeof (Html2Char) / sizeof (struct tCharTrans) ;
  +
  
  
  
  1.69      +24 -6     embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- epmain.c  2000/07/16 17:45:52     1.68
  +++ epmain.c  2000/07/17 05:16:08     1.69
  @@ -1610,7 +1610,12 @@
       if (pConf -> sCookiePath)
        free (pConf -> sCookiePath) ;
   
  +    if (pConf -> sPath)
  +     free (pConf -> sPath) ;
   
  +    if (pConf -> sReqFilename)
  +     free (pConf -> sReqFilename) ;
  +
       free (pConf) ;
       }
   
  @@ -1888,11 +1893,14 @@
       if (!r -> pLastReq -> pReqSV)
        pReqHV = newHV () ;
       else
  +     {
        pReqHV = (HV *)SvRV (r -> pLastReq -> pReqSV) ;
  +     SvREFCNT_inc (pReqHV) ;
  +     }
   
  -    sv_unmagic (pReqHV, '~') ;
  -    sv_magic (pReqHV, NULL, '~', NULL, (STRLEN)r) ;
  -    r -> pReqSV = newRV_inc (pReqHV) ;
  +    sv_unmagic ((SV *)pReqHV, '~') ;
  +    sv_magic ((SV *)pReqHV, NULL, '~', NULL, (STRLEN)r) ;
  +    r -> pReqSV = newRV_noinc ((SV *)pReqHV) ;
       if (!r -> pLastReq -> pReqSV)
        sv_bless (r -> pReqSV, gv_stashpv ("HTML::Embperl::Req", 0)) ;
   
  @@ -2935,20 +2943,30 @@
        char drive[_MAX_DRIVE];
        char fname[_MAX_FNAME];
        char ext[_MAX_EXT];
  +     char * c = sInputfile ;
   
  +     while (*c)
  +         { /* convert / to \ */
  +         if (*c == '/')
  +             *c = '\\' ;
  +         c++ ;
  +         }
  +
        olddrive = _getdrive () ;
  +     getcwd (olddir, sizeof (olddir) - 1) ;
  +
        _splitpath(sInputfile, drive, dir, fname, ext );
  -     _chdrive (drive[0] - 'A') ;
  +     _chdrive (drive[0] - 'A' + 1) ;
   #else
           Dirname (sInputfile, dir, sizeof (dir) - 1) ;
  -#endif
        getcwd (olddir, sizeof (olddir) - 1) ;
  +#endif
        
        chdir (dir) ;
        }
       else
        r -> bOptions |= optDisableChdir ;
  -    
  +
       if ((rc = ProcessFile (r, r -> Buf.pFile -> nFilesize)) != ok)
           if (rc == rcExit)
               rc = ok ;
  
  
  
  1.18      +1 -1      embperl/epnames.h
  
  Index: epnames.h
  ===================================================================
  RCS file: /home/cvs/embperl/epnames.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- epnames.h 2000/04/17 21:03:15     1.17
  +++ epnames.h 2000/07/17 05:16:08     1.18
  @@ -96,7 +96,7 @@
   #define GetSubTextPos          EMBPERL_GetSubTextPos
   #define SetSubTextPos          EMBPERL_SetSubTextPos
   #define SetupDebugger          EMBPERL_SetupDebugger
  -
  +#define GetFileData            EMBPERL_GetFileData
   
   #define InitialReq             EMBPERL_InitialReq
   #define pCurrReq               EMBPERL_pCurrReq
  
  
  
  1.62      +42 -6     embperl/test.pl
  
  Index: test.pl
  ===================================================================
  RCS file: /home/cvs/embperl/test.pl,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- test.pl   2000/07/16 17:45:52     1.61
  +++ test.pl   2000/07/17 05:16:09     1.62
  @@ -101,6 +101,7 @@
       'EmbperlObject/obj/epoobj1.htm',
       'EmbperlObject/obj/epoobj2.htm',
       'EmbperlObject/obj/epoobj3.htm',
  +    'EmbperlObject/obj/epoobj4.htm',
       ) ;
   
   @tests2 = (
  @@ -286,10 +287,11 @@
   
   @ARGVSAVE = @ARGV ;
   
  -Getopt::Long::Configure ('bundling') ;
  +eval { Getopt::Long::Configure ('bundling') } ;
  +$@ = "" ;
   $ret = GetOptions ("offline|o", "ep1|1", "cgi|c", "modperl|httpd|h", "execute|e", 
"nokill|r", "loop|l:i",
               "multchild|m", "memcheck|v", "exitonmem|g", "exitonsv", "config|f=s", 
"nostart|x", "uniquefn|u",
  -            "quite|q", "ignoreerror|i", "tests|t", "blib|b", "help|?", "dbgbreak", 
"finderr",
  +            "quite|q", "ignoreerror|i", "tests|t", "blib|b", "help", "dbgbreak", 
"finderr",
            "ddd", "gdb", "ab:s", "start", "kill") ;
   
   $opt_help = 1 if ($ret == 0) ;
  @@ -361,8 +363,8 @@
       print "--kill   kill apache only\n" ;
       print "\n\n" ;
       print "path\t$EPPATH\n" ;
  -    print "httpd\t$EPHTTPD\n" ;
  -    print "port\t$port\n" ;
  +    print "httpd\t" . ($EPHTTPD || '') . "\n" ;
  +    print "port\t" . ($port || '') . "\n" ;
       $fatal = 0 ;
       exit (1) ;
       }
  @@ -689,6 +691,7 @@
   
   
   use HTML::Embperl;
  +use HTML::EmbperlObject ;
   require HTML::Embperl::Module ;
   
   print "ok\n";
  @@ -719,6 +722,7 @@
   $EP1COMPAT = 1 if ($opt_ep1) ;
   
   @tests = @tests2 if ($EP2) ;
  +$startnumber = 0 ;
   
   if ($#ARGV >= 0)
       {
  @@ -729,6 +733,7 @@
       elsif ($ARGV[0] =~ /^(\d+)-/)
        {
        my $i = $1 ;
  +        $startnumber = $i ;
           shift @tests while ($i-- > 0) ;
        }
       elsif ($ARGV[0] =~ /^\d/)
  @@ -798,7 +803,7 @@
        $n = 0 ;
        $t_offline = 0 ;
        $n_offline = 0 ;
  -     $testnum = -1 ;
  +     $testnum = -1 + $startnumber ;
           foreach $ep1compat (0, 1)
               {
               next if (($ep1compat && !($opt_ep1))  || (!$ep1compat && 
!($opt_offline)));
  @@ -1056,6 +1061,37 @@
                print "ok\n" unless ($err) ;
                }
   
  +            foreach $src ('EmbperlObject/epopage1.htm', 
'EmbperlObject/sub/epopage2.htm', 'EmbperlObject/obj/epoobj3.htm')
  +                {
  +             if ($err == 0)
  +                 {
  +                    $src =~ m#^.*/(.*?)$# ;
  +                 $org = "$cmppath/$1" ;
  +                    $page = $src ;
  +                                    
  +                    $txt2 = "$src ...";
  +                 $txt2 .= ' ' x (30 - length ($txt2)) ;
  +                 print $txt2 ; 
  +
  +                 my $outdata ;
  +                    my @errors ;
  +                 unlink ($outfile) ;
  +                 $t1 = HTML::Embperl::Clock () ;
  +                 $err = HTML::EmbperlObject::Execute ({'inputfile'  => 
"$EPPATH/$inpath/$src",
  +                                                 'object_base' => 'epobase.htm',    
  +                                                    'debug'      => $defaultdebug,
  +                                                 'outputfile' => $outfile,
  +                                                 'errors'     => \@errors,
  +                                                 }) ;
  +                 $t_exec += HTML::Embperl::Clock () - $t1 ; 
  +                     
  +                    $err = CheckError (0) if ($err == 0) ;
  +
  +                 $err = CmpFiles ($outfile, $org)  if ($err == 0) ;
  +                 print "ok\n" unless ($err) ;
  +                 }
  +                }
  +
            HTML::Embperl::Term () ;
            }
        }
  @@ -1180,7 +1216,7 @@
           $t_req = 0 ;
        $n_req = 0 ;
        $n = 0 ;
  -     $testnum = -1 ;
  +     $testnum = -1  + $startnumber;
           foreach $url (@tests)
            {
            $testnum++ ;
  
  
  
  1.3       +0 -7      embperl/typemap
  
  Index: typemap
  ===================================================================
  RCS file: /home/cvs/embperl/typemap,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- typemap   2000/07/16 17:45:52     1.2
  +++ typemap   2000/07/17 05:16:09     1.3
  @@ -11,12 +11,6 @@
           croak (\"$var is not of type HTML::Embperl::Conf\") ;
   
   T_PTROBJ_REQ
  -    /*
  -    if (sv_derived_from ($arg, \"HTML::Embperl::Req\"))
  -        $var = (tReq *)(SvIV((SV *)SvRV($arg))) ;
  -    else
  -        croak (\"$var is not of type HTML::Embperl::Req\") ;
  -    */
       {
       MAGIC * mg ;
       if (mg = mg_find (SvRV($arg), '~'))
  @@ -43,7 +37,6 @@
          $arg = &sv_undef ;
       else
           $arg = pSV ;
  -    SvREFCNT_inc (pSV) ;
       }
    
   T_PTROBJ_FILE
  
  
  
  1.27      +21 -2     embperl/Embperl/Mail.pm
  
  Index: Mail.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl/Mail.pm,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Mail.pm   2000/05/02 04:41:39     1.26
  +++ Mail.pm   2000/07/17 05:16:20     1.27
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Mail.pm,v 1.26 2000/05/02 04:41:39 richter Exp $
  +#   $Id: Mail.pm,v 1.27 2000/07/17 05:16:20 richter Exp $
   #
   ###################################################################################
   
  @@ -32,7 +32,7 @@
   @ISA = qw(HTML::Embperl);
   
   
  -$VERSION = '0.01_dev-2';
  +$VERSION = '1.3b4';
   
   
   
  @@ -61,8 +61,13 @@
           
           $req -> {mailhost} ||= $ENV{'EMBPERL_MAILHOST'} || 'localhost' ;
   
  +        my $helo = $req -> {mailhelo} || $ENV{'EMBPERL_MAILHELO'} ;
  +
           my $smtp = Net::SMTP->new($req -> {mailhost},
  -                                  Debug => $req -> {maildebug} || 
$ENV{'EMBPERL_MAILDEBUG'}) or die "Cannot connect to mailhost $req->{mailhost}" ;
  +                                  Debug => ($req -> {maildebug} || 
$ENV{'EMBPERL_MAILDEBUG'} || 0),
  +                                  $helo?(Hello => $helo):()) 
  +                                  ) or die "Cannot connect to mailhost 
$req->{mailhost}" ;
  +
           my $from =  $req -> {from} || $ENV{'EMBPERL_MAILFROM'} ;
           $smtp->mail($from || "WWW-Server\@$ENV{SERVER_NAME}");
   
  @@ -200,6 +205,13 @@
   Specifies which host to use as SMTP server.
   Default is B<localhost>.
   
  +=item mailhelo
  +
  +Specifies which host/domain to use in the HELO/EHLO command.
  +A reasonable default is normaly choosen by I<Net::SMTP>, but
  +depending on your installation it may neccessary to set it
  +manualy.
  +
   =item maildebug
   
   Set to 1 to enable debugging of mail transfer.
  @@ -230,6 +242,13 @@
   
   Specifies which host to use as SMTP server.
   Default is B<localhost>.
  +
  +=head2 EMBPERL_MAILHELO
  +
  +Specifies which host/domain to use in the HELO/EHLO command.
  +A reasonable default is normaly choosen by I<Net::SMTP>, but
  +depending on your installation it may neccessary to set it
  +manualy.
   
   =head2 EMBPERL_MAILFROM 
   
  
  
  
  1.3       +5 -5      embperl/test/cmp/eponotfound.htm
  
  Index: eponotfound.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/eponotfound.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- eponotfound.htm   2000/07/16 17:45:54     1.2
  +++ eponotfound.htm   2000/07/17 05:16:21     1.3
  @@ -4,13 +4,13 @@
    </head>
    <body>
     <h1>another head from sub</h1>
  -
  +
    Fallback PAGE 
  -
  +
    <hr> Footer <hr>
  - 
    
  -
  + 
  +
   </body>
    </html>
  -
  +
  
  
  
  1.2       +5 -5      embperl/test/cmp/epoobj1.htm
  
  Index: epoobj1.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/epoobj1.htm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epoobj1.htm       2000/07/16 17:53:19     1.1
  +++ epoobj1.htm       2000/07/17 05:16:21     1.2
  @@ -9,13 +9,13 @@
    <font size=1>title = default<br>
   -----------------------------
    
  -
  +
    PAGE 1
  -
  +
    <hr> Footer <hr>
  - 
    
  -
  + 
  +
   </body>
    </html>
  -
  +
  
  
  
  1.2       +5 -5      embperl/test/cmp/epoobj2.htm
  
  Index: epoobj2.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/epoobj2.htm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epoobj2.htm       2000/07/16 17:53:20     1.1
  +++ epoobj2.htm       2000/07/17 05:16:21     1.2
  @@ -9,13 +9,13 @@
    <font size=1>title = epoobj2 -&gt; page2<br>
   -----------------------------
    
  -
  +
    PAGE 2
  -
  +
    <hr> Footer <hr>
  - 
    
  -
  + 
  +
   </body>
    </html>
  -
  +
  
  
  
  1.2       +5 -5      embperl/test/cmp/epoobj3.htm
  
  Index: epoobj3.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/epoobj3.htm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epoobj3.htm       2000/07/16 17:53:20     1.1
  +++ epoobj3.htm       2000/07/17 05:16:22     1.2
  @@ -9,12 +9,12 @@
    <font size=5>title = epoobj3 -&gt; page3<br>
   -----------------------------
    
  -
  - PAGE 3
  +
  + PAGE 3
    <hr> Footer <hr>
  - 
  + 
    Gerald Richter / ecos (c) 2000
  -
  +
   </body>
    </html>
  -
  +
  
  
  
  1.3       +5 -5      embperl/test/cmp/epopage1.htm
  
  Index: epopage1.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/epopage1.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- epopage1.htm      2000/07/16 17:45:54     1.2
  +++ epopage1.htm      2000/07/17 05:16:22     1.3
  @@ -4,13 +4,13 @@
    </head>
    <body>
     <h1>head from foo</h1>
  -
  +
    PAGE 1
  -
  +
    <hr> Footer <hr>
  - 
    
  -
  + 
  +
   </body>
    </html>
  -
  +
  
  
  
  1.3       +5 -5      embperl/test/cmp/epopage2.htm
  
  Index: epopage2.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/epopage2.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- epopage2.htm      2000/07/16 17:45:54     1.2
  +++ epopage2.htm      2000/07/17 05:16:22     1.3
  @@ -4,13 +4,13 @@
    </head>
    <body>
     <h1>another head from sub</h1>
  -
  +
    PAGE 2
  -
  +
    <hr> Footer <hr>
  - 
    
  -
  + 
  +
   </body>
    </html>
  -
  +
  
  
  
  1.17      +22 -22    embperl/test/cmp/escape.htm
  
  Index: escape.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/escape.htm,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- escape.htm        2000/07/08 17:09:41     1.16
  +++ escape.htm        2000/07/17 05:16:22     1.17
  @@ -78,28 +78,28 @@
   (this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
   (this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20<a%3E<BR>
   (this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
  -(this is the value in $a) ������???<&+    \<a><BR>
  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  
-(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20\%3Ca%3E<BR>

  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  -
  -Same without local:
  -(this is the value in $a) ������???<&+    \<a><BR>
  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
  -(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20<a%3E<BR>
  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
  -(this is the value in $a) ������???<&+    \<a><BR>
  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  
-(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20\%3Ca%3E<BR>

  -(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  -
  -
  -Control Chars 0x80-0x9f:
  
-&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&nbsp;<BR>

  -
  -Control Chars 129 & 130:
  -&amp;#129;&amp;#130;<BR>
  +(this is the value in $a) ������???<&+    \<a><BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  
+(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20\%3Ca%3E<BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  +
  +Same without local:
  +(this is the value in $a) ������???<&+    \<a><BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
  +(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20<a%3E<BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
<a&gt;<BR>
  +(this is the value in $a) ������???<&+    \<a><BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
  
+(this%20is%20the%20value%20in%20$a)%20������%3F%3F%3F%3C%26%2B%20%20%20%20\%3Ca%3E<BR>
  +(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+    
\&lt;a&gt;<BR>
   
  +
  +Control Chars 0x80-0x9f:
  
+&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&nbsp;<BR>
  +
  +Control Chars 129 & 130:
  +&amp;#129;&amp;#130;<BR>
  +
   0
   <A HREF='http://host/script?name=My%20Name%20���'>
   
  @@ -216,4 +216,4 @@
   
   </body>
   </html>
  -
  +
  
  
  
  1.5       +1 -1      embperl/test/cmp/object.htm
  
  Index: object.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/object.htm,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- object.htm        2000/07/08 17:09:41     1.4
  +++ object.htm        2000/07/17 05:16:23     1.5
  @@ -36,4 +36,4 @@
   
   </body>
   </html>
  -
  +
  
  
  
  1.1                  embperl/test/cmp/epoobj4.htm
  
  Index: epoobj4.htm
  ===================================================================
  
  <html>
   <head>
   <title>Example using Objects: <b>Embperl sub in title </b>0</title>
   </head>
   <body>
   <h1>head from foo</h1>
  
   <font size=9>title = <b>Embperl sub in title </b>0<br>
  -----------------------------
   
  
   PAGE 4
   <hr> Footer <hr>
   
   Gerald Richter / ecos (c) 2000 [page 4]
  
  </body>
   </html>
  
  
  
  
  1.21      +3 -0      embperl/test/conf/httpd.conf.src
  
  Index: httpd.conf.src
  ===================================================================
  RCS file: /home/cvs/embperl/test/conf/httpd.conf.src,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- httpd.conf.src    2000/07/07 21:56:01     1.20
  +++ httpd.conf.src    2000/07/17 05:16:25     1.21
  @@ -53,6 +53,9 @@
   SetEnv EMBPERL_SESSION_CLASS $EPSESSIONCLASS
   PerlSetEnv SESSION_FILE_DIRECTORY $EPPATH/test/tmp
   PerlSetEnv SESSION_DBI_DATASOURCE $EPSESSIONDS
  +
  +PerlSetEnv EMBPERL_MAILDEBUG 1
  +
   EOD
        }
   
  
  
  
  1.12      +21 -21    embperl/test/html/escape.htm
  
  Index: escape.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/escape.htm,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- escape.htm        2000/05/02 04:41:41     1.11
  +++ escape.htm        2000/07/17 05:16:26     1.12
  @@ -108,27 +108,27 @@
   [+  local $escmode = 1 ; $b . "  \\\\<a>"  +]<BR>
   [+  local $escmode = 2 ; $b . "  \\\\<a>"  +]<BR>
   [+  local $escmode = 3 ; $b . "  \\\\<a>"  +]<BR>
  -[+  local $escmode = 4 ; $b . "  \\\\<a>"  +]<BR>
  -[+  local $escmode = 5 ; $b . "  \\\\<a>"  +]<BR>
  -[+  local $escmode = 6 ; $b . "  \\\\<a>"  +]<BR>
  -[+  local $escmode = 7 ; $b . "  \\\\<a>"  +]<BR>
  -
  -Same without local:
  -[+  $escmode = 0 ; $b . "  \\\\<a>" +]<BR>
  -[+  $escmode = 1 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 2 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 3 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 4 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 5 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 6 ; $b . "  \\\\<a>"  +]<BR>
  -[+  $escmode = 7 ; $b . "  \\\\<a>"  +]<BR>
  -
  -
  -Control Chars 0x80-0x9f:
  -[+  local $escmode = 7 ; foreach (127..160) { $cc .= chr ($_) }; $cc +]<BR>
  -
  -Control Chars 129 & 130:
  -[+  local $escmode = 7 ; "&#129;&#130;" +]<BR>
  +[+  local $escmode = 4 ; $b . "  \\\\<a>"  +]<BR>
  +[+  local $escmode = 5 ; $b . "  \\\\<a>"  +]<BR>
  +[+  local $escmode = 6 ; $b . "  \\\\<a>"  +]<BR>
  +[+  local $escmode = 7 ; $b . "  \\\\<a>"  +]<BR>
  +
  +Same without local:
  +[+  $escmode = 0 ; $b . "  \\\\<a>" +]<BR>
  +[+  $escmode = 1 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 2 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 3 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 4 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 5 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 6 ; $b . "  \\\\<a>"  +]<BR>
  +[+  $escmode = 7 ; $b . "  \\\\<a>"  +]<BR>
  +
  +
  +Control Chars 0x80-0x9f:
  +[+  local $escmode = 7 ; foreach (127..160) { $cc .= chr ($_) }; $cc +]<BR>
  +
  +Control Chars 129 & 130:
  +[+  local $escmode = 7 ; "&#129;&#130;" +]<BR>
   
   [+ $n = 'My Name ���' ; $escmode = 0 +]
   
  
  
  
  1.3       +2 -2      embperl/test/html/EmbperlObject/epofoot.htm
  
  Index: epofoot.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/EmbperlObject/epofoot.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- epofoot.htm       2000/07/16 17:45:54     1.2
  +++ epofoot.htm       2000/07/17 05:16:26     1.3
  @@ -1,3 +1,3 @@
    <hr> Footer <hr>
  - 
  - [+ $self -> {copyright} +]
  + 
  + [+ $self -> {copyright} +]
  
  
  
  1.3       +24 -24    embperl/test/html/EmbperlObject/obj/epobase.htm
  
  Index: epobase.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/EmbperlObject/obj/epobase.htm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- epobase.htm       2000/07/16 17:45:55     1.2
  +++ epobase.htm       2000/07/17 05:16:27     1.3
  @@ -1,27 +1,27 @@
   
  -[! 
  - 
  - sub new
  -     {
  -     my $self = shift ;
  -
  -     $self -> {fontsize} = 1 ;
  -     }
  - 
  - sub title 
  -     { 
  -     'default' ;
  -     } 
  - 
  -!]
  -
  -[- 
  -$self = shift ;
  -
  -$self -> new ;
  --]
  -
  -
  +[! 
  + 
  + sub new
  +     {
  +     my $self = shift ;
  +
  +     $self -> {fontsize} = 1 ;
  +     }
  + 
  + sub title 
  +     { 
  +     'default' ;
  +     } 
  + 
  +!]
  +
  +[- 
  +$self = shift ;
  +
  +$self -> new ;
  +-]
  +
  +
    <html>
    <head>
    <title>Example using Objects: [+ $self -> title +]</title>
  @@ -29,6 +29,6 @@
    <body>
    [- Execute ('epohead.htm') -]
    [- Execute ('*') -]
  - [- Execute ('epofoot.htm') -]
  + [- Execute ('epofoot.htm') -]
    </body>
    </html>
  
  
  
  1.2       +2 -2      embperl/test/html/EmbperlObject/obj/epofoot.htm
  
  Index: epofoot.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/EmbperlObject/obj/epofoot.htm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epofoot.htm       2000/07/16 17:53:20     1.1
  +++ epofoot.htm       2000/07/17 05:16:27     1.2
  @@ -1,3 +1,3 @@
    <hr> Footer <hr>
  - 
  - [+ $_[0] -> {copyright} +]
  + 
  + [+ $_[0] -> {copyright} +]
  
  
  
  1.2       +15 -15    embperl/test/html/EmbperlObject/obj/epoobj3.htm
  
  Index: epoobj3.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/EmbperlObject/obj/epoobj3.htm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- epoobj3.htm       2000/07/16 17:53:20     1.1
  +++ epoobj3.htm       2000/07/17 05:16:27     1.2
  @@ -1,18 +1,18 @@
  - [! 
  - 
  - sub new
  -     {
  -     my $self = shift ;
  -
  -     $self -> {fontsize} = 5 ;
  -     $self -> {copyright} = 'Gerald Richter / ecos (c) 2000' ;
  -     }
  - 
  - sub title 
  -     { 
  -     'epoobj3 -> page3'
  -     } 
  - 
  + [! 
  + 
  + sub new
  +     {
  +     my $self = shift ;
  +
  +     $self -> {fontsize} = 5 ;
  +     $self -> {copyright} = 'Gerald Richter / ecos (c) 2000' ;
  +     }
  + 
  + sub title 
  +     { 
  +     'epoobj3 -> page3'
  +     } 
  + 
    !]
   
    PAGE 3
  
  
  
  1.1                  embperl/test/html/EmbperlObject/obj/epoobj4.htm
  
  Index: epoobj4.htm
  ===================================================================
   [! 
   
   sub new
        {
        my $self = shift ;
  
        $self -> {fontsize} = 9 ;
        $self -> {copyright} = 'Gerald Richter / ecos (c) 2000 [page 4]' ;
        }
   
   
   !]
  
   [$ sub title $]<b>Embperl sub in title </b>[$endsub$]
  
   PAGE 4
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to