# # # patch "lib/perl/ChangeLog.pm" # from [7f686b86117a13765a84b848a4214128a1e31619] # to [c3467132f877e523e4cff90deb187827a46e8802] # # patch "lib/perl/FindFiles.pm" # from [4cf0371dd9563a9713f54ea71982b2874be7f842] # to [ff79f40f11aa711c65249fdfd53271bcf62f72d0] # # patch "lib/perl/FindText.pm" # from [e18da3120fb9b9a586fd0bde9e3a14cadf5e2771] # to [bc11df9613a01154a92fb6f855fcca1dfcc8c39b] # # patch "mtn-browse" # from [583eaaeaa5e61aa39763208a3c4ffbb4e98f9cd7] # to [853a8ac1c6358d0cf7d8650d50dd58e5739b57aa] # ============================================================ --- lib/perl/ChangeLog.pm 7f686b86117a13765a84b848a4214128a1e31619 +++ lib/perl/ChangeLog.pm c3467132f877e523e4cff90deb187827a46e8802 @@ -197,6 +197,9 @@ sub generate_revision_report($$$$;$) # Certs. + # Find the maximum cert name length, for padding purposes (ignoring + # changelog certs as these are handled separately). + $cert_max_len = 0; foreach my $cert (@$certs_list) { @@ -204,8 +207,15 @@ sub generate_revision_report($$$$;$) if ($cert->{name} ne "changelog" && length($cert->{name}) > $cert_max_len); } + + # Process each cert in turn. + foreach my $cert (@$certs_list) { + + # Collect all changelog certs together for output as one collection + # after the other certs. + if ($cert->{name} eq "changelog") { my $change_log = $cert->{value}; @@ -214,25 +224,42 @@ sub generate_revision_report($$$$;$) } else { + + # All other remaining certs. + + # Format date values so that they look nice. + if ($cert->{name} eq "date") { $cert->{value} =~ s/T/ /; } + + # Otherwise if the cert value contains newline characters then + # indent subsequent lines so as to match the first line. + elsif (index($cert->{value}, "\n") >= 0) { my $padding = sprintf("\n%-*s", $cert_max_len + 2, ""); $cert->{value} =~ s/\n/$padding/g; } + + # Print out the cert's name. + $text_buffer->insert_with_tags_by_name ($text_buffer->get_end_iter(), sprintf("\n%-*s ", $cert_max_len + 1, ucfirst($cert->{name}) . ":"), $bold); + + # Print out the cert's value. + $text_buffer->insert_with_tags_by_name ($text_buffer->get_end_iter(), sprintf("%s", $cert->{value}), $normal); + } + } # Change log(s). ============================================================ --- lib/perl/FindFiles.pm 4cf0371dd9563a9713f54ea71982b2874be7f842 +++ lib/perl/FindFiles.pm ff79f40f11aa711c65249fdfd53271bcf62f72d0 @@ -393,31 +393,33 @@ sub search_files_button_clicked_cb($$) if ($query->{contents_pattern} ne "") { - # Need the following pragma as $contents_re could potentially be used - # against binary data. + my $pattern; - use bytes; + # We need to convert the contents pattern from possibly UTF-8 to binary + # as we may have to search binary data. + $pattern = encode_utf8($query->{contents_pattern}); + if ($query->{contents_pattern_is_regexp}) { if ($query->{contents_case_sensitive}) { - $contents_re = qr/$query->{contents_pattern}/; + $contents_re = qr/$pattern/; } else { - $contents_re = qr/$query->{contents_pattern}/i; + $contents_re = qr/$pattern/i; } } else { if ($query->{contents_case_sensitive}) { - $contents_re = qr/\Q$query->{contents_pattern}\E/; + $contents_re = qr/\Q$pattern\E/; } else { - $contents_re = qr/\Q$query->{contents_pattern}\E/i; + $contents_re = qr/\Q$pattern\E/i; } } ============================================================ --- lib/perl/FindText.pm e18da3120fb9b9a586fd0bde9e3a14cadf5e2771 +++ lib/perl/FindText.pm bc11df9613a01154a92fb6f855fcca1dfcc8c39b @@ -373,49 +373,44 @@ sub find_text_button_clicked_cb($$) $use_regexp = $instance->{regular_expression_checkbutton}->get_active(); # Precompile the regular expression based upon the search term. When the - # user themselves is using regular expressions then check for errors. Also - # use the bytes pragma as $search_term could potentially be used against - # binary data. + # user himself is using regular expressions then check for errors. + if ($use_regexp) { - use bytes; - if ($use_regexp) + eval { - eval + if ($case_sensitive) { - if ($case_sensitive) - { - $expr = qr/$search_term/; - } - else - { - $expr = qr/$search_term/i; - } - }; - if ($@ ne "") + $expr = qr/$search_term/; + } + else { - my $dialog = Gtk2::MessageDialog->new - ($instance->{window}, - ["modal"], - "warning", - "close", - __x("`{pattern}' is an invalid\ncontent search pattern.", - pattern => $search_term)); - $dialog->run(); - $dialog->destroy(); - return; + $expr = qr/$search_term/i; } + }; + if ($@ ne "") + { + my $dialog = Gtk2::MessageDialog->new + ($instance->{window}, + ["modal"], + "warning", + "close", + __x("`{pattern}' is an invalid\ncontent search pattern.", + pattern => $search_term)); + $dialog->run(); + $dialog->destroy(); + return; } + } + else + { + if ($case_sensitive) + { + $expr = qr/\Q$search_term\E/; + } else { - if ($case_sensitive) - { - $expr = qr/\Q$search_term\E/; - } - else - { - $expr = qr/\Q$search_term\E/i; - } + $expr = qr/\Q$search_term\E/i; } } ============================================================ --- mtn-browse 583eaaeaa5e61aa39763208a3c4ffbb4e98f9cd7 +++ mtn-browse 853a8ac1c6358d0cf7d8650d50dd58e5739b57aa @@ -59,6 +59,7 @@ use Data::Dumper; use Cwd qw(getcwd); use Data::Dumper; +use Encode; use File::Basename; use File::Spec; use File::Temp qw(tempdir); @@ -2754,8 +2755,9 @@ sub display_file($$) $browser->{file_view_svbuffer}->set_language($lang); } - # Load in the contents. + # Load in the contents (ensuring UTF-8 encoding). + $contents = decode_utf8($contents); $browser->{file_view_svbuffer}->set_text($contents); }