From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id C3A32211B5 for ; Sun, 13 Jan 2019 08:52:05 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/2] searchidx: move git_unquote to PublicInbox::Git Date: Sun, 13 Jan 2019 08:52:04 +0000 Message-Id: <20190113085205.25362-2-e@80x24.org> In-Reply-To: <20190113085205.25362-1-e@80x24.org> References: <20190113085205.25362-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: We'll be using it outside of searchidx... --- lib/PublicInbox/Git.pm | 22 ++++++++++++++++++++++ lib/PublicInbox/SearchIdx.pm | 21 +-------------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 1611727..8d3f87d 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -12,6 +12,28 @@ use warnings; use POSIX qw(dup2); require IO::Handle; use PublicInbox::Spawn qw(spawn popen_rd); +use base qw(Exporter); +our @EXPORT_OK = qw(git_unquote); + +my %GIT_ESC = ( + a => "\a", + b => "\b", + f => "\f", + n => "\n", + r => "\r", + t => "\t", + v => "\013", +); + +# unquote pathnames used by git, see quote.c::unquote_c_style.c in git.git +sub git_unquote ($) { + my ($s) = @_; + return $s unless ($s =~ /\A"(.*)"\z/); + $s = $1; + $s =~ s/\\([abfnrtv])/$GIT_ESC{$1}/g; + $s =~ s/\\([0-7]{1,3})/chr(oct($1))/ge; + $s; +} sub new { my ($class, $git_dir) = @_; diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index 8810fe7..db0495b 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -18,7 +18,7 @@ use Carp qw(croak); use POSIX qw(strftime); use PublicInbox::OverIdx; use PublicInbox::Spawn qw(spawn); -require PublicInbox::Git; +use PublicInbox::Git qw(git_unquote); use Compress::Zlib qw(compress); use constant { @@ -29,25 +29,6 @@ use constant { my $xapianlevels = qr/\A(?:full|medium)\z/; -my %GIT_ESC = ( - a => "\a", - b => "\b", - f => "\f", - n => "\n", - r => "\r", - t => "\t", - v => "\013", -); - -sub git_unquote ($) { - my ($s) = @_; - return $s unless ($s =~ /\A"(.*)"\z/); - $s = $1; - $s =~ s/\\([abfnrtv])/$GIT_ESC{$1}/g; - $s =~ s/\\([0-7]{1,3})/chr(oct($1))/ge; - $s; -} - sub new { my ($class, $ibx, $creat, $part) = @_; my $levels = qr/\A(?:full|medium|basic)\z/; -- EW