Update of /cvsroot/perl-ldap/ldap/lib/Net/LDAP
In directory usw-pr-cvs1:/tmp/cvs-serv8840/lib/Net/LDAP
Modified Files:
DSML.pm
Log Message:
Base64 encode values when needed
Index: DSML.pm
===================================================================
RCS file: /cvsroot/perl-ldap/ldap/lib/Net/LDAP/DSML.pm,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- DSML.pm 18 Jul 2002 20:04:07 -0000 1.16
+++ DSML.pm 11 Sep 2002 12:49:55 -0000 1.17
@@ -11,7 +11,7 @@
use Net::LDAP::Entry;
@ISA = qw(XML::SAX::Base);
-$VERSION = "0.10";
+$VERSION = "0.11";
# OO purists will hate this :)
my %schema_typemap = qw(
@@ -412,10 +412,19 @@
@data{qw(Name LocalName)} = qw(dsml:value value);
}
+ my %chdata;
foreach my $val (@{$attr->{vals}}) {
- %attr = ();
+ if ($val =~ /(^[ :]|[\x00-\x1f\x7f-\xff])/) {
+ require MIME::Base64;
+ $chdata{Data} = MIME::Base64::encode($val,"");
+ %attr = ( '{}encoding' => { Value => 'base64', Name => "encoding"} );
+ }
+ else {
+ $chdata{Data} = $val;
+ %attr = ();
+ }
$handler->start_element(\%data);
- $handler->characters({ Data => $val } );
+ $handler->characters(\%chdata);
%attr = ();
$handler->end_element(\%data);
}
|