diff options
author | Joey Hess <joey@kitenet.net> | 2010-08-30 13:36:00 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-08-30 13:36:00 -0400 |
commit | 991d01f5b53250b962725110903b0324c93fbfb6 (patch) | |
tree | 77f5bad195b6659423f1bfb14a725ca17cba7765 | |
parent | 7d1cc3a0209980bdbec59ffd0b6171898a1cc066 (diff) | |
download | ikiwiki-991d01f5b53250b962725110903b0324c93fbfb6.tar ikiwiki-991d01f5b53250b962725110903b0324c93fbfb6.tar.gz |
optimise single dot detection
Since it already looks for things starting with a dot, I was able to avoid
matching against the string twice.
This also fixes a minor bug; $from may not be defined. Avoid uninitialized
value warnings in this case.
-rw-r--r-- | IkiWiki.pm | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 6fd112960..6da281999 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2401,14 +2401,17 @@ package IkiWiki::PageSpec; sub derel ($$) { my $path=shift; my $from=shift; - if ($path eq '.') { - $path = $from; - } - if ($path =~ m!^\./!) { - $from=~s#/?[^/]+$## if defined $from; - $path=~s#^\./##; - $path="$from/$path" if defined $from && length $from; + if ($path =~ m!^\.(/|$)!) { + if ($1) { + $from=~s#/?[^/]+$## if defined $from; + $path=~s#^\./##; + $path="$from/$path" if defined $from && length $from; + } + else { + $path = $from; + $path = "" unless defined $path; + } } return $path; |