aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/bugs.mdwn6
-rw-r--r--doc/todo.mdwn2
-rwxr-xr-xikiwiki10
3 files changed, 14 insertions, 4 deletions
diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn
new file mode 100644
index 000000000..235f06fb7
--- /dev/null
+++ b/doc/bugs.mdwn
@@ -0,0 +1,6 @@
+* Has bugs updating things if the bestlink of a page changes due to
+ adding/removing a page. For example, if Foo/Bar links to "Baz", which is
+ Foo/Baz, and Foo/Bar/Baz gets added, it will update the links in Foo/Bar
+ to point to it, but will forget to update the linkbacks in Foo/Baz.
+ And if Foo/Bar/Baz is then removed, it forgets to update Foo/Bar to link
+ back to Foo/Baz.
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 1a0dd6fb4..b7b23ef56 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -50,3 +50,5 @@ Being case insensative is handy, but it does make the [[BackLinks]] a bit
ugly compared to other links. It should be possible to support pagenames
that have uppercase, while still allowing them to be linked to using any
case.
+
+## [[Bugs]]
diff --git a/ikiwiki b/ikiwiki
index 2808ccc78..f42be3b01 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -154,7 +154,7 @@ sub bestlink ($$) {
}
} while $cwd=~s!/?[^/]+$!!;
- print STDERR "warning: page $page, broken link: $link\n";
+ #print STDERR "warning: page $page, broken link: $link\n";
return "";
}
@@ -173,7 +173,9 @@ sub htmllink ($$) {
return $link if $page eq $bestlink;
# TODO BUG: %renderedfiles may not have it, if the linked to page
- # was also added and isn't yet rendered!
+ # was also added and isn't yet rendered! Note that this bug is
+ # masked by the bug mentioned below that makes all new files
+ # be rendered twice.
if (! grep { $_ eq $bestlink } values %renderedfiles) {
$bestlink=htmlpage($bestlink);
}
@@ -385,7 +387,7 @@ sub refresh () {
# if any files were added or removed, check to see if each page
# needs an update due to linking to them
# TODO: inefficient; pages may get rendered above and again here;
- # problem is the bestlink may have changes and we won't know until
+ # problem is the bestlink may have changed and we won't know until
# now
if (@add || @del) {
FILE: foreach my $file (@files) {
@@ -408,7 +410,7 @@ FILE: foreach my $file (@files) {
# pages it links to
# TODO: inefficient; pages may get rendered above and again here;
# problem is the linkbacks could be wrong in the first pass render
- # above.
+ # above
if (%rendered) {
my %linkchanged;
foreach my $file (keys %rendered, @del) {