diff options
author | lpsolit%gmail.com <> | 2005-04-20 02:55:09 +0200 |
---|---|---|
committer | lpsolit%gmail.com <> | 2005-04-20 02:55:09 +0200 |
commit | fcd963fcf1a72c5237739aa035be5d2f3bfa6ca8 (patch) | |
tree | c587ce50c25f228eb65dd974cff09da40e994bb8 | |
parent | 6d044219d11a994b16ee4af0a90cca75b57bee69 (diff) | |
download | bugzilla-fcd963fcf1a72c5237739aa035be5d2f3bfa6ca8.tar.gz bugzilla-fcd963fcf1a72c5237739aa035be5d2f3bfa6ca8.tar.xz |
Bug 272623: FindWrapPoint is misplaced in process_bug.cgi - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=myk
-rw-r--r-- | Bugzilla/Util.pm | 31 | ||||
-rw-r--r-- | CGI.pl | 12 | ||||
-rwxr-xr-x | process_bug.cgi | 19 |
3 files changed, 37 insertions, 25 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 8fcb900df..2c45e077f 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -33,8 +33,8 @@ use base qw(Exporter); html_quote url_quote value_quote xml_quote css_class_quote lsearch max min - diff_arrays - trim diff_strings wrap_comment + diff_arrays diff_strings + trim wrap_comment find_wrap_point format_time format_time_decimal file_mod_time); @@ -219,6 +219,25 @@ sub wrap_comment ($) { return $wrappedcomment; } +sub find_wrap_point ($$) { + my ($string, $maxpos) = @_; + if (!$string) { return 0 } + if (length($string) < $maxpos) { return length($string) } + my $wrappoint = rindex($string, ",", $maxpos); # look for comma + if ($wrappoint < 0) { # can't find comma + $wrappoint = rindex($string, " ", $maxpos); # look for space + if ($wrappoint < 0) { # can't find space + $wrappoint = rindex($string, "-", $maxpos); # look for hyphen + if ($wrappoint < 0) { # can't find hyphen + $wrappoint = $maxpos; # just truncate it + } else { + $wrappoint++; # leave hyphen on the left side + } + } + } + return $wrappoint; +} + sub format_time { my ($time) = @_; @@ -480,6 +499,14 @@ database. =back +=item C<find_wrap_point($string, $maxpos)> + +Search for a comma, a whitespace or a hyphen to split $string, within the first +$maxpos characters. If none of them is found, just split $string at $maxpos. +The search starts at $maxpos and goes back to the beginning of the string. + +=back + =head2 Formatting Time =over 4 @@ -48,6 +48,10 @@ use Bugzilla::BugMail; use Bugzilla::Bug; use Bugzilla::User; +# Used in LogActivityEntry(). Gives the max length of lines in the +# activity table. +use constant MAX_LINE_LENGTH => 254; + # Shut up misguided -w warnings about "used only once". For some reason, # "use vars" chokes on me when I try it here. @@ -254,16 +258,16 @@ sub LogActivityEntry { # into multiple entries if it's too long. while ($removed || $added) { my ($removestr, $addstr) = ($removed, $added); - if (length($removestr) > 254) { - my $commaposition = FindWrapPoint($removed, 254); + if (length($removestr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH); $removestr = substr($removed,0,$commaposition); $removed = substr($removed,$commaposition); $removed =~ s/^[,\s]+//; # remove any comma or space } else { $removed = ""; # no more entries } - if (length($addstr) > 254) { - my $commaposition = FindWrapPoint($added, 254); + if (length($addstr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH); $addstr = substr($added,0,$commaposition); $added = substr($added,$commaposition); $added =~ s/^[,\s]+//; # remove any comma or space diff --git a/process_bug.cgi b/process_bug.cgi index 6f8303154..b62271e8b 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -1151,25 +1151,6 @@ sub SnapShotDeps { my $timestamp; my $bug_changed; -sub FindWrapPoint { - my ($string, $startpos) = @_; - if (!$string) { return 0 } - if (length($string) < $startpos) { return length($string) } - my $wrappoint = rindex($string, ",", $startpos); # look for comma - if ($wrappoint < 0) { # can't find comma - $wrappoint = rindex($string, " ", $startpos); # look for space - if ($wrappoint < 0) { # can't find space - $wrappoint = rindex($string, "-", $startpos); # look for hyphen - if ($wrappoint < 0) { # can't find hyphen - $wrappoint = $startpos; # just truncate it - } else { - $wrappoint++; # leave hyphen on the left side - } - } - } - return $wrappoint; -} - sub LogDependencyActivity { my ($i, $oldstr, $target, $me, $timestamp) = (@_); my $sql_timestamp = SqlQuote($timestamp); |