logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

Documentation Bug: msg#00009

Subject: Documentation Bug
Greetings,

Just came across a minor (but annoying) bug in the documentation.

The following extract :

"CONSTRUCTOR
        encode => 'none' | 'canonical' | 'base64'
Some values in LDIF cannot be written verbatim and have to be
            encoded in some way:

            'none'
                The default.

            'canonical'
                See "canonical_dn" in Net::LDAP::Util.

            'base64'
                Use base64."

would lead you to believe that the 'encode' flag applies to all objects, when in fact it applies only to the DN.

from version 0.15

348 sub _write_attr {
349   my($attr,$val,$wrap,$lower) = @_;
350   my $v;
351   my $res = 1;      # result value
352   foreach $v (@$val) {
353     my $ln = $lower ? lc $attr : $attr;
354     if ($v =~ /(^[ :]|[\x00-\x1f\x7f-\xff])/) {
355       require MIME::Base64;
356       $ln .= ":: " . MIME::Base64::encode($v,"");
357     }
358     else {
359       $ln .= ": " . $v;
360     }
361     $res &&= print _wrap($ln,$wrap),"\n";
362   }
363   $res;
364 }

makes no reference to the encode flag, while :

385 sub _write_dn {
386   my($dn,$encode,$wrap) = @_;
387   if ($dn =~ /^[ :<]|[\x00-\x1f\x7f-\xff]/) {
388     if ($encode =~ /canonical/i) {
389       require Net::LDAP::Util;
390       $dn = Net::LDAP::Util::canonical_dn($dn);
391 # Canonicalizer won't fix leading spaces, colons or less-thans, which
392       # are special in LDIF, so we fix those up here.
393       $dn =~ s/^([ :<])/\\$1/;
394     } elsif ($encode =~ /base64/i) {
395       require MIME::Base64;
396       $dn = "dn:: " . MIME::Base64::encode($dn,"");
397     } else {
398       $dn = "dn: $dn";

is the only place I was able to find a reference to the use of the encode flag value.

I think that either the encode flag needs to be renamed encodedn (none|base64|canonical) and the encode flag redirected to apply to attribute values, but that would break a lot of existing code. Alternatively, checking the encode flag globally would put the code back in sync with the documentation.

Comments ?

Erik




<Prev in Thread] Current Thread [Next in Thread>