Update to use the perl version of the algorithm over the C version for 5.8.5

because it uses 64 bit integers by default and it messes very badly with some
pack/unpack things on the perl part and some << and >> on the C part, so, use
the perl part everywhere.

Approved by:	portmgr (krion)
This commit is contained in:
Mathieu Arnold 2004-10-07 12:49:34 +00:00
parent 17847a3b1a
commit 353dcfe314
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=118573
2 changed files with 67 additions and 0 deletions

View file

@ -7,6 +7,7 @@
PORTNAME= Text-Reflow
PORTVERSION= 1.05
PORTREVISION= 1
CATEGORIES= textproc perl5
MASTER_SITES= ${MASTER_SITE_PERL_CPAN}
MASTER_SITE_SUBDIR= Text
@ -21,6 +22,9 @@ MAN3= Text::Reflow.3
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} > 500800
EXTRA_PATCHES= ${PATCHDIR}/5.8-Reflow.pm
.endif
.if ${PERL_LEVEL} < 500601
IGNORE= "Requires perl 5.6.1"
.endif

View file

@ -0,0 +1,63 @@
--- Reflow.pm~ Thu Oct 23 17:58:32 2003
+++ Reflow.pm Thu Oct 7 14:30:16 2004
@@ -32,7 +32,7 @@
$Text::Reflow::VERSION = "1.05";
-bootstrap Text::Reflow $Text::Reflow::VERSION;
+#bootstrap Text::Reflow $Text::Reflow::VERSION;
# Preloaded methods go here.
@@ -41,17 +41,17 @@
# bootstrap Text::Reflow $VERSION;
# above, and take the _ from the front of this perl version:
-sub _reflow_trial($$$$$$$$$$) {
+sub reflow_trial($$$$$$$$$$) {
my ($optimum, $maximum, $wordcount,
$penaltylimit, $semantic, $shortlast,
$word_len, $space_len, $extra, $result) = @_;
my ($lastbreak, @linkbreak);
my ($j, $k, $interval, $penalty, @totalpenalty, $bestsofar);
my (@best_linkbreak, $best_lastbreak, $opt);
- my @optimum = unpack("N*", pack("H*", $optimum));
- my @word_len = unpack("N*", pack("H*", $word_len));
- my @space_len = unpack("N*", pack("H*", $space_len));
- my @extra = unpack("N*", pack("H*", $extra));
+ my @optimum = unpack("j*", pack("H*", $optimum));
+ my @word_len = unpack("j*", pack("H*", $word_len));
+ my @space_len = unpack("j*", pack("H*", $space_len));
+ my @extra = unpack("j*", pack("H*", $extra));
my $best = $penaltylimit * 21;
foreach $opt (@optimum) {
@linkbreak = ();
@@ -101,7 +101,7 @@
}
} # Next $opt
# Return the best breaks:
- $result = unpack("H*", pack("N*", ($best_lastbreak, @best_linkbreak)));
+ $result = unpack("H*", pack("j*", ($best_lastbreak, @best_linkbreak)));
return($result);
}
@@ -511,14 +511,14 @@
$linkbreak[$wordcount] = 0;
# Create space for the result:
my $result = " " x (($wordcount + 2) * 8);
- $result = reflow_trial(unpack("H*", pack("N*", @$optimum)),
+ $result = reflow_trial(unpack("H*", pack("j*", @$optimum)),
$maximum, $wordcount,
$penaltylimit, $semantic, $shortlast,
- unpack("H*", pack("N*", @word_len)),
- unpack("H*", pack("N*", @space_len)),
- unpack("H*", pack("N*", @extra)),
+ unpack("H*", pack("j*", @word_len)),
+ unpack("H*", pack("j*", @space_len)),
+ unpack("H*", pack("j*", @extra)),
$result);
- @linkbreak = unpack("N*", pack("H*", $result));
+ @linkbreak = unpack("j*", pack("H*", $result));
@linkbreak = map { $_ + 0 } @linkbreak;
$lastbreak = shift(@linkbreak);
compute_output();