user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 2/2] config: relax name inbox name restrictions
  2019-01-01 10:18  6% [PATCH 0/2] config-related cleanups Eric Wong
@ 2019-01-01 10:18  7% ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2019-01-01 10:18 UTC (permalink / raw)
  To: meta

Since "publicinbox" sections are analogous to git remotes, we
may use the same rules for naming git remotes to reduce
cognitive overhead.

Most notably, this allows '.' in the middle of inbox names,
(e.g. "foo.bar") as it's common for email addresses, too.
---
 lib/PublicInbox/Config.pm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 7858656..a2b721d 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -54,7 +54,7 @@ sub lookup {
 	my $pfx;
 
 	foreach my $k (keys %$self) {
-		$k =~ /\A(publicinbox\.[\w-]+)\.address\z/ or next;
+		$k =~ m!\A(publicinbox\.[^/]+)\.address\z! or next;
 		my $v = $self->{$k};
 		if (ref($v) eq "ARRAY") {
 			foreach my $alias (@$v) {
@@ -81,7 +81,7 @@ sub each_inbox {
 	my ($self, $cb) = @_;
 	my %seen;
 	foreach my $k (keys %$self) {
-		$k =~ /\Apublicinbox\.([A-Z0-9a-z-]+)\.mainrepo\z/ or next;
+		$k =~ m!\Apublicinbox\.([^/]+)\.mainrepo\z! or next;
 		next if $seen{$1};
 		$seen{$1} = 1;
 		my $ibx = lookup_name($self, $1) or next;
@@ -96,7 +96,7 @@ sub lookup_newsgroup {
 	return $rv if $rv;
 
 	foreach my $k (keys %$self) {
-		$k =~ /\A(publicinbox\.[\w-]+)\.newsgroup\z/ or next;
+		$k =~ m!\A(publicinbox\.[^/]+)\.newsgroup\z! or next;
 		my $v = $self->{$k};
 		my $pfx = $1;
 		if ($v eq $ng) {
@@ -184,6 +184,13 @@ sub _fill {
 	return unless $rv->{mainrepo};
 	my $name = $pfx;
 	$name =~ s/\Apublicinbox\.//;
+
+	# same rules as git.git/remote.c::valid_remote_nick
+	if ($name eq '' || $name =~ m!/! || $name eq '.' || $name eq '..') {
+		warn "invalid inbox name: '$name'\n";
+		return;
+	}
+
 	$rv->{name} = $name;
 	$rv->{-pi_config} = $self;
 	$rv = PublicInbox::Inbox->new($rv);
-- 
EW


^ permalink raw reply related	[relevance 7%]

* [PATCH 0/2] config-related cleanups...
@ 2019-01-01 10:18  6% Eric Wong
  2019-01-01 10:18  7% ` [PATCH 2/2] config: relax name inbox name restrictions Eric Wong
  0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2019-01-01 10:18 UTC (permalink / raw)
  To: meta

I wanted to use a '.' in the middle of a inbox name and ran
myself out of space because indexlevel= was not picked up :x

Eric Wong (2):
  use PublicInbox::Config::each_inbox where appropriate
  config: relax name inbox name restrictions

 lib/PublicInbox/Config.pm       | 13 ++++++++++---
 lib/PublicInbox/WatchMaildir.pm | 19 ++++++++-----------
 script/public-inbox-index       | 14 ++++++--------
 3 files changed, 24 insertions(+), 22 deletions(-)

-- 
EW

^ permalink raw reply	[relevance 6%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-01-01 10:18  6% [PATCH 0/2] config-related cleanups Eric Wong
2019-01-01 10:18  7% ` [PATCH 2/2] config: relax name inbox name restrictions Eric Wong

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).