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 B91A7211B4 for ; Sat, 5 Jan 2019 08:36:50 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 3/3] watchmaildir: normalize Maildir pathnames consistently Date: Sat, 5 Jan 2019 08:36:49 +0000 Message-Id: <20190105083649.27331-4-e@80x24.org> In-Reply-To: <20190105083649.27331-1-e@80x24.org> References: <20190105083649.27331-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Remove redundant slashes while we're at it. --- lib/PublicInbox/WatchMaildir.pm | 13 +++++++++---- t/watch_maildir.t | 9 +++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 8d8e817..84080ba 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -28,8 +28,7 @@ sub new { foreach my $pfx (qw(publicinboxwatch publicinboxlearn)) { my $k = "$pfx.watchspam"; if (my $dir = $config->{$k}) { - if ($dir =~ s/\Amaildir://) { - $dir =~ s!/+\z!!; + if (is_maildir($dir)) { # skip "new", no MUA has seen it, yet. my $cur = "$dir/cur"; my $old = $mdmap{$cur}; @@ -60,8 +59,7 @@ sub new { my $ibx = $_[0] = PublicInbox::InboxWritable->new($_[0]); my $watch = $ibx->{watch} or return; - if ($watch =~ s/\Amaildir://) { - $watch =~ s!/+\z!!; + if (is_maildir($watch)) { if (my $wm = $ibx->{watchheader}) { my ($k, $v) = split(/:/, $wm, 2); $ibx->{-watchheader} = [ $k, qr/\Q$v\E/ ]; @@ -278,4 +276,11 @@ sub _spamcheck_cb { } } +sub is_maildir { + $_[0] =~ s!\Amaildir:!! or return; + $_[0] =~ tr!/!/!s; + $_[0] =~ s!/\z!!; + $_[0]; +} + 1; diff --git a/t/watch_maildir.t b/t/watch_maildir.t index 7178f29..b85ddc5 100644 --- a/t/watch_maildir.t +++ b/t/watch_maildir.t @@ -124,4 +124,13 @@ More majordomo info at http://vger.kernel.org/majordomo-info.html\n); like($$mref, qr/something\n\z/s, 'message scrubbed on import'); } +sub is_maildir { + my ($dir) = @_; + PublicInbox::WatchMaildir::is_maildir($dir); +} + +is(is_maildir('maildir:/hello//world'), '/hello/world', 'extra slash gone'); +is(is_maildir('maildir:/hello/world/'), '/hello/world', 'trailing slash gone'); +is(is_maildir('faildir:/hello/world/'), undef, 'non-maildir rejected'); + done_testing; -- EW