From d3906fed88f403552d1629e9ecc9974ab85abaae Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 4 Jun 2019 08:40:34 +0000 Subject: require ASCII digits for local FS items In case some BOFH decides to randomly create directories using non-ASCII digits all over the place. --- lib/PublicInbox/Inbox.pm | 4 ++-- lib/PublicInbox/Search.pm | 2 +- lib/PublicInbox/V2Writable.pm | 4 ++-- lib/PublicInbox/Xapcmd.pm | 6 +++--- script/public-inbox-purge | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index 04d2f832..c9330332 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -87,7 +87,7 @@ sub _set_limiter ($$$) { my $mkey = $pfx.'max'; my $val = $self->{$mkey} or return; my $lim; - if ($val =~ /\A\d+\z/) { + if ($val =~ /\A[0-9]+\z/) { require PublicInbox::Qspawn; $lim = PublicInbox::Qspawn::Limiter->new($val); } elsif ($val =~ /\A[a-z][a-z0-9]*\z/) { @@ -161,7 +161,7 @@ sub max_git_part { if (opendir my $dh, $gits) { my $max = -1; while (defined(my $git_dir = readdir($dh))) { - $git_dir =~ m!\A(\d+)\.git\z! or next; + $git_dir =~ m!\A([0-9]+)\.git\z! or next; $max = $1 if $1 > $max; } $part = $self->{-max_git_part} = $max if $max >= 0; diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index c054a874..9903f427 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -144,7 +144,7 @@ sub _xdb ($) { my $qpf = \($self->{qp_flags} ||= $QP_FLAGS); if ($self->{version} >= 2) { foreach my $part (<$dir/*>) { - -d $part && $part =~ m!/\d+\z! or next; + -d $part && $part =~ m!/[0-9]+\z! or next; my $sub = Search::Xapian::Database->new($part); if ($xdb) { $xdb->add_database($sub); diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 76844cd4..a8c33ef4 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -48,7 +48,7 @@ sub count_partitions ($) { # due to -compact if (-d $xpfx) { foreach my $part (<$xpfx/*>) { - -d $part && $part =~ m!/\d+\z! or next; + -d $part && $part =~ m!/[0-9]+\z! or next; eval { Search::Xapian::Database->new($part)->close; $nparts++; @@ -574,7 +574,7 @@ sub git_dir_latest { my $latest; opendir my $dh, $pfx or die "opendir $pfx: $!\n"; while (defined(my $git_dir = readdir($dh))) { - $git_dir =~ m!\A(\d+)\.git\z! or next; + $git_dir =~ m!\A([0-9]+)\.git\z! or next; if ($1 > $$max) { $$max = $1; $latest = "$pfx/$git_dir"; diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm index 90672310..dad080c8 100644 --- a/lib/PublicInbox/Xapcmd.pm +++ b/lib/PublicInbox/Xapcmd.pm @@ -150,7 +150,7 @@ sub run { } else { opendir my $dh, $old or die "Failed to opendir $old: $!\n"; while (defined(my $dn = readdir($dh))) { - if ($dn =~ /\A\d+\z/) { + if ($dn =~ /\A[0-9]+\z/) { my $tmpl = "$dn-XXXXXXXX"; my $dst = tempdir($tmpl, DIR => $old); same_fs_or_die($old, $dst); @@ -200,7 +200,7 @@ sub progress_pfx ($) { my @p = split('/', $_[0]); # return "xap15/0" for v2, or "xapian15" for v1: - ($p[-1] =~ /\A\d+\z/) ? "$p[-2]/$p[-1]" : $p[-1]; + ($p[-1] =~ /\A[0-9]+\z/) ? "$p[-2]/$p[-1]" : $p[-1]; } # xapian-compact wrapper @@ -276,7 +276,7 @@ sub cpdb ($$) { $dst->set_metadata('last_commit', $lc) if $lc; # only the first xapian partition (0) gets 'indexlevel' - if ($old =~ m!(?:xapian\d+|xap\d+/0)\z!) { + if ($old =~ m!(?:xapian[0-9]+|xap[0-9]+/0)\z!) { my $l = $src->get_metadata('indexlevel'); if ($l eq 'medium') { $dst->set_metadata('indexlevel', $l); diff --git a/script/public-inbox-purge b/script/public-inbox-purge index 381826dc..25e6cc9b 100755 --- a/script/public-inbox-purge +++ b/script/public-inbox-purge @@ -91,7 +91,7 @@ foreach my $ibx (@inboxes) { my $xdir_ro = $ibx->{search}->xdir(1); my $npart = 0; foreach my $part (<$xdir_ro/*>) { - if (-d $part && $part =~ m!/\d+\z!) { + if (-d $part && $part =~ m!/[0-9]+\z!) { my $bytes = 0; $bytes += -s $_ foreach glob("$part/*"); $npart++ if $bytes; -- cgit v1.2.3-24-ge0c7