{"thread":{"id":"13174","subject":"[PATCH] svn-git: Use binmode for reading/writing binary rev maps","startedAt":"2008-04-18T13:12:04Z","lastAt":"2008-04-22T23:21:51Z","messageCount":2,"participants":["Michael Weber","Eric Wong"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"74729","messageId":"20080418131204.GA53634@roadkill.foldr.org","threadId":"13174","inReplyTo":null,"subject":"[PATCH] svn-git: Use binmode for reading/writing binary rev maps","fromName":"Michael Weber","fromEmail":"michaelw@foldr.org","sentAt":"2008-04-18T13:12:04Z","receivedAt":"2008-04-18T13:12:04Z","isPatch":true,"sender":{"key":"michaelw@foldr.org","avatar":null},"body":"Otherwise, there is a possible interaction with UTF-8 locales in\ncombination with PERL_UNICODE, resulting in \"inconsistent size: 40\" or\n\"read:\"-type errors.\n\nSee also:\nperldoc -f binmode\n<http://perldoc.perl.org/perl581delta.html#UTF-8-no-longer-default-under-UTF-8-locales>\n\nSigned-off-by: Michael Weber <michaelw@foldr.org>\n---\n git-svn.perl |    4 ++++\n 1 files changed, 4 insertions(+), 0 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex b864b54..3d80b23 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -2519,6 +2519,7 @@ sub rebuild_from_rev_db {\n \tmy ($self, $path) = @_;\n \tmy $r = -1;\n \topen my $fh, '<', $path or croak \"open: $!\";\n+\tbinmode $fh or croak \"binmode: $!\";\n \twhile (<$fh>) {\n \t\tlength($_) == 41 or croak \"inconsistent size in ($_) != 41\";\n \t\tchomp($_);\n@@ -2616,6 +2617,7 @@ sub rebuild {\n sub _rev_map_set {\n \tmy ($fh, $rev, $commit) = @_;\n \n+\tbinmode $fh or croak \"binmode: $!\";\n \tmy $size = (stat($fh))[7];\n \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n \n@@ -2719,6 +2721,7 @@ sub rev_map_max {\n \tmy $map_path = $self->map_path;\n \tstat $map_path or return $want_commit ? (0, undef) : 0;\n \tsysopen(my $fh, $map_path, O_RDONLY) or croak \"open: $!\";\n+\tbinmode $fh or croak \"binmode: $!\";\n \tmy $size = (stat($fh))[7];\n \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n \n@@ -2751,6 +2754,7 @@ sub rev_map_get {\n \treturn undef unless -e $map_path;\n \n \tsysopen(my $fh, $map_path, O_RDONLY) or croak \"open: $!\";\n+\tbinmode $fh or croak \"binmode: $!\";\n \tmy $size = (stat($fh))[7];\n \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n \n-- \n1.5.5.69.ga0a105\n"},{"id":"75017","messageId":"20080422232151.GA3532@hand.yhbt.net","threadId":"13174","inReplyTo":"20080418131204.GA53634@roadkill.foldr.org","subject":"Re: [PATCH] svn-git: Use binmode for reading/writing binary rev maps","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2008-04-22T23:21:51Z","receivedAt":"2008-04-22T23:21:51Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Michael Weber <michaelw@foldr.org> wrote:\n> Otherwise, there is a possible interaction with UTF-8 locales in\n> combination with PERL_UNICODE, resulting in \"inconsistent size: 40\" or\n> \"read:\"-type errors.\n> \n> See also:\n> perldoc -f binmode\n> <http://perldoc.perl.org/perl581delta.html#UTF-8-no-longer-default-under-UTF-8-locales>\n> \n> Signed-off-by: Michael Weber <michaelw@foldr.org>\n\nThanks, sorry for the latency.\n\nAcked-by: Eric Wong <normalperson@yhbt.net>\n\n> ---\n>  git-svn.perl |    4 ++++\n>  1 files changed, 4 insertions(+), 0 deletions(-)\n> \n> diff --git a/git-svn.perl b/git-svn.perl\n> index b864b54..3d80b23 100755\n> --- a/git-svn.perl\n> +++ b/git-svn.perl\n> @@ -2519,6 +2519,7 @@ sub rebuild_from_rev_db {\n>  \tmy ($self, $path) = @_;\n>  \tmy $r = -1;\n>  \topen my $fh, '<', $path or croak \"open: $!\";\n> +\tbinmode $fh or croak \"binmode: $!\";\n>  \twhile (<$fh>) {\n>  \t\tlength($_) == 41 or croak \"inconsistent size in ($_) != 41\";\n>  \t\tchomp($_);\n> @@ -2616,6 +2617,7 @@ sub rebuild {\n>  sub _rev_map_set {\n>  \tmy ($fh, $rev, $commit) = @_;\n>  \n> +\tbinmode $fh or croak \"binmode: $!\";\n>  \tmy $size = (stat($fh))[7];\n>  \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n>  \n> @@ -2719,6 +2721,7 @@ sub rev_map_max {\n>  \tmy $map_path = $self->map_path;\n>  \tstat $map_path or return $want_commit ? (0, undef) : 0;\n>  \tsysopen(my $fh, $map_path, O_RDONLY) or croak \"open: $!\";\n> +\tbinmode $fh or croak \"binmode: $!\";\n>  \tmy $size = (stat($fh))[7];\n>  \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n>  \n> @@ -2751,6 +2754,7 @@ sub rev_map_get {\n>  \treturn undef unless -e $map_path;\n>  \n>  \tsysopen(my $fh, $map_path, O_RDONLY) or croak \"open: $!\";\n> +\tbinmode $fh or croak \"binmode: $!\";\n>  \tmy $size = (stat($fh))[7];\n>  \t($size % 24) == 0 or croak \"inconsistent size: $size\";\n>  \n> -- \n"}]}