On 10/11/06 1:32, Graham Barr <[EMAIL PROTECTED]> wrote:

> Except it is wrong. It does not honor the len argument
> 
> ($x = _wrap("a" x 200, 40)) =~ s/ /./g;
> print "$x-\n";
> 
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> aaaaaa
> .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> aaaaaa
> .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> .
> .
> .-
> 
> 
> Here is a fixed version I just checked in
> 
> sub _wrap {
>    my $len=$_[1];
>    return $_[0] if length($_[0]) <= $len;
>    use integer;
>    my $l2 = $len-1;
>    my $x = (length($_[0]) - $len) / $l2;
>    my $extra = (length($_[0]) == ($l2 * $x + $len)) ? "" : "a*";
>    join("\n ",unpack("a$len" . "a$l2" x $x . $extra,$_[0]));
> }

Good point. The LDIF spec's got this text, BTW:

---
          discarded. Implementations SHOULD NOT fold lines in the middle
          of a multi-byte UTF-8 character.

---

Does _wrap do that correctly?

Cheers,

Chris


Reply via email to