diff options
Diffstat (limited to 'lib/PublicInbox/LeiSavedSearch.pm')
-rw-r--r-- | lib/PublicInbox/LeiSavedSearch.pm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/PublicInbox/LeiSavedSearch.pm b/lib/PublicInbox/LeiSavedSearch.pm index cfbf68c3..2a0e9321 100644 --- a/lib/PublicInbox/LeiSavedSearch.pm +++ b/lib/PublicInbox/LeiSavedSearch.pm @@ -115,9 +115,16 @@ sub up { # updating existing saved search via "lei up" sub new { # new saved search "lei q --save" my ($cls, $lei) = @_; my $self = bless { ale => $lei->ale }, $cls; + require File::Path; my $dst = $lei->{ovv}->{dst}; + + # canonicalize away relative paths into the config + if ($lei->{ovv}->{fmt} eq 'maildir' && + $dst =~ m!(?:/*|\A)\.\.(?:/*|\z)! && !-d $dst) { + File::Path::make_path($dst); + $lei->{ovv}->{dst} = $dst = $lei->abs_path($dst); + } my $dir = lss_dir_for($lei, \$dst); - require File::Path; File::Path::make_path($dir); # raises on error $self->{-cfg} = {}; my $f = $self->{'-f'} = "$dir/lei.saved-search"; |