# # # patch "lib/perl/AdvancedFind.pm" # from [7d0fd856253caa4a8695f5146b6f6b6789152f62] # to [007f51112d0a3c7ddd3d83296e4c20ccc83d787f] # # patch "lib/perl/ChangeLog.pm" # from [dcade0e7ee92448a0bfce3fd99d5b07420ce8143] # to [7f686b86117a13765a84b848a4214128a1e31619] # # patch "lib/perl/ComboAutoCompletion.pm" # from [38a470261a5e3c09c65d0338363ffff1b2646964] # to [323da650715093941315ee15bec38e5bff75a3cf] # # patch "lib/perl/FindText.pm" # from [8217af59aa6902d58032e1067cd2faf23509a628] # to [e18da3120fb9b9a586fd0bde9e3a14cadf5e2771] # # patch "mtn-browse" # from [73563a28d9c4762e290caaa6a335f8e50c998fdd] # to [583eaaeaa5e61aa39763208a3c4ffbb4e98f9cd7] # ============================================================ --- lib/perl/AdvancedFind.pm 7d0fd856253caa4a8695f5146b6f6b6789152f62 +++ lib/perl/AdvancedFind.pm 007f51112d0a3c7ddd3d83296e4c20ccc83d787f @@ -846,8 +846,7 @@ sub update_advanced_find_state($$) $advanced_find->{branch_comboboxentry}->get_model()->clear(); foreach my $branch (@branch_list) { - $advanced_find->{branch_comboboxentry}-> - append_text(decode_utf8($branch)); + $advanced_find->{branch_comboboxentry}->append_text($branch); if (($counter % 10) == 0) { $advanced_find->{appbar}->set_progress_percentage @@ -859,8 +858,7 @@ sub update_advanced_find_state($$) $advanced_find->{appbar}->set_progress_percentage(1); $wm->update_gui(); $advanced_find->{branch_comboboxentry}->child()-> - set_text(decode_utf8($advanced_find->{branch_combo_details}-> - {value})); + set_text($advanced_find->{branch_combo_details}->{value}); $advanced_find->{appbar}->set_progress_percentage(0); $advanced_find->{appbar}->set_status(""); $wm->update_gui(); @@ -912,8 +910,7 @@ sub update_advanced_find_state($$) $advanced_find->{revision_comboboxentry}->get_model()->clear(); foreach my $revision (@revision_list) { - $advanced_find->{revision_comboboxentry}-> - append_text(decode_utf8($revision)); + $advanced_find->{revision_comboboxentry}->append_text($revision); if (($counter % 10) == 0) { $advanced_find->{appbar}->set_progress_percentage @@ -925,8 +922,7 @@ sub update_advanced_find_state($$) $advanced_find->{appbar}->set_progress_percentage(1); $wm->update_gui(); $advanced_find->{revision_comboboxentry}->child()-> - set_text(decode_utf8($advanced_find->{revision_combo_details}-> - {value})); + set_text($advanced_find->{revision_combo_details}->{value}); $advanced_find->{appbar}->set_progress_percentage(0); $advanced_find->{appbar}->set_status(""); $wm->update_gui(); @@ -989,8 +985,7 @@ sub update_advanced_find_state($$) die("Bad query"); }); eval { - $advanced_find->{mtn}->select(address@hidden, - encode_utf8($query)); + $advanced_find->{mtn}->select(address@hidden, $query); $matches = scalar(@revision_ids); }; $err = $@; @@ -1126,9 +1121,9 @@ sub update_advanced_find_state($$) $advanced_find->{revisions_liststore}-> set($advanced_find->{revisions_liststore}->append(), AFLS_REVISION_ID_COLUMN, $item->{revision_id}, - AFLS_BRANCH_COLUMN, decode_utf8($branch), + AFLS_BRANCH_COLUMN, $branch, AFLS_DATE_COLUMN, $item->{date}, - AFLS_AUTHOR_COLUMN, decode_utf8($item->{author})); + AFLS_AUTHOR_COLUMN, $item->{author}); } } ============================================================ --- lib/perl/ChangeLog.pm dcade0e7ee92448a0bfce3fd99d5b07420ce8143 +++ lib/perl/ChangeLog.pm 7f686b86117a13765a84b848a4214128a1e31619 @@ -197,9 +197,6 @@ 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) { @@ -207,61 +204,35 @@ 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}; $change_log =~ s/\s+$//s; - $change_log = decode_utf8($change_log); push(@change_logs, $change_log) if ($change_log ne ""); } 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(decode_utf8($cert->{name})) . ":"), + $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", decode_utf8($cert->{value})), + sprintf("%s", $cert->{value}), $normal); - } - } # Change log(s). @@ -302,44 +273,39 @@ sub generate_revision_report($$$$;$) { if ($change->{type} eq "add_dir") { - push(@{$revision_data{$__added}}, - decode_utf8($change->{name}) . "/"); + push(@{$revision_data{$__added}}, $change->{name} . "/"); } elsif ($change->{type} eq "add_file") { - push(@{$revision_data{$__added}}, - decode_utf8($change->{name})); + push(@{$revision_data{$__added}}, $change->{name}); } elsif ($change->{type} eq "delete") { - push(@{$revision_data{$__removed}}, - decode_utf8($change->{name})); + push(@{$revision_data{$__removed}}, $change->{name}); } elsif ($change->{type} eq "patch") { - push(@{$revision_data{$__changed}}, - decode_utf8($change->{name})); + push(@{$revision_data{$__changed}}, $change->{name}); } elsif ($change->{type} eq "rename") { push(@{$revision_data{$__renamed}}, - decode_utf8($change->{from_name}) . " -> " - . decode_utf8($change->{to_name})); + $change->{from_name} . " -> " . $change->{to_name}); } elsif ($change->{type} eq "clear") { push(@{$revision_data{$__attributes}}, __x("{name}: {attribute} was cleared", - name => decode_utf8($change->{name}), - attribute => decode_utf8($change->{attribute}))); + name => $change->{name}, + attribute => $change->{attribute})); } elsif ($change->{type} eq "set") { push(@{$revision_data{$__attributes}}, sprintf("%s: %s = %s", - decode_utf8($change->{name}), - decode_utf8($change->{attribute}), - decode_utf8($change->{value}))); + $change->{name}, + $change->{attribute}, + $change->{value})); } elsif ($change->{type} eq "old_revision") { ============================================================ --- lib/perl/ComboAutoCompletion.pm 38a470261a5e3c09c65d0338363ffff1b2646964 +++ lib/perl/ComboAutoCompletion.pm 323da650715093941315ee15bec38e5bff75a3cf @@ -110,7 +110,7 @@ sub comboboxentry_changed_cb($$) # So, put simply, only do something inside this callback if the value is a # direct match to one in our list. - $value = encode_utf8($widget->child()->get_text()); + $value = $widget->child()->get_text(); foreach $item (@{$combo_details->{list}}) { if ($value eq $item) @@ -202,7 +202,7 @@ sub comboboxentry_key_release_event_cb($ $complete = 0; $old_complete = $combo_details->{complete}; $old_value = $combo_details->{value}; - $value = encode_utf8($entry->get_text()); + $value = $entry->get_text(); if ($value ne $old_value) { @@ -241,7 +241,7 @@ sub comboboxentry_key_release_event_cb($ { $instance->{appbar}->push(__x("Invalid {name} name `{value}'", name => $name, - value => decode_utf8($value))); + value => $value)); } $value = $completion; $len = length($value); @@ -263,7 +263,7 @@ sub comboboxentry_key_release_event_cb($ $combo->get_model()->clear(); foreach $item (@{$combo_details->{list}}) { - $combo->append_text(decode_utf8($item)) + $combo->append_text($item) if ($value eq substr($item, 0, $len)); # The following check is needed in the case when the user is ============================================================ --- lib/perl/FindText.pm 8217af59aa6902d58032e1067cd2faf23509a628 +++ lib/perl/FindText.pm e18da3120fb9b9a586fd0bde9e3a14cadf5e2771 @@ -373,44 +373,49 @@ 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. + # 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. - if ($use_regexp) { - eval + use bytes; + if ($use_regexp) { - if ($case_sensitive) + eval { - $expr = qr/$search_term/; - } - else + if ($case_sensitive) + { + $expr = qr/$search_term/; + } + else + { + $expr = qr/$search_term/i; + } + }; + if ($@ ne "") { - $expr = qr/$search_term/i; + 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; } - }; - 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 { - $expr = qr/\Q$search_term\E/i; + if ($case_sensitive) + { + $expr = qr/\Q$search_term\E/; + } + else + { + $expr = qr/\Q$search_term\E/i; + } } } ============================================================ --- mtn-browse 73563a28d9c4762e290caaa6a335f8e50c998fdd +++ mtn-browse 583eaaeaa5e61aa39763208a3c4ffbb4e98f9cd7 @@ -44,14 +44,10 @@ BEGIN BEGIN { -# use constant HELP_VIEWER_CMD => "firefox {url}"; - use constant HELP_VIEWER_CMD => ""; -# use constant LIB_DIR => "@INST:LIB_DIR@"; - use constant LIB_DIR => "/home/aecoope/code/monotone.ca/mtn-browse/lib"; -# use constant MIME_GLOB_FILE => "@INST:GLOBS_FILE@"; - use constant MIME_GLOB_FILE => "/usr/share/mime/globs"; -# use constant PREFIX_DIR => "@INST:PREFIX_DIR@"; - use constant PREFIX_DIR => "/home/aecoope/code/monotone.ca/mtn-browse"; + use constant HELP_VIEWER_CMD => "@INST:HELP_VIEWER_CMD@"; + use constant LIB_DIR => "@INST:LIB_DIR@"; + use constant MIME_GLOB_FILE => "@INST:GLOBS_FILE@"; + use constant PREFIX_DIR => "@INST:PREFIX_DIR@"; } use locale; use strict; @@ -63,7 +59,6 @@ use Data::Dumper; use Cwd qw(getcwd); use Data::Dumper; -use Encode; use File::Basename; use File::Spec; use File::Temp qw(tempdir); @@ -2128,8 +2123,7 @@ sub update_browser_state($$) $browser->{branch_comboboxentry}->get_model()->clear(); foreach my $branch (@branch_list) { - $browser->{branch_comboboxentry}-> - append_text(decode_utf8($branch)); + $browser->{branch_comboboxentry}->append_text($branch); if (($counter % 10) == 0) { $browser->{appbar}->set_progress_percentage @@ -2141,7 +2135,7 @@ sub update_browser_state($$) $browser->{appbar}->set_progress_percentage(1); $wm->update_gui(); $browser->{branch_comboboxentry}->child()-> - set_text(decode_utf8($browser->{branch_combo_details}->{value})); + set_text($browser->{branch_combo_details}->{value}); $browser->{branch_comboboxentry}->child()->set_position(-1); $browser->{appbar}->set_progress_percentage(0); $browser->{appbar}->set_status(""); @@ -2235,8 +2229,7 @@ sub update_browser_state($$) $browser->{revision_comboboxentry}->get_model()->clear(); foreach my $revision (@revision_list) { - $browser->{revision_comboboxentry}-> - append_text(decode_utf8($revision)); + $browser->{revision_comboboxentry}->append_text($revision); if (($counter % 10) == 0) { $browser->{appbar}->set_progress_percentage @@ -2248,13 +2241,7 @@ sub update_browser_state($$) $browser->{appbar}->set_progress_percentage(1); $wm->update_gui(); $browser->{revision_comboboxentry}->child()-> - set_text(decode_utf8($browser->{revision_combo_details}->{value})); - - -# You really should do this in the MAS class. Give the option to turn off -# utf8 support perhaps. Also use of use bytes I think is wrong in FindText -# and maybe in FindFile (well at least use encode_utf8 instead). - + set_text($browser->{revision_combo_details}->{value}); $browser->{appbar}->set_progress_percentage(0); $browser->{appbar}->set_status(""); $wm->update_gui(); @@ -2334,11 +2321,11 @@ sub update_browser_state($$) { if ($cert->{name} eq "author") { - $author = decode_utf8($cert->{value}); + $author = $cert->{value}; } elsif ($cert->{name} eq "changelog") { - $change_log = decode_utf8($cert->{value}); + $change_log = $cert->{value}; $change_log =~ s/\s+$//s; } elsif ($cert->{name} eq "date") @@ -2377,8 +2364,7 @@ sub update_browser_state($$) $browser->{directory_comboboxentry}->get_model()->clear(); foreach my $item (@directory_list) { - $browser->{directory_comboboxentry}-> - append_text(decode_utf8($item)); + $browser->{directory_comboboxentry}->append_text($item); if (($counter % 10) == 0) { $browser->{appbar}->set_progress_percentage @@ -2483,9 +2469,9 @@ sub update_browser_state($$) MLS_ICON_COLUMN, ($item->{manifest_entry}->{type} eq "directory") ? "gtk-open" : "gtk-file", - MLS_NAME_COLUMN, decode_utf8($item->{name}), + MLS_NAME_COLUMN, $item->{name}, MLS_DATE_COLUMN, $last_update, - MLS_AUTHOR_COLUMN, decode_utf8($author), + MLS_AUTHOR_COLUMN, $author, MLS_MANIFEST_ENTRY_COLUMN, $item->{manifest_entry}); if ($browser->{file_being_viewed_preset_value} ne "" @@ -2584,9 +2570,9 @@ sub update_browser_state($$) $last_update = $manifest_entry->{last_update}; $last_update =~ s/T/ /; set_label_value($browser->{file_name_value_label}, - decode_utf8($manifest_entry->{name})); + $manifest_entry->{name}); set_label_value($browser->{file_author_value_label}, - decode_utf8($manifest_entry->{author})); + $manifest_entry->{author}); set_label_value($browser->{last_update_value_label}, $last_update); set_label_value($browser->{file_revision_id_value_label}, @@ -2768,9 +2754,8 @@ sub display_file($$) $browser->{file_view_svbuffer}->set_language($lang); } - # Load in the contents (ensuring UTF-8 encoding). + # Load in the contents. - $contents = decode_utf8($contents); $browser->{file_view_svbuffer}->set_text($contents); }