]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
Merge branch 'master' into debian-jessie-backports
authorSimon McVittie <smcv@debian.org>
Thu, 21 Jan 2016 10:17:44 +0000 (10:17 +0000)
committerSimon McVittie <smcv@debian.org>
Thu, 21 Jan 2016 10:17:44 +0000 (10:17 +0000)
122 files changed:
.gitignore
IkiWiki.pm
IkiWiki/CGI.pm
IkiWiki/Plugin/aggregate.pm
IkiWiki/Plugin/autoindex.pm
IkiWiki/Plugin/calendar.pm
IkiWiki/Plugin/comments.pm
IkiWiki/Plugin/emailauth.pm
IkiWiki/Plugin/git.pm
IkiWiki/Plugin/highlight.pm
IkiWiki/Plugin/inline.pm
IkiWiki/Plugin/meta.pm
IkiWiki/Plugin/pagestats.pm
IkiWiki/Plugin/remove.pm
IkiWiki/Plugin/tag.pm
IkiWiki/Plugin/teximg.pm
IkiWiki/Render.pm
IkiWiki/Setup/Standard.pm
IkiWiki/Setup/Yaml.pm
debian/changelog
debian/control
debian/copyright
debian/links
debian/tests/pkg-perl/smoke-env [new file with mode: 0644]
debian/tests/pkg-perl/syntax-skip [new file with mode: 0644]
debian/tests/pkg-perl/use-name [new file with mode: 0644]
doc/bugs/Error_with_external_plugins.mdwn [new file with mode: 0644]
doc/bugs/Error_with_external_plugins/debug.mdwn [new file with mode: 0644]
doc/bugs/Please_add_copyright_notice_in_embedded_JS.mdwn [new file with mode: 0644]
doc/bugs/Uploading_attachment_fails.mdwn [new file with mode: 0644]
doc/bugs/continuously_getting_merge_errors.mdwn [new file with mode: 0644]
doc/bugs/dumpsetup_does_not_save_wikistatedir.mdwn [new file with mode: 0644]
doc/bugs/feed_does_not_validate.mdwn [new file with mode: 0644]
doc/bugs/img_test_failure_on_nix.mdwn [new file with mode: 0644]
doc/bugs/mathjax_doesn__39__t_work_anymore_after_upgrade.mdwn [new file with mode: 0644]
doc/bugs/meta_plugin_should_not_add_alternate_stylesheets_and_title_by_default.mdwn
doc/bugs/po_plugin_config_crasher.mdwn [new file with mode: 0644]
doc/bugs/rss_output_relative_links.mdwn
doc/examples/blog/posts/second_post.mdwn [new file with mode: 0644]
doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_3_0dbc7bea39c6f69c4615250bc2d63d84._comment [new file with mode: 0644]
doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_4_e7453e7f84c494e80e9341feff931141._comment [new file with mode: 0644]
doc/forum/FastCGI_problem_on_Arch.mdwn [new file with mode: 0644]
doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__.mdwn [new file with mode: 0644]
doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__/comment_1_173687ee3dfdd9d949c1fa6d9b3cce4c._comment [new file with mode: 0644]
doc/forum/How_to_fix_wide_character_syslog_error__63__.mdwn [new file with mode: 0644]
doc/forum/How_to_fix_wide_character_syslog_error__63__/comment_1_fce9619a48eba6d9559e2c33ba6322c9._comment [new file with mode: 0644]
doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command.mdwn [new file with mode: 0644]
doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_1_e62f3ae89da8c66e94d37bd148fbebbd._comment [new file with mode: 0644]
doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_2_3e5d32aab68e21b3c4b6145e61b0b744._comment [new file with mode: 0644]
doc/forum/Language_variable.mdwn [new file with mode: 0644]
doc/forum/Language_variable/comment_1_caea1154542404ffa1ce1c5344208fd4._comment [new file with mode: 0644]
doc/forum/Let_rss_point_to_https_.mdwn [new file with mode: 0644]
doc/forum/Let_rss_point_to_https_/comment_1_571d9f380068bf9130f8b68d1af22dae._comment [new file with mode: 0644]
doc/forum/Let_rss_point_to_https_/comment_2_02d04263197df6d488e5e39d2686a772._comment [new file with mode: 0644]
doc/forum/Moving_everything_so_far_into_a_folder.mdwn [new file with mode: 0644]
doc/forum/Moving_everything_so_far_into_a_folder/comment_1_bf2c1d5fb58a3aa0f28fa07f1e41d247._comment [new file with mode: 0644]
doc/forum/Moving_everything_so_far_into_a_folder/comment_2_0a6ebc8364239dc8c5760eb2ca290ae9._comment [new file with mode: 0644]
doc/forum/Need_something_more_powerful_than_Exclude/comment_7_e5d9fbf7e50476ce3a494541dd41d4d9._comment [new file with mode: 0644]
doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki.mdwn [new file with mode: 0644]
doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_1_1a842bc7d56e9b40a43cb64c8a76e776._comment [new file with mode: 0644]
doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_2_73c0052ee7852b2bdc9e92ba6136f20e._comment [new file with mode: 0644]
doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_3_a12366764c50df62a4734c73418b592e._comment [new file with mode: 0644]
doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_2_7ef0d94691095f1cd316ad0d2c423796._comment [new file with mode: 0644]
doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_3_ea7ae2cf2e1f897a653a81bd20fe55db._comment [new file with mode: 0644]
doc/git.mdwn
doc/ikiwiki/directive/inline.mdwn
doc/ikiwiki/directive/pagestats.mdwn
doc/ikiwiki/wikilink/discussion.mdwn
doc/ikiwikiusers.mdwn
doc/news/version_3.20140916.mdwn [deleted file]
doc/news/version_3.20150614.mdwn [new file with mode: 0644]
doc/plugins/contrib/pandoc.mdwn
doc/plugins/contrib/plusone.mdwn
doc/plugins/contrib/tracking.mdwn
doc/plugins/img/discussion.mdwn
doc/plugins/notifyemail.mdwn
doc/plugins/write.mdwn
doc/sandbox.mdwn
doc/sandbox/that_page.mdwn [new file with mode: 0644]
doc/templates.mdwn
doc/theme_market.mdwn
doc/tips/Hosting_Ikiwiki_and_master_git_repository_on_different_machines.mdwn
doc/tips/bootstrap_themes_evaluation.mdwn [new file with mode: 0644]
doc/tips/distributed_wikis.mdwn
doc/todo/Option_linktext_for_pagestats_directive.mdwn
doc/todo/Page_template_with_RTL_support.mdwn [new file with mode: 0644]
doc/todo/add_aria_landmarks_to_make_ikiwiki_websites_more_accessible.mdwn
doc/todo/anti-spam_protection.mdwn
doc/todo/commandline_comment_moderation.mdwn [new file with mode: 0644]
doc/todo/headless_git_branches.mdwn
doc/todo/need_a_way_to_close_a_bug_via_a_comment.mdwn [new file with mode: 0644]
doc/todo/pick_a_new_canonical_name_for_equivalent_of_SQL_limit.mdwn
doc/todo/userdir__40____41___pagespec_directive_to_match_userpage_and_SubPages.mdwn [new file with mode: 0644]
doc/users/kjs.mdwn
ikiwiki-makerepo
ikiwiki.spec
pm_filter
po/ikiwiki.pot
t/autoindex-committed.t [changed mode: 0644->0755]
t/basewiki_brokenlinks.t
t/comments.t
t/conflicts.t
t/cvs.t
t/git.t
t/img.t
t/inline.t
t/meta.t [new file with mode: 0755]
t/parentlinks.t
t/permalink.t
t/podcast.t
t/relativity.t
t/syntax.t
t/syslog.t [changed mode: 0644->0755]
t/template_syntax.t
t/templates_documented.t
t/trail.t
t/wellformed.t
templates/page.tmpl
templates/rsspage.tmpl
underlays/javascript/ikiwiki/ikiwiki.js
underlays/javascript/ikiwiki/relativedate.js
underlays/javascript/ikiwiki/toggle.js

index 77c0b3dccda79aaaf712b704fe58680cdc41f2e9..b54b830fdd7a3582705a3031b9806b1fd4488905 100644 (file)
@@ -14,7 +14,9 @@ pm_to_blib
 /MYMETA.yml
 *.man
 /po/cover_db
+/po/html/
 po/po2wiki_stamp
+/po/underlays/.ikiwiki
 po/underlays/*/*.mdwn
 po/underlays/basewiki/*/*.mdwn
 po/underlays/basewiki/*/*/*.mdwn
index fe5af6d15a769250879accb6592b45d84f5c555e..0f27ac419d625aea235184f54fd889a0523ffcfa 100644 (file)
@@ -843,10 +843,9 @@ sub log_message ($$) {
                        $log_open=1;
                }
                eval {
-                       # keep a copy to avoid editing the original config repeatedly
-                       my $wikiname = $config{wikiname};
-                       utf8::encode($wikiname);
-                       Sys::Syslog::syslog($type, "[$wikiname] %s", join(" ", @_));
+                       my $message = "[$config{wikiname}] ".join(" ", @_);
+                       utf8::encode($message);
+                       Sys::Syslog::syslog($type, "%s", $message);
                };
                 if ($@) {
                     print STDERR "failed to syslog: $@" unless $log_failed;
index 1763828a4eef973fce3296e2ffdd452f22e0a058..cbc2fe8eb0c6ce8b0e2b6ac5089e42fdd79b7037 100644 (file)
@@ -416,7 +416,9 @@ sub cgi (;$$) {
 
        eval q{use CGI};
        error($@) if $@;
+       no warnings "once";
        $CGI::DISABLE_UPLOADS=$config{cgi_disable_uploads};
+       use warnings;
 
        if (! $q) {
                binmode(STDIN);
index fbf88c62738d783c210d27cf6aa57c1b81c71fef..be7da3a710ec66a6243f414d9de62a49580bf6ad 100644 (file)
@@ -571,7 +571,9 @@ sub aggregate (@) {
                        # XML::Feed doesn't work around XML::Atom's bizarre
                        # API, so we will. Real unicode strings? Yes please.
                        # See [[bugs/Aggregated_Atom_feeds_are_double-encoded]]
+                       no warnings 'once';
                        local $XML::Atom::ForceUnicode = 1;
+                       use warnings;
 
                        my $c=$entry->content;
                        # atom feeds may have no content, only a summary
index d5ee4b58f3422344a3debae53dd334366ad43e18..c443f01d241d056ca1939fdd5cbe948b2dfc2e58 100644 (file)
@@ -46,6 +46,7 @@ sub genindex ($) {
 
                        my $dir = $config{srcdir};
                        if (! $config{autoindex_commit}) {
+                               no warnings 'once';
                                $dir = $IkiWiki::Plugin::transient::transientdir;
                        }
 
@@ -80,6 +81,7 @@ sub refresh () {
                                $file=~s/^\.\/?//;
                                return unless length $file;
                                if (IkiWiki::file_pruned($file)) {
+                                       no warnings 'once';
                                        $File::Find::prune=1;
                                }
                                elsif (! -l $_) {
index c03b89667c39bb67feb94116c92892f1cab0d21c..45617afe82d9af5b8ce8c4632df02e8a6c827580 100644 (file)
@@ -141,7 +141,9 @@ sub autocreate {
        $template->param(month => $month) if defined $month;
        $template->param(pagespec => $config{archive_pagespec});
 
+       no warnings 'once';
        my $dir = $IkiWiki::Plugin::transient::transientdir;
+       use warnings;
 
        writefile($pagefile, $dir, $template->output);
 }
index ad813d19d7e669c189342140c9d166d94968b4e7..e93db94ebc0f02d5e940d9092cd894fb9362c20e 100644 (file)
@@ -919,16 +919,18 @@ sub pagetemplate (@) {
        }
 
        if ($shown) {
+               my $absolute = $template->param('wants_absolute_urls');
+
                if ($template->query(name => 'commentsurl')) {
                        $template->param(commentsurl =>
-                               urlto($page).'#comments');
+                               urlto($page, undef, $absolute).'#comments');
                }
 
                if ($template->query(name => 'atomcommentsurl') && $config{usedirs}) {
                        # This will 404 until there are some comments, but I
                        # think that's probably OK...
                        $template->param(atomcommentsurl =>
-                               urlto($page).'comments.atom');
+                               urlto($page, undef, $absolute).'comments.atom');
                }
 
                if ($template->query(name => 'commentslink')) {
index a589199d3d85a2cac98800657224f778734e3500..6674fe3d6b07b91ec9daf0d3276fa8936fc66378 100644 (file)
@@ -26,6 +26,12 @@ sub getsetup () {
                        rebuild => 0,
                        section => "auth",
                },
+               emailauth_sender => {
+                       type => "string",
+                       description => "email address to send emailauth mails as (default: adminemail)",
+                       safe => 1,
+                       rebuild => 0,
+               },
 }
 
 sub email_setup ($$) {
@@ -80,10 +86,12 @@ sub email_auth ($$$$) {
        error($@) if $@;
        my $shorturl=$config{url};
        $shorturl=~s/^https?:\/\///i;
+       my $emailauth_sender=$config{emailauth_sender};
+       $emailauth_sender=$config{adminemail} unless defined $emailauth_sender;
        sendmail(
                To => $email,
                From => "$config{wikiname} admin <".
-                       (defined $config{adminemail} ? $config{adminemail} : "")
+                       (defined $emailauth_sender ? $emailauth_sender : "")
                        .">",
                Subject => "$config{wikiname} login | $shorturl",
                Message => $template->output,
index 4d48388a04fdc2e9c3d6ea7c71b40d3ba3ccd88c..f963f06ba1d35a4c0a6ae28bac90bbe35d3e0e8f 100644 (file)
@@ -220,6 +220,21 @@ sub run_or_die ($@) { safe_git(\&error, undef, @_) }
 sub run_or_cry ($@) { safe_git(sub { warn @_ }, undef, @_) }
 sub run_or_non ($@) { safe_git(undef, undef, @_) }
 
+sub ensure_committer {
+       if (! length $ENV{GIT_AUTHOR_NAME} || ! length $ENV{GIT_COMMITTER_NAME}) {
+               my $name = join('', run_or_non("git", "config", "user.name"));
+               if (! length $name) {
+                       run_or_die("git", "config", "user.name", "IkiWiki");
+               }
+       }
+
+       if (! length $ENV{GIT_AUTHOR_EMAIL} || ! length $ENV{GIT_COMMITTER_EMAIL}) {
+               my $email = join('', run_or_non("git", "config", "user.email"));
+               if (! length $email) {
+                       run_or_die("git", "config", "user.email", "ikiwiki.info");
+               }
+       }
+}
 
 sub merge_past ($$$) {
        # Unlike with Subversion, Git cannot make a 'svn merge -rN:M file'.
@@ -258,6 +273,8 @@ sub merge_past ($$$) {
        my @undo;      # undo stack for cleanup in case of an error
        my $conflict;  # file content with conflict markers
 
+       ensure_committer();
+
        eval {
                # Hide local changes from Git by renaming the modified file.
                # Relative paths must be converted to absolute for renaming.
@@ -526,6 +543,8 @@ sub rcs_get_current_rev () {
 sub rcs_update () {
        # Update working directory.
 
+       ensure_committer();
+
        if (length $config{gitorigin_branch}) {
                run_or_cry('git', 'pull', '--prune', $config{gitorigin_branch});
        }
@@ -592,6 +611,8 @@ sub rcs_commit_helper (@) {
                }
        }
 
+       ensure_committer();
+
        $params{message} = IkiWiki::possibly_foolish_untaint($params{message});
        my @opts;
        if ($params{message} !~ /\S/) {
@@ -631,6 +652,8 @@ sub rcs_add ($) {
 
        my ($file) = @_;
 
+       ensure_committer();
+
        run_or_cry('git', 'add', $file);
 }
 
@@ -639,12 +662,16 @@ sub rcs_remove ($) {
 
        my ($file) = @_;
 
+       ensure_committer();
+
        run_or_cry('git', 'rm', '-f', $file);
 }
 
 sub rcs_rename ($$) {
        my ($src, $dest) = @_;
 
+       ensure_committer();
+
        run_or_cry('git', 'mv', '-f', $src, $dest);
 }
 
@@ -944,6 +971,8 @@ sub rcs_revert ($) {
        my $rev = shift;
        my ($sha1) = $rev =~ /^($sha1_pattern)$/; # untaint
 
+       ensure_committer();
+
        if (run_or_non('git', 'revert', '--no-commit', $sha1)) {
                return undef;
        }
index ce919748a4d10c6308cea7c1ea6559c47c608534..f6908921ed6ec3ca770ffefa2f6e8f11a939d286 100644 (file)
@@ -201,7 +201,9 @@ sub highlight ($$) {
 
        my $gen;
        if (! exists $highlighters{$langfile}) {
+               no warnings 'once';
                $gen = highlight::CodeGenerator::getInstance($highlight::XHTML);
+               use warnings;
                $gen->setFragmentCode(1); # generate html fragment
                $gen->setHTMLEnclosePreTag(1); # include stylish <pre>
                if ($data_dir){
index 416df1e280835f058ecff31afdad87b6088f9ad9..c3895d9824a0efbca3f8f339b5a4d068434cfe51 100644 (file)
@@ -181,11 +181,22 @@ sub preprocess_inline (@) {
        my $feeds=exists $params{feeds} ? yesno($params{feeds}) : !$quick && ! $raw;
        my $emptyfeeds=exists $params{emptyfeeds} ? yesno($params{emptyfeeds}) : 1;
        my $feedonly=yesno($params{feedonly});
-       if (! exists $params{show} && ! $archive) {
-               $params{show}=10;
+
+       # Backwards compatibility
+       if (defined $params{show} && $params{show} =~ m/^\d+$/) {
+               $params{limit} = $params{show};
+               delete $params{show};
+       }
+       if (defined $params{feedshow} && $params{feedshow} =~ m/^\d+$/) {
+               $params{feedlimit} = $params{feedshow};
+               delete $params{feedshow};
+       }
+
+       if (! exists $params{limit} && ! $archive) {
+               $params{limit}=10;
        }
-       if (! exists $params{feedshow} && exists $params{show}) {
-               $params{feedshow}=$params{show};
+       if (! exists $params{feedlimit} && exists $params{limit}) {
+               $params{feedlimit}=$params{limit};
        }
        my $title;
        if (exists $params{title}) {
@@ -233,11 +244,11 @@ sub preprocess_inline (@) {
        }
        else {
                my $num=0;
-               if ($params{show}) {
-                       $num=$params{show};
+               if ($params{limit}) {
+                       $num=$params{limit};
                }
-               if ($params{feedshow} && $num < $params{feedshow} && $num > 0) {
-                       $num=$params{feedshow};
+               if ($params{feedlimit} && $num < $params{feedlimit} && $num > 0) {
+                       $num=$params{feedlimit};
                }
                if ($params{skip} && $num) {
                        $num+=$params{skip};
@@ -258,17 +269,17 @@ sub preprocess_inline (@) {
        
        my @feedlist;
        if ($feeds) {
-               if (exists $params{feedshow} &&
-                   $params{feedshow} && @list > $params{feedshow}) {
-                       @feedlist=@list[0..$params{feedshow} - 1];
+               if (exists $params{feedlimit} &&
+                   $params{feedlimit} && @list > $params{feedlimit}) {
+                       @feedlist=@list[0..$params{feedlimit} - 1];
                }
                else {
                        @feedlist=@list;
                }
        }
        
-       if ($params{show} && @list > $params{show}) {
-               @list=@list[0..$params{show} - 1];
+       if ($params{limit} && @list > $params{limit}) {
+               @list=@list[0..$params{limit} - 1];
        }
 
        if ($feeds && exists $params{feedpages}) {
@@ -602,7 +613,7 @@ sub absolute_urls ($$) {
                                        $v=$baseurl.$v; # anchor
                                }
                                elsif ($dv=~/^(?!\w+:)[^\/]/) {
-                                       $v=$url.$v; # relative url
+                                       $v=URI->new_abs($v, $url)->canonical; # relative url
                                }
                                elsif ($dv=~/^\//) {
                                        if (! defined $urltop) {
@@ -714,6 +725,7 @@ sub genfeed ($$$$$@) {
 
        my $template=template_depends($feedtype."page.tmpl", $page, blind_cache => 1);
        $template->param(
+               wants_absolute_urls => 1,
                title => $feedtitle,
                wikiname => $config{wikiname},
                pageurl => $url,
index e7b96bdf142f47e221e321b4ecb8ce68ab4989f8..ea099f955ac1c486cdd2baf6636e330a8eae569c 100644 (file)
@@ -294,6 +294,7 @@ sub preprocess (@) {
        elsif ($key eq 'name') {
                push @{$metaheaders{$page}}, scrub('<meta name="'.
                        encode_entities($value).
+                       '" '.
                        join(' ', map { "$_=\"$params{$_}\"" } keys %params).
                        ' />', $page, $destpage);
        }
index 17b26f7baa75ed3b3e68c95f310f6821227d0c89..ac0a463e3ff65814ac001c6214598bd4b0f8dc18 100644 (file)
@@ -31,11 +31,30 @@ sub getsetup () {
                },
 }
 
+sub linktext ($%) {
+       # Return the text of the link to a tag, depending on option linktext.
+       my ($page, %params) = @_;
+       if (exists $params{show} &&
+               exists $pagestate{$page} &&
+               exists $pagestate{$page}{meta}{$params{show}}) {
+               return $pagestate{$page}{meta}{$params{show}};
+       }
+       else {
+               return undef;
+       }
+}
+
 sub preprocess (@) {
        my %params=@_;
        $params{pages}="*" unless defined $params{pages};
        my $style = ($params{style} or 'cloud');
-       
+
+       # Backwards compatibility
+       if (defined $params{show} && $params{show} =~ m/^\d+$/) {
+               $params{limit} = $params{show};
+               delete $params{show};
+       }
+
        my %counts;
        my $max = 0;
        foreach my $page (pagespec_match_list($params{page}, $params{pages},
@@ -64,11 +83,11 @@ sub preprocess (@) {
                $max = $counts{$page} if $counts{$page} > $max;
        }
 
-       if (exists $params{show}) {
+       if (exists $params{limit}) {
                my $i=0;
                my %show;
                foreach my $key (sort { $counts{$b} <=> $counts{$a} } keys %counts) {
-                       last if ++$i > $params{show};
+                       last if ++$i > $params{limit};
                        $show{$key}=$counts{$key};
                }
                %counts=%show;
@@ -78,7 +97,7 @@ sub preprocess (@) {
                return "<table class='".(exists $params{class} ? $params{class} : "pageStats")."'>\n".
                        join("\n", map {
                                "<tr><td>".
-                               htmllink($params{page}, $params{destpage}, $_, noimageinline => 1).
+                               htmllink($params{page}, $params{destpage}, $_, noimageinline => 1, linktext => linktext($_, %params)).
                                "</td><td>".$counts{$_}."</td></tr>"
                        }
                        sort { $counts{$b} <=> $counts{$a} } keys %counts).
@@ -101,7 +120,7 @@ sub preprocess (@) {
                        
                        $res.="<li>" if $style eq 'list';
                        $res .= "<span class=\"$class\">".
-                               htmllink($params{page}, $params{destpage}, $page).
+                                                       htmllink($params{page}, $params{destpage}, $page, linktext => linktext($page, %params)).
                                "</span>\n";
                        $res.="</li>" if $style eq 'list';
 
index 5c99b387e9c7ced1fd99518de3177033b29eeeaa..6875844a32fc61a67a7d6eae82c4ed684e2681df 100644 (file)
@@ -23,6 +23,7 @@ sub getsetup () {
 }
 
 sub allowed_dirs {
+       no warnings 'once';
        return grep { defined $_ } (
                $config{srcdir},
                $IkiWiki::Plugin::transient::transientdir,
index 605f415994e73bee121faab9fb7e5e64f1a02182..8a0859b5ca48d45f12ccde0f4c823bb5bed913c4 100644 (file)
@@ -120,6 +120,7 @@ sub gentag ($) {
 
                        my $dir = $config{srcdir};
                        if (! $config{tag_autocreate_commit}) {
+                               no warnings 'once';
                                $dir = $IkiWiki::Plugin::transient::transientdir;
                        }
 
index 3d6fa9942c11f3dd304026458655b22ab30e5e50..e0f97614b9bf29e7424857e45041ca668c7e449a 100644 (file)
@@ -146,8 +146,8 @@ sub gen_image ($$$$) {
        my $tex = $config{teximg_prefix};
        $tex .= '\['.$code.'\]';
        $tex .= $config{teximg_postfix};
-       $tex =~ s!\\documentclass{article}!\\documentclass[${height}pt]{article}!g;
-       $tex =~ s!\\documentclass{scrartcl}!\\documentclass[${height}pt]{scrartcl}!g;
+       $tex =~ s!\\documentclass\{article}!\\documentclass[${height}pt]{article}!g;
+       $tex =~ s!\\documentclass\{scrartcl}!\\documentclass[${height}pt]{scrartcl}!g;
 
        my $tmp = eval { create_tmp_dir($digest) };
        if (! $@ &&
index 4c998b15620783662cfe3f18585674821036e110..130257f718adc24be173008e1f550aa5b51502dd 100644 (file)
@@ -326,6 +326,7 @@ sub find_src_files (;$$$) {
                $page = pagename($file);
                if (! exists $pagesources{$page} &&
                    file_pruned($file)) {
+                       no warnings 'once';
                        $File::Find::prune=1;
                        return;
                }
index ea7d763bbd26435c9dfb9462e1930f4cf7920b7a..07a66f3db279eabf6907c842e986b4c35095d3d5 100644 (file)
@@ -33,6 +33,7 @@ sub dumpline ($$$$) {
        
        eval q{use Data::Dumper};
        error($@) if $@;
+       no warnings 'once';
        local $Data::Dumper::Terse=1;
        local $Data::Dumper::Indent=1;
        local $Data::Dumper::Pad="\t";
@@ -40,6 +41,7 @@ sub dumpline ($$$$) {
        local $Data::Dumper::Quotekeys=0;
        # only the perl version preserves utf-8 in output
        local $Data::Dumper::Useperl=1;
+       use warnings;
        
        my $dumpedvalue;
        if (($type eq 'boolean' || $type eq 'integer') && $value=~/^[0-9]+$/) {
index 6bf20f480d523ad5144dc6d1b61ec03d1f0118b5..8edd7126b0e33c2a8c07bfa329be72b997d0d81d 100644 (file)
@@ -35,7 +35,9 @@ sub dumpline ($$$$) {
        
        eval q{use YAML::XS};
        die $@ if $@;
+       no warnings 'once';
        $YAML::XS::QuoteNumericStrings=0;
+       use warnings;
 
        my $dump=decode_utf8(Dump({$key => $value}));
        $dump=~s/^---\n//; # yaml header, we don't want
index 0e052ad98ec80cde8ff8eb085a97145cdfab20bb..b33f3d30ffb79eaecaa8e505260fdad23a3e8540 100644 (file)
@@ -1,3 +1,54 @@
+ikiwiki (3.20160121) unstable; urgency=medium
+
+  [ Amitai Schlair ]
+  * meta: Fix [[!meta name=foo]] by closing the open quote.
+  * Avoid unescaped "{" in regular expressions
+  * meta test: Add tests for many behaviors of the directive.
+  * img test: Bail gracefully when ImageMagick is not present.
+
+  [ Joey Hess ]
+  * emailauth: Added emailauth_sender config.
+  * Modified page.tmpl to to set html lang= and dir= when
+    values have been specified for them, which the po plugin does.
+  * Specifically license the javascript underlay under the permissive
+    basewiki license.
+
+  [ Simon McVittie ]
+  * git: if no committer identity is known, set it to
+    "IkiWiki <ikiwiki.info>" in .git/config. This resolves commit errors
+    in versions of git that require a non-trivial committer identity.
+  * inline, trail: rename show, feedshow parameters to limit, feedlimit
+    (with backwards compatibility)
+  * pagestats: add "show" option to show meta fields. Thanks, Louis
+  * inline: force RSS <comments> to be a fully absolute URL as required
+    by the W3C validator. Please use Atom feeds if relative URLs are
+    desirable on your site.
+  * inline: add <atom:link rel="self"> to RSS feeds as recommended by
+    the W3C validator
+  * inline: do not produce links containing /./ or /../
+  * syslog: accept and encode UTF-8 messages
+  * syslog: don't fail to log if the wiki name contains %s
+  * Change dependencies from transitional package perlmagick
+    to libimage-magick-perl (Closes: #789221)
+  * debian/copyright: update for the rename of openid-selector to
+    login-selector
+  * d/control: remove leading article from Description
+    (lintian: description-synopsis-starts-with-article)
+  * d/control: Standards-Version: 3.9.6, no changes required
+  * Wrap and sort control files (wrap-and-sort -abst)
+  * Silence "used only once: possible typo" warnings for variables
+    that are part of modules' APIs
+  * Run autopkgtest tests using autodep8 and the pkg-perl team's
+    infrastructure
+  * Add enough build-dependencies to run all tests, except for
+    non-git VCSs
+  * tests: consistently use done_testing instead of no_plan
+  * t/img.t: do not spuriously skip
+  * img test: skip testing PDFs if unsupported
+  * img test: use the right filenames when testing that deletion occurs
+
+ -- Simon McVittie <smcv@debian.org>  Thu, 21 Jan 2016 09:53:07 +0000
+
 ikiwiki (3.20150614~bpo8+1) jessie-backports; urgency=medium
 
   * Rebuild for jessie-backports, no source changes (Closes: #807452)
index a5cac3c016c9d70a3a9540d4e48dce9d00f4e803..8af788c2db1311da9c088face9e3ef94a2612709 100644 (file)
 Source: ikiwiki
 Section: web
 Priority: optional
-Build-Depends: perl, debhelper (>= 9)
-Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl,
-  libtext-markdown-discount-perl,
-  libtimedate-perl, libhtml-template-perl,
-  libhtml-scrubber-perl,
-  libhtml-parser-perl, liburi-perl (>= 1.36), perlmagick, po4a (>= 0.34),
-  libfile-chdir-perl, libyaml-libyaml-perl, librpc-xml-perl,
-  libcgi-pm-perl, libcgi-session-perl, ghostscript,
-  libmagickcore-6.q16-2-extra | libmagickcore-extra,
-  libcgi-formbuilder-perl
+Build-Depends:
+ debhelper (>= 9),
+ perl,
+Build-Depends-Indep:
+ dpkg-dev (>= 1.9.0),
+ ghostscript,
+ git (>= 1:1.7),
+ libcgi-formbuilder-perl,
+ libcgi-pm-perl,
+ libcgi-session-perl,
+ libfile-chdir-perl,
+ libfile-mimeinfo-perl,
+ libhtml-parser-perl,
+ libhtml-scrubber-perl,
+ libhtml-template-perl,
+ libimage-magick-perl | perlmagick,
+ libmagickcore-6.q16-2-extra | libmagickcore-extra,
+ libnet-openid-consumer-perl,
+ librpc-xml-perl,
+ libtext-markdown-discount-perl,
+ libtimedate-perl,
+ liburi-perl (>= 1.36),
+ libxml-feed-perl,
+ libxml-parser-perl,
+ libxml-simple-perl,
+ libxml-twig-perl,
+ libyaml-libyaml-perl,
+ po4a (>= 0.34),
 Maintainer: Simon McVittie <smcv@debian.org>
-Uploaders: Josh Triplett <josh@freedesktop.org>
-Standards-Version: 3.9.5
+Uploaders:
+ Josh Triplett <josh@freedesktop.org>,
+Standards-Version: 3.9.6
 Homepage: http://ikiwiki.info/
 Vcs-Git: git://git.ikiwiki.info/
+Testsuite: autopkgtest-pkg-perl
 
 Package: ikiwiki
 Architecture: all
-Depends: ${misc:Depends}, ${perl:Depends},
-  libtext-markdown-discount-perl,
-  libhtml-scrubber-perl, libhtml-template-perl,
-  libhtml-parser-perl, liburi-perl (>= 1.36), libyaml-libyaml-perl, libjson-perl
-Recommends: gcc | c-compiler, 
-  libc6-dev | libc-dev,
-  git (>= 1:1.7) | git-core (>= 1:1.5.0) | subversion | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs,
-  libxml-simple-perl, libnet-openid-consumer-perl, libcrypt-ssleay-perl,
-  liblwpx-paranoidagent-perl, libtimedate-perl, libcgi-pm-perl,
-  libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1),
-  libmail-sendmail-perl, libauthen-passphrase-perl, libterm-readline-gnu-perl,
-  libgravatar-url-perl, librpc-xml-perl,
-Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl,
-  xapian-omega (>= 1.0.5), libtext-wikiformat-perl,
-  python, python-docutils, polygen, tidy, libhtml-tree-perl,
-  libxml-feed-perl, libmailtools-perl, perlmagick,
-  libfile-mimeinfo-perl, file,
-  liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl,
-  libtext-csv-perl, graphviz, libnet-amazon-s3-perl,
-  libsparkline-php, texlive, dvipng, libtext-wikicreole-perl,
-  libsort-naturally-perl, libtext-textile-perl, libhighlight-perl,
-  po4a (>= 0.35-1), gettext, libnet-inet6glue-perl,
-  libtext-multimarkdown-perl, libxml-writer-perl,
-  ghostscript, libmagickcore-extra
-Conflicts: ikiwiki-plugin-table
-Replaces: ikiwiki-plugin-table
-Provides: ikiwiki-plugin-table
-Description: a wiki compiler
+Depends:
+ libhtml-parser-perl,
+ libhtml-scrubber-perl,
+ libhtml-template-perl,
+ libjson-perl,
+ libtext-markdown-discount-perl,
+ liburi-perl (>= 1.36),
+ libyaml-libyaml-perl,
+ ${misc:Depends},
+ ${perl:Depends},
+Recommends:
+ gcc | c-compiler,
+ git (>= 1:1.7) | git-core (>= 1:1.5.0) | subversion | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs,
+ libauthen-passphrase-perl,
+ libc6-dev | libc-dev,
+ libcgi-formbuilder-perl (>= 3.05),
+ libcgi-pm-perl,
+ libcgi-session-perl (>= 4.14-1),
+ libcrypt-ssleay-perl,
+ libgravatar-url-perl,
+ liblwpx-paranoidagent-perl,
+ libmail-sendmail-perl,
+ libnet-openid-consumer-perl,
+ librpc-xml-perl,
+ libterm-readline-gnu-perl,
+ libtimedate-perl,
+ libxml-simple-perl,
+Suggests:
+ dvipng,
+ file,
+ gettext,
+ ghostscript,
+ graphviz,
+ libfile-mimeinfo-perl,
+ libhighlight-perl,
+ libhtml-tree-perl,
+ libimage-magick-perl | perlmagick,
+ liblocale-gettext-perl (>= 1.05-1),
+ libmagickcore-extra,
+ libmailtools-perl,
+ libnet-amazon-s3-perl,
+ libnet-inet6glue-perl,
+ libsearch-xapian-perl,
+ libsort-naturally-perl,
+ libsparkline-php,
+ libtext-csv-perl,
+ libtext-multimarkdown-perl,
+ libtext-textile-perl,
+ libtext-typography-perl,
+ libtext-wikicreole-perl,
+ libtext-wikiformat-perl,
+ libxml-feed-perl,
+ libxml-writer-perl,
+ po4a (>= 0.35-1),
+ polygen,
+ python,
+ python-docutils,
+ texlive,
+ tidy,
+ viewvc | gitweb | viewcvs,
+ xapian-omega (>= 1.0.5),
+Conflicts:
+ ikiwiki-plugin-table,
+Replaces:
+ ikiwiki-plugin-table,
+Provides:
+ ikiwiki-plugin-table,
+Description: wiki compiler
  Ikiwiki converts a directory full of wiki pages into HTML pages suitable
  for publishing on a website. Unlike many wikis, ikiwiki does not have its
  own ad-hoc means of storing page history, and instead uses a revision
index 514910f264860ff14a9f7055a20e525e0e1705c1..28b5aa5911d96dbcf7fda2686df8f51926906f31 100644 (file)
@@ -6,7 +6,7 @@ Copyright: © 2006-2011 Joey Hess <joey@ikiwiki.info>
 License: GPL-2+
 
 Files: templates/* underlays/basewiki/* doc/ikiwiki/directive/*
- ikiwiki.setup po/underlays/*
+ ikiwiki.setup po/underlays/* underlays/javascript/*
 Copyright: © 2006-2010 Joey Hess <joey@ikiwiki.info>
 License: permissive
 
@@ -190,27 +190,27 @@ Comment: These smileys were copied from phpBB.
 
 Files: doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
 Copyright: © 2007 Joey Hess <joeyh@ikiwiki.info>, LinuxWorld.com
-Comment: 
+Comment:
  First published on LinuxWorld.com, a publication of Network World Inc.,
  118 Turnpike Rd., Southboro, MA 01772.
  .
  Republished with permission.
 License: GPL-2+
 
-Files: underlays/openid-selector/ikiwiki/login-selector/*
+Files: underlays/login-selector/ikiwiki/login-selector/*
 Copyright: © 2008-2010 andyjm, david.j.boden
-Comment: 
From http://code.google.com/p/openid-selector/
+Comment:
Based on https://code.google.com/archive/p/openid-selector/
 License: BSD-2-clause
 
-Files: underlays/openid-selector/ikiwiki/login-selector/goa-*
+Files: underlays/login-selector/ikiwiki/login-selector/goa-*
 Copyright:
  © 2011 Red Hat, Inc.
 License: LGPL-2.1+
 Comment:
  taken from data/icons/16x16/ in gnome-online-accounts git
 
-Files: underlays/openid-selector/ikiwiki/login-selector/wordpress.png
+Files: underlays/login-selector/ikiwiki/login-selector/wordpress.png
 Copyright:
  © 2003-2013 "the contributors"
 License: GPL-2+
@@ -222,8 +222,8 @@ Files:
  icons/aol.svg
  icons/livejournal.svg
  icons/verisign.svg
- underlays/openid-selector/ikiwiki/login-selector/aol.png
- underlays/openid-selector/ikiwiki/login-selector/verisign.png
+ underlays/login-selector/ikiwiki/login-selector/aol.png
+ underlays/login-selector/ikiwiki/login-selector/verisign.png
 Copyright:
  © 2014 Simon McVittie
 License: permissive
@@ -330,7 +330,7 @@ License: Expat
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE. 
+ SOFTWARE.
 
 License: LGPL-2.1+
  This library is free software; you can redistribute it and/or
index cb3793191941df05a4a70d25a24c3baa87e7bab9..5989f4c7dd5241efef11c06f8d546c969acd854f 100644 (file)
@@ -1,2 +1,2 @@
-usr/share/ikiwiki/examples usr/share/doc/ikiwiki/examples
 usr/share/common-licenses/GPL-2 usr/share/doc/ikiwiki/html/GPL
+usr/share/ikiwiki/examples usr/share/doc/ikiwiki/examples
diff --git a/debian/tests/pkg-perl/smoke-env b/debian/tests/pkg-perl/smoke-env
new file mode 100644 (file)
index 0000000..7747381
--- /dev/null
@@ -0,0 +1 @@
+INSTALLED_TESTS=1
diff --git a/debian/tests/pkg-perl/syntax-skip b/debian/tests/pkg-perl/syntax-skip
new file mode 100644 (file)
index 0000000..404e431
--- /dev/null
@@ -0,0 +1,4 @@
+IkiWiki/Plugin/amazon_s3.pm
+IkiWiki/Plugin/cvs.pm
+IkiWiki/Plugin/monotone.pm
+IkiWiki/Plugin/po.pm
diff --git a/debian/tests/pkg-perl/use-name b/debian/tests/pkg-perl/use-name
new file mode 100644 (file)
index 0000000..3d60011
--- /dev/null
@@ -0,0 +1 @@
+IkiWiki
diff --git a/doc/bugs/Error_with_external_plugins.mdwn b/doc/bugs/Error_with_external_plugins.mdwn
new file mode 100644 (file)
index 0000000..065439d
--- /dev/null
@@ -0,0 +1,90 @@
+Hello,
+I stumbled upon this bug when writing a Python plugin. I think this is a ikiwiki bug, since I do not think my plugin does anything wrong.
+
+# Example
+
+I set up an example wiki, containing the setup file and the plugin, [[on github|https://github.com/paternal/ikiwiki-rpcbug]].
+
+1. Clone the repository
+
+        git clone https://github.com/paternal/ikiwiki-rpcbug.git
+
+2. Change to the right directory
+
+        cd ikiwiki-rpcbug
+
+2. Add the right ikiwiki directory to PYTHONPATH
+
+        export PYTHONPATH="$PYTHONPATH:$(dirname $(dpkg -L ikiwiki | grep proxy))"
+
+3. Build the wiki
+
+        ikiwiki --setup wiki.setup --rebuild
+
+4. The problem is in page [[http://localhost/~USERNAME/ikiwiki_bug_rpc/foo/]] (for instance, [[http://localhost/~USERNAME/ikiwiki_bug_rpc]] is fine.
+
+# Problem
+
+Page `foo` contains the directive ``[[!rpcbug]]`` (`rpcbug` being the name of the plugin). Calling [[``proxy.rpc("srcfile", "bar")``|https://github.com/paternal/ikiwiki-rpcbug/blob/master/plugins/rpcbug#L15]] in the preprocess function seems to mess up the RPC communication between ikiwiki and the plugin, and the result is that the generate `foo/index.html` page is a text file containing the return value of the `preprocess` call.
+
+What I do not understand is that disabling the `format` function (by commenting [[line 46 of the plugin|https://github.com/paternal/ikiwiki-rpcbug/blob/master/plugins/rpcbug#L46]]) solves the problem. Half of an explaination is that I think that when the the ``proxy.rpc`` function is called, the RPC communication is messed up in such a way that the `format` function is not called, and the return value of `preprocess` is considered to be the whole html code of the resulting page.
+
+> I understood that: as the first rpc call messes up the communication, more rpc calls are messed up, but if there is only one rpc call, not that much is broken. -- [[Louis|spalax]]
+
+I hope someone will understand the problem better than I do, because I have no idea about how to solve this.
+
+Regards,    
+-- [[Louis|spalax]]
+
+> I used the debug feature provided with `proxy.py` and rebuilt the wiki. I ran this with [this version](https://github.com/paternal/ikiwiki-rpcbug/tree/b4ba34a8edd1b97989965af69eddac050bc0a8ba) of my minimal bug example.
+> 
+> * The bug happens in function [preprocess](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/plugins/rpcbug#L12-17) (in call to [srcfile](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/plugins/rpcbug#L15), to be more precise).
+> * The directive causing the bug is called on page [foo](https://github.com/paternal/ikiwiki-rpcbug/blob/b4ba34a8edd1b97989965af69eddac050bc0a8ba/foo.mdwn).
+> * Communication between Ikiwiki and the plugin is [[here|debug]].
+> * The resulting HTML (for page `foo`) looks like:
+> 
+> > \[[!rpcbug Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay]]
+> >
+> >
+> > Calling srcfile(foo): page    
+> > Calling srcfile(README.md): /home/louis/projets/ikiwiki/rpcbug/README.md
+> 
+> My analysis:
+> 
+> * The call to `srcfile(foo)` fails (because Ikiwiki thinks that page `foo` does not exist).
+> * Ikiwiki thinks that processing of the directive is finished, whereas the plugin still waits for the answer of Ikiwiki.
+> * Ikiwiki asks the plugin to render a new directive, but the plugin interprets the request as the return value for its previous request. Thus, the plugin thinks that `srcfile(foo)` is `page` (this `page` being a misinterpretation of the Ikiwiki request).
+> 
+> So, I think that this might be an error in the
+> [`rpc_call`](https://github.com/joeyh/ikiwiki/blob/9476e2ac7ad2f53643fa2fca6ba35fcc55ab058e/IkiWiki/Plugin/external.pm#L46-147)
+> function of the `external` plugin: when the called method fails, it should
+> return something (or raise an exception, if this is possible in RPC) to notify
+> the plugin that something went wrong.
+> 
+> -- [[Louis|spalax]]
+
+>> Update: This can actually be a [proxy](https://github.com/joeyh/ikiwiki/blob/9c910a76e70111c50ba8cbb518277f809fc1d09d/plugins/proxy.py) error. Indeed:
+>> 
+>> - Ikiwiki sends a `methodCall` message to the plugin (which is a call to the
+>>   `preprocess` function);
+>> - the plugin sends a `methodCall` message to ikiwiki (which is a call to the
+>>   `srcfile` function);
+>> - Ikiwiki answers with a `methodCall` message:
+>>   - Ikiwiki answers this because the function call failed, and it is already
+>>     processing the next directive;
+>>   - the plugin thinks that it is its request answer, and misinterprets it.
+>> 
+>> Thus, I think that the bug is in the `proxy.py` python file. On receiving a
+>> `methodCall` (instead of a `methodResponse`) as an answer to a `methodCall`
+>> request, `proxy.py` should notice the type of request, and call the requested function.
+>> 
+>> I know Python better than I know Perl, so I can try to fix this.
+>> 
+>> -- [[Louis|spalax]]
+
+>>> [[!template id=gitbranch author="[[Louis|spalax]]" branch=spalax/paternal/rpcbug
+>>>   browse=https://github.com/paternal/ikiwiki/tree/paternal/rpcbug]]
+>>> [I fixed this bug](https://github.com/paternal/ikiwiki/commit/32da347566a7559ca1ef145880efe961dbcc012f) in a branch on my Ikiwiki clone.
+>>> Please review :)
+>>> 
+>>> -- [[Louis|spalax]]
diff --git a/doc/bugs/Error_with_external_plugins/debug.mdwn b/doc/bugs/Error_with_external_plugins/debug.mdwn
new file mode 100644 (file)
index 0000000..b927e44
--- /dev/null
@@ -0,0 +1,7737 @@
+Trace of the `proxy.py` package during ikiwiki build. Look for the `preprocess` call and response for interesting stuff.
+
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>import</methodName><params></params></methodCall>
+    ]
+    rpcbug:_importme:330: importing...
+    rpcbug:_importme:333: hooking rpcbug/getsetup into getsetup chain...
+    rpcbug:send_rpc:161: calling ikiwiki procedure `hook': ["<?xml version='1.0'?>\n<methodCall>\n<methodName>hook</methodName>\n<params>\n<param>\n<value><string>call</string></value>\n</param>\n<param>\n<value><string>getsetup</string></value>\n</param>\n<param>\n<value><string>type</string></value>\n</param>\n<param>\n<value><string>getsetup</string></value>\n</param>\n<param>\n<value><string>id</string></value>\n</param>\n<param>\n<value><string>rpcbug</string></value>\n</param>\n<param>\n<value><string>last</string></value>\n</param>\n<param>\n<value><boolean>0</boolean></value>\n</param>\n</params>\n</methodCall>\n"]
+    rpcbug:send_rpc:169: reading response from ikiwiki...
+    rpcbug:send_rpc:178: read response to procedure hook from ikiwiki: ['<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><string>1</string></value></param></params></methodResponse>\n']
+    rpcbug:send_rpc:187: parsed data from response to procedure hook: ['1']
+    rpcbug:_importme:333: hooking rpcbug/preprocess into preprocess chain...
+    rpcbug:send_rpc:161: calling ikiwiki procedure `hook': ["<?xml version='1.0'?>\n<methodCall>\n<methodName>hook</methodName>\n<params>\n<param>\n<value><string>call</string></value>\n</param>\n<param>\n<value><string>preprocess</string></value>\n</param>\n<param>\n<value><string>type</string></value>\n</param>\n<param>\n<value><string>preprocess</string></value>\n</param>\n<param>\n<value><string>id</string></value>\n</param>\n<param>\n<value><string>rpcbug</string></value>\n</param>\n<param>\n<value><string>last</string></value>\n</param>\n<param>\n<value><boolean>0</boolean></value>\n</param>\n</params>\n</methodCall>\n"]
+    rpcbug:send_rpc:169: reading response from ikiwiki...
+    rpcbug:send_rpc:178: read response to procedure hook from ikiwiki: ['<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><string>1</string></value></param></params></methodResponse>\n']
+    rpcbug:send_rpc:187: parsed data from response to procedure hook: ['1']
+    rpcbug:_importme:333: hooking rpcbug/format into format chain...
+    rpcbug:send_rpc:161: calling ikiwiki procedure `hook': ["<?xml version='1.0'?>\n<methodCall>\n<methodName>hook</methodName>\n<params>\n<param>\n<value><string>call</string></value>\n</param>\n<param>\n<value><string>format</string></value>\n</param>\n<param>\n<value><string>type</string></value>\n</param>\n<param>\n<value><string>format</string></value>\n</param>\n<param>\n<value><string>id</string></value>\n</param>\n<param>\n<value><string>rpcbug</string></value>\n</param>\n<param>\n<value><string>last</string></value>\n</param>\n<param>\n<value><boolean>0</boolean></value>\n</param>\n</params>\n</methodCall>\n"]
+    rpcbug:send_rpc:169: reading response from ikiwiki...
+    rpcbug:send_rpc:178: read response to procedure hook from ikiwiki: ['<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><string>1</string></value></param></params></methodResponse>\n']
+    rpcbug:send_rpc:187: parsed data from response to procedure hook: ['1']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><struct>
+    <member>
+    <name>null</name>
+    <value><string></string></value>
+    </member>
+    </struct></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    Omission du fichier au nom incorrect wiki.setup~
+    Omission du fichier au nom incorrect index.mdwn~
+    Omission du fichier au nom incorrect README.md~
+    Omission du fichier au nom incorrect foo.mdwn~
+    Omission du fichier au nom incorrect plugins/evariste~
+    Omission du fichier au nom incorrect plugins/rpcbug~
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>preprocess</methodName><params><param><value><string>page</string></value></param><param><value><string>foo</string></value></param><param><value><string>destpage</string></value></param><param><value><string>foo</string></value></param><param><value><string>preview</string></value></param><param><value><string>0</string></value></param></params></methodCall>
+    ]
+    rpcbug:send_rpc:161: calling ikiwiki procedure `srcfile': ["<?xml version='1.0'?>\n<methodCall>\n<methodName>srcfile</methodName>\n<params>\n<param>\n<value><string>foo</string></value>\n</param>\n</params>\n</methodCall>\n"]
+    rpcbug:send_rpc:169: reading response from ikiwiki...
+    rpcbug:send_rpc:178: read response to procedure srcfile from ikiwiki: ['<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>preprocess</methodName><params><param><value><string>page</string></value></param><param><value><string>foo</string></value></param><param><value><string>destpage</string></value></param><param><value><string>foo</string></value></param><param><value><string>preview</string></value></param><param><value><string>0</string></value></param></params></methodCall>\n']
+    rpcbug:send_rpc:187: parsed data from response to procedure srcfile: ['page']
+    rpcbug:send_rpc:161: calling ikiwiki procedure `srcfile': ["<?xml version='1.0'?>\n<methodCall>\n<methodName>srcfile</methodName>\n<params>\n<param>\n<value><string>README.md</string></value>\n</param>\n</params>\n</methodCall>\n"]
+    rpcbug:send_rpc:169: reading response from ikiwiki...
+    rpcbug:send_rpc:178: read response to procedure srcfile from ikiwiki: ['<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><string>/home/louis/projets/ikiwiki/rpcbug/README.md</string></value></param></params></methodResponse>\n']
+    rpcbug:send_rpc:187: parsed data from response to procedure srcfile: ['/home/louis/projets/ikiwiki/rpcbug/README.md']
+    rpcbug:hook_proxy:262: preprocess hook `preprocess' returned: ['<br/>* Calling `srcfile(foo)`: page<br/>* Calling `srcfile(README.md)`: /home/louis/projets/ikiwiki/rpcbug/README.md']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;br/&gt;* Calling `srcfile(foo)`: page&lt;br/&gt;* Calling `srcfile(README.md)`: /home/louis/projets/ikiwiki/rpcbug/README.md</string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>foo</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;foo&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=foo&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    foo
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=foo&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;\[[!rpcbug &lt;span class=&quot;error&quot;&gt;Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay&lt;/span&gt;]]&lt;/p&gt;
+    
+    &lt;p&gt;&lt;br /&gt;&lt;em&gt; Calling &lt;code&gt;srcfile(foo)&lt;/code&gt;: page&lt;br /&gt;&lt;/em&gt; Calling &lt;code&gt;srcfile(README.md)&lt;/code&gt;: /home/louis/projets/ikiwiki/rpcbug/README.md&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;index&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2015-06-28T18:16:57Z&quot;&gt;28/06/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2015-06-15T01:35:13Z&quot; pubdate=&quot;pubdate&quot;&gt;15/06/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>foo</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=foo" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\nfoo\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=foo" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>\[[!rpcbug <span class="error">Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay</span>]]</p>\n\n<p><br /><em> Calling <code>srcfile(foo)</code>: page<br /></em> Calling <code>srcfile(README.md)</code>: /home/louis/projets/ikiwiki/rpcbug/README.md</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">index</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2015-06-28T18:16:57Z">28/06/2015</time>\n<!-- Created <time datetime="2015-06-15T01:35:13Z" pubdate="pubdate">15/06/2015</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;foo&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=foo" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    foo
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=foo" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;\[[!rpcbug &lt;span class="error"&gt;Erreur: internal error: foo cannot be found in /home/louis/projets/ikiwiki/rpcbug or underlay&lt;/span&gt;]]&lt;/p&gt;
+    
+    &lt;p&gt;&lt;br /&gt;&lt;em&gt; Calling &lt;code&gt;srcfile(foo)&lt;/code&gt;: page&lt;br /&gt;&lt;/em&gt; Calling &lt;code&gt;srcfile(README.md)&lt;/code&gt;: /home/louis/projets/ikiwiki/rpcbug/README.md&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;index&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2015-06-28T18:16:57Z"&gt;28/06/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2015-06-15T01:35:13Z" pubdate="pubdate"&gt;15/06/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>index</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;RPC Bug&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=index&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    RPC Bug
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=index&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;./recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Hello, world!&lt;/p&gt;
+    
+    &lt;p&gt;Page causing the error : &lt;a href=&quot;./foo/&quot;&gt;foo&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2015-06-15T01:35:13Z&quot;&gt;15/06/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2015-06-15T01:35:13Z&quot; pubdate=&quot;pubdate&quot;&gt;15/06/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>RPC Bug</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="style.css" type="text/css" />\n\n<link rel="stylesheet" href="local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=index" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n</span>\n<span class="title">\nRPC Bug\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=index" rel="nofollow">Edit</a></li>\n\n\n<li><a href="./recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Hello, world!</p>\n\n<p>Page causing the error : <a href="./foo/">foo</a></p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2015-06-15T01:35:13Z">15/06/2015</time>\n<!-- Created <time datetime="2015-06-15T01:35:13Z" pubdate="pubdate">15/06/2015</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;RPC Bug&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=index" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    RPC Bug
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=index" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="./recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Hello, world!&lt;/p&gt;
+    
+    &lt;p&gt;Page causing the error : &lt;a href="./foo/"&gt;foo&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2015-06-15T01:35:13Z"&gt;15/06/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2015-06-15T01:35:13Z" pubdate="pubdate"&gt;15/06/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>sandbox</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;sandbox&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=sandbox&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    sandbox
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=sandbox&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This is the SandBox, a page anyone can edit to learn how to use the wiki.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;Here&apos;s a paragraph.&lt;/p&gt;
+    
+    &lt;p&gt;Here&apos;s another one with &lt;em&gt;emphasised&lt;/em&gt; text.&lt;/p&gt;
+    
+    &lt;h1&gt;Header&lt;/h1&gt;
+    
+    &lt;h2&gt;Subheader&lt;/h2&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;This is a blockquote.&lt;/p&gt;
+    
+    &lt;p&gt;This is the first level of quoting.&lt;/p&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;This is nested blockquote.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;Back to the first level.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;Numbered list&lt;/p&gt;
+    
+    &lt;ol&gt;
+    &lt;li&gt;First item.&lt;/li&gt;
+    &lt;li&gt;Another.&lt;/li&gt;
+    &lt;li&gt;And another..&lt;/li&gt;
+    &lt;/ol&gt;
+    
+    
+    &lt;p&gt;Bulleted list&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;em&gt;item&lt;/em&gt;&lt;/li&gt;
+    &lt;li&gt;item&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;&lt;a href=&quot;../ikiwiki/wikilink/&quot;&gt;WikiLink&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../ikiwiki/wikilink/&quot;&gt;ikiwiki/wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>sandbox</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=sandbox" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\nsandbox\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=sandbox" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This is the SandBox, a page anyone can edit to learn how to use the wiki.</p>\n\n<hr />\n\n<p>Here\'s a paragraph.</p>\n\n<p>Here\'s another one with <em>emphasised</em> text.</p>\n\n<h1>Header</h1>\n\n<h2>Subheader</h2>\n\n<blockquote><p>This is a blockquote.</p>\n\n<p>This is the first level of quoting.</p>\n\n<blockquote><p>This is nested blockquote.</p></blockquote>\n\n<p>Back to the first level.</p></blockquote>\n\n<p>Numbered list</p>\n\n<ol>\n<li>First item.</li>\n<li>Another.</li>\n<li>And another..</li>\n</ol>\n\n\n<p>Bulleted list</p>\n\n<ul>\n<li><em>item</em></li>\n<li>item</li>\n</ul>\n\n\n<p><a href="../ikiwiki/wikilink/">WikiLink</a></p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../ikiwiki/wikilink/">ikiwiki/wikilink</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;sandbox&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=sandbox" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    sandbox
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=sandbox" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This is the SandBox, a page anyone can edit to learn how to use the wiki.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;Here's a paragraph.&lt;/p&gt;
+    
+    &lt;p&gt;Here's another one with &lt;em&gt;emphasised&lt;/em&gt; text.&lt;/p&gt;
+    
+    &lt;h1&gt;Header&lt;/h1&gt;
+    
+    &lt;h2&gt;Subheader&lt;/h2&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;This is a blockquote.&lt;/p&gt;
+    
+    &lt;p&gt;This is the first level of quoting.&lt;/p&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;This is nested blockquote.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;Back to the first level.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;Numbered list&lt;/p&gt;
+    
+    &lt;ol&gt;
+    &lt;li&gt;First item.&lt;/li&gt;
+    &lt;li&gt;Another.&lt;/li&gt;
+    &lt;li&gt;And another..&lt;/li&gt;
+    &lt;/ol&gt;
+    
+    
+    &lt;p&gt;Bulleted list&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;em&gt;item&lt;/em&gt;&lt;/li&gt;
+    &lt;li&gt;item&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;&lt;a href="../ikiwiki/wikilink/"&gt;WikiLink&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../ikiwiki/wikilink/"&gt;ikiwiki/wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;ikiwiki&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    ikiwiki
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki is powered by &lt;a href=&quot;http://ikiwiki.info/&quot;&gt;ikiwiki&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Some documentation on using ikiwiki:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;a href=&quot;./formatting/&quot;&gt;formatting&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./wikilink/&quot;&gt;wikilink&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./subpage/&quot;&gt;subpage&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./pagespec/&quot;&gt;pagespec&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./directive/&quot;&gt;directive&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./markdown/&quot;&gt;markdown&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./openid/&quot;&gt;openid&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;./searching/&quot;&gt;searching&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href=&quot;../templates/&quot;&gt;templates&lt;/a&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../templates/&quot;&gt;templates&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>ikiwiki</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\nikiwiki\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki is powered by <a href="http://ikiwiki.info/">ikiwiki</a>.</p>\n\n<p>Some documentation on using ikiwiki:</p>\n\n<ul>\n<li><a href="./formatting/">formatting</a></li>\n<li><a href="./wikilink/">wikilink</a></li>\n<li><a href="./subpage/">subpage</a></li>\n<li><a href="./pagespec/">pagespec</a></li>\n<li><a href="./directive/">directive</a></li>\n<li><a href="./markdown/">markdown</a></li>\n<li><a href="./openid/">openid</a></li>\n<li><a href="./searching/">searching</a></li>\n<li><a href="../templates/">templates</a></li>\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../templates/">templates</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;ikiwiki&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    ikiwiki
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki is powered by &lt;a href="http://ikiwiki.info/"&gt;ikiwiki&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Some documentation on using ikiwiki:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;a href="./formatting/"&gt;formatting&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./wikilink/"&gt;wikilink&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./subpage/"&gt;subpage&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./pagespec/"&gt;pagespec&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./directive/"&gt;directive&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./markdown/"&gt;markdown&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./openid/"&gt;openid&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="./searching/"&gt;searching&lt;/a&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;a href="../templates/"&gt;templates&lt;/a&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../templates/"&gt;templates&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>templates</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;templates&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    templates
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;&lt;a href=&quot;../ikiwiki/&quot;&gt;Ikiwiki&lt;/a&gt; uses many templates for many purposes. By editing its templates,
+    you can fully customise its appearance, and avoid duplicate content.&lt;/p&gt;
+    
+    &lt;p&gt;Ikiwiki uses the HTML::Template module as its template engine. This
+    supports things like conditionals and loops in templates and is pretty
+    easy to learn. All you really need to know to modify templates is this:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;To insert the value of a template variable, use &lt;code&gt;&amp;lt;TMPL_VAR variable&amp;gt;&lt;/code&gt;.&lt;/li&gt;
+    &lt;li&gt;To make a block of text conditional on a variable being set use
+    &lt;code&gt;&amp;lt;TMPL_IF variable&amp;gt;text&amp;lt;/TMPL_IF&amp;gt;&lt;/code&gt;.&lt;/li&gt;
+    &lt;li&gt;To use one block of text if a variable is set and a second if it&apos;s not,
+    use &lt;code&gt;&amp;lt;TMPL_IF variable&amp;gt;text&amp;lt;TMPL_ELSE&amp;gt;other text&amp;lt;/TMPL_IF&amp;gt;&lt;/code&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;If the template does not contain a &lt;code&gt;templatebody&lt;/code&gt; directive, the entire
+    source of the page is used for the template. This is deprecated.&lt;/p&gt;
+    
+    &lt;h2&gt;template files&lt;/h2&gt;
+    
+    &lt;p&gt;Template files are unlike template pages in that they have the extension
+    &lt;code&gt;.tmpl&lt;/code&gt;. Template files are used extensively by Ikiwiki to generate html.
+    They can contain html that would not normally be allowed on a wiki page.&lt;/p&gt;
+    
+    &lt;p&gt;Template files are located in &lt;code&gt;/usr/share/ikiwiki/templates&lt;/code&gt; by default;
+    the &lt;code&gt;templatedir&lt;/code&gt; setting can be used to make another directory be
+    searched first. Customised template files can also be placed inside the
+    &quot;templates/&quot; directory in your wiki&apos;s source -- files placed there override
+    ones in the &lt;code&gt;templatedir&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Here is a full list of the template files used:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;page.tmpl&lt;/code&gt; - Used for displaying all regular wiki pages. This is the
+    key template to customise to change the look and feel of Ikiwiki.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;rsspage.tmpl&lt;/code&gt; - Used for generating rss feeds for blogs.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;rssitem.tmpl&lt;/code&gt; - Used for generating individual items on rss feeds.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;atompage.tmpl&lt;/code&gt; - Used for generating atom feeds for blogs.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;atomitem.tmpl&lt;/code&gt; - Used for generating individual items on atom feeds.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;inlinepage.tmpl&lt;/code&gt; - Used for displaying a post in a blog.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;archivepage.tmpl&lt;/code&gt; - Used for listing a page in a blog archive page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;titlepage.tmpl&lt;/code&gt; - Used for listing a page by title in a blog archive page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;microblog.tmpl&lt;/code&gt; - Used for showing a microblogging post inline.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;blogpost.tmpl&lt;/code&gt; - Used for a form to add a post to a blog (and rss/atom links)&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;feedlink.tmpl&lt;/code&gt; - Used to add rss/atom links if &lt;code&gt;blogpost.tmpl&lt;/code&gt; is not used.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;aggregatepost.tmpl&lt;/code&gt; - Used by the aggregate plugin to create
+    a page for a post.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;searchform.tmpl&lt;/code&gt;, &lt;code&gt;googleform.tmpl&lt;/code&gt; - Used by the search plugin
+    and google plugin to add search forms to wiki pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;searchquery.tmpl&lt;/code&gt; - This is a Omega template, used by the
+    search plugin.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;comment.tmpl&lt;/code&gt; - Used by the comments plugin to display a comment.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;change.tmpl&lt;/code&gt; - Used to create a page describing a change made to the wiki.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;recentchanges.tmpl&lt;/code&gt; - Used for listing a change on the RecentChanges page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;autoindex.tmpl&lt;/code&gt; - Filled in by the autoindex plugin to make index pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;autotag.tmpl&lt;/code&gt; - Filled in by the tag plugin to make tag pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;calendarmonth.tmpl&lt;/code&gt;, &lt;code&gt;calendaryear.tmpl&lt;/code&gt; - Used by ikiwiki-calendar to
+    make calendar archive pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;trails.tmpl&lt;/code&gt; - Used by the trail plugin to generate links on each page
+    that is a member of a trail.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;notifyemail.tmpl&lt;/code&gt; - Used by the notifymail plugin to generate mails about
+    changed pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;editpage.tmpl&lt;/code&gt;, &lt;code&gt;editconflict.tmpl&lt;/code&gt;, &lt;code&gt;editcreationconflict.tmpl&lt;/code&gt;,
+    &lt;code&gt;editfailedsave.tmpl&lt;/code&gt;, &lt;code&gt;editpagegone.tmpl&lt;/code&gt;, &lt;code&gt;pocreatepage.tmpl&lt;/code&gt;,
+    &lt;code&gt;editcomment.tmpl&lt;/code&gt; &lt;code&gt;commentmoderation.tmpl&lt;/code&gt;, &lt;code&gt;renamesummary.tmpl&lt;/code&gt;,
+    &lt;code&gt;passwordmail.tmpl&lt;/code&gt;, &lt;code&gt;emailauth.tmpl,&lt;/code&gt;login-selector.tmpl&lt;code&gt;,
+    &lt;/code&gt;revert.tmpl` - Parts of ikiwiki&apos;s user interface; do not normally need
+    to be customised.&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../ikiwiki/&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;../ikiwiki/formatting/&quot;&gt;ikiwiki/formatting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2015-05-14T01:15:08Z&quot;&gt;14/05/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2015-05-14T01:15:08Z&quot; pubdate=&quot;pubdate&quot;&gt;14/05/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>templates</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\ntemplates\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p><a href="../ikiwiki/">Ikiwiki</a> uses many templates for many purposes. By editing its templates,\nyou can fully customise its appearance, and avoid duplicate content.</p>\n\n<p>Ikiwiki uses the HTML::Template module as its template engine. This\nsupports things like conditionals and loops in templates and is pretty\neasy to learn. All you really need to know to modify templates is this:</p>\n\n<ul>\n<li>To insert the value of a template variable, use <code>&lt;TMPL_VAR variable&gt;</code>.</li>\n<li>To make a block of text conditional on a variable being set use\n<code>&lt;TMPL_IF variable&gt;text&lt;/TMPL_IF&gt;</code>.</li>\n<li>To use one block of text if a variable is set and a second if it\'s not,\nuse <code>&lt;TMPL_IF variable&gt;text&lt;TMPL_ELSE&gt;other text&lt;/TMPL_IF&gt;</code></li>\n</ul>\n\n\n<p>If the template does not contain a <code>templatebody</code> directive, the entire\nsource of the page is used for the template. This is deprecated.</p>\n\n<h2>template files</h2>\n\n<p>Template files are unlike template pages in that they have the extension\n<code>.tmpl</code>. Template files are used extensively by Ikiwiki to generate html.\nThey can contain html that would not normally be allowed on a wiki page.</p>\n\n<p>Template files are located in <code>/usr/share/ikiwiki/templates</code> by default;\nthe <code>templatedir</code> setting can be used to make another directory be\nsearched first. Customised template files can also be placed inside the\n"templates/" directory in your wiki\'s source -- files placed there override\nones in the <code>templatedir</code>.</p>\n\n<p>Here is a full list of the template files used:</p>\n\n<ul>\n<li><p><code>page.tmpl</code> - Used for displaying all regular wiki pages. This is the\nkey template to customise to change the look and feel of Ikiwiki.</p></li>\n<li><p><code>rsspage.tmpl</code> - Used for generating rss feeds for blogs.</p></li>\n<li><code>rssitem.tmpl</code> - Used for generating individual items on rss feeds.</li>\n<li><code>atompage.tmpl</code> - Used for generating atom feeds for blogs.</li>\n<li><code>atomitem.tmpl</code> - Used for generating individual items on atom feeds.</li>\n<li><code>inlinepage.tmpl</code> - Used for displaying a post in a blog.</li>\n<li><code>archivepage.tmpl</code> - Used for listing a page in a blog archive page.</li>\n<li><code>titlepage.tmpl</code> - Used for listing a page by title in a blog archive page.</li>\n<li><code>microblog.tmpl</code> - Used for showing a microblogging post inline.</li>\n<li><code>blogpost.tmpl</code> - Used for a form to add a post to a blog (and rss/atom links)</li>\n<li><code>feedlink.tmpl</code> - Used to add rss/atom links if <code>blogpost.tmpl</code> is not used.</li>\n<li><code>aggregatepost.tmpl</code> - Used by the aggregate plugin to create\na page for a post.</li>\n<li><code>searchform.tmpl</code>, <code>googleform.tmpl</code> - Used by the search plugin\nand google plugin to add search forms to wiki pages.</li>\n<li><code>searchquery.tmpl</code> - This is a Omega template, used by the\nsearch plugin.</li>\n<li><code>comment.tmpl</code> - Used by the comments plugin to display a comment.</li>\n<li><code>change.tmpl</code> - Used to create a page describing a change made to the wiki.</li>\n<li><code>recentchanges.tmpl</code> - Used for listing a change on the RecentChanges page.</li>\n<li><code>autoindex.tmpl</code> - Filled in by the autoindex plugin to make index pages.</li>\n<li><code>autotag.tmpl</code> - Filled in by the tag plugin to make tag pages.</li>\n<li><code>calendarmonth.tmpl</code>, <code>calendaryear.tmpl</code> - Used by ikiwiki-calendar to\nmake calendar archive pages.</li>\n<li><code>trails.tmpl</code> - Used by the trail plugin to generate links on each page\nthat is a member of a trail.</li>\n<li><code>notifyemail.tmpl</code> - Used by the notifymail plugin to generate mails about\nchanged pages.</li>\n<li><code>editpage.tmpl</code>, <code>editconflict.tmpl</code>, <code>editcreationconflict.tmpl</code>,\n<code>editfailedsave.tmpl</code>, <code>editpagegone.tmpl</code>, <code>pocreatepage.tmpl</code>,\n<code>editcomment.tmpl</code> <code>commentmoderation.tmpl</code>, <code>renamesummary.tmpl</code>,\n<code>passwordmail.tmpl</code>, <code>emailauth.tmpl,</code>login-selector.tmpl<code>,\n</code>revert.tmpl` - Parts of ikiwiki\'s user interface; do not normally need\nto be customised.</li>\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../ikiwiki/">ikiwiki</a>\n\n<a href="../ikiwiki/formatting/">ikiwiki/formatting</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2015-05-14T01:15:08Z">14/05/2015</time>\n<!-- Created <time datetime="2015-05-14T01:15:08Z" pubdate="pubdate">14/05/2015</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;templates&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    templates
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;&lt;a href="../ikiwiki/"&gt;Ikiwiki&lt;/a&gt; uses many templates for many purposes. By editing its templates,
+    you can fully customise its appearance, and avoid duplicate content.&lt;/p&gt;
+    
+    &lt;p&gt;Ikiwiki uses the HTML::Template module as its template engine. This
+    supports things like conditionals and loops in templates and is pretty
+    easy to learn. All you really need to know to modify templates is this:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;To insert the value of a template variable, use &lt;code&gt;&amp;lt;TMPL_VAR variable&amp;gt;&lt;/code&gt;.&lt;/li&gt;
+    &lt;li&gt;To make a block of text conditional on a variable being set use
+    &lt;code&gt;&amp;lt;TMPL_IF variable&amp;gt;text&amp;lt;/TMPL_IF&amp;gt;&lt;/code&gt;.&lt;/li&gt;
+    &lt;li&gt;To use one block of text if a variable is set and a second if it's not,
+    use &lt;code&gt;&amp;lt;TMPL_IF variable&amp;gt;text&amp;lt;TMPL_ELSE&amp;gt;other text&amp;lt;/TMPL_IF&amp;gt;&lt;/code&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;If the template does not contain a &lt;code&gt;templatebody&lt;/code&gt; directive, the entire
+    source of the page is used for the template. This is deprecated.&lt;/p&gt;
+    
+    &lt;h2&gt;template files&lt;/h2&gt;
+    
+    &lt;p&gt;Template files are unlike template pages in that they have the extension
+    &lt;code&gt;.tmpl&lt;/code&gt;. Template files are used extensively by Ikiwiki to generate html.
+    They can contain html that would not normally be allowed on a wiki page.&lt;/p&gt;
+    
+    &lt;p&gt;Template files are located in &lt;code&gt;/usr/share/ikiwiki/templates&lt;/code&gt; by default;
+    the &lt;code&gt;templatedir&lt;/code&gt; setting can be used to make another directory be
+    searched first. Customised template files can also be placed inside the
+    "templates/" directory in your wiki's source -- files placed there override
+    ones in the &lt;code&gt;templatedir&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Here is a full list of the template files used:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;page.tmpl&lt;/code&gt; - Used for displaying all regular wiki pages. This is the
+    key template to customise to change the look and feel of Ikiwiki.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;rsspage.tmpl&lt;/code&gt; - Used for generating rss feeds for blogs.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;rssitem.tmpl&lt;/code&gt; - Used for generating individual items on rss feeds.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;atompage.tmpl&lt;/code&gt; - Used for generating atom feeds for blogs.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;atomitem.tmpl&lt;/code&gt; - Used for generating individual items on atom feeds.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;inlinepage.tmpl&lt;/code&gt; - Used for displaying a post in a blog.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;archivepage.tmpl&lt;/code&gt; - Used for listing a page in a blog archive page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;titlepage.tmpl&lt;/code&gt; - Used for listing a page by title in a blog archive page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;microblog.tmpl&lt;/code&gt; - Used for showing a microblogging post inline.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;blogpost.tmpl&lt;/code&gt; - Used for a form to add a post to a blog (and rss/atom links)&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;feedlink.tmpl&lt;/code&gt; - Used to add rss/atom links if &lt;code&gt;blogpost.tmpl&lt;/code&gt; is not used.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;aggregatepost.tmpl&lt;/code&gt; - Used by the aggregate plugin to create
+    a page for a post.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;searchform.tmpl&lt;/code&gt;, &lt;code&gt;googleform.tmpl&lt;/code&gt; - Used by the search plugin
+    and google plugin to add search forms to wiki pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;searchquery.tmpl&lt;/code&gt; - This is a Omega template, used by the
+    search plugin.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;comment.tmpl&lt;/code&gt; - Used by the comments plugin to display a comment.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;change.tmpl&lt;/code&gt; - Used to create a page describing a change made to the wiki.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;recentchanges.tmpl&lt;/code&gt; - Used for listing a change on the RecentChanges page.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;autoindex.tmpl&lt;/code&gt; - Filled in by the autoindex plugin to make index pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;autotag.tmpl&lt;/code&gt; - Filled in by the tag plugin to make tag pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;calendarmonth.tmpl&lt;/code&gt;, &lt;code&gt;calendaryear.tmpl&lt;/code&gt; - Used by ikiwiki-calendar to
+    make calendar archive pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;trails.tmpl&lt;/code&gt; - Used by the trail plugin to generate links on each page
+    that is a member of a trail.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;notifyemail.tmpl&lt;/code&gt; - Used by the notifymail plugin to generate mails about
+    changed pages.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;editpage.tmpl&lt;/code&gt;, &lt;code&gt;editconflict.tmpl&lt;/code&gt;, &lt;code&gt;editcreationconflict.tmpl&lt;/code&gt;,
+    &lt;code&gt;editfailedsave.tmpl&lt;/code&gt;, &lt;code&gt;editpagegone.tmpl&lt;/code&gt;, &lt;code&gt;pocreatepage.tmpl&lt;/code&gt;,
+    &lt;code&gt;editcomment.tmpl&lt;/code&gt; &lt;code&gt;commentmoderation.tmpl&lt;/code&gt;, &lt;code&gt;renamesummary.tmpl&lt;/code&gt;,
+    &lt;code&gt;passwordmail.tmpl&lt;/code&gt;, &lt;code&gt;emailauth.tmpl,&lt;/code&gt;login-selector.tmpl&lt;code&gt;,
+    &lt;/code&gt;revert.tmpl` - Parts of ikiwiki's user interface; do not normally need
+    to be customised.&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../ikiwiki/"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="../ikiwiki/formatting/"&gt;ikiwiki/formatting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2015-05-14T01:15:08Z"&gt;14/05/2015&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2015-05-14T01:15:08Z" pubdate="pubdate"&gt;14/05/2015&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>recentchanges</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;RecentChanges&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=recentchanges&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    RecentChanges
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=recentchanges&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Recent changes to this wiki:&lt;/p&gt;
+    
+    &lt;div  class=&quot;feedlink&quot;&gt;
+    
+    
+    &lt;/div&gt;
+    
+    &lt;div class=&quot;recentchanges&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id=&quot;change-b4ba34a8edd1b97989965af69eddac050bc0a8ba&quot; class=&quot;metadata&quot;&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class=&quot;pagelinks&quot;&gt;
+    
+    
+    
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=foo&quot; rel=&quot;nofollow&quot;&gt;foo&lt;/a&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug&quot; rel=&quot;nofollow&quot;&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class=&quot;committer&quot;&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax&quot; rel=&quot;nofollow&quot;&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class=&quot;committype&quot;&gt;git&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class=&quot;changedate&quot;&gt;&lt;time datetime=&quot;2015-06-28T18:08:33Z&quot;&gt;20:08:33 28/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class=&quot;revert&quot;&gt;
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=b4ba34a8edd1b97989965af69eddac050bc0a8ba&quot; title=&quot;revert&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;../wikiicons/revert.png&quot; alt=&quot;revert&quot; /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;changelog&quot;&gt;
+    
+    
+    Still debugging&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id=&quot;change-203e0121761fc8ec953cd24821291f45afc0b334&quot; class=&quot;metadata&quot;&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class=&quot;pagelinks&quot;&gt;
+    
+    
+    
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug&quot; rel=&quot;nofollow&quot;&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class=&quot;committer&quot;&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax&quot; rel=&quot;nofollow&quot;&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class=&quot;committype&quot;&gt;git&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class=&quot;changedate&quot;&gt;&lt;time datetime=&quot;2015-06-15T01:51:08Z&quot;&gt;03:51:08 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class=&quot;revert&quot;&gt;
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=203e0121761fc8ec953cd24821291f45afc0b334&quot; title=&quot;revert&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;../wikiicons/revert.png&quot; alt=&quot;revert&quot; /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;changelog&quot;&gt;
+    
+    
+    update&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id=&quot;change-8ef7576b628a88b2b3e974e202a16bbeb2251354&quot; class=&quot;metadata&quot;&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class=&quot;pagelinks&quot;&gt;
+    
+    
+    
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug&quot; rel=&quot;nofollow&quot;&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class=&quot;committer&quot;&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax&quot; rel=&quot;nofollow&quot;&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class=&quot;committype&quot;&gt;git&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class=&quot;changedate&quot;&gt;&lt;time datetime=&quot;2015-06-15T01:47:52Z&quot;&gt;03:47:52 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class=&quot;revert&quot;&gt;
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=8ef7576b628a88b2b3e974e202a16bbeb2251354&quot; title=&quot;revert&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;../wikiicons/revert.png&quot; alt=&quot;revert&quot; /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;changelog&quot;&gt;
+    
+    
+    update&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id=&quot;change-9444f53d5b4960dd2560b85d9e8a3d2a77d6db02&quot; class=&quot;metadata&quot;&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class=&quot;pagelinks&quot;&gt;
+    
+    
+    
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=README.md&quot; rel=&quot;nofollow&quot;&gt;README.md&lt;/a&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=foo&quot; rel=&quot;nofollow&quot;&gt;foo&lt;/a&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=index&quot; rel=&quot;nofollow&quot;&gt;index&lt;/a&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug&quot; rel=&quot;nofollow&quot;&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=wiki.setup&quot; rel=&quot;nofollow&quot;&gt;wiki.setup&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class=&quot;committer&quot;&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax&quot; rel=&quot;nofollow&quot;&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class=&quot;committype&quot;&gt;git&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class=&quot;changedate&quot;&gt;&lt;time datetime=&quot;2015-06-15T01:35:13Z&quot;&gt;03:35:13 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class=&quot;revert&quot;&gt;
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=9444f53d5b4960dd2560b85d9e8a3d2a77d6db02&quot; title=&quot;revert&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;../wikiicons/revert.png&quot; alt=&quot;revert&quot; /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;changelog&quot;&gt;
+    
+    
+    Initial commit&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id=&quot;change-35009e6655542601b4570fd4d328f6db1d81409d&quot; class=&quot;metadata&quot;&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class=&quot;pagelinks&quot;&gt;
+    
+    
+    
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=.gitignore&quot; rel=&quot;nofollow&quot;&gt;.gitignore&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class=&quot;committer&quot;&gt;
+    
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax&quot; rel=&quot;nofollow&quot;&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class=&quot;committype&quot;&gt;git&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class=&quot;changedate&quot;&gt;&lt;time datetime=&quot;2015-06-15T00:56:18Z&quot;&gt;02:56:18 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class=&quot;desc&quot;&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class=&quot;revert&quot;&gt;
+    &lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=35009e6655542601b4570fd4d328f6db1d81409d&quot; title=&quot;revert&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;../wikiicons/revert.png&quot; alt=&quot;revert&quot; /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class=&quot;changelog&quot;&gt;
+    
+    
+    initial commit&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>RecentChanges</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=recentchanges" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\nRecentChanges\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=recentchanges" rel="nofollow">Edit</a></li>\n\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Recent changes to this wiki:</p>\n\n<div  class="feedlink">\n\n\n</div>\n\n<div class="recentchanges">\n\n\n\n\n\n\n\n\n\n<div id="change-b4ba34a8edd1b97989965af69eddac050bc0a8ba" class="metadata">\n<span class="desc"><br />Changed pages:</span>\n<span class="pagelinks">\n\n\n\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=foo" rel="nofollow">foo</a>\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=plugins%2Frpcbug" rel="nofollow">plugins/rpcbug</a>\n\n</span>\n<span class="desc"><br />Changed by:</span>\n<span class="committer">\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=spalax" rel="nofollow">spalax</a>\n\n</span>\n<span class="desc"><br />Commit type:</span>\n<span class="committype">git</span>\n<span class="desc"><br />Date:</span>\n<span class="changedate"><time datetime="2015-06-28T18:08:33Z">20:08:33 28/06/2015</time></span>\n<span class="desc"><br /></span>\n<span class="revert">\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;rev=b4ba34a8edd1b97989965af69eddac050bc0a8ba" title="revert" rel="nofollow"><img src="../wikiicons/revert.png" alt="revert" /></a>\n</span>\n</div>\n<div class="changelog">\n\n\nStill debugging<br />\n\n\n</div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div id="change-203e0121761fc8ec953cd24821291f45afc0b334" class="metadata">\n<span class="desc"><br />Changed pages:</span>\n<span class="pagelinks">\n\n\n\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=plugins%2Frpcbug" rel="nofollow">plugins/rpcbug</a>\n\n</span>\n<span class="desc"><br />Changed by:</span>\n<span class="committer">\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=spalax" rel="nofollow">spalax</a>\n\n</span>\n<span class="desc"><br />Commit type:</span>\n<span class="committype">git</span>\n<span class="desc"><br />Date:</span>\n<span class="changedate"><time datetime="2015-06-15T01:51:08Z">03:51:08 15/06/2015</time></span>\n<span class="desc"><br /></span>\n<span class="revert">\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;rev=203e0121761fc8ec953cd24821291f45afc0b334" title="revert" rel="nofollow"><img src="../wikiicons/revert.png" alt="revert" /></a>\n</span>\n</div>\n<div class="changelog">\n\n\nupdate<br />\n\n\n</div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div id="change-8ef7576b628a88b2b3e974e202a16bbeb2251354" class="metadata">\n<span class="desc"><br />Changed pages:</span>\n<span class="pagelinks">\n\n\n\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=plugins%2Frpcbug" rel="nofollow">plugins/rpcbug</a>\n\n</span>\n<span class="desc"><br />Changed by:</span>\n<span class="committer">\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=spalax" rel="nofollow">spalax</a>\n\n</span>\n<span class="desc"><br />Commit type:</span>\n<span class="committype">git</span>\n<span class="desc"><br />Date:</span>\n<span class="changedate"><time datetime="2015-06-15T01:47:52Z">03:47:52 15/06/2015</time></span>\n<span class="desc"><br /></span>\n<span class="revert">\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;rev=8ef7576b628a88b2b3e974e202a16bbeb2251354" title="revert" rel="nofollow"><img src="../wikiicons/revert.png" alt="revert" /></a>\n</span>\n</div>\n<div class="changelog">\n\n\nupdate<br />\n\n\n</div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div id="change-9444f53d5b4960dd2560b85d9e8a3d2a77d6db02" class="metadata">\n<span class="desc"><br />Changed pages:</span>\n<span class="pagelinks">\n\n\n\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=README.md" rel="nofollow">README.md</a>\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=foo" rel="nofollow">foo</a>\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=index" rel="nofollow">index</a>\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=plugins%2Frpcbug" rel="nofollow">plugins/rpcbug</a>\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=wiki.setup" rel="nofollow">wiki.setup</a>\n\n</span>\n<span class="desc"><br />Changed by:</span>\n<span class="committer">\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=spalax" rel="nofollow">spalax</a>\n\n</span>\n<span class="desc"><br />Commit type:</span>\n<span class="committype">git</span>\n<span class="desc"><br />Date:</span>\n<span class="changedate"><time datetime="2015-06-15T01:35:13Z">03:35:13 15/06/2015</time></span>\n<span class="desc"><br /></span>\n<span class="revert">\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;rev=9444f53d5b4960dd2560b85d9e8a3d2a77d6db02" title="revert" rel="nofollow"><img src="../wikiicons/revert.png" alt="revert" /></a>\n</span>\n</div>\n<div class="changelog">\n\n\nInitial commit<br />\n\n\n</div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div id="change-35009e6655542601b4570fd4d328f6db1d81409d" class="metadata">\n<span class="desc"><br />Changed pages:</span>\n<span class="pagelinks">\n\n\n\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=.gitignore" rel="nofollow">.gitignore</a>\n\n</span>\n<span class="desc"><br />Changed by:</span>\n<span class="committer">\n\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;page=spalax" rel="nofollow">spalax</a>\n\n</span>\n<span class="desc"><br />Commit type:</span>\n<span class="committype">git</span>\n<span class="desc"><br />Date:</span>\n<span class="changedate"><time datetime="2015-06-15T00:56:18Z">02:56:18 15/06/2015</time></span>\n<span class="desc"><br /></span>\n<span class="revert">\n<a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;rev=35009e6655542601b4570fd4d328f6db1d81409d" title="revert" rel="nofollow"><img src="../wikiicons/revert.png" alt="revert" /></a>\n</span>\n</div>\n<div class="changelog">\n\n\ninitial commit<br />\n\n\n</div>\n\n\n\n\n</div>\n\n\n\n\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;RecentChanges&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=recentchanges" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    RecentChanges
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=recentchanges" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Recent changes to this wiki:&lt;/p&gt;
+    
+    &lt;div  class="feedlink"&gt;
+    
+    
+    &lt;/div&gt;
+    
+    &lt;div class="recentchanges"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id="change-b4ba34a8edd1b97989965af69eddac050bc0a8ba" class="metadata"&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class="pagelinks"&gt;
+    
+    
+    
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=foo" rel="nofollow"&gt;foo&lt;/a&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug" rel="nofollow"&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class="committer"&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax" rel="nofollow"&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class="committype"&gt;git&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class="changedate"&gt;&lt;time datetime="2015-06-28T18:08:33Z"&gt;20:08:33 28/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class="revert"&gt;
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=b4ba34a8edd1b97989965af69eddac050bc0a8ba" title="revert" rel="nofollow"&gt;&lt;img src="../wikiicons/revert.png" alt="revert" /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class="changelog"&gt;
+    
+    
+    Still debugging&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id="change-203e0121761fc8ec953cd24821291f45afc0b334" class="metadata"&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class="pagelinks"&gt;
+    
+    
+    
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug" rel="nofollow"&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class="committer"&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax" rel="nofollow"&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class="committype"&gt;git&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class="changedate"&gt;&lt;time datetime="2015-06-15T01:51:08Z"&gt;03:51:08 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class="revert"&gt;
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=203e0121761fc8ec953cd24821291f45afc0b334" title="revert" rel="nofollow"&gt;&lt;img src="../wikiicons/revert.png" alt="revert" /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class="changelog"&gt;
+    
+    
+    update&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id="change-8ef7576b628a88b2b3e974e202a16bbeb2251354" class="metadata"&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class="pagelinks"&gt;
+    
+    
+    
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug" rel="nofollow"&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class="committer"&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax" rel="nofollow"&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class="committype"&gt;git&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class="changedate"&gt;&lt;time datetime="2015-06-15T01:47:52Z"&gt;03:47:52 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class="revert"&gt;
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=8ef7576b628a88b2b3e974e202a16bbeb2251354" title="revert" rel="nofollow"&gt;&lt;img src="../wikiicons/revert.png" alt="revert" /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class="changelog"&gt;
+    
+    
+    update&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id="change-9444f53d5b4960dd2560b85d9e8a3d2a77d6db02" class="metadata"&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class="pagelinks"&gt;
+    
+    
+    
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=README.md" rel="nofollow"&gt;README.md&lt;/a&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=foo" rel="nofollow"&gt;foo&lt;/a&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=index" rel="nofollow"&gt;index&lt;/a&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=plugins%2Frpcbug" rel="nofollow"&gt;plugins/rpcbug&lt;/a&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=wiki.setup" rel="nofollow"&gt;wiki.setup&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class="committer"&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax" rel="nofollow"&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class="committype"&gt;git&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class="changedate"&gt;&lt;time datetime="2015-06-15T01:35:13Z"&gt;03:35:13 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class="revert"&gt;
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=9444f53d5b4960dd2560b85d9e8a3d2a77d6db02" title="revert" rel="nofollow"&gt;&lt;img src="../wikiicons/revert.png" alt="revert" /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class="changelog"&gt;
+    
+    
+    Initial commit&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div id="change-35009e6655542601b4570fd4d328f6db1d81409d" class="metadata"&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed pages:&lt;/span&gt;
+    &lt;span class="pagelinks"&gt;
+    
+    
+    
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=.gitignore" rel="nofollow"&gt;.gitignore&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Changed by:&lt;/span&gt;
+    &lt;span class="committer"&gt;
+    
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=goto&amp;amp;page=spalax" rel="nofollow"&gt;spalax&lt;/a&gt;
+    
+    &lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Commit type:&lt;/span&gt;
+    &lt;span class="committype"&gt;git&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;Date:&lt;/span&gt;
+    &lt;span class="changedate"&gt;&lt;time datetime="2015-06-15T00:56:18Z"&gt;02:56:18 15/06/2015&lt;/time&gt;&lt;/span&gt;
+    &lt;span class="desc"&gt;&lt;br /&gt;&lt;/span&gt;
+    &lt;span class="revert"&gt;
+    &lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=revert&amp;amp;rev=35009e6655542601b4570fd4d328f6db1d81409d" title="revert" rel="nofollow"&gt;&lt;img src="../wikiicons/revert.png" alt="revert" /&gt;&lt;/a&gt;
+    &lt;/span&gt;
+    &lt;/div&gt;
+    &lt;div class="changelog"&gt;
+    
+    
+    initial commit&lt;br /&gt;
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>shortcuts</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;shortcuts&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=shortcuts&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    shortcuts
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=shortcuts&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki has shortcuts &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Some examples of using shortcuts include:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!google  foo]]
+    \[[!wikipedia  War_of_1812]]
+    \[[!debbug  12345]]
+    Check the \[[!google  ikiwiki desc=&quot;google search for %s&quot;]].
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;This page controls what shortcut links the wiki supports.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;\[[!shortcut  name=google url=&quot;https://encrypted.google.com/search?q=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=archive url=&quot;http://web.archive.org/*/%S&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmap url=&quot;https://maps.google.com/maps?q=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmsg url=&quot;https://groups.google.com/groups?selm=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wikipedia url=&quot;https://en.wikipedia.org/wiki/%W&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wikitravel url=&quot;https://wikitravel.org/en/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wiktionary url=&quot;https://en.wiktionary.org/wiki/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debbug url=&quot;http://bugs.debian.org/%S&quot; desc=&quot;Debian bug #%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=deblist url=&quot;https://lists.debian.org/debian-%s&quot; desc=&quot;debian-%s@lists.debian.org&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpkg url=&quot;http://packages.debian.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpkgsid url=&quot;http://packages.debian.org/sid/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpts url=&quot;http://packages.qa.debian.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debmsg url=&quot;https://lists.debian.org/msgid-search/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debrt url=&quot;https://rt.debian.org/Ticket/Display.html?id=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debss url=&quot;http://snapshot.debian.org/package/%s/&quot;]]
+    
+    &lt;ul&gt;
+    &lt;li&gt;Usage: &lt;code&gt;\[[!debss  package]]&lt;/code&gt; or &lt;code&gt;\[[!debss  package/version]]&lt;/code&gt;.  See &lt;a href=&quot;http://snapshot.debian.org/&quot;&gt;http://snapshot.debian.org/&lt;/a&gt; for details.&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debwiki url=&quot;https://wiki.debian.org/%S&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=fdobug url=&quot;https://bugs.freedesktop.org/show_bug.cgi?id=%s&quot; desc=&quot;freedesktop.org bug #%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=fdolist url=&quot;http://lists.freedesktop.org/mailman/listinfo/%s&quot; desc=&quot;%s@lists.freedesktop.org&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gnomebug url=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=%s&quot; desc=&quot;GNOME bug #%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=linuxbug url=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=%s&quot; desc=&quot;Linux bug #%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=mozbug url=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=%s&quot; desc=&quot;Mozilla bug #%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gnulist url=&quot;https://lists.gnu.org/mailman/listinfo/%s&quot; desc=&quot;%s@gnu.org&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=marcmsg url=&quot;http://marc.info/?i=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=marclist url=&quot;http://marc.info/?l=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmane url=&quot;http://dir.gmane.org/gmane.%s&quot; desc=&quot;gmane.%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmanemsg url=&quot;http://mid.gmane.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cpan url=&quot;http://search.cpan.org/search?mode=dist&amp;amp;query=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ctan url=&quot;http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=hoogle url=&quot;http://haskell.org/hoogle/?q=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=iki url=&quot;http://ikiwiki.info/%S/&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ljuser url=&quot;http://%s.livejournal.com/&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=rfc url=&quot;https://www.ietf.org/rfc/rfc%s.txt&quot; desc=&quot;RFC %s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=c2 url=&quot;http://c2.com/cgi/wiki?%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=meatballwiki url=&quot;http://www.usemod.com/cgi-bin/mb.pl?%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=emacswiki url=&quot;http://www.emacswiki.org/cgi-bin/wiki/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=haskellwiki url=&quot;http://haskell.org/haskellwiki/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=dict url=&quot;http://www.dict.org/bin/Dict?Form=Dict1&amp;amp;Strategy=&lt;em&gt;&amp;amp;Database=&lt;/em&gt;&amp;amp;Query=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=imdb url=&quot;http://imdb.com/find?q=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gpg url=&quot;http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&amp;amp;exact=on&amp;amp;search=0x%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=perldoc url=&quot;http://perldoc.perl.org/search.html?q=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=whois url=&quot;http://reports.internic.net/cgi/whois?whois_nic=%s&amp;amp;type=domain&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cve url=&quot;https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=flickr url=&quot;https://secure.flickr.com/photos/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=man url=&quot;http://manpages.debian.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ohloh url=&quot;https://www.ohloh.net/p/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cpanrt url=&quot;https://rt.cpan.org/Ticket/Display.html?id=%s&quot; desc=&quot;CPAN RT#%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=novellbug url=&quot;https://bugzilla.novell.com/show_bug.cgi?id=%s&quot; desc=&quot;bug %s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ubupkg url=&quot;http://packages.ubuntu.com/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=mozillazinekb url=&quot;http://kb.mozillazine.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=freebsdwiki url=&quot;http://wiki.freebsd.org/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=hackage url=&quot;http://hackage.haskell.org/package/%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=pkgsrc url=&quot;http://pkgsrc.se/%S&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=doi url=&quot;http://dx.doi.org/%s&quot; desc=&quot;doi:%s&quot;]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=arxiv url=&quot;http://arxiv.org/abs/%s&quot; desc=&quot;arXiv:%s&quot;]]&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;To add a new shortcut, use the &lt;code&gt;shortcut&lt;/code&gt;
+    &lt;a href=&quot;../ikiwiki/directive/&quot;&gt;directive&lt;/a&gt;. In the url, &quot;%s&quot; is replaced with the
+    text passed to the named shortcut, after \[[!wikipedia  url_encoding]]
+    it, and &apos;%S&apos; is replaced with the raw, non-encoded text.
+    Additionally, &lt;code&gt;%W&lt;/code&gt; is replaced with the text encoded just right for
+    Wikipedia. The optional &lt;code&gt;desc&lt;/code&gt; parameter controls the description of
+    the link.&lt;/p&gt;
+    
+    &lt;p&gt;Remember that the &lt;code&gt;name&lt;/code&gt; you give the shortcut will become a new
+    &lt;a href=&quot;../ikiwiki/directive/&quot;&gt;directive&lt;/a&gt;.  Avoid using a &lt;code&gt;name&lt;/code&gt; that conflicts
+    with an existing directive.  These directives also accept a &lt;code&gt;desc&lt;/code&gt;
+    parameter that will override the one provided at definition time.&lt;/p&gt;
+    
+    &lt;p&gt;If you come up with a shortcut that you think others might find useful,
+    consider contributing it to the &lt;a href=&quot;http://ikiwiki.info/shortcuts/&quot;&gt;shortcuts page on the ikiwiki
+    wiki&lt;/a&gt;, so that future versions of
+    ikiwiki will include your shortcut in the standard underlay.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../ikiwiki/formatting/&quot;&gt;ikiwiki/formatting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-26T22:55:09Z&quot;&gt;27/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-26T22:55:09Z&quot; pubdate=&quot;pubdate&quot;&gt;27/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>shortcuts</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=shortcuts" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../">RPC Bug</a>/ \n\n</span>\n<span class="title">\nshortcuts\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=shortcuts" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki has shortcuts <strong>disabled</strong>.</p>\n\n<p>Some examples of using shortcuts include:</p>\n\n<pre><code>\[[!google  foo]]\n\[[!wikipedia  War_of_1812]]\n\[[!debbug  12345]]\nCheck the \[[!google  ikiwiki desc="google search for %s"]].\n</code></pre>\n\n<p>This page controls what shortcut links the wiki supports.</p>\n\n<ul>\n<li>\[[!shortcut  name=google url="https://encrypted.google.com/search?q=%s"]]</li>\n<li>\[[!shortcut  name=archive url="http://web.archive.org/*/%S"]]</li>\n<li>\[[!shortcut  name=gmap url="https://maps.google.com/maps?q=%s"]]</li>\n<li>\[[!shortcut  name=gmsg url="https://groups.google.com/groups?selm=%s"]]</li>\n<li>\[[!shortcut  name=wikipedia url="https://en.wikipedia.org/wiki/%W"]]</li>\n<li>\[[!shortcut  name=wikitravel url="https://wikitravel.org/en/%s"]]</li>\n<li>\[[!shortcut  name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]</li>\n<li>\[[!shortcut  name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]</li>\n<li>\[[!shortcut  name=deblist url="https://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]</li>\n<li>\[[!shortcut  name=debpkg url="http://packages.debian.org/%s"]]</li>\n<li>\[[!shortcut  name=debpkgsid url="http://packages.debian.org/sid/%s"]]</li>\n<li>\[[!shortcut  name=debpts url="http://packages.qa.debian.org/%s"]]</li>\n<li>\[[!shortcut  name=debmsg url="https://lists.debian.org/msgid-search/%s"]]</li>\n<li>\[[!shortcut  name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]</li>\n<li>\[[!shortcut  name=debss url="http://snapshot.debian.org/package/%s/"]]\n\n<ul>\n<li>Usage: <code>\[[!debss  package]]</code> or <code>\[[!debss  package/version]]</code>.  See <a href="http://snapshot.debian.org/">http://snapshot.debian.org/</a> for details.</li>\n</ul>\n</li>\n<li>\[[!shortcut  name=debwiki url="https://wiki.debian.org/%S"]]</li>\n<li>\[[!shortcut  name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]</li>\n<li>\[[!shortcut  name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]</li>\n<li>\[[!shortcut  name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]</li>\n<li>\[[!shortcut  name=linuxbug url="https://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]</li>\n<li>\[[!shortcut  name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]</li>\n<li>\[[!shortcut  name=gnulist url="https://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]</li>\n<li>\[[!shortcut  name=marcmsg url="http://marc.info/?i=%s"]]</li>\n<li>\[[!shortcut  name=marclist url="http://marc.info/?l=%s"]]</li>\n<li>\[[!shortcut  name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]</li>\n<li>\[[!shortcut  name=gmanemsg url="http://mid.gmane.org/%s"]]</li>\n<li>\[[!shortcut  name=cpan url="http://search.cpan.org/search?mode=dist&amp;query=%s"]]</li>\n<li>\[[!shortcut  name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]</li>\n<li>\[[!shortcut  name=hoogle url="http://haskell.org/hoogle/?q=%s"]]</li>\n<li>\[[!shortcut  name=iki url="http://ikiwiki.info/%S/"]]</li>\n<li>\[[!shortcut  name=ljuser url="http://%s.livejournal.com/"]]</li>\n<li>\[[!shortcut  name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]</li>\n<li>\[[!shortcut  name=c2 url="http://c2.com/cgi/wiki?%s"]]</li>\n<li>\[[!shortcut  name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]</li>\n<li>\[[!shortcut  name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]</li>\n<li>\[[!shortcut  name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]</li>\n<li>\[[!shortcut  name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&amp;Strategy=<em>&amp;Database=</em>&amp;Query=%s"]]</li>\n<li>\[[!shortcut  name=imdb url="http://imdb.com/find?q=%s"]]</li>\n<li>\[[!shortcut  name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&amp;exact=on&amp;search=0x%s"]]</li>\n<li>\[[!shortcut  name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]</li>\n<li>\[[!shortcut  name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&amp;type=domain"]]</li>\n<li>\[[!shortcut  name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]</li>\n<li>\[[!shortcut  name=flickr url="https://secure.flickr.com/photos/%s"]]</li>\n<li>\[[!shortcut  name=man url="http://manpages.debian.org/%s"]]</li>\n<li>\[[!shortcut  name=ohloh url="https://www.ohloh.net/p/%s"]]</li>\n<li>\[[!shortcut  name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]</li>\n<li>\[[!shortcut  name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]</li>\n<li>\[[!shortcut  name=ubupkg url="http://packages.ubuntu.com/%s"]]</li>\n<li>\[[!shortcut  name=mozillazinekb url="http://kb.mozillazine.org/%s"]]</li>\n<li>\[[!shortcut  name=freebsdwiki url="http://wiki.freebsd.org/%s"]]</li>\n<li>\[[!shortcut  name=hackage url="http://hackage.haskell.org/package/%s"]]</li>\n<li>\[[!shortcut  name=pkgsrc url="http://pkgsrc.se/%S"]]</li>\n<li>\[[!shortcut  name=doi url="http://dx.doi.org/%s" desc="doi:%s"]]</li>\n<li>\[[!shortcut  name=arxiv url="http://arxiv.org/abs/%s" desc="arXiv:%s"]]</li>\n</ul>\n\n\n<p>To add a new shortcut, use the <code>shortcut</code>\n<a href="../ikiwiki/directive/">directive</a>. In the url, "%s" is replaced with the\ntext passed to the named shortcut, after \[[!wikipedia  url_encoding]]\nit, and \'%S\' is replaced with the raw, non-encoded text.\nAdditionally, <code>%W</code> is replaced with the text encoded just right for\nWikipedia. The optional <code>desc</code> parameter controls the description of\nthe link.</p>\n\n<p>Remember that the <code>name</code> you give the shortcut will become a new\n<a href="../ikiwiki/directive/">directive</a>.  Avoid using a <code>name</code> that conflicts\nwith an existing directive.  These directives also accept a <code>desc</code>\nparameter that will override the one provided at definition time.</p>\n\n<p>If you come up with a shortcut that you think others might find useful,\nconsider contributing it to the <a href="http://ikiwiki.info/shortcuts/">shortcuts page on the ikiwiki\nwiki</a>, so that future versions of\nikiwiki will include your shortcut in the standard underlay.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../ikiwiki/formatting/">ikiwiki/formatting</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-26T22:55:09Z">27/09/2014</time>\n<!-- Created <time datetime="2014-09-26T22:55:09Z" pubdate="pubdate">27/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;shortcuts&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=shortcuts" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    shortcuts
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=shortcuts" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki has shortcuts &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Some examples of using shortcuts include:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!google  foo]]
+    \[[!wikipedia  War_of_1812]]
+    \[[!debbug  12345]]
+    Check the \[[!google  ikiwiki desc="google search for %s"]].
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;This page controls what shortcut links the wiki supports.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;\[[!shortcut  name=google url="https://encrypted.google.com/search?q=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=archive url="http://web.archive.org/*/%S"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmap url="https://maps.google.com/maps?q=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmsg url="https://groups.google.com/groups?selm=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wikipedia url="https://en.wikipedia.org/wiki/%W"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wikitravel url="https://wikitravel.org/en/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=deblist url="https://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpkg url="http://packages.debian.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpkgsid url="http://packages.debian.org/sid/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debpts url="http://packages.qa.debian.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debmsg url="https://lists.debian.org/msgid-search/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debss url="http://snapshot.debian.org/package/%s/"]]
+    
+    &lt;ul&gt;
+    &lt;li&gt;Usage: &lt;code&gt;\[[!debss  package]]&lt;/code&gt; or &lt;code&gt;\[[!debss  package/version]]&lt;/code&gt;.  See &lt;a href="http://snapshot.debian.org/"&gt;http://snapshot.debian.org/&lt;/a&gt; for details.&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=debwiki url="https://wiki.debian.org/%S"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=linuxbug url="https://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gnulist url="https://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=marcmsg url="http://marc.info/?i=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=marclist url="http://marc.info/?l=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gmanemsg url="http://mid.gmane.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cpan url="http://search.cpan.org/search?mode=dist&amp;amp;query=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=hoogle url="http://haskell.org/hoogle/?q=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=iki url="http://ikiwiki.info/%S/"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ljuser url="http://%s.livejournal.com/"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=c2 url="http://c2.com/cgi/wiki?%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&amp;amp;Strategy=&lt;em&gt;&amp;amp;Database=&lt;/em&gt;&amp;amp;Query=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=imdb url="http://imdb.com/find?q=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&amp;amp;exact=on&amp;amp;search=0x%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&amp;amp;type=domain"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=flickr url="https://secure.flickr.com/photos/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=man url="http://manpages.debian.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ohloh url="https://www.ohloh.net/p/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=ubupkg url="http://packages.ubuntu.com/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=mozillazinekb url="http://kb.mozillazine.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=freebsdwiki url="http://wiki.freebsd.org/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=hackage url="http://hackage.haskell.org/package/%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=pkgsrc url="http://pkgsrc.se/%S"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=doi url="http://dx.doi.org/%s" desc="doi:%s"]]&lt;/li&gt;
+    &lt;li&gt;\[[!shortcut  name=arxiv url="http://arxiv.org/abs/%s" desc="arXiv:%s"]]&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;To add a new shortcut, use the &lt;code&gt;shortcut&lt;/code&gt;
+    &lt;a href="../ikiwiki/directive/"&gt;directive&lt;/a&gt;. In the url, "%s" is replaced with the
+    text passed to the named shortcut, after \[[!wikipedia  url_encoding]]
+    it, and '%S' is replaced with the raw, non-encoded text.
+    Additionally, &lt;code&gt;%W&lt;/code&gt; is replaced with the text encoded just right for
+    Wikipedia. The optional &lt;code&gt;desc&lt;/code&gt; parameter controls the description of
+    the link.&lt;/p&gt;
+    
+    &lt;p&gt;Remember that the &lt;code&gt;name&lt;/code&gt; you give the shortcut will become a new
+    &lt;a href="../ikiwiki/directive/"&gt;directive&lt;/a&gt;.  Avoid using a &lt;code&gt;name&lt;/code&gt; that conflicts
+    with an existing directive.  These directives also accept a &lt;code&gt;desc&lt;/code&gt;
+    parameter that will override the one provided at definition time.&lt;/p&gt;
+    
+    &lt;p&gt;If you come up with a shortcut that you think others might find useful,
+    consider contributing it to the &lt;a href="http://ikiwiki.info/shortcuts/"&gt;shortcuts page on the ikiwiki
+    wiki&lt;/a&gt;, so that future versions of
+    ikiwiki will include your shortcut in the standard underlay.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../ikiwiki/formatting/"&gt;ikiwiki/formatting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-26T22:55:09Z"&gt;27/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-26T22:55:09Z" pubdate="pubdate"&gt;27/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>templates/note</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;note&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fnote&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;templates&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    note
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fnote&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Use this template to insert a note into a page. The note will be styled to
+    float to the right of other text on the page. This template has one
+    parameter:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;`text` - the text to display in the note
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2013-09-13T09:30:24Z&quot;&gt;13/09/2013&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2013-09-13T09:30:24Z&quot; pubdate=&quot;pubdate&quot;&gt;13/09/2013&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>note</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates%2Fnote" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">templates</a>/ \n\n</span>\n<span class="title">\nnote\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates%2Fnote" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Use this template to insert a note into a page. The note will be styled to\nfloat to the right of other text on the page. This template has one\nparameter:</p>\n\n<ul>\n<li>`text` - the text to display in the note\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2013-09-13T09:30:24Z">13/09/2013</time>\n<!-- Created <time datetime="2013-09-13T09:30:24Z" pubdate="pubdate">13/09/2013</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;note&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fnote" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;templates&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    note
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fnote" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Use this template to insert a note into a page. The note will be styled to
+    float to the right of other text on the page. This template has one
+    parameter:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;`text` - the text to display in the note
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2013-09-13T09:30:24Z"&gt;13/09/2013&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2013-09-13T09:30:24Z" pubdate="pubdate"&gt;13/09/2013&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>templates/popup</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;popup&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fpopup&quot; /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;templates&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    popup
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fpopup&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Use this template to create a popup window that is displayed when the mouse
+    is over part of the page. This template has two parameters:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;`mouseover` - This is the text or other content that triggers the
+    popup.
+    &lt;li&gt;`popup` - This should be the content of the popup window. It can be
+    anything, even images or a whole little wiki page, but should not be too
+    large for good usability.
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;Note that browsers that do not support the CSS will display the popup
+    inline in the page, inside square brackets.&lt;/p&gt;
+    
+    &lt;p&gt;\[[templatebody &amp;lt;
+    &lt;span class=&quot;paren&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;balloon&quot;&gt;&lt;/span&gt;&lt;span class=&quot;paren&quot;&gt;]&lt;/span&gt;
+    &lt;/span&gt;
+    ENDBODY]]&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2013-09-13T09:30:24Z&quot;&gt;13/09/2013&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2013-09-13T09:30:24Z&quot; pubdate=&quot;pubdate&quot;&gt;13/09/2013&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>popup</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates%2Fpopup" />\n\n\n\n\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">templates</a>/ \n\n</span>\n<span class="title">\npopup\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=templates%2Fpopup" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Use this template to create a popup window that is displayed when the mouse\nis over part of the page. This template has two parameters:</p>\n\n<ul>\n<li>`mouseover` - This is the text or other content that triggers the\npopup.\n<li>`popup` - This should be the content of the popup window. It can be\nanything, even images or a whole little wiki page, but should not be too\nlarge for good usability.\n</ul>\n\n\n<p>Note that browsers that do not support the CSS will display the popup\ninline in the page, inside square brackets.</p>\n\n<p>\[[templatebody &lt;\n<span class="paren">[</span><span class="balloon"></span><span class="paren">]</span>\n</span>\nENDBODY]]</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2013-09-13T09:30:24Z">13/09/2013</time>\n<!-- Created <time datetime="2013-09-13T09:30:24Z" pubdate="pubdate">13/09/2013</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;popup&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fpopup" /&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;templates&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    popup
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=templates%2Fpopup" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Use this template to create a popup window that is displayed when the mouse
+    is over part of the page. This template has two parameters:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;`mouseover` - This is the text or other content that triggers the
+    popup.
+    &lt;li&gt;`popup` - This should be the content of the popup window. It can be
+    anything, even images or a whole little wiki page, but should not be too
+    large for good usability.
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;Note that browsers that do not support the CSS will display the popup
+    inline in the page, inside square brackets.&lt;/p&gt;
+    
+    &lt;p&gt;\[[templatebody &amp;lt;
+    &lt;span class="paren"&gt;[&lt;/span&gt;&lt;span class="balloon"&gt;&lt;/span&gt;&lt;span class="paren"&gt;]&lt;/span&gt;
+    &lt;/span&gt;
+    ENDBODY]]&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2013-09-13T09:30:24Z"&gt;13/09/2013&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2013-09-13T09:30:24Z" pubdate="pubdate"&gt;13/09/2013&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/directive</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;directive&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fdirective&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    directive
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fdirective&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Directives are similar to a &lt;a href=&quot;../wikilink/&quot;&gt;WikiLink&lt;/a&gt; in form, except they
+    begin with &lt;code&gt;!&lt;/code&gt; and may contain parameters. The general form is:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  param=&quot;value&quot; param=&quot;value&quot;]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;This gets expanded before the rest of the page is processed, and can be used
+    to transform the page in various ways.&lt;/p&gt;
+    
+    &lt;p&gt;The quotes around values can be omitted if the value is a simple word.
+    Also, some directives may use parameters without values, for example:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!tag  foo]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;A directive does not need to all be on one line, it can be
+    wrapped to multiple lines if you like:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  foo=&quot;baldersnatch&quot;
+    bar=&quot;supercalifragilisticexpialidocious&quot; baz=11]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Also, multiple lines of &lt;em&gt;quoted&lt;/em&gt; text can be used for a value.
+    To allow quote marks inside the quoted text, delimit the block
+    of text with triple-double-quotes or triple-single-quotes:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  text=&quot;&quot;&quot;
+    1. &quot;foo&quot;
+    2. &quot;bar&quot;
+    3. &quot;baz&quot;
+    &quot;&quot;&quot; othertext=&apos;&apos;&apos;
+    1. &apos;quux&apos;
+    2. &quot;foo&quot;
+    &apos;&apos;&apos;]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;If you want to put text with triple quotes into a parameter value, you can
+    use perl-style here-doc syntax, even nesting it like this:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  text=&amp;lt;&amp;lt;OUTER
+    \[[!otherdirective &amp;lt;&amp;lt;INNER
+    inner text
+    INNER]]
+    outer text
+    OUTER]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;ikiwiki also has an older syntax for directives, which requires a space in
+    directives to distinguish them from &lt;a href=&quot;../wikilink/&quot;&gt;wikilinks&lt;/a&gt;. This
+    syntax has several disadvantages: it requires a space after directives with
+    no parameters (such as &lt;code&gt;\[[pagecount ]]&lt;/code&gt;), and it prohibits spaces in
+    &lt;a href=&quot;../wikilink/&quot;&gt;wikilinks&lt;/a&gt;.  ikiwiki now provides the &lt;code&gt;!&lt;/code&gt;-prefixed
+    syntax shown above as default.  However, ikiwiki still supports wikis using
+    the older syntax, if the &lt;code&gt;prefix_directives&lt;/code&gt; option is disabled.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../formatting/&quot;&gt;formatting&lt;/a&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;../markdown/&quot;&gt;markdown&lt;/a&gt;
+    
+    &lt;a href=&quot;../pagespec/sorting/&quot;&gt;pagespec/sorting&lt;/a&gt;
+    
+    &lt;a href=&quot;../../shortcuts/&quot;&gt;shortcuts&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>directive</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fdirective" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\ndirective\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fdirective" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Directives are similar to a <a href="../wikilink/">WikiLink</a> in form, except they\nbegin with <code>!</code> and may contain parameters. The general form is:</p>\n\n<pre><code>\[[!directive  param="value" param="value"]]\n</code></pre>\n\n<p>This gets expanded before the rest of the page is processed, and can be used\nto transform the page in various ways.</p>\n\n<p>The quotes around values can be omitted if the value is a simple word.\nAlso, some directives may use parameters without values, for example:</p>\n\n<pre><code>\[[!tag  foo]]\n</code></pre>\n\n<p>A directive does not need to all be on one line, it can be\nwrapped to multiple lines if you like:</p>\n\n<pre><code>\[[!directive  foo="baldersnatch"\nbar="supercalifragilisticexpialidocious" baz=11]]\n</code></pre>\n\n<p>Also, multiple lines of <em>quoted</em> text can be used for a value.\nTo allow quote marks inside the quoted text, delimit the block\nof text with triple-double-quotes or triple-single-quotes:</p>\n\n<pre><code>\[[!directive  text="""\n1. "foo"\n2. "bar"\n3. "baz"\n""" othertext=\'\'\'\n1. \'quux\'\n2. "foo"\n\'\'\']]\n</code></pre>\n\n<p>If you want to put text with triple quotes into a parameter value, you can\nuse perl-style here-doc syntax, even nesting it like this:</p>\n\n<pre><code>\[[!directive  text=&lt;&lt;OUTER\n\[[!otherdirective &lt;&lt;INNER\ninner text\nINNER]]\nouter text\nOUTER]]\n</code></pre>\n\n<p>ikiwiki also has an older syntax for directives, which requires a space in\ndirectives to distinguish them from <a href="../wikilink/">wikilinks</a>. This\nsyntax has several disadvantages: it requires a space after directives with\nno parameters (such as <code>\[[pagecount ]]</code>), and it prohibits spaces in\n<a href="../wikilink/">wikilinks</a>.  ikiwiki now provides the <code>!</code>-prefixed\nsyntax shown above as default.  However, ikiwiki still supports wikis using\nthe older syntax, if the <code>prefix_directives</code> option is disabled.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../formatting/">formatting</a>\n\n<a href="../">ikiwiki</a>\n\n<a href="../markdown/">markdown</a>\n\n<a href="../pagespec/sorting/">pagespec/sorting</a>\n\n<a href="../../shortcuts/">shortcuts</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;directive&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fdirective" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    directive
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fdirective" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Directives are similar to a &lt;a href="../wikilink/"&gt;WikiLink&lt;/a&gt; in form, except they
+    begin with &lt;code&gt;!&lt;/code&gt; and may contain parameters. The general form is:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  param="value" param="value"]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;This gets expanded before the rest of the page is processed, and can be used
+    to transform the page in various ways.&lt;/p&gt;
+    
+    &lt;p&gt;The quotes around values can be omitted if the value is a simple word.
+    Also, some directives may use parameters without values, for example:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!tag  foo]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;A directive does not need to all be on one line, it can be
+    wrapped to multiple lines if you like:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  foo="baldersnatch"
+    bar="supercalifragilisticexpialidocious" baz=11]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Also, multiple lines of &lt;em&gt;quoted&lt;/em&gt; text can be used for a value.
+    To allow quote marks inside the quoted text, delimit the block
+    of text with triple-double-quotes or triple-single-quotes:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  text="""
+    1. "foo"
+    2. "bar"
+    3. "baz"
+    """ othertext='''
+    1. 'quux'
+    2. "foo"
+    ''']]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;If you want to put text with triple quotes into a parameter value, you can
+    use perl-style here-doc syntax, even nesting it like this:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!directive  text=&amp;lt;&amp;lt;OUTER
+    \[[!otherdirective &amp;lt;&amp;lt;INNER
+    inner text
+    INNER]]
+    outer text
+    OUTER]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;ikiwiki also has an older syntax for directives, which requires a space in
+    directives to distinguish them from &lt;a href="../wikilink/"&gt;wikilinks&lt;/a&gt;. This
+    syntax has several disadvantages: it requires a space after directives with
+    no parameters (such as &lt;code&gt;\[[pagecount ]]&lt;/code&gt;), and it prohibits spaces in
+    &lt;a href="../wikilink/"&gt;wikilinks&lt;/a&gt;.  ikiwiki now provides the &lt;code&gt;!&lt;/code&gt;-prefixed
+    syntax shown above as default.  However, ikiwiki still supports wikis using
+    the older syntax, if the &lt;code&gt;prefix_directives&lt;/code&gt; option is disabled.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../formatting/"&gt;formatting&lt;/a&gt;
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="../markdown/"&gt;markdown&lt;/a&gt;
+    
+    &lt;a href="../pagespec/sorting/"&gt;pagespec/sorting&lt;/a&gt;
+    
+    &lt;a href="../../shortcuts/"&gt;shortcuts&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/pagespec</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;pagespec&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    pagespec
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;To select a set of pages, such as pages that are locked, pages
+    whose commit emails you want subscribe to, or pages to combine into a
+    blog, the wiki uses a PageSpec. This is an expression that matches
+    a set of pages.&lt;/p&gt;
+    
+    &lt;p&gt;The simplest PageSpec is a simple list of pages. For example, this matches
+    any of the three listed pages:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;foo or bar or baz
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;More often you will want to match any pages that have a particular thing in
+    their name. You can do this using a glob pattern. &quot;&lt;code&gt;*&lt;/code&gt;&quot; stands for any part
+    of a page name, and &quot;&lt;code&gt;?&lt;/code&gt;&quot; for any single letter of a page name. So this
+    matches all pages about music, and any &lt;a href=&quot;../subpage/&quot;&gt;SubPage&lt;/a&gt;s of the SandBox, but does
+    not match the SandBox itself:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;*music* or SandBox/*
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;You can also prefix an item with &quot;&lt;code&gt;!&lt;/code&gt;&quot; to skip pages that match it. So to
+    match all pages except for Discussion pages and the SandBox:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;* and !SandBox and !*/Discussion
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Some more elaborate limits can be added to what matches using these functions:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&quot;&lt;code&gt;glob(someglob)&lt;/code&gt;&quot; - matches pages and other files that match the given glob.
+    Just writing the glob by itself is actually a shorthand for this function.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;page(glob)&lt;/code&gt;&quot; - like &lt;code&gt;glob()&lt;/code&gt;, but only matches pages, not other files&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;link(page)&lt;/code&gt;&quot; - matches only pages that link to a given page (or glob)&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;tagged(tag)&lt;/code&gt;&quot; - matches pages that are tagged or link to the given tag (or
+    tags matched by a glob)&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;backlink(page)&lt;/code&gt;&quot; - matches only pages that a given page links to&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;creation_month(month)&lt;/code&gt;&quot; - matches only files created on the given month
+    number&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;creation_day(mday)&lt;/code&gt;&quot; - or day of the month&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;creation_year(year)&lt;/code&gt;&quot; - or year&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;created_after(page)&lt;/code&gt;&quot; - matches only files created after the given page
+    was created&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;created_before(page)&lt;/code&gt;&quot; - matches only files created before the given page
+    was created&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;internal(glob)&lt;/code&gt;&quot; - like &lt;code&gt;glob()&lt;/code&gt;, but matches even internal-use
+    pages that globs do not usually match.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;title(glob)&lt;/code&gt;&quot;, &quot;&lt;code&gt;author(glob)&lt;/code&gt;&quot;, &quot;&lt;code&gt;authorurl(glob)&lt;/code&gt;&quot;,
+    &quot;&lt;code&gt;license(glob)&lt;/code&gt;&quot;, &quot;&lt;code&gt;copyright(glob)&lt;/code&gt;&quot;, &quot;&lt;code&gt;guid(glob)&lt;/code&gt;&quot;
+    
+    &lt;ul&gt;
+    &lt;li&gt;match pages that have the given metadata, matching the specified glob.&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;user(username)&lt;/code&gt;&quot; - tests whether a modification is being made by a
+    user with the specified username. If openid is enabled, an openid can also
+    be put here. Glob patterns can be used in the username. For example,
+    to match all openid users, use &lt;code&gt;user(*://*)&lt;/code&gt;&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;admin()&lt;/code&gt;&quot; - tests whether a modification is being made by one of the
+    wiki admins.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;ip(address)&lt;/code&gt;&quot; - tests whether a modification is being made from the
+    specified IP address. Glob patterns can be used in the address. For
+    example, &lt;code&gt;ip(127.0.0.*)&lt;/code&gt;&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;comment(glob)&lt;/code&gt;&quot; - matches comments to a page matching the glob.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;comment_pending(glob)&lt;/code&gt;&quot; - matches unmoderated, pending comments.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;postcomment(glob)&lt;/code&gt;&quot; - matches only when comments are being
+    posted to a page matching the specified glob&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;For example, to match all pages in a blog that link to the page about music
+    and were written in 2005:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;blog/* and link(music) and creation_year(2005)
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Note the use of &quot;and&quot; in the above example, that means that only pages that
+    match each of the three expressions match the whole. Use &quot;and&quot; when you
+    want to combine expression like that; &quot;or&quot; when it&apos;s enough for a page to
+    match one expression. Note that it doesn&apos;t make sense to say &quot;index and
+    SandBox&quot;, since no page can match both expressions.&lt;/p&gt;
+    
+    &lt;p&gt;More complex expressions can also be created, by using parentheses for
+    grouping. For example, to match pages in a blog that are tagged with either
+    of two tags, use:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;blog/* and (tagged(foo) or tagged(bar))
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Note that page names in PageSpecs are matched against the absolute
+    filenames of the pages in the wiki, so a pagespec &quot;foo&quot; used on page
+    &quot;a/b&quot; will not match a page named &quot;a/foo&quot; or &quot;a/b/foo&quot;. To match
+    relative to the directory of the page containing the pagespec, you can
+    use &quot;./&quot;. For example, &quot;./foo&quot; on page &quot;a/b&quot; matches page &quot;a/foo&quot;.&lt;/p&gt;
+    
+    &lt;p&gt;To indicate the name of the page the PageSpec is used in, you can
+    use a single dot. For example, &lt;code&gt;link(.)&lt;/code&gt; matches all the pages
+    linking to the page containing the PageSpec.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;./attachment/&quot;&gt;pagespec/attachment&lt;/a&gt;
+    
+    &lt;a href=&quot;./po/&quot;&gt;pagespec/po&lt;/a&gt;
+    
+    &lt;a href=&quot;./sorting/&quot;&gt;pagespec/sorting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>pagespec</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\npagespec\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>To select a set of pages, such as pages that are locked, pages\nwhose commit emails you want subscribe to, or pages to combine into a\nblog, the wiki uses a PageSpec. This is an expression that matches\na set of pages.</p>\n\n<p>The simplest PageSpec is a simple list of pages. For example, this matches\nany of the three listed pages:</p>\n\n<pre><code>foo or bar or baz\n</code></pre>\n\n<p>More often you will want to match any pages that have a particular thing in\ntheir name. You can do this using a glob pattern. "<code>*</code>" stands for any part\nof a page name, and "<code>?</code>" for any single letter of a page name. So this\nmatches all pages about music, and any <a href="../subpage/">SubPage</a>s of the SandBox, but does\nnot match the SandBox itself:</p>\n\n<pre><code>*music* or SandBox/*\n</code></pre>\n\n<p>You can also prefix an item with "<code>!</code>" to skip pages that match it. So to\nmatch all pages except for Discussion pages and the SandBox:</p>\n\n<pre><code>* and !SandBox and !*/Discussion\n</code></pre>\n\n<p>Some more elaborate limits can be added to what matches using these functions:</p>\n\n<ul>\n<li>"<code>glob(someglob)</code>" - matches pages and other files that match the given glob.\nJust writing the glob by itself is actually a shorthand for this function.</li>\n<li>"<code>page(glob)</code>" - like <code>glob()</code>, but only matches pages, not other files</li>\n<li>"<code>link(page)</code>" - matches only pages that link to a given page (or glob)</li>\n<li>"<code>tagged(tag)</code>" - matches pages that are tagged or link to the given tag (or\ntags matched by a glob)</li>\n<li>"<code>backlink(page)</code>" - matches only pages that a given page links to</li>\n<li>"<code>creation_month(month)</code>" - matches only files created on the given month\nnumber</li>\n<li>"<code>creation_day(mday)</code>" - or day of the month</li>\n<li>"<code>creation_year(year)</code>" - or year</li>\n<li>"<code>created_after(page)</code>" - matches only files created after the given page\nwas created</li>\n<li>"<code>created_before(page)</code>" - matches only files created before the given page\nwas created</li>\n<li>"<code>internal(glob)</code>" - like <code>glob()</code>, but matches even internal-use\npages that globs do not usually match.</li>\n<li>"<code>title(glob)</code>", "<code>author(glob)</code>", "<code>authorurl(glob)</code>",\n"<code>license(glob)</code>", "<code>copyright(glob)</code>", "<code>guid(glob)</code>"\n\n<ul>\n<li>match pages that have the given metadata, matching the specified glob.</li>\n</ul>\n</li>\n<li>"<code>user(username)</code>" - tests whether a modification is being made by a\nuser with the specified username. If openid is enabled, an openid can also\nbe put here. Glob patterns can be used in the username. For example,\nto match all openid users, use <code>user(*://*)</code></li>\n<li>"<code>admin()</code>" - tests whether a modification is being made by one of the\nwiki admins.</li>\n<li>"<code>ip(address)</code>" - tests whether a modification is being made from the\nspecified IP address. Glob patterns can be used in the address. For\nexample, <code>ip(127.0.0.*)</code></li>\n<li>"<code>comment(glob)</code>" - matches comments to a page matching the glob.</li>\n<li>"<code>comment_pending(glob)</code>" - matches unmoderated, pending comments.</li>\n<li>"<code>postcomment(glob)</code>" - matches only when comments are being\nposted to a page matching the specified glob</li>\n</ul>\n\n\n<p>For example, to match all pages in a blog that link to the page about music\nand were written in 2005:</p>\n\n<pre><code>blog/* and link(music) and creation_year(2005)\n</code></pre>\n\n<p>Note the use of "and" in the above example, that means that only pages that\nmatch each of the three expressions match the whole. Use "and" when you\nwant to combine expression like that; "or" when it\'s enough for a page to\nmatch one expression. Note that it doesn\'t make sense to say "index and\nSandBox", since no page can match both expressions.</p>\n\n<p>More complex expressions can also be created, by using parentheses for\ngrouping. For example, to match pages in a blog that are tagged with either\nof two tags, use:</p>\n\n<pre><code>blog/* and (tagged(foo) or tagged(bar))\n</code></pre>\n\n<p>Note that page names in PageSpecs are matched against the absolute\nfilenames of the pages in the wiki, so a pagespec "foo" used on page\n"a/b" will not match a page named "a/foo" or "a/b/foo". To match\nrelative to the directory of the page containing the pagespec, you can\nuse "./". For example, "./foo" on page "a/b" matches page "a/foo".</p>\n\n<p>To indicate the name of the page the PageSpec is used in, you can\nuse a single dot. For example, <code>link(.)</code> matches all the pages\nlinking to the page containing the PageSpec.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">ikiwiki</a>\n\n<a href="./attachment/">pagespec/attachment</a>\n\n<a href="./po/">pagespec/po</a>\n\n<a href="./sorting/">pagespec/sorting</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;pagespec&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    pagespec
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;To select a set of pages, such as pages that are locked, pages
+    whose commit emails you want subscribe to, or pages to combine into a
+    blog, the wiki uses a PageSpec. This is an expression that matches
+    a set of pages.&lt;/p&gt;
+    
+    &lt;p&gt;The simplest PageSpec is a simple list of pages. For example, this matches
+    any of the three listed pages:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;foo or bar or baz
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;More often you will want to match any pages that have a particular thing in
+    their name. You can do this using a glob pattern. "&lt;code&gt;*&lt;/code&gt;" stands for any part
+    of a page name, and "&lt;code&gt;?&lt;/code&gt;" for any single letter of a page name. So this
+    matches all pages about music, and any &lt;a href="../subpage/"&gt;SubPage&lt;/a&gt;s of the SandBox, but does
+    not match the SandBox itself:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;*music* or SandBox/*
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;You can also prefix an item with "&lt;code&gt;!&lt;/code&gt;" to skip pages that match it. So to
+    match all pages except for Discussion pages and the SandBox:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;* and !SandBox and !*/Discussion
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Some more elaborate limits can be added to what matches using these functions:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;"&lt;code&gt;glob(someglob)&lt;/code&gt;" - matches pages and other files that match the given glob.
+    Just writing the glob by itself is actually a shorthand for this function.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;page(glob)&lt;/code&gt;" - like &lt;code&gt;glob()&lt;/code&gt;, but only matches pages, not other files&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;link(page)&lt;/code&gt;" - matches only pages that link to a given page (or glob)&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;tagged(tag)&lt;/code&gt;" - matches pages that are tagged or link to the given tag (or
+    tags matched by a glob)&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;backlink(page)&lt;/code&gt;" - matches only pages that a given page links to&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;creation_month(month)&lt;/code&gt;" - matches only files created on the given month
+    number&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;creation_day(mday)&lt;/code&gt;" - or day of the month&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;creation_year(year)&lt;/code&gt;" - or year&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;created_after(page)&lt;/code&gt;" - matches only files created after the given page
+    was created&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;created_before(page)&lt;/code&gt;" - matches only files created before the given page
+    was created&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;internal(glob)&lt;/code&gt;" - like &lt;code&gt;glob()&lt;/code&gt;, but matches even internal-use
+    pages that globs do not usually match.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;title(glob)&lt;/code&gt;", "&lt;code&gt;author(glob)&lt;/code&gt;", "&lt;code&gt;authorurl(glob)&lt;/code&gt;",
+    "&lt;code&gt;license(glob)&lt;/code&gt;", "&lt;code&gt;copyright(glob)&lt;/code&gt;", "&lt;code&gt;guid(glob)&lt;/code&gt;"
+    
+    &lt;ul&gt;
+    &lt;li&gt;match pages that have the given metadata, matching the specified glob.&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;user(username)&lt;/code&gt;" - tests whether a modification is being made by a
+    user with the specified username. If openid is enabled, an openid can also
+    be put here. Glob patterns can be used in the username. For example,
+    to match all openid users, use &lt;code&gt;user(*://*)&lt;/code&gt;&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;admin()&lt;/code&gt;" - tests whether a modification is being made by one of the
+    wiki admins.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;ip(address)&lt;/code&gt;" - tests whether a modification is being made from the
+    specified IP address. Glob patterns can be used in the address. For
+    example, &lt;code&gt;ip(127.0.0.*)&lt;/code&gt;&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;comment(glob)&lt;/code&gt;" - matches comments to a page matching the glob.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;comment_pending(glob)&lt;/code&gt;" - matches unmoderated, pending comments.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;postcomment(glob)&lt;/code&gt;" - matches only when comments are being
+    posted to a page matching the specified glob&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;For example, to match all pages in a blog that link to the page about music
+    and were written in 2005:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;blog/* and link(music) and creation_year(2005)
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Note the use of "and" in the above example, that means that only pages that
+    match each of the three expressions match the whole. Use "and" when you
+    want to combine expression like that; "or" when it's enough for a page to
+    match one expression. Note that it doesn't make sense to say "index and
+    SandBox", since no page can match both expressions.&lt;/p&gt;
+    
+    &lt;p&gt;More complex expressions can also be created, by using parentheses for
+    grouping. For example, to match pages in a blog that are tagged with either
+    of two tags, use:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;blog/* and (tagged(foo) or tagged(bar))
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;Note that page names in PageSpecs are matched against the absolute
+    filenames of the pages in the wiki, so a pagespec "foo" used on page
+    "a/b" will not match a page named "a/foo" or "a/b/foo". To match
+    relative to the directory of the page containing the pagespec, you can
+    use "./". For example, "./foo" on page "a/b" matches page "a/foo".&lt;/p&gt;
+    
+    &lt;p&gt;To indicate the name of the page the PageSpec is used in, you can
+    use a single dot. For example, &lt;code&gt;link(.)&lt;/code&gt; matches all the pages
+    linking to the page containing the PageSpec.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="./attachment/"&gt;pagespec/attachment&lt;/a&gt;
+    
+    &lt;a href="./po/"&gt;pagespec/po&lt;/a&gt;
+    
+    &lt;a href="./sorting/"&gt;pagespec/sorting&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/openid</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;OpenID&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fopenid&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    OpenID
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fopenid&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki has OpenID &lt;strong&gt;enabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;&lt;a href=&quot;http://openid.net&quot;&gt;OpenID&lt;/a&gt; is a decentralized authentication mechanism
+    that allows you to have one login that you can use on a growing number of
+    websites.&lt;/p&gt;
+    
+    &lt;p&gt;If you have an account with some of the larger web service providers,
+    you might already have an OpenID.
+    &lt;a href=&quot;http://openiddirectory.com/openid-providers-c-1.html&quot;&gt;Directory of OpenID providers&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;p&gt;To sign in to this wiki using OpenID, just enter it in the OpenID field in the
+    signin form. You do not need to give this wiki a password or go through any
+    registration process when using OpenID.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;It&apos;s also possible to make a page in the wiki usable as an OpenID url,
+    by delegating it to an openid server. Here&apos;s an example of how to do that:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!meta  openid=&quot;http://yourid.myopenid.com/&quot;
+           server=&quot;http://www.myopenid.com/server&quot;]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>OpenID</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fopenid" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nOpenID\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fopenid" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki has OpenID <strong>enabled</strong>.</p>\n\n<p><a href="http://openid.net">OpenID</a> is a decentralized authentication mechanism\nthat allows you to have one login that you can use on a growing number of\nwebsites.</p>\n\n<p>If you have an account with some of the larger web service providers,\nyou might already have an OpenID.\n<a href="http://openiddirectory.com/openid-providers-c-1.html">Directory of OpenID providers</a></p>\n\n<p>To sign in to this wiki using OpenID, just enter it in the OpenID field in the\nsignin form. You do not need to give this wiki a password or go through any\nregistration process when using OpenID.</p>\n\n<hr />\n\n<p>It\'s also possible to make a page in the wiki usable as an OpenID url,\nby delegating it to an openid server. Here\'s an example of how to do that:</p>\n\n<pre><code>\[[!meta  openid="http://yourid.myopenid.com/"\n       server="http://www.myopenid.com/server"]]\n</code></pre>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">ikiwiki</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;OpenID&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fopenid" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    OpenID
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fopenid" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki has OpenID &lt;strong&gt;enabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;&lt;a href="http://openid.net"&gt;OpenID&lt;/a&gt; is a decentralized authentication mechanism
+    that allows you to have one login that you can use on a growing number of
+    websites.&lt;/p&gt;
+    
+    &lt;p&gt;If you have an account with some of the larger web service providers,
+    you might already have an OpenID.
+    &lt;a href="http://openiddirectory.com/openid-providers-c-1.html"&gt;Directory of OpenID providers&lt;/a&gt;&lt;/p&gt;
+    
+    &lt;p&gt;To sign in to this wiki using OpenID, just enter it in the OpenID field in the
+    signin form. You do not need to give this wiki a password or go through any
+    registration process when using OpenID.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;It's also possible to make a page in the wiki usable as an OpenID url,
+    by delegating it to an openid server. Here's an example of how to do that:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;\[[!meta  openid="http://yourid.myopenid.com/"
+           server="http://www.myopenid.com/server"]]
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/subpage</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;subpage&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    subpage
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;ikiwiki supports placing pages in a directory hierarchy. For example,
+    this page, &lt;span class=&quot;selflink&quot;&gt;SubPage&lt;/span&gt; has some related pages placed under it, like
+    &lt;a href=&quot;./linkingrules/&quot;&gt;LinkingRules&lt;/a&gt;. This is a useful way to add some order to your
+    wiki rather than just having a great big directory full of pages.&lt;/p&gt;
+    
+    &lt;p&gt;To add a SubPage, just make a subdirectory and put pages in it. For
+    example, this page is subpage.mdwn in this wiki&apos;s source, and there is also
+    a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages
+    can be nested as deeply as you&apos;d like.&lt;/p&gt;
+    
+    &lt;p&gt;Linking to and from a SubPage is explained in &lt;a href=&quot;./linkingrules/&quot;&gt;LinkingRules&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;../pagespec/&quot;&gt;pagespec&lt;/a&gt;
+    
+    &lt;a href=&quot;./linkingrules/&quot;&gt;subpage/linkingrules&lt;/a&gt;
+    
+    &lt;a href=&quot;../wikilink/&quot;&gt;wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>subpage</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsubpage" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nsubpage\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsubpage" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>ikiwiki supports placing pages in a directory hierarchy. For example,\nthis page, <span class="selflink">SubPage</span> has some related pages placed under it, like\n<a href="./linkingrules/">LinkingRules</a>. This is a useful way to add some order to your\nwiki rather than just having a great big directory full of pages.</p>\n\n<p>To add a SubPage, just make a subdirectory and put pages in it. For\nexample, this page is subpage.mdwn in this wiki\'s source, and there is also\na subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages\ncan be nested as deeply as you\'d like.</p>\n\n<p>Linking to and from a SubPage is explained in <a href="./linkingrules/">LinkingRules</a>.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">ikiwiki</a>\n\n<a href="../pagespec/">pagespec</a>\n\n<a href="./linkingrules/">subpage/linkingrules</a>\n\n<a href="../wikilink/">wikilink</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;subpage&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    subpage
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;ikiwiki supports placing pages in a directory hierarchy. For example,
+    this page, &lt;span class="selflink"&gt;SubPage&lt;/span&gt; has some related pages placed under it, like
+    &lt;a href="./linkingrules/"&gt;LinkingRules&lt;/a&gt;. This is a useful way to add some order to your
+    wiki rather than just having a great big directory full of pages.&lt;/p&gt;
+    
+    &lt;p&gt;To add a SubPage, just make a subdirectory and put pages in it. For
+    example, this page is subpage.mdwn in this wiki's source, and there is also
+    a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages
+    can be nested as deeply as you'd like.&lt;/p&gt;
+    
+    &lt;p&gt;Linking to and from a SubPage is explained in &lt;a href="./linkingrules/"&gt;LinkingRules&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="../pagespec/"&gt;pagespec&lt;/a&gt;
+    
+    &lt;a href="./linkingrules/"&gt;subpage/linkingrules&lt;/a&gt;
+    
+    &lt;a href="../wikilink/"&gt;wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/markdown</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;markdown&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fmarkdown&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    markdown
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fmarkdown&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;&lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt;
+    is a minimal markup language that resembles plain text as used in
+    email messages. It is the markup language used by this wiki by default.&lt;/p&gt;
+    
+    &lt;p&gt;For documentation about the markdown syntax, see &lt;a href=&quot;../formatting/&quot;&gt;formatting&lt;/a&gt; and
+    &lt;a href=&quot;http://daringfireball.net/projects/markdown/syntax&quot;&gt;Markdown: syntax&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Note that &lt;a href=&quot;../wikilink/&quot;&gt;WikiLinks&lt;/a&gt; and &lt;a href=&quot;../directive/&quot;&gt;directives&lt;/a&gt; are not part
+    of the markdown syntax, and are the only bit of markup that this wiki
+    handles internally.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../formatting/&quot;&gt;formatting&lt;/a&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>markdown</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fmarkdown" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nmarkdown\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fmarkdown" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p><a href="http://daringfireball.net/projects/markdown/">Markdown</a>\nis a minimal markup language that resembles plain text as used in\nemail messages. It is the markup language used by this wiki by default.</p>\n\n<p>For documentation about the markdown syntax, see <a href="../formatting/">formatting</a> and\n<a href="http://daringfireball.net/projects/markdown/syntax">Markdown: syntax</a>.</p>\n\n<p>Note that <a href="../wikilink/">WikiLinks</a> and <a href="../directive/">directives</a> are not part\nof the markdown syntax, and are the only bit of markup that this wiki\nhandles internally.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../formatting/">formatting</a>\n\n<a href="../">ikiwiki</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;markdown&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fmarkdown" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    markdown
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fmarkdown" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;&lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;
+    is a minimal markup language that resembles plain text as used in
+    email messages. It is the markup language used by this wiki by default.&lt;/p&gt;
+    
+    &lt;p&gt;For documentation about the markdown syntax, see &lt;a href="../formatting/"&gt;formatting&lt;/a&gt; and
+    &lt;a href="http://daringfireball.net/projects/markdown/syntax"&gt;Markdown: syntax&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;Note that &lt;a href="../wikilink/"&gt;WikiLinks&lt;/a&gt; and &lt;a href="../directive/"&gt;directives&lt;/a&gt; are not part
+    of the markdown syntax, and are the only bit of markup that this wiki
+    handles internally.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../formatting/"&gt;formatting&lt;/a&gt;
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/wikilink</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;wikilink&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fwikilink&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    wikilink
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fwikilink&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;WikiLinks provide easy linking between pages of the wiki. To create a
+    &lt;span class=&quot;selflink&quot;&gt;WikiLink&lt;/span&gt;, just put the name of the page to link to in double brackets.
+    For example &lt;code&gt;\[[WikiLink]]&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If you ever need to write something like &lt;code&gt;\[[WikiLink]]&lt;/code&gt; without creating a
+    wikilink, just prefix it with a &lt;code&gt;\&lt;/code&gt;, like &lt;code&gt;\\[[WikiLink]]&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;There are some special &lt;a href=&quot;../subpage/linkingrules/&quot;&gt;LinkingRules&lt;/a&gt; that come into play when
+    linking between &lt;a href=&quot;../subpage/&quot;&gt;SubPages&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;WikiLinks are matched with page names in a case-insensitive manner, so you
+    don&apos;t need to worry about getting the case the same, and can capitalise
+    links at the start of a sentence, and so on.&lt;/p&gt;
+    
+    &lt;p&gt;It&apos;s also possible to write a WikiLink that uses something other than the page
+    name as the link text. For example &lt;code&gt;\[[foo_bar|SandBox]]&lt;/code&gt; links to the SandBox
+    page, but the link will appear like this: &lt;a href=&quot;../../sandbox/&quot;&gt;foo bar&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;To link to an anchor inside a page, you can use something like
+    &lt;code&gt;\[[WikiLink#foo]]&lt;/code&gt; .&lt;/p&gt;
+    
+    &lt;p&gt;If the file linked to by a WikiLink looks like an image, it will
+    be displayed inline on the page.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;You can also put an url in a WikiLink, to link to an external page.
+    Email addresses can also be used to generate a mailto link.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../directive/&quot;&gt;directive&lt;/a&gt;
+    
+    &lt;a href=&quot;../formatting/&quot;&gt;formatting&lt;/a&gt;
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;../markdown/&quot;&gt;markdown&lt;/a&gt;
+    
+    &lt;a href=&quot;../../sandbox/&quot;&gt;sandbox&lt;/a&gt;
+    
+    &lt;a href=&quot;../subpage/linkingrules/&quot;&gt;subpage/linkingrules&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>wikilink</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fwikilink" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nwikilink\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fwikilink" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>WikiLinks provide easy linking between pages of the wiki. To create a\n<span class="selflink">WikiLink</span>, just put the name of the page to link to in double brackets.\nFor example <code>\[[WikiLink]]</code>.</p>\n\n<p>If you ever need to write something like <code>\[[WikiLink]]</code> without creating a\nwikilink, just prefix it with a <code>\\</code>, like <code>\\\[[WikiLink]]</code>.</p>\n\n<p>There are some special <a href="../subpage/linkingrules/">LinkingRules</a> that come into play when\nlinking between <a href="../subpage/">SubPages</a>.</p>\n\n<p>WikiLinks are matched with page names in a case-insensitive manner, so you\ndon\'t need to worry about getting the case the same, and can capitalise\nlinks at the start of a sentence, and so on.</p>\n\n<p>It\'s also possible to write a WikiLink that uses something other than the page\nname as the link text. For example <code>\[[foo_bar|SandBox]]</code> links to the SandBox\npage, but the link will appear like this: <a href="../../sandbox/">foo bar</a>.</p>\n\n<p>To link to an anchor inside a page, you can use something like\n<code>\[[WikiLink#foo]]</code> .</p>\n\n<p>If the file linked to by a WikiLink looks like an image, it will\nbe displayed inline on the page.</p>\n\n<hr />\n\n<p>You can also put an url in a WikiLink, to link to an external page.\nEmail addresses can also be used to generate a mailto link.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../directive/">directive</a>\n\n<a href="../formatting/">formatting</a>\n\n<a href="../">ikiwiki</a>\n\n<a href="../markdown/">markdown</a>\n\n<a href="../../sandbox/">sandbox</a>\n\n<a href="../subpage/linkingrules/">subpage/linkingrules</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;wikilink&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fwikilink" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    wikilink
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fwikilink" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;WikiLinks provide easy linking between pages of the wiki. To create a
+    &lt;span class="selflink"&gt;WikiLink&lt;/span&gt;, just put the name of the page to link to in double brackets.
+    For example &lt;code&gt;\[[WikiLink]]&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If you ever need to write something like &lt;code&gt;\[[WikiLink]]&lt;/code&gt; without creating a
+    wikilink, just prefix it with a &lt;code&gt;\&lt;/code&gt;, like &lt;code&gt;\\[[WikiLink]]&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;There are some special &lt;a href="../subpage/linkingrules/"&gt;LinkingRules&lt;/a&gt; that come into play when
+    linking between &lt;a href="../subpage/"&gt;SubPages&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;WikiLinks are matched with page names in a case-insensitive manner, so you
+    don't need to worry about getting the case the same, and can capitalise
+    links at the start of a sentence, and so on.&lt;/p&gt;
+    
+    &lt;p&gt;It's also possible to write a WikiLink that uses something other than the page
+    name as the link text. For example &lt;code&gt;\[[foo_bar|SandBox]]&lt;/code&gt; links to the SandBox
+    page, but the link will appear like this: &lt;a href="../../sandbox/"&gt;foo bar&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;To link to an anchor inside a page, you can use something like
+    &lt;code&gt;\[[WikiLink#foo]]&lt;/code&gt; .&lt;/p&gt;
+    
+    &lt;p&gt;If the file linked to by a WikiLink looks like an image, it will
+    be displayed inline on the page.&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;You can also put an url in a WikiLink, to link to an external page.
+    Email addresses can also be used to generate a mailto link.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../directive/"&gt;directive&lt;/a&gt;
+    
+    &lt;a href="../formatting/"&gt;formatting&lt;/a&gt;
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="../markdown/"&gt;markdown&lt;/a&gt;
+    
+    &lt;a href="../../sandbox/"&gt;sandbox&lt;/a&gt;
+    
+    &lt;a href="../subpage/linkingrules/"&gt;subpage/linkingrules&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/formatting</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;Formatting wiki pages&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fformatting&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    Formatting wiki pages
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fformatting&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Text on this wiki is, by default, written in a form very close to how you
+    might write text for an email message. This style of text formatting is
+    called &lt;a href=&quot;../markdown/&quot;&gt;MarkDown&lt;/a&gt;, and it works like this:&lt;/p&gt;
+    
+    &lt;p&gt;Leave blank lines between paragraphs.&lt;/p&gt;
+    
+    &lt;p&gt;You can &lt;em&gt;*emphasise*&lt;/em&gt; or &lt;strong&gt;**strongly emphasise**&lt;/strong&gt; text by placing it
+    in single or double asterisks.&lt;/p&gt;
+    
+    &lt;p&gt;To create a list, start each line with an asterisk:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&quot;* this is my list&quot;&lt;/li&gt;
+    &lt;li&gt;&quot;* another item&quot;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;To make a numbered list, start each line with a number (any number will
+    do) followed by a period:&lt;/p&gt;
+    
+    &lt;ol&gt;
+    &lt;li&gt;&quot;1. first line&quot;&lt;/li&gt;
+    &lt;li&gt;&quot;2. second line&quot;&lt;/li&gt;
+    &lt;li&gt;&quot;2. third line&quot;&lt;/li&gt;
+    &lt;/ol&gt;
+    
+    
+    &lt;p&gt;To create a header, start a line with one or more &lt;code&gt;#&lt;/code&gt; characters followed
+    by a space and the header text. The number of &lt;code&gt;#&lt;/code&gt; characters controls the
+    size of the header:&lt;/p&gt;
+    
+    &lt;h1&gt;# h1&lt;/h1&gt;
+    
+    &lt;h2&gt;## h2&lt;/h2&gt;
+    
+    &lt;h3&gt;### h3&lt;/h3&gt;
+    
+    &lt;h4&gt;#### h4&lt;/h4&gt;
+    
+    &lt;h5&gt;##### h5&lt;/h5&gt;
+    
+    &lt;h6&gt;###### h6&lt;/h6&gt;
+    
+    &lt;p&gt;To create a horizontal rule, just write three or more dashes or stars on
+    their own line:&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;To quote someone, prefix the quote with &quot;&amp;gt;&quot;:&lt;/p&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;To be or not to be,
+    that is the question.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;To write a code block, indent each line with a tab or 4 spaces:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;10 PRINT &quot;Hello, world!&quot;
+    20 GOTO 10
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;To link to an url or email address, you can just put the
+    url in angle brackets: &amp;lt;&lt;a href=&quot;http://ikiwiki.info&quot;&gt;http://ikiwiki.info&lt;/a&gt;&amp;gt;, or you can use the
+    form [link text](url)&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;In addition to basic html formatting using &lt;a href=&quot;../markdown/&quot;&gt;MarkDown&lt;/a&gt;, this wiki lets
+    you use the following additional features:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;To link to another page on the wiki, place the page&apos;s name inside double
+    square brackets. So you would use &lt;code&gt;\[[WikiLink]]&lt;/code&gt; to link to &lt;a href=&quot;../wikilink/&quot;&gt;WikiLink&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;Insert various &lt;a href=&quot;../directive/&quot;&gt;directives&lt;/a&gt; onto a page to perform useful
+    actions.
+    For example, you can:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;Change the title of a page:&lt;/p&gt;
+    
+    &lt;p&gt;\[[!meta  title=&quot;full page title&quot;]]&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;Create a blog by inlining a set of pages:&lt;/p&gt;
+    
+    &lt;p&gt;\[[!inline  pages=&quot;blog/*&quot;]]&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href=&quot;../markdown/&quot;&gt;markdown&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-10-09T18:31:33Z&quot;&gt;09/10/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-10-09T18:31:33Z&quot; pubdate=&quot;pubdate&quot;&gt;09/10/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>Formatting wiki pages</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fformatting" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nFormatting wiki pages\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fformatting" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Text on this wiki is, by default, written in a form very close to how you\nmight write text for an email message. This style of text formatting is\ncalled <a href="../markdown/">MarkDown</a>, and it works like this:</p>\n\n<p>Leave blank lines between paragraphs.</p>\n\n<p>You can <em>*emphasise*</em> or <strong>**strongly emphasise**</strong> text by placing it\nin single or double asterisks.</p>\n\n<p>To create a list, start each line with an asterisk:</p>\n\n<ul>\n<li>"* this is my list"</li>\n<li>"* another item"</li>\n</ul>\n\n\n<p>To make a numbered list, start each line with a number (any number will\ndo) followed by a period:</p>\n\n<ol>\n<li>"1. first line"</li>\n<li>"2. second line"</li>\n<li>"2. third line"</li>\n</ol>\n\n\n<p>To create a header, start a line with one or more <code>#</code> characters followed\nby a space and the header text. The number of <code>#</code> characters controls the\nsize of the header:</p>\n\n<h1># h1</h1>\n\n<h2>## h2</h2>\n\n<h3>### h3</h3>\n\n<h4>#### h4</h4>\n\n<h5>##### h5</h5>\n\n<h6>###### h6</h6>\n\n<p>To create a horizontal rule, just write three or more dashes or stars on\ntheir own line:</p>\n\n<hr />\n\n<p>To quote someone, prefix the quote with "&gt;":</p>\n\n<blockquote><p>To be or not to be,\nthat is the question.</p></blockquote>\n\n<p>To write a code block, indent each line with a tab or 4 spaces:</p>\n\n<pre><code>10 PRINT "Hello, world!"\n20 GOTO 10\n</code></pre>\n\n<p>To link to an url or email address, you can just put the\nurl in angle brackets: &lt;<a href="http://ikiwiki.info">http://ikiwiki.info</a>&gt;, or you can use the\nform [link text](url)</p>\n\n<hr />\n\n<p>In addition to basic html formatting using <a href="../markdown/">MarkDown</a>, this wiki lets\nyou use the following additional features:</p>\n\n<ul>\n<li><p>To link to another page on the wiki, place the page\'s name inside double\nsquare brackets. So you would use <code>\[[WikiLink]]</code> to link to <a href="../wikilink/">WikiLink</a>.</p></li>\n<li><p>Insert various <a href="../directive/">directives</a> onto a page to perform useful\nactions.\nFor example, you can:</p>\n\n<ul>\n<li><p>Change the title of a page:</p>\n\n<p>\[[!meta  title="full page title"]]</p></li>\n<li><p>Create a blog by inlining a set of pages:</p>\n\n<p>\[[!inline  pages="blog/*"]]</p></li>\n</ul>\n</li>\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">ikiwiki</a>\n\n<a href="../markdown/">markdown</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-10-09T18:31:33Z">09/10/2014</time>\n<!-- Created <time datetime="2014-10-09T18:31:33Z" pubdate="pubdate">09/10/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;Formatting wiki pages&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fformatting" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    Formatting wiki pages
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fformatting" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Text on this wiki is, by default, written in a form very close to how you
+    might write text for an email message. This style of text formatting is
+    called &lt;a href="../markdown/"&gt;MarkDown&lt;/a&gt;, and it works like this:&lt;/p&gt;
+    
+    &lt;p&gt;Leave blank lines between paragraphs.&lt;/p&gt;
+    
+    &lt;p&gt;You can &lt;em&gt;*emphasise*&lt;/em&gt; or &lt;strong&gt;**strongly emphasise**&lt;/strong&gt; text by placing it
+    in single or double asterisks.&lt;/p&gt;
+    
+    &lt;p&gt;To create a list, start each line with an asterisk:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;"* this is my list"&lt;/li&gt;
+    &lt;li&gt;"* another item"&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;To make a numbered list, start each line with a number (any number will
+    do) followed by a period:&lt;/p&gt;
+    
+    &lt;ol&gt;
+    &lt;li&gt;"1. first line"&lt;/li&gt;
+    &lt;li&gt;"2. second line"&lt;/li&gt;
+    &lt;li&gt;"2. third line"&lt;/li&gt;
+    &lt;/ol&gt;
+    
+    
+    &lt;p&gt;To create a header, start a line with one or more &lt;code&gt;#&lt;/code&gt; characters followed
+    by a space and the header text. The number of &lt;code&gt;#&lt;/code&gt; characters controls the
+    size of the header:&lt;/p&gt;
+    
+    &lt;h1&gt;# h1&lt;/h1&gt;
+    
+    &lt;h2&gt;## h2&lt;/h2&gt;
+    
+    &lt;h3&gt;### h3&lt;/h3&gt;
+    
+    &lt;h4&gt;#### h4&lt;/h4&gt;
+    
+    &lt;h5&gt;##### h5&lt;/h5&gt;
+    
+    &lt;h6&gt;###### h6&lt;/h6&gt;
+    
+    &lt;p&gt;To create a horizontal rule, just write three or more dashes or stars on
+    their own line:&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;To quote someone, prefix the quote with "&amp;gt;":&lt;/p&gt;
+    
+    &lt;blockquote&gt;&lt;p&gt;To be or not to be,
+    that is the question.&lt;/p&gt;&lt;/blockquote&gt;
+    
+    &lt;p&gt;To write a code block, indent each line with a tab or 4 spaces:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;10 PRINT "Hello, world!"
+    20 GOTO 10
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;To link to an url or email address, you can just put the
+    url in angle brackets: &amp;lt;&lt;a href="http://ikiwiki.info"&gt;http://ikiwiki.info&lt;/a&gt;&amp;gt;, or you can use the
+    form [link text](url)&lt;/p&gt;
+    
+    &lt;hr /&gt;
+    
+    &lt;p&gt;In addition to basic html formatting using &lt;a href="../markdown/"&gt;MarkDown&lt;/a&gt;, this wiki lets
+    you use the following additional features:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;To link to another page on the wiki, place the page's name inside double
+    square brackets. So you would use &lt;code&gt;\[[WikiLink]]&lt;/code&gt; to link to &lt;a href="../wikilink/"&gt;WikiLink&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;Insert various &lt;a href="../directive/"&gt;directives&lt;/a&gt; onto a page to perform useful
+    actions.
+    For example, you can:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;Change the title of a page:&lt;/p&gt;
+    
+    &lt;p&gt;\[[!meta  title="full page title"]]&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;Create a blog by inlining a set of pages:&lt;/p&gt;
+    
+    &lt;p&gt;\[[!inline  pages="blog/*"]]&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    &lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    &lt;a href="../markdown/"&gt;markdown&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-10-09T18:31:33Z"&gt;09/10/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-10-09T18:31:33Z" pubdate="pubdate"&gt;09/10/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/searching</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;searching&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsearching&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    searching
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsearching&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki has searching &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If searching is enabled, you can enter search terms in the search field,
+    as you&apos;d expect. There are a few special things you can do to construct
+    more powerful searches.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;To match a phrase, enclose it in double quotes.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;AND&lt;/code&gt; can be used to search for documents containing two expressions.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;OR&lt;/code&gt; can be used to search for documents containing either one of
+    two expressions.&lt;/li&gt;
+    &lt;li&gt;Parentheses can be used to build up complicated search expressions. For
+    example, &quot;(foo AND bar) OR (me AND you)&quot;&lt;/li&gt;
+    &lt;li&gt;Prefix a search term with &quot;-&quot; to avoid it from appearing in the results.
+    For example, &quot;-discussion&quot; will omit &quot;discussion&quot;.&lt;/li&gt;
+    &lt;li&gt;To search for a page with a given title, use &quot;title:foo&quot;.&lt;/li&gt;
+    &lt;li&gt;To search for pages that contain a &quot;bar&quot; link, use &quot;link:bar&quot;.&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>searching</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsearching" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../">RPC Bug</a>/ \n\n<a href="../">ikiwiki</a>/ \n\n</span>\n<span class="title">\nsearching\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsearching" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki has searching <strong>disabled</strong>.</p>\n\n<p>If searching is enabled, you can enter search terms in the search field,\nas you\'d expect. There are a few special things you can do to construct\nmore powerful searches.</p>\n\n<ul>\n<li>To match a phrase, enclose it in double quotes.</li>\n<li><code>AND</code> can be used to search for documents containing two expressions.</li>\n<li><code>OR</code> can be used to search for documents containing either one of\ntwo expressions.</li>\n<li>Parentheses can be used to build up complicated search expressions. For\nexample, "(foo AND bar) OR (me AND you)"</li>\n<li>Prefix a search term with "-" to avoid it from appearing in the results.\nFor example, "-discussion" will omit "discussion".</li>\n<li>To search for a page with a given title, use "title:foo".</li>\n<li>To search for pages that contain a "bar" link, use "link:bar".</li>\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">ikiwiki</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;searching&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsearching" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    searching
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsearching" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki has searching &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If searching is enabled, you can enter search terms in the search field,
+    as you'd expect. There are a few special things you can do to construct
+    more powerful searches.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;To match a phrase, enclose it in double quotes.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;AND&lt;/code&gt; can be used to search for documents containing two expressions.&lt;/li&gt;
+    &lt;li&gt;&lt;code&gt;OR&lt;/code&gt; can be used to search for documents containing either one of
+    two expressions.&lt;/li&gt;
+    &lt;li&gt;Parentheses can be used to build up complicated search expressions. For
+    example, "(foo AND bar) OR (me AND you)"&lt;/li&gt;
+    &lt;li&gt;Prefix a search term with "-" to avoid it from appearing in the results.
+    For example, "-discussion" will omit "discussion".&lt;/li&gt;
+    &lt;li&gt;To search for a page with a given title, use "title:foo".&lt;/li&gt;
+    &lt;li&gt;To search for pages that contain a "bar" link, use "link:bar".&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;ikiwiki&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/pagespec/sorting</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;sorting&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fsorting&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    sorting
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fsorting&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;Some &lt;a href=&quot;../../directive/&quot;&gt;directives&lt;/a&gt; that use
+    &lt;a href=&quot;../&quot;&gt;PageSpecs&lt;/a&gt; allow
+    specifying the order that matching pages are shown in. The following sort
+    orders can be specified.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;age&lt;/code&gt; - List pages from the most recently created to the oldest.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;mtime&lt;/code&gt; - List pages with the most recently modified first.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;title&lt;/code&gt; - Order by title (page name), e.g. &quot;z/a a/b a/c&quot;&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;path&lt;/code&gt; - Order by page name including parents, e.g. &quot;a/b a/c z/a&quot;&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;meta(title)&lt;/code&gt; - Order according to the &lt;code&gt;\[[!meta  title=&quot;foo&quot; sortas=&quot;bar&quot;]]&lt;/code&gt;
+    or &lt;code&gt;\[[!meta  title=&quot;foo&quot;]]&lt;/code&gt; &lt;a href=&quot;../../directive/&quot;&gt;directive&lt;/a&gt;, or the page name if no
+    full title was set. &lt;code&gt;meta(author)&lt;/code&gt;, &lt;code&gt;meta(date)&lt;/code&gt;, &lt;code&gt;meta(updated)&lt;/code&gt;, etc.
+    also work.&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;In addition, you can combine several sort orders and/or reverse the order of
+    sorting, with a string like &lt;code&gt;age -title&lt;/code&gt; (which would sort by age, then by
+    title in reverse order if two pages have the same age).&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>sorting</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fsorting" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../../">RPC Bug</a>/ \n\n<a href="../../">ikiwiki</a>/ \n\n<a href="../">pagespec</a>/ \n\n</span>\n<span class="title">\nsorting\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fsorting" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>Some <a href="../../directive/">directives</a> that use\n<a href="../">PageSpecs</a> allow\nspecifying the order that matching pages are shown in. The following sort\norders can be specified.</p>\n\n<ul>\n<li><p><code>age</code> - List pages from the most recently created to the oldest.</p></li>\n<li><p><code>mtime</code> - List pages with the most recently modified first.</p></li>\n<li><p><code>title</code> - Order by title (page name), e.g. "z/a a/b a/c"</p></li>\n<li><p><code>path</code> - Order by page name including parents, e.g. "a/b a/c z/a"</p></li>\n<li><p><code>meta(title)</code> - Order according to the <code>\[[!meta  title="foo" sortas="bar"]]</code>\nor <code>\[[!meta  title="foo"]]</code> <a href="../../directive/">directive</a>, or the page name if no\nfull title was set. <code>meta(author)</code>, <code>meta(date)</code>, <code>meta(updated)</code>, etc.\nalso work.</p></li>\n</ul>\n\n\n<p>In addition, you can combine several sort orders and/or reverse the order of\nsorting, with a string like <code>age -title</code> (which would sort by age, then by\ntitle in reverse order if two pages have the same age).</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;sorting&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fsorting" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    sorting
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fsorting" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;Some &lt;a href="../../directive/"&gt;directives&lt;/a&gt; that use
+    &lt;a href="../"&gt;PageSpecs&lt;/a&gt; allow
+    specifying the order that matching pages are shown in. The following sort
+    orders can be specified.&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;age&lt;/code&gt; - List pages from the most recently created to the oldest.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;mtime&lt;/code&gt; - List pages with the most recently modified first.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;title&lt;/code&gt; - Order by title (page name), e.g. "z/a a/b a/c"&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;path&lt;/code&gt; - Order by page name including parents, e.g. "a/b a/c z/a"&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&lt;code&gt;meta(title)&lt;/code&gt; - Order according to the &lt;code&gt;\[[!meta  title="foo" sortas="bar"]]&lt;/code&gt;
+    or &lt;code&gt;\[[!meta  title="foo"]]&lt;/code&gt; &lt;a href="../../directive/"&gt;directive&lt;/a&gt;, or the page name if no
+    full title was set. &lt;code&gt;meta(author)&lt;/code&gt;, &lt;code&gt;meta(date)&lt;/code&gt;, &lt;code&gt;meta(updated)&lt;/code&gt;, etc.
+    also work.&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;In addition, you can combine several sort orders and/or reverse the order of
+    sorting, with a string like &lt;code&gt;age -title&lt;/code&gt; (which would sort by age, then by
+    title in reverse order if two pages have the same age).&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/pagespec/attachment</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;attachment&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fattachment&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    attachment
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fattachment&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki has attachments &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If attachments are enabled, the wiki admin can control what types of
+    attachments will be accepted, via the &lt;code&gt;allowed_attachments&lt;/code&gt;
+    configuration setting.&lt;/p&gt;
+    
+    &lt;p&gt;For example, to limit most users to uploading small images, and nothing else,
+    while allowing larger mp3 files to be uploaded by joey into a specific
+    directory, and check all attachments for viruses, something like this could be
+    used:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;The regular &lt;a href=&quot;../&quot;&gt;PageSpec&lt;/a&gt; syntax is expanded with the following
+    additional tests:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;&quot;&lt;code&gt;maxsize(size)&lt;/code&gt;&quot; - tests whether the attachment is no larger than the
+    specified size. The size defaults to being in bytes, but &quot;kb&quot;, &quot;mb&quot;, &quot;gb&quot;
+    etc can be used to specify the units.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&quot;&lt;code&gt;minsize(size)&lt;/code&gt;&quot; - tests whether the attachment is no smaller than the
+    specified size.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&quot;&lt;code&gt;ispage()&lt;/code&gt;&quot; - tests whether the attachment will be treated by ikiwiki as a
+    wiki page. (Ie, if it has an extension of &quot;.mdwn&quot;, or of any other enabled
+    page format).&lt;/p&gt;
+    
+    &lt;p&gt;So, if you don&apos;t want to allow wiki pages to be uploaded as attachments,
+    use &lt;code&gt;!ispage()&lt;/code&gt; ; if you only want to allow wiki pages to be uploaded
+    as attachments, use &lt;code&gt;ispage()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&quot;&lt;code&gt;mimetype(foo/bar)&lt;/code&gt;&quot; - checks the MIME type of the attachment. You can
+    include a glob in the type, for example &lt;code&gt;mimetype(image/*)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;&quot;&lt;code&gt;virusfree()&lt;/code&gt;&quot; - checks the attachment with an antiviral program.&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>attachment</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fattachment" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../../">RPC Bug</a>/ \n\n<a href="../../">ikiwiki</a>/ \n\n<a href="../">pagespec</a>/ \n\n</span>\n<span class="title">\nattachment\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fattachment" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki has attachments <strong>disabled</strong>.</p>\n\n<p>If attachments are enabled, the wiki admin can control what types of\nattachments will be accepted, via the <code>allowed_attachments</code>\nconfiguration setting.</p>\n\n<p>For example, to limit most users to uploading small images, and nothing else,\nwhile allowing larger mp3 files to be uploaded by joey into a specific\ndirectory, and check all attachments for viruses, something like this could be\nused:</p>\n\n<pre><code>virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))\n</code></pre>\n\n<p>The regular <a href="../">PageSpec</a> syntax is expanded with the following\nadditional tests:</p>\n\n<ul>\n<li><p>"<code>maxsize(size)</code>" - tests whether the attachment is no larger than the\nspecified size. The size defaults to being in bytes, but "kb", "mb", "gb"\netc can be used to specify the units.</p></li>\n<li><p>"<code>minsize(size)</code>" - tests whether the attachment is no smaller than the\nspecified size.</p></li>\n<li><p>"<code>ispage()</code>" - tests whether the attachment will be treated by ikiwiki as a\nwiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled\npage format).</p>\n\n<p>So, if you don\'t want to allow wiki pages to be uploaded as attachments,\nuse <code>!ispage()</code> ; if you only want to allow wiki pages to be uploaded\nas attachments, use <code>ispage()</code>.</p></li>\n<li><p>"<code>mimetype(foo/bar)</code>" - checks the MIME type of the attachment. You can\ninclude a glob in the type, for example <code>mimetype(image/*)</code>.</p></li>\n<li><p>"<code>virusfree()</code>" - checks the attachment with an antiviral program.</p></li>\n</ul>\n\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;attachment&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fattachment" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    attachment
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fattachment" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki has attachments &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If attachments are enabled, the wiki admin can control what types of
+    attachments will be accepted, via the &lt;code&gt;allowed_attachments&lt;/code&gt;
+    configuration setting.&lt;/p&gt;
+    
+    &lt;p&gt;For example, to limit most users to uploading small images, and nothing else,
+    while allowing larger mp3 files to be uploaded by joey into a specific
+    directory, and check all attachments for viruses, something like this could be
+    used:&lt;/p&gt;
+    
+    &lt;pre&gt;&lt;code&gt;virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))
+    &lt;/code&gt;&lt;/pre&gt;
+    
+    &lt;p&gt;The regular &lt;a href="../"&gt;PageSpec&lt;/a&gt; syntax is expanded with the following
+    additional tests:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&lt;p&gt;"&lt;code&gt;maxsize(size)&lt;/code&gt;" - tests whether the attachment is no larger than the
+    specified size. The size defaults to being in bytes, but "kb", "mb", "gb"
+    etc can be used to specify the units.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;"&lt;code&gt;minsize(size)&lt;/code&gt;" - tests whether the attachment is no smaller than the
+    specified size.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;"&lt;code&gt;ispage()&lt;/code&gt;" - tests whether the attachment will be treated by ikiwiki as a
+    wiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled
+    page format).&lt;/p&gt;
+    
+    &lt;p&gt;So, if you don't want to allow wiki pages to be uploaded as attachments,
+    use &lt;code&gt;!ispage()&lt;/code&gt; ; if you only want to allow wiki pages to be uploaded
+    as attachments, use &lt;code&gt;ispage()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;"&lt;code&gt;mimetype(foo/bar)&lt;/code&gt;" - checks the MIME type of the attachment. You can
+    include a glob in the type, for example &lt;code&gt;mimetype(image/*)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
+    &lt;li&gt;&lt;p&gt;"&lt;code&gt;virusfree()&lt;/code&gt;" - checks the attachment with an antiviral program.&lt;/p&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/pagespec/po</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;po&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fpo&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    po
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fpo&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;This wiki has po support &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If the \[[!iki  plugins/po desc=po]] plugin is enabled, the regular
+    &lt;a href=&quot;../&quot;&gt;PageSpec&lt;/a&gt; syntax is expanded with the following additional
+    tests that can be used to improve user navigation in a multi-lingual
+    wiki:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;&quot;&lt;code&gt;lang(LL)&lt;/code&gt;&quot; - tests whether a page is written in the language
+    specified as a ISO639-1 (two-letter) language code.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;currentlang()&lt;/code&gt;&quot; - tests whether a page is written in the same
+    language as the current page.&lt;/li&gt;
+    &lt;li&gt;&quot;&lt;code&gt;needstranslation()&lt;/code&gt;&quot; - tests whether a page needs translation
+    work. Only slave pages match this PageSpec. A minimum target
+    translation percentage can optionally be passed as an integer
+    parameter: &quot;&lt;code&gt;needstranslation(50)&lt;/code&gt;&quot; matches only pages less than 50%
+    translated.&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;Note that every non-po page is considered to be written in
+    &lt;code&gt;po_master_language&lt;/code&gt;, as specified in &lt;code&gt;ikiwiki.setup&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>po</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fpo" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../../">RPC Bug</a>/ \n\n<a href="../../">ikiwiki</a>/ \n\n<a href="../">pagespec</a>/ \n\n</span>\n<span class="title">\npo\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fpagespec%2Fpo" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>This wiki has po support <strong>disabled</strong>.</p>\n\n<p>If the \[[!iki  plugins/po desc=po]] plugin is enabled, the regular\n<a href="../">PageSpec</a> syntax is expanded with the following additional\ntests that can be used to improve user navigation in a multi-lingual\nwiki:</p>\n\n<ul>\n<li>"<code>lang(LL)</code>" - tests whether a page is written in the language\nspecified as a ISO639-1 (two-letter) language code.</li>\n<li>"<code>currentlang()</code>" - tests whether a page is written in the same\nlanguage as the current page.</li>\n<li>"<code>needstranslation()</code>" - tests whether a page needs translation\nwork. Only slave pages match this PageSpec. A minimum target\ntranslation percentage can optionally be passed as an integer\nparameter: "<code>needstranslation(50)</code>" matches only pages less than 50%\ntranslated.</li>\n</ul>\n\n\n<p>Note that every non-po page is considered to be written in\n<code>po_master_language</code>, as specified in <code>ikiwiki.setup</code>.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;po&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fpo" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;pagespec&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    po
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fpagespec%2Fpo" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;This wiki has po support &lt;strong&gt;disabled&lt;/strong&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;If the \[[!iki  plugins/po desc=po]] plugin is enabled, the regular
+    &lt;a href="../"&gt;PageSpec&lt;/a&gt; syntax is expanded with the following additional
+    tests that can be used to improve user navigation in a multi-lingual
+    wiki:&lt;/p&gt;
+    
+    &lt;ul&gt;
+    &lt;li&gt;"&lt;code&gt;lang(LL)&lt;/code&gt;" - tests whether a page is written in the language
+    specified as a ISO639-1 (two-letter) language code.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;currentlang()&lt;/code&gt;" - tests whether a page is written in the same
+    language as the current page.&lt;/li&gt;
+    &lt;li&gt;"&lt;code&gt;needstranslation()&lt;/code&gt;" - tests whether a page needs translation
+    work. Only slave pages match this PageSpec. A minimum target
+    translation percentage can optionally be passed as an integer
+    parameter: "&lt;code&gt;needstranslation(50)&lt;/code&gt;" matches only pages less than 50%
+    translated.&lt;/li&gt;
+    &lt;/ul&gt;
+    
+    
+    &lt;p&gt;Note that every non-po page is considered to be written in
+    &lt;code&gt;po_master_language&lt;/code&gt;, as specified in &lt;code&gt;ikiwiki.setup&lt;/code&gt;.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:199: received procedure call from ikiwiki: [<?xml version="1.0" encoding="utf-8"?><methodCall><methodName>format</methodName><params><param><value><string>page</string></value></param><param><value><string>ikiwiki/subpage/linkingrules</string></value></param><param><value><string>content</string></value></param><param><value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;linkingrules&lt;/title&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../style.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../../local.css&quot; type=&quot;text/css&quot; /&gt;
+    
+    
+    
+    
+    &lt;link rel=&quot;alternate&quot; type=&quot;application/x-wiki&quot; title=&quot;Edit this page&quot; href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage%2Flinkingrules&quot; /&gt;
+    
+    
+    
+    &lt;meta name=&quot;robots&quot; content=&quot;noindex, follow&quot; /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class=&quot;page&quot;&gt;
+    
+    &lt;section class=&quot;pageheader&quot;&gt;
+    &lt;header class=&quot;header&quot;&gt;
+    &lt;span&gt;
+    &lt;span class=&quot;parentlinks&quot;&gt;
+    
+    &lt;a href=&quot;../../../&quot;&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../../&quot;&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href=&quot;../&quot;&gt;subpage&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class=&quot;title&quot;&gt;
+    linkingrules
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class=&quot;actions&quot;&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage%2Flinkingrules&quot; rel=&quot;nofollow&quot;&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href=&quot;../../../recentchanges/&quot;&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href=&quot;/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs&quot;&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id=&quot;pagebody&quot;&gt;
+    
+    &lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;
+    &lt;p&gt;To link to or from a &lt;a href=&quot;../&quot;&gt;SubPage&lt;/a&gt;, you can normally use a regular
+    &lt;a href=&quot;../../wikilink/&quot;&gt;WikiLink&lt;/a&gt; that does not contain the name of the parent directory of
+    the &lt;a href=&quot;../&quot;&gt;SubPage&lt;/a&gt;. Ikiwiki descends the directory hierarchy looking for a
+    page that matches your link.&lt;/p&gt;
+    
+    &lt;p&gt;For example, if FooBar/SubPage links to &quot;OtherPage&quot;, ikiwiki will first
+    prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next
+    to FooBar/OtherPage and finally to OtherPage in the root of the wiki.&lt;/p&gt;
+    
+    &lt;p&gt;Note that this means that if a link on FooBar/SomePage to &quot;OtherPage&quot;
+    currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage
+    is created, the link will &lt;em&gt;change&lt;/em&gt; to point to FooBar/OtherPage. On the
+    other hand, a link from BazBar to &quot;OtherPage&quot; would be unchanged by this
+    creation of a &lt;a href=&quot;../&quot;&gt;SubPage&lt;/a&gt; of FooBar.&lt;/p&gt;
+    
+    &lt;p&gt;You can also specify a link that contains a directory name, like
+    &quot;FooBar/OtherPage&quot; to more exactly specify what page to link to. This is
+    the only way to link to an unrelated &lt;a href=&quot;../&quot;&gt;SubPage&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;You can use this to, for example, to link from BazBar to &quot;FooBar/SubPage&quot;,
+    or from BazBar/SubPage to &quot;FooBar/SubPage&quot;.&lt;/p&gt;
+    
+    &lt;p&gt;You can also use &quot;/&quot; at the start of a link, to specify exactly which page
+    to link to, when there are multiple pages with similar names and the link
+    goes to the wrong page by default. For example, linking from
+    &quot;FooBar/SubPage&quot; to  &quot;/OtherPage&quot; will link to the &quot;OtherPage&quot; in the root
+    of the wiki, even if there is a &quot;FooBar/OtherPage&quot;.&lt;/p&gt;
+    
+    &lt;p&gt;Also, if the wiki is configured with a userdir, you can link to pages
+    within the userdir without specifying a path to them. This is to allow for
+    easy linking to a user&apos;s page in the userdir, to sign a comment. These
+    links are checked for last of all.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id=&quot;footer&quot; class=&quot;pagefooter&quot; role=&quot;contentinfo&quot;&gt;
+    
+    &lt;nav id=&quot;pageinfo&quot;&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id=&quot;backlinks&quot;&gt;
+    Links:
+    
+    &lt;a href=&quot;../&quot;&gt;subpage&lt;/a&gt;
+    
+    &lt;a href=&quot;../../wikilink/&quot;&gt;wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class=&quot;pagedate&quot;&gt;
+    Last edited &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot;&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime=&quot;2014-09-12T20:23:58Z&quot; pubdate=&quot;pubdate&quot;&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value></param></params></methodCall>
+    ]
+    rpcbug:hook_proxy:262: format hook `format' returned: ['<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\n<meta charset="utf-8" />\n<title>linkingrules</title>\n<meta name="viewport" content="width=device-width, initial-scale=1" />\n\n<link rel="stylesheet" href="../../../style.css" type="text/css" />\n\n<link rel="stylesheet" href="../../../local.css" type="text/css" />\n\n\n\n\n<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsubpage%2Flinkingrules" />\n\n\n\n<meta name="robots" content="noindex, follow" />\n\n\n\n</head>\n<body>\n\n<article class="page">\n\n<section class="pageheader">\n<header class="header">\n<span>\n<span class="parentlinks">\n\n<a href="../../../">RPC Bug</a>/ \n\n<a href="../../">ikiwiki</a>/ \n\n<a href="../">subpage</a>/ \n\n</span>\n<span class="title">\nlinkingrules\n\n</span>\n</span>\n\n\n\n</header>\n\n\n<nav class="actions">\n<ul>\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;page=ikiwiki%2Fsubpage%2Flinkingrules" rel="nofollow">Edit</a></li>\n\n\n<li><a href="../../../recentchanges/">RecentChanges</a></li>\n\n\n\n\n<li><a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs">Preferences</a></li>\n\n\n\n\n\n</ul>\n</nav>\n\n\n\n\n\n\n\n\n</section>\n\n\n\n\n\n<div id="pagebody">\n\n<section id="content" role="main">\n<p>To link to or from a <a href="../">SubPage</a>, you can normally use a regular\n<a href="../../wikilink/">WikiLink</a> that does not contain the name of the parent directory of\nthe <a href="../">SubPage</a>. Ikiwiki descends the directory hierarchy looking for a\npage that matches your link.</p>\n\n<p>For example, if FooBar/SubPage links to "OtherPage", ikiwiki will first\nprefer pointing the link to FooBar/SubPage/OtherPage if it exists, next\nto FooBar/OtherPage and finally to OtherPage in the root of the wiki.</p>\n\n<p>Note that this means that if a link on FooBar/SomePage to "OtherPage"\ncurrently links to OtherPage, in the root of the wiki, and FooBar/OtherPage\nis created, the link will <em>change</em> to point to FooBar/OtherPage. On the\nother hand, a link from BazBar to "OtherPage" would be unchanged by this\ncreation of a <a href="../">SubPage</a> of FooBar.</p>\n\n<p>You can also specify a link that contains a directory name, like\n"FooBar/OtherPage" to more exactly specify what page to link to. This is\nthe only way to link to an unrelated <a href="../">SubPage</a>.</p>\n\n<p>You can use this to, for example, to link from BazBar to "FooBar/SubPage",\nor from BazBar/SubPage to "FooBar/SubPage".</p>\n\n<p>You can also use "/" at the start of a link, to specify exactly which page\nto link to, when there are multiple pages with similar names and the link\ngoes to the wrong page by default. For example, linking from\n"FooBar/SubPage" to  "/OtherPage" will link to the "OtherPage" in the root\nof the wiki, even if there is a "FooBar/OtherPage".</p>\n\n<p>Also, if the wiki is configured with a userdir, you can link to pages\nwithin the userdir without specifying a path to them. This is to allow for\neasy linking to a user\'s page in the userdir, to sign a comment. These\nlinks are checked for last of all.</p>\n\n</section>\n\n\n\n\n\n\n\n</div>\n\n<footer id="footer" class="pagefooter" role="contentinfo">\n\n<nav id="pageinfo">\n\n\n\n\n\n\n<nav id="backlinks">\nLinks:\n\n<a href="../">subpage</a>\n\n<a href="../../wikilink/">wikilink</a>\n\n\n</nav>\n\n\n\n\n\n\n<div class="pagedate">\nLast edited <time datetime="2014-09-12T20:23:58Z">12/09/2014</time>\n<!-- Created <time datetime="2014-09-12T20:23:58Z" pubdate="pubdate">12/09/2014</time> -->\n</div>\n\n</nav>\n\n\n<!-- from RPC Bug -->\n</footer>\n\n</article>\n\n</body>\n</html>\n']
+    rpcbug:handle_rpc:204: sending procedure response to ikiwiki: [<?xml version='1.0'?>
+    <methodResponse>
+    <params>
+    <param>
+    <value><string>&lt;!DOCTYPE html&gt;
+    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+    &lt;head&gt;
+    
+    &lt;meta charset="utf-8" /&gt;
+    &lt;title&gt;linkingrules&lt;/title&gt;
+    &lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../style.css" type="text/css" /&gt;
+    
+    &lt;link rel="stylesheet" href="../../../local.css" type="text/css" /&gt;
+    
+    
+    
+    
+    &lt;link rel="alternate" type="application/x-wiki" title="Edit this page" href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage%2Flinkingrules" /&gt;
+    
+    
+    
+    &lt;meta name="robots" content="noindex, follow" /&gt;
+    
+    
+    
+    &lt;/head&gt;
+    &lt;body&gt;
+    
+    &lt;article class="page"&gt;
+    
+    &lt;section class="pageheader"&gt;
+    &lt;header class="header"&gt;
+    &lt;span&gt;
+    &lt;span class="parentlinks"&gt;
+    
+    &lt;a href="../../../"&gt;RPC Bug&lt;/a&gt;/ 
+    
+    &lt;a href="../../"&gt;ikiwiki&lt;/a&gt;/ 
+    
+    &lt;a href="../"&gt;subpage&lt;/a&gt;/ 
+    
+    &lt;/span&gt;
+    &lt;span class="title"&gt;
+    linkingrules
+    
+    &lt;/span&gt;
+    &lt;/span&gt;
+    
+    
+    
+    &lt;/header&gt;
+    
+    
+    &lt;nav class="actions"&gt;
+    &lt;ul&gt;
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=edit&amp;amp;page=ikiwiki%2Fsubpage%2Flinkingrules" rel="nofollow"&gt;Edit&lt;/a&gt;&lt;/li&gt;
+    
+    
+    &lt;li&gt;&lt;a href="../../../recentchanges/"&gt;RecentChanges&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    &lt;li&gt;&lt;a href="/~louis/ikiwiki_bug_rpc/ikiwiki.cgi?do=prefs"&gt;Preferences&lt;/a&gt;&lt;/li&gt;
+    
+    
+    
+    
+    
+    &lt;/ul&gt;
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    &lt;div id="pagebody"&gt;
+    
+    &lt;section id="content" role="main"&gt;
+    &lt;p&gt;To link to or from a &lt;a href="../"&gt;SubPage&lt;/a&gt;, you can normally use a regular
+    &lt;a href="../../wikilink/"&gt;WikiLink&lt;/a&gt; that does not contain the name of the parent directory of
+    the &lt;a href="../"&gt;SubPage&lt;/a&gt;. Ikiwiki descends the directory hierarchy looking for a
+    page that matches your link.&lt;/p&gt;
+    
+    &lt;p&gt;For example, if FooBar/SubPage links to "OtherPage", ikiwiki will first
+    prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next
+    to FooBar/OtherPage and finally to OtherPage in the root of the wiki.&lt;/p&gt;
+    
+    &lt;p&gt;Note that this means that if a link on FooBar/SomePage to "OtherPage"
+    currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage
+    is created, the link will &lt;em&gt;change&lt;/em&gt; to point to FooBar/OtherPage. On the
+    other hand, a link from BazBar to "OtherPage" would be unchanged by this
+    creation of a &lt;a href="../"&gt;SubPage&lt;/a&gt; of FooBar.&lt;/p&gt;
+    
+    &lt;p&gt;You can also specify a link that contains a directory name, like
+    "FooBar/OtherPage" to more exactly specify what page to link to. This is
+    the only way to link to an unrelated &lt;a href="../"&gt;SubPage&lt;/a&gt;.&lt;/p&gt;
+    
+    &lt;p&gt;You can use this to, for example, to link from BazBar to "FooBar/SubPage",
+    or from BazBar/SubPage to "FooBar/SubPage".&lt;/p&gt;
+    
+    &lt;p&gt;You can also use "/" at the start of a link, to specify exactly which page
+    to link to, when there are multiple pages with similar names and the link
+    goes to the wrong page by default. For example, linking from
+    "FooBar/SubPage" to  "/OtherPage" will link to the "OtherPage" in the root
+    of the wiki, even if there is a "FooBar/OtherPage".&lt;/p&gt;
+    
+    &lt;p&gt;Also, if the wiki is configured with a userdir, you can link to pages
+    within the userdir without specifying a path to them. This is to allow for
+    easy linking to a user's page in the userdir, to sign a comment. These
+    links are checked for last of all.&lt;/p&gt;
+    
+    &lt;/section&gt;
+    
+    
+    
+    
+    
+    
+    
+    &lt;/div&gt;
+    
+    &lt;footer id="footer" class="pagefooter" role="contentinfo"&gt;
+    
+    &lt;nav id="pageinfo"&gt;
+    
+    
+    
+    
+    
+    
+    &lt;nav id="backlinks"&gt;
+    Links:
+    
+    &lt;a href="../"&gt;subpage&lt;/a&gt;
+    
+    &lt;a href="../../wikilink/"&gt;wikilink&lt;/a&gt;
+    
+    
+    &lt;/nav&gt;
+    
+    
+    
+    
+    
+    
+    &lt;div class="pagedate"&gt;
+    Last edited &lt;time datetime="2014-09-12T20:23:58Z"&gt;12/09/2014&lt;/time&gt;
+    &lt;!-- Created &lt;time datetime="2014-09-12T20:23:58Z" pubdate="pubdate"&gt;12/09/2014&lt;/time&gt; --&gt;
+    &lt;/div&gt;
+    
+    &lt;/nav&gt;
+    
+    
+    &lt;!-- from RPC Bug --&gt;
+    &lt;/footer&gt;
+    
+    &lt;/article&gt;
+    
+    &lt;/body&gt;
+    &lt;/html&gt;
+    </string></value>
+    </param>
+    </params>
+    </methodResponse>
+    ]
+    rpcbug:handle_rpc:191: waiting for procedure calls from ikiwiki...
+    rpcbug:handle_rpc:195: ikiwiki is going down, and so are we...
diff --git a/doc/bugs/Please_add_copyright_notice_in_embedded_JS.mdwn b/doc/bugs/Please_add_copyright_notice_in_embedded_JS.mdwn
new file mode 100644 (file)
index 0000000..79194df
--- /dev/null
@@ -0,0 +1,20 @@
+Hello,
+
+We got a report that http://www.gnu.org/software/hurd/ "embeds apparently non-free JS". This is because the embedded ikiwiki.js javascript file does not wear a copyright notice, to tell which licence this file is shipped under.  Could you add such a copyright notice?
+
+Thanks
+
+> Everything in ikiwiki is [[freesoftware]]. The JavaScript in `underlays/javascript`
+> appears to be GPL-2+, but might have been intended to be under the permissive basewiki
+> license.
+>
+> [[Joey]] appears to be the only author, so is presumably the only copyright
+> holder; nobody else can give an authoritative answer about the JS's license. Joey,
+> if you want `underlays/javascript` to be permissively-licensed, please amend
+> `debian/copyright` accordingly. --[[smcv]]
+> 
+>> It was intended to be permissive. I've amended the copyright file.
+>> [[done]]
+>> 
+>> I wouldn't mind including information readable by librejs in those
+>> files, if someone wants to send a patch. --[[Joey]]
diff --git a/doc/bugs/Uploading_attachment_fails.mdwn b/doc/bugs/Uploading_attachment_fails.mdwn
new file mode 100644 (file)
index 0000000..f3a9ccf
--- /dev/null
@@ -0,0 +1,23 @@
+I just upgraded from ubuntu 14.04 to ubuntu 15.04. Since then uploading attachments using the attachment plugin doesn't work anymore in ikiwiki. It prints a "failed!" message. Any idea what may be wrong here and how to fix it?
+
+ikiwiki version 3.20141016.2
+
+`/var/log/apache2/error.log`
+
+gives this:
+
+Died at `/usr/share/perl5/IkiWiki/CGI.pm line 497`.
+
+> I think this is probably [[!debbug 786587]], which ikiwiki has worked around since 3.20150610
+> ([[!debbug 786586]]). If so, then it is [[already fixed|done]], but not in the version
+> you have. You could report an Ubuntu bug asking for
+> [ikiwiki commit 7a52c87](http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=7a52c87a8c745577a50d6c9d134f62f9c5b26b0a)
+> or
+> [CGI.pm commit e4500cf](https://github.com/leejo/CGI.pm/commit/e4500cfb2de27660398c09bc860d1d9e499cb372)
+> to be backported, although in practice bugs in universe packages are unlikely to get fixed
+> in an Ubuntu stable release.
+>
+> To work around this, you might be able to `apt-get remove libcgi-pm-perl` and use the
+> older version of CGI.pm that is shipped with Perl. --[[smcv]]
+
+Thanks, I just opened a bug r[eport on launchpad](https://bugs.launchpad.net/ubuntu/+source/ikiwiki/+bug/1470391).
diff --git a/doc/bugs/continuously_getting_merge_errors.mdwn b/doc/bugs/continuously_getting_merge_errors.mdwn
new file mode 100644 (file)
index 0000000..ebfd5e2
--- /dev/null
@@ -0,0 +1,32 @@
+links:
+
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=775310
+http://ikiwiki.info/forum/Your_local_changes_to_the_following_files_would_be_overwritten_by_merge:/
+
+phil is kindly running ikiwiki on hands.com as http://rhombus-tech.net
+we continuously run into "merge" issues which need recovering on a
+near monthly basis.
+
+i have a local checkout of the repository: i often need to upload images via
+that, doing the usual "git pull", followed by "git commit -a", followed by
+"git push", adding an HTML page that is edited by vim as well as the images.
+
+i also often need to "recover" the wiki - for example by renaming pages that
+users have erroneously added, deleting pages that they should not have made,
+moving pages from locations that they should not have added or that i decide
+should be restructured.
+
+these are the operations where everything usually gets completely fscked.
+
+the really weird thing is that when i know that things are out-of-sync,
+a "git pull" gives a *completely different* head branch from the one shown
+through the RecentChanges log!
+
+phil has often had to recover an entire set of files that are completely out
+of sync, that never enter the "git pull" stream onto my laptop, and are not
+visible on the wiki itself either.
+
+this is all incredibly strange and mysterious, but it basically means that
+ikiwiki is not particularly robust and reliable for everyday use.  i'd very
+much like it to be!
+
diff --git a/doc/bugs/dumpsetup_does_not_save_wikistatedir.mdwn b/doc/bugs/dumpsetup_does_not_save_wikistatedir.mdwn
new file mode 100644 (file)
index 0000000..236460f
--- /dev/null
@@ -0,0 +1,12 @@
+Calling ikiwiki with a bunch of options, including the `--dumpsetup somefile.setup` option creates `somefile.setup` for later reuse with the `--setup` option. The wiki state dir however is not saved in the setup file, it has no `wikistatedir` at all.
+
+Strange since same [[kind of bugs|bugs/dumpsetup_does_not_save_destdir]] have been fixed for `destdir`.
+
+--[[bbb]]
+
+> Options flagged as `internal` are not saved, and are not meant to be useful to save.
+> `wikistatedir` is one of those. Why do you want `wikistatedir` to be in the dumped setup?
+>
+> `wikistatedir` is always `$config{srcdir}/.ikiwiki` unless you are doing something
+> incredibly strange.
+> --[[smcv]]
diff --git a/doc/bugs/feed_does_not_validate.mdwn b/doc/bugs/feed_does_not_validate.mdwn
new file mode 100644 (file)
index 0000000..9e9b2ee
--- /dev/null
@@ -0,0 +1,21 @@
+[this validator](https://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fanarc.at%2Ftag%2Fdrupal-planet%2Findex.rss) says that my RSS feed doesn't validate.
+
+the link to "comments" should be a full URL and there's a "self" tag missing.
+
+coming from [this bug report](https://www.drupal.org/node/1843576)
+
+-- [[anarcat]]
+
+> [[Fixed|done]]. Now people are going to complain that the RSS feed
+> hard-codes `http:` or `https:` instead, but we can't win there,
+> because RSS.
+>
+> If you just want to serve a feed with less bureaucracy, I suggest
+> using Atom feeds - they have sane semantics for relative URL references,
+> and a specification that actually specifies, instead of
+> [a family of vague, mutually incompatible specifications](https://web.archive.org/web/20110726001954/http://diveintomark.org/archives/2004/02/04/incompatible-rss).
+> In particular,
+> [my Atom feed validates](https://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fsmcv.pseudorandom.co.uk%2Findex.atom)
+> (rel="comments" seems to be missing from the IANA registry,
+> but that isn't a validity error).
+> --[[smcv]]
diff --git a/doc/bugs/img_test_failure_on_nix.mdwn b/doc/bugs/img_test_failure_on_nix.mdwn
new file mode 100644 (file)
index 0000000..911cc66
--- /dev/null
@@ -0,0 +1,33 @@
+Peter Simons wrote:
+> I'm getting the following test suite failure in Nix, probably because
+> some Perl dependency was updated to a newer version recently:
+       #   Failed test at t/img.t line 79.
+       #          got: 'no image'
+       #     expected: '12x12'
+       #   Failed test at t/img.t line 80.
+       #          got: 'no image'
+       #     expected: '16x2'
+       # Looks like you failed 2 tests of 19.
+       t/img.t ........................ 
+       Dubious, test returned 2 (wstat 512, 0x200)
+       Failed 2/19 subtests 
+> Do you have any idea how to fix this issue?
+
+>> As far as I can tell, this indicates that your ImageMagick doesn't
+>> support PDF (in Debian and its derivatives this requires `libmagickcore-extra`).
+>> Please run tests on a system with a fully-featured ImageMagick (in Debian we put
+>> `libmagickcore-extra` in the `Build-Depends-Indep` for this), or if you are testing
+>> at install time on arbitrary end-user systems, please tell me what this says on a
+>> system where the test fails:
+>>
+>>     perl -MData::Dumper -MImage::Magick -e 'print Dumper([(new Image::Magick)->QueryFormat("pdf")])'
+>>
+>> If the result is `$VAR1 = [ undef ]`, then we can easily make the test skip that bit if PDFs don't work.
+>> --[[smcv]]
+
+>>> That configuration test doesn't actually work because of the way
+>>> ImageMagick processes PDFs via ghostscript, but loading a sample
+>>> PDF and probing its width does seem to work. [[done]] --[[smcv]]
diff --git a/doc/bugs/mathjax_doesn__39__t_work_anymore_after_upgrade.mdwn b/doc/bugs/mathjax_doesn__39__t_work_anymore_after_upgrade.mdwn
new file mode 100644 (file)
index 0000000..5683228
--- /dev/null
@@ -0,0 +1,31 @@
+After my upgrade from ubuntu 14.04 to 15.04 mathjax stopped working in my ikiwiki. Math is displayed correctly for pages created before the upgrade. For new pages or if I change an old page, math is not rendered but the LaTeX source code is printed (with \[ \] as deliminiters instead of $$ $$). 
+
+Any idea what may be wrong here and how to fix it?
+
+> Mathjax does not seem to be supported by default by Ikiwiki. So the first question is: how did you enable mathjax?
+>
+> Maybe you can also save the html of an old page, change something in it to make it rebuilt, and diff the resulting html with the old one, to see what changed.
+>
+> -- [[Louis|spalax]]
+
+I installed mathjax via the pandoc-iki plugin as described [here](http://stackoverflow.com/a/8444409/406686)
+
+The rebuild of an old site containing math is missing the following lines:
+
+
+     <script src="/mathjax/MathJax.js?config=TeX-AMS_HTML-full" type="text/javascript"></script>
+     </head>
+     <body>
+     <noscript>
+     <div style="color:#CC0000; text-align:center">
+     <b>Warning: <a href="http://www.mathjax.org/">MathJax</a>
+     requires JavaScript to process the mathematics on this page.<br>
+     If your browser supports JavaScript, be sure it is enabled.</b>
+     </div>
+     <hr>
+     </noscript>
+
+----------------------
+
+I finally noticed that the `page.tmpl` was messed up. It seams that the upgrade deleted the relevant `mathjax` line. Adding this makes it work again. [[Thanks|done]]! 
+
index 11dbfeecc8758bd19a045e25d06e4298a6618971..314597cb53ad7505a046aab77e7b3afe4cf90eb6 100644 (file)
@@ -28,7 +28,7 @@ I think that to match better the description of that feature, and to be
 easier to comprehend in its default setting, the meta plugin should by
 default:
 
-  - Set `rel="alternate stylesheet"`.
+  - Set `rel="stylesheet"`.
   - Not set any `title`.
 
 If we agree on this proposal, I'm willing to provide a patch.
diff --git a/doc/bugs/po_plugin_config_crasher.mdwn b/doc/bugs/po_plugin_config_crasher.mdwn
new file mode 100644 (file)
index 0000000..9669597
--- /dev/null
@@ -0,0 +1,35 @@
+Saw a site using the po plugin crash with:
+
+       syntax error in pagespec "\"page(./tips/*)"
+
+I suspect the relevant configuration is this:
+
+       po_translatable_pages: /index or /hugo or /hugo/keys or /about or /archive or /tips
+         or /talks or /imprint or /copyright or /blog or /posts  or /law or /quotes or /quotes/*
+
+Config problems in ikiwiki.setup should really not cause the whole site
+build to crash; this can make it hard to recover. --[[Joey]]
+
+> Given who's reporting this, am I right in assuming that's with ikiwiki 3.20150614? --[[smcv]]
+
+---
+
+I try to setup a small site with the auto-blog.setup and played a bit with it:
+If I activate the po plugin and set po_translateable_pages to something meaningful (like the example: `* and !*/Discussion`),
+then I'll get the same error
+
+    syntax error in pagespec "\"page(./posts/*)"
+
+but only after a second run of the ikiwiki --setup site.setup
+
+My try to get a clue: deleting any po and pot files and run the rebuild again - works fine  
+run the rebuild a second time - error as above
+
+tune any of the pagespec variables in the setup and at the inline directives of the blog or sidebar dosn't change anything
+except leaving the po_translateable_pages empty, than the rebuild works and doesn't create any po files (as expected).
+
+Is this helpful or have I done anything stupid ? -- Michael
+
+> This would be helpful if I could reproduce the crash from your instructions, but I couldn't :-(
+> Which version of ikiwiki is this?
+> --[[smcv]]
index ff607cbb361e9e82422d94d095029c0d04a18c8b..7a2e4d12bb3170f14fc2efdc9984eab23124ad2e 100644 (file)
@@ -1,3 +1,5 @@
 RSS output contains relative links. Ie. 
 http://kitenet.net/~joey/blog/index.rss contains a link to 
 http://kitenet.net/~joey/blog/../blog.html
+
+> Finally [[done]] for the first release of 2016. --[[smcv]]
diff --git a/doc/examples/blog/posts/second_post.mdwn b/doc/examples/blog/posts/second_post.mdwn
new file mode 100644 (file)
index 0000000..5cc6c38
--- /dev/null
@@ -0,0 +1 @@
+This is the second post to this example blog. To add new posts, just add files to the posts/ subdirectory, or use the web form.
diff --git a/doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_3_0dbc7bea39c6f69c4615250bc2d63d84._comment b/doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_3_0dbc7bea39c6f69c4615250bc2d63d84._comment
new file mode 100644 (file)
index 0000000..5c4e81b
--- /dev/null
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="JohnGoerzen"
+ subject="Still seeing this"
+ date="2015-09-28T16:22:21Z"
+ content="""
+I'm running 20141016.2 on Debian jessie and I'm seeing this.  From what I can tell, all known bugs around this should be fixed.  Any ideas?
+"""]]
diff --git a/doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_4_e7453e7f84c494e80e9341feff931141._comment b/doc/forum/Error:_CGI::tmpFileName_failed_to_return_the_uploaded_file_name/comment_4_e7453e7f84c494e80e9341feff931141._comment
new file mode 100644 (file)
index 0000000..f522b22
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="comment 4"
+ date="2015-10-01T19:48:38Z"
+ content="""
+This could be [#786586](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786586) and [#786587](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786587), which have a matching symptom. (The two Debian bugs are aspects of the same thing.)
+
+Workaround: remove libcgi-pm-perl and use the older CGI.pm in Perl.
+"""]]
diff --git a/doc/forum/FastCGI_problem_on_Arch.mdwn b/doc/forum/FastCGI_problem_on_Arch.mdwn
new file mode 100644 (file)
index 0000000..2911b74
--- /dev/null
@@ -0,0 +1,13 @@
+Hello. 
+
+Sorry to disturb here, but I'm struggling running ikiwiki under Arch on a RaspberryPi.  
+I have a default user: alarm that both runs the nginx server and which created the ikiwiki site.  
+Everything sits in the home folder.  
+
+I've followed the instructions [here](http://ikiwiki.info/tips/dot_cgi/#index3h2) regarding the configuration of FastCGI, but there is a slight mistake in it I think.
+Nowadays, the ikiwiki.cgi sits in the subfolder that is the same as the wiki name under public_html/ and not directly under public_html/. But it does not really matter. I corrected that in my script.
+But somehow, even if I play around with the fastcgi parameters, I either get a 403, or the server is trying to send me the ikiwiki.cgi file to download, but does not run it.
+
+I've changed the permissions on the socket, I even tried to run the server as root, nothing changes. Still same errors. If anyone can help, I'd appreciate.
+  
diff --git a/doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__.mdwn b/doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__.mdwn
new file mode 100644 (file)
index 0000000..95572be
--- /dev/null
@@ -0,0 +1,5 @@
+Ikiwiki creates on every page automatically a specific link list at the bottom of the page. 
+
+How can I move this list to the top or to the left? How can I have it both on the top and on the bottom of the page?
+
+Since I want to change it globally I tried to find an option in local.css but didn't find anything related.
diff --git a/doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__/comment_1_173687ee3dfdd9d949c1fa6d9b3cce4c._comment b/doc/forum/How_to_configure_the_position_of_the_automatically_created_links__63__/comment_1_173687ee3dfdd9d949c1fa6d9b3cce4c._comment
new file mode 100644 (file)
index 0000000..c8c7b65
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="spalax"
+ subject="Change the `page.tmpl` template"
+ date="2015-08-28T15:23:54Z"
+ content="""
+You can change the [page.tmpl](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=templates/page.tmpl) template (look for `BACKLINKS` in it). To overwrite the default `page.tmpl`, copy it in, say, a `templates` folder in your repository, and change the setup file to use this folder as a template folder.
+
+-- [[Louis|spalax]]
+"""]]
diff --git a/doc/forum/How_to_fix_wide_character_syslog_error__63__.mdwn b/doc/forum/How_to_fix_wide_character_syslog_error__63__.mdwn
new file mode 100644 (file)
index 0000000..5562cb5
--- /dev/null
@@ -0,0 +1,5 @@
+When running `ikiwiki rebuild` I got error:
+
+    failed to syslog: Wide character in syswrite at /usr/lib/perl/5.18/Sys/Syslog.pm line 546
+
+Ubuntu 14.04. ikiwiki 20150107.
diff --git a/doc/forum/How_to_fix_wide_character_syslog_error__63__/comment_1_fce9619a48eba6d9559e2c33ba6322c9._comment b/doc/forum/How_to_fix_wide_character_syslog_error__63__/comment_1_fce9619a48eba6d9559e2c33ba6322c9._comment
new file mode 100644 (file)
index 0000000..2de135f
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="comment 1"
+ date="2016-01-21T07:33:19Z"
+ content="""
+What was on the next line after that message?
+
+I suspect this is a bug which still exists in 3.20150614. I think I've now fixed it
+for the next version of ikiwiki.
+"""]]
diff --git a/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command.mdwn b/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command.mdwn
new file mode 100644 (file)
index 0000000..9418f67
--- /dev/null
@@ -0,0 +1,10 @@
+As per above. I'm using a inline to show most recent pages using meta(date). I want to limit the number of items to 20 but here is the catch I want to maintain chronological order. Kind of like using `sort -n | tail`.
+
+Showing the `n` oldest pages in chronological order starting with the first is easy just combine sort and show. Same thing goes for showing the `n` most recent pages in reverse chronological order.
+
+Can't figure out if what I want to do is doable.
+
+A bit of background:
+I'm using my [[tweaked img plugin|kjs]] to populate meta data from images. The meta date is set according to the image exif data. On the homepage I show thumbnails of the 20 most recent images. This is a site of family photos (why I can't share the link here) and such and it's a bit confusing to show all sequences in reverse. I.e first image shows all the presents opened then they repackage themselves and end up with ribbons.
+
+-[[kjs]]
diff --git a/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_1_e62f3ae89da8c66e94d37bd148fbebbd._comment b/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_1_e62f3ae89da8c66e94d37bd148fbebbd._comment
new file mode 100644 (file)
index 0000000..d9fdabc
--- /dev/null
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="comment 1"
+ date="2015-08-15T12:33:11Z"
+ content="""
+I don't think this is currently possible: `show` takes the first *n*
+pages after sorting.
+
+Care to contribute a patch adding `show=\"last 10\"`? Then you could do
+
+    \[[inline pages=\"...\" sort=\"-age\" show=\"last 10\"]]
+
+and I think that would have the result you want.
+"""]]
diff --git a/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_2_3e5d32aab68e21b3c4b6145e61b0b744._comment b/doc/forum/Inline__44___sort_and_show_-_is_it_possible_to_achieve_equivalent_to_tail_command/comment_2_3e5d32aab68e21b3c4b6145e61b0b744._comment
new file mode 100644 (file)
index 0000000..42331b1
--- /dev/null
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="kjs"
+ subject="comment 2"
+ date="2015-08-16T20:09:33Z"
+ content="""
+I could do a patch if I could program... The img plugin stuff is more a working accident of mine ;)
+
+For now I've reverted to showing all albums in reverse chronological order. Atleast then people aren't confused by different ordering of the homepage inline and the actual album.
+
+I'll see if I can have a look at the show last patch as you suggest, but that won't happen shortly.
+
+Regards
+
+"""]]
diff --git a/doc/forum/Language_variable.mdwn b/doc/forum/Language_variable.mdwn
new file mode 100644 (file)
index 0000000..7eb2577
--- /dev/null
@@ -0,0 +1,78 @@
+(I don't know whether this is about a bug or about a feature request, so apologies if this post is in the wrong place.)
+
+# Rationale:
+
+It seems to me that the way ikiwiki handles language information at
+the moment isn't optimal.
+
+For instance, if I want to apply different CSS properties depending on
+the language, I can't. (This matters for some typographic rules that
+differ depending on the language.)
+
+Also, without proper language declarations, the browser cannot hyphen
+words correctly, resulting in poor line breaking/wrapping.
+
+
+# The problem:
+
+## How it's done now:
+
+Right now, correct me if I'm wrong, but I need to write
+
+    bracket bracket !meta language="en"]]
+
+somewhere inside a post in order to tell ikiwiki which language the
+post is written in. This will result in the post's HTML as:
+
+    <meta name="language" content="en" />
+
+
+This isn't sufficient.
+
+## What isn't done
+
+### 1. the blog's lang
+
+There's no way to tell ikiwiki the overall, or main language of the
+blog at the moment (again, that's as far as I can see from reading
+documentations, forums, etc.)
+
+This setting would be nice, in order to add have something like
+
+    <html lang="en">
+
+on all pages.
+
+
+### 2. the post's lang
+
+Then, if a specific post has the meta language property explicitly
+defined, it should override the language declaration set as default.
+
+### 3. template variable
+
+Right now, there's no
+
+    <TMPL_VAR LANGUAGE>
+
+from what I can tell by testing. As a result, I cannot give specific
+css properties or the like.
+
+
+# Fast way to resolve this
+
+The easiest way to resolve this is to create a TMPL_VAR LANGUAGE so
+that at least people who care can use this variable and improve their templates.
+
+
+----
+
+This really is the most needed feature for me as a writer in both
+English and French that I miss the most with ikiwiki. I have looked
+around in the source code on <https://github.com/joeyh/ikiwiki> but I
+couldn't figure out where this is happening...
+
+
+I hope you also care :-)
+
+Thanks,
diff --git a/doc/forum/Language_variable/comment_1_caea1154542404ffa1ce1c5344208fd4._comment b/doc/forum/Language_variable/comment_1_caea1154542404ffa1ce1c5344208fd4._comment
new file mode 100644 (file)
index 0000000..c608cd8
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="fboulogne@247e5cb9cf56b3ff602b5e50ee07bb3985b88808"
+ nickname="fboulogne"
+ subject="comment 1"
+ date="2015-08-01T02:15:27Z"
+ content="""
+I totally agree on this need. It's also very important for the accessibility (especially handicapped people who need a specific software.)
+"""]]
diff --git a/doc/forum/Let_rss_point_to_https_.mdwn b/doc/forum/Let_rss_point_to_https_.mdwn
new file mode 100644 (file)
index 0000000..6959a0c
--- /dev/null
@@ -0,0 +1,8 @@
+Now that we can use the certificates of Lets encrypt, many wikis will move to
+https in stead of http.
+
+However, the RSS and Atom-feeds are still pointing at http
+
+Is there a way to configure the RSS- and Atomfeeds to be pointing to
+https://... ?
+
diff --git a/doc/forum/Let_rss_point_to_https_/comment_1_571d9f380068bf9130f8b68d1af22dae._comment b/doc/forum/Let_rss_point_to_https_/comment_1_571d9f380068bf9130f8b68d1af22dae._comment
new file mode 100644 (file)
index 0000000..b352e24
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="spalax"
+ subject="Question/Proposal"
+ date="2015-12-12T22:04:09Z"
+ content="""
+Wouldn't use the `//` in the URL, to make the URL protocol relative, solve the problem? It [seems to be already used](http://source.ikiwiki.branchable.com/?p=source.git;a=blob;f=IkiWiki.pm;h=fe5af6d15a769250879accb6592b45d84f5c555e;hb=HEAD#l680), but if you ask this question, this means that the rss feed does not use it. Now someone has to track how the feed url is generated, and why it does not use this protocol-relutive URL (sorry, I will not do this myself: I would not find the time to do so these days).
+
+-- [[Louis|spalax]]
+"""]]
diff --git a/doc/forum/Let_rss_point_to_https_/comment_2_02d04263197df6d488e5e39d2686a772._comment b/doc/forum/Let_rss_point_to_https_/comment_2_02d04263197df6d488e5e39d2686a772._comment
new file mode 100644 (file)
index 0000000..94b6cd7
--- /dev/null
@@ -0,0 +1,26 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="Protocol-relative URLs are not always an option; change your url and cgiurl settings"
+ date="2015-12-13T22:20:13Z"
+ content="""
+IkiWiki already uses relative (`../foo/`), hostname-relative (`/foo`) or
+protocol-relative (`//example.com/foo/`) URLs wherever it can. However, not
+everything is allowed to be relative: in particular, more or less
+everything in RSS has to be absolute, either because the specification says so,
+or because in practice RSS consumers usually get relative URLs wrong.
+When we generated XHTML 1.0, `<base href=... />` had to be absolute too,
+but now that we always generate HTML 5 it's relative, so RSS is one of the
+few places the full `url` and `cgiurl` are used.
+
+If you have a certificate that's trusted by \"normal\" browsers (like LetsEncrypt),
+then there's no disadvantage in changing your `url` and `cgiurl` to
+both be `https://...`, and rebuilding your wiki. At this point I would only
+recommend using plain `http://` if you either have no certificate, or a
+self-signed or otherwise not-universally-trusted certificate for a non-public
+website.
+
+Because IkiWiki mostly outputs relative URLs, accesses via `http` will stay
+on `http`, unless you also reconfigure your web server (not specific to
+IkiWiki, for instance if you use Apache see
+[RedirectSSL on the Apache wiki](https://wiki.apache.org/httpd/RedirectSSL).
+"""]]
diff --git a/doc/forum/Moving_everything_so_far_into_a_folder.mdwn b/doc/forum/Moving_everything_so_far_into_a_folder.mdwn
new file mode 100644 (file)
index 0000000..3b17276
--- /dev/null
@@ -0,0 +1 @@
+I kind of want to start anew with my wiki, but I also don't want the stuff that I've written inaccessible. Right now I have one folder, where all my wiki files live and I'd like to move everything into a subfolder e.g.: let's say my stuff lives in ```~/notes/ ``` I would like to move the notes to ```~/notes/old``` without breaking any of the wiki links. Looking at [linkingrules](http://ikiwiki.info/ikiwiki/subpage/linkingrules/) it seems to me that it should work out of the box, but this is not the case. When I try to move a page to ```~/notes/old``` the file is accesible as a wikipage (http://example.com/old/note) but the old links to that page don't work anymore. The wiki thinks the site is missing or something and does not look for it in subfolders. Or so it seems. Anyway. If anyone has an idea to get this to work the right way, that is: to move all current pages to a subfolder without breaking links, I'd be very happy to know.
diff --git a/doc/forum/Moving_everything_so_far_into_a_folder/comment_1_bf2c1d5fb58a3aa0f28fa07f1e41d247._comment b/doc/forum/Moving_everything_so_far_into_a_folder/comment_1_bf2c1d5fb58a3aa0f28fa07f1e41d247._comment
new file mode 100644 (file)
index 0000000..476de5e
--- /dev/null
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ subject="comment 1"
+ date="2015-06-21T23:35:42Z"
+ content="""
+This sounds like a job for mod_rewrite rather than ikiwiki itself.
+"""]]
diff --git a/doc/forum/Moving_everything_so_far_into_a_folder/comment_2_0a6ebc8364239dc8c5760eb2ca290ae9._comment b/doc/forum/Moving_everything_so_far_into_a_folder/comment_2_0a6ebc8364239dc8c5760eb2ca290ae9._comment
new file mode 100644 (file)
index 0000000..cad6aa5
--- /dev/null
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="openmedi"
+ subject="comment 2"
+ date="2015-06-30T09:50:31Z"
+ content="""
+This would work, but there's another problem (of convenience): Since the notes directory is my working directory for notes, I would like to move the notes (this the main reason for trying to do this), so I don't have to see them all the time. I would like to be able to refer to the files in the future, without having to see them. But, I guess, this is not so easily done. But if someone has an idea for a \"native\" ikiwiki solution I'd be very grateful.
+"""]]
diff --git a/doc/forum/Need_something_more_powerful_than_Exclude/comment_7_e5d9fbf7e50476ce3a494541dd41d4d9._comment b/doc/forum/Need_something_more_powerful_than_Exclude/comment_7_e5d9fbf7e50476ce3a494541dd41d4d9._comment
new file mode 100644 (file)
index 0000000..91ad02d
--- /dev/null
@@ -0,0 +1,47 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~beaufils"
+ nickname="beaufils"
+ subject="Does the exclude feature work at all?"
+ date="2015-06-22T10:49:53Z"
+ content="""
+I am not sure if that is a bug or a feature, but it is annoying, definitively related to this post:
+
+    $ ikiwiki --version
+    ikiwiki version 3.20141016.2
+
+    $ mkdir src ; echo A >src/get ; echo A >src/noget
+
+    $ ikiwiki src out                          
+    $ cat out/noget 
+    A
+
+    # Let's ask ikiwiki to forget noget
+    $ ikiwiki src out --exclude noget          
+    $ cat out/noget 
+    A
+
+    # No? Maybe with --rebuild?
+    $ ikiwiki src out --exclude noget --rebuild
+    $ cat out/noget 
+    A
+
+    # So let's remove it manually and try again
+    $ rm out/noget 
+
+    $ ikiwiki src out --exclude noget          
+    $ cat out/noget
+    cat: out/noget: No such file or directory
+
+    # Hum are we sure it worked?
+    $ ikiwiki src out --exclude noget --rebuild
+    $ cat out/noget
+    A
+
+    # Nope :-(
+
+I am really confused with the exclude feature and the way ikiwiki lookup files. Finally I tend to think this is a bug.
+
+Is there a way to make ikiwiki consider that a file in the `srcdir` should not be present in the `destdir` and thus removed if present?
+
+--[[bbb]]
+"""]]
diff --git a/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki.mdwn b/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki.mdwn
new file mode 100644 (file)
index 0000000..1f22f09
--- /dev/null
@@ -0,0 +1,7 @@
+I assume this is a bug:
+
+When when writing the string "S." on a page, it gets replace with "a." for some reason. I am using "ikiwiki version 3.20150614" form pkgsrc on OS X 10.10.4.
+
+If this is not a bug: Where would I be able to change that behaviour?
+
+P.S.: "S." is the short form of the German "Seite" (en: "p." and "page") and is used frquently in citations, so it's kind of important…
diff --git a/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_1_1a842bc7d56e9b40a43cb64c8a76e776._comment b/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_1_1a842bc7d56e9b40a43cb64c8a76e776._comment
new file mode 100644 (file)
index 0000000..dacbe7f
--- /dev/null
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="openmedi"
+ subject="comment 1"
+ date="2015-08-12T15:44:58Z"
+ content="""
+As we can see (and this is lucky in hindsight): The problem doesn't show on the ikiwiki.info site itself. So maybe I did indeed something wrong. Hm.
+"""]]
diff --git a/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_2_73c0052ee7852b2bdc9e92ba6136f20e._comment b/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_2_73c0052ee7852b2bdc9e92ba6136f20e._comment
new file mode 100644 (file)
index 0000000..23a4f97
--- /dev/null
@@ -0,0 +1,37 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="Markdown is weird like that"
+ date="2015-08-12T15:51:38Z"
+ content="""
+Is it right at the beginning of a line, such that Markdown interprets it as a numbered list item for an HTML `<ol>`?
+
+~~~
+a. One
+b. Two
+c. Three
+
+a. One
+a. Two
+a. Three
+
+S. One
+X. Two
+Z. Three
+~~~
+
+are all interpreted as
+
+a. One
+b. Two
+c. Three
+
+If this is what's going on, you can use:
+
+`p\. 49`
+
+to get:
+
+p\. 49
+
+or adjust your spacing so it isn't the first thing on a line.
+"""]]
diff --git a/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_3_a12366764c50df62a4734c73418b592e._comment b/doc/forum/__34__S.__34___gets_replace_by___34__a.__34___in_my_ikiwiki/comment_3_a12366764c50df62a4734c73418b592e._comment
new file mode 100644 (file)
index 0000000..895cf76
--- /dev/null
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="comment 3"
+ date="2015-08-12T16:08:10Z"
+ content="""
+There is a `MKD_NOALPHALIST` option to discount (assuming that's the Markdown implementation you're using), but it isn't clear which way should be preferred in general.
+
+With that option off, people complain that they can't have alphabetical sub-lists (Google for \"markdown alpha list\" to see this feature request in various places).
+
+With that option on, you get unexpected results for things like your example. It's also liable to break initials (`S. J. McVittie is an ikiwiki contributor`) or the French abbreviation for Monsieur (`M. Poirot is a famous French-speaking detective`).
+
+The original Markdown didn't have lettered lists; neither does CommonMark, although it's a feature request in CommonMark.
+"""]]
diff --git a/doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_2_7ef0d94691095f1cd316ad0d2c423796._comment b/doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_2_7ef0d94691095f1cd316ad0d2c423796._comment
new file mode 100644 (file)
index 0000000..88533ce
--- /dev/null
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="http://christian.amsuess.com/chrysn"
+ subject="&quot;please tell me&quot; when this happens, severity"
+ date="2015-11-15T13:45:29Z"
+ content="""
+i think that this is an issue to be considered, as it breaks ikiwiki installations that previously worked. the scenario this happened in for me was this:
+
+ages ago, i set up a dedicated user for ikiwiki on a server, and created wikis there with cgi and commit access for power users. things worked nicely, commits from web users showed up with author \"username <username@web>\" and committer \"gitusername <gitusername@hostname.(none)>\"; not exactly pretty, but it worked.
+
+when upgrading git, the wiki kept working for directly pushing users, but when web users did a change, it was written in the source directory, but not committed (with the error message showing up in the log, but no error message to the users). only when they looked in the recent changes, they noted their modifications missing, and power users would never see their changes.
+
+i suggest that ikiwiki provide a default value for committer (eg. \"ikiwiki <username@hostname>\") to circumvent this issue.
+
+(i didn't pinpoint the exact git version this changed in, but it's between 1.7 and 1.9).
+"""]]
diff --git a/doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_3_ea7ae2cf2e1f897a653a81bd20fe55db._comment b/doc/forum/problem_with_git_after_a_commit_of_ikiwiki/comment_3_ea7ae2cf2e1f897a653a81bd20fe55db._comment
new file mode 100644 (file)
index 0000000..5b06d06
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="comment 3"
+ date="2015-11-30T19:58:43Z"
+ content="""
+I've made essentially the change [[chrysn]] suggested in git master. It will be in the next release.
+
+I've also added Debian [autopkgtest](https://tracker.debian.org/pkg/autopkgtest) support; conveniently, it exhibited this bug, so we can make sure it stays fixed.
+"""]]
index dd066c3208ad02ad25def65b767fc13f1470af85..85e3e07bc6620a0c0dadb05fedc18e340aa0eef0 100644 (file)
@@ -83,6 +83,7 @@ think about merging them. This is recommended. :-)
 * [[jcflack]] `git://github.com/jcflack/ikiwiki.git`
 * [[users/mjd]] `https://github.com/mjdominus/ikiwiki.git` ([[browse|https://github.com/mjdominus/ikiwiki]])
 * [[users/kjs]] `git://src.kalleswork.net/ikiwiki.git`
+* bfree `git://github.com/bfree/ikiwiki.git`
 
 ## branches
 
index 32fecd1bfb44e372f82f0b46cbcbefbd6f15a79f..da759fc198be685eaa452cb6f4df46a1e24e3bf5 100644 (file)
@@ -5,7 +5,7 @@ The most common use of inlining is generating blogs and RSS or Atom feeds.
 
 Example:
 
-       \[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
+       \[[!inline pages="blog/* and !*/Discussion" limit="10" rootpage="blog"]]
 
 Any pages that match the specified [[PageSpec]] (in the example, any
 [[SubPage]] of "blog") will be part of the blog, and the newest 10
@@ -46,9 +46,11 @@ There are many parameters you can use with the `inline`
 directive. These are the commonly used ones:
 
 * `pages` - A [[PageSpec]] of the pages to inline.
-* `show` - Specify the maximum number of matching pages to inline.
+* `limit` - Specify the maximum number of matching pages to inline.
   Default is 10, unless archiving, when the default is to show all.
   Set to 0 to show all matching pages.
+  In older versions of IkiWiki this parameter was called `show`, which
+  also still works.
 * `archive` - If set to "yes", only list page titles and some metadata, not
   full contents.
 * `title` - Sets the title of the rss feed if one is generated.
@@ -98,8 +100,10 @@ Here are some less often needed parameters:
   were created in the same commit, sort them by the name of the page
   (equivalent to `sort="age title"`).
 * `reverse` - If set to "yes", causes the sort order to be reversed.
-* `feedshow` - Specify the maximum number of matching pages to include in
-  the rss/atom feeds. The default is the same as the `show` value above.
+* `feedlimit` - Specify the maximum number of matching pages to include in
+  the rss/atom feeds. The default is the same as the `limit` value above.
+  In older versions of IkiWiki this parameter was called `feedshow`, which
+  also still works.
 * `feedonly` - Only generate the feed, do not display the pages inline on
   the page.
 * `quick` - Build archives in quick mode, without reading page contents for
@@ -126,7 +130,7 @@ Here are some less often needed parameters:
 * `trail` - If set to "yes" and the [[!iki plugins/trail desc=trail]] plugin
   is enabled, turn the inlined pages into a trail with next/previous links,
   by passing the same options to [[ikiwiki/directive/trailitems]]. The `skip`
-  and `show` options are ignored by the trail, so the next/previous links
+  and `limit` options are ignored by the trail, so the next/previous links
   traverse through all matching pages.
 
 [[!meta robots="noindex, follow"]]
index 8d904f5a36840011df231c49d49bdd49efa02720..ab8397366f985a8604236c597ba8814c8b3aaf01 100644 (file)
@@ -28,13 +28,22 @@ Or to display a cloud of tags related to Linux, you could use:
 
        \[[!pagestats pages="tags/* and !tags/linux" among="tagged(linux)"]]
 
-The optional `show` parameter limits display to the specified number of
+The optional `limit` parameter limits display to the specified number of
 pages. For instance, to show a table of the top ten pages with the most
 links:
 
-       \[[!pagestats style="table" show="10"]]
+       \[[!pagestats style="table" limit="10"]]
+
+In older versions of IkiWiki this parameter was called `show`;
+that name still works, if its value is numeric.
 
 The optional `class` parameter can be used to control the class
 of the generated tag cloud `div` or page stats `table`.
 
+By default, the names of pages are shown. The `show` parameter
+can be used (with a non-numeric value) to show the titles or descriptions
+of pages instead (as set by the [[meta]] directive). For example:
+
+       \[[!pagestats pages="tags/*" show="title"]]
+
 [[!meta robots="noindex, follow"]]
index 58bb8ca065f2633b21de4dfd9c4c02b987820481..65a45b99ff0978eb2c2a6f6f8501cfb950a8081b 100644 (file)
@@ -13,6 +13,13 @@ BTW, ikiwiki doesn't displays the #foo anchor in the example
 
 --[[Paweł|ptecza]]
 
+> Just found out that headers are already indexed with `index1h1 ... indexMhN`.
+> So one can link to headings with `\[[page|#index2h3]]` for example. 
+> It would be much easier though if it was translated to the heading's name,
+> so on could to `\[[page#name]]`. --Timoses
+
+>> That's [[plugins/headinganchors]]. --smcv
+
 > No such syntax exists in markdown.  ikiwiki could certainly have a
 > [[preprocessor_directive|directive]] for it, though.
 > --[[JoshTriplett]]
@@ -91,3 +98,21 @@ I like your suggestion because it's short and conscise. However, it would be nic
 > I'm not sure that it is a good idea to refer to arbitrary meta tags in links in the first place - what other meta tags would you really be interested in?  Description?  Author?  It makes sense to me to refer to the title, because that is a "label" for a page.
 > As for syntax, I do like the \[[|foobar]] idea, or perhaps something like what <a href="http://www.pmwiki.org">PmWiki</a> does - they have their links the other way around, so they go \[[page|label]] and for link-text-as-title, they have \[[page|+]].  So for IkiWiki, that would be \[[+|page]] I guess.
 > --[[KathrynAndersen]]
+
+----
+
+I am thinking that it would be useful to parse parts of one wiki page into another. Here something like `\[[page=anchor]]` would be really nice to simply parse the content of that section, as opposed to `\[[page#anchor]]` which only creates a link to that section. -- [[Timoses]]
+
+> When you say "parse parts" do you mean taking a section of a wiki page and including its text
+> in a different wiki page? So for instance you might want `/installation` to include the
+> `Downloading binaries` section of `/download`, but not the rest of that page?
+>
+> That's really a separate feature request (inlining isn't linking), and is also rather difficult
+> to do in IkiWiki's processing model: at the time that [[wikilinks|ikiwiki/wikilink]] and
+> [[directives|ikiwiki/directive]] are processed, the page content is still Markdown or
+> whatever other format is relevant, not HTML. That makes sections difficult to identify.
+>
+> I would suggest making the desired section a separate page (for example you might
+> call it `/download/binaries`), and including that whole page everywhere it should
+> appear (for example in both `/download` and `/installation`) using
+> `\[[!inline pages="download/binaries" raw=yes]]`. --[[smcv]]
index 47a13692a875ca0bcb0ccab5f670a8a13f47a24a..2ce5f885f1ab51b140323bae94c4c6dc28b29e6b 100644 (file)
@@ -213,3 +213,5 @@ Personal sites and blogs
   * [Igreja Universal do Reino do Iuri](http://iuri.tem.blog.br)
   * [Mim](http://mim.tem.blog.br)
 * [Mídia Capoeira](https://capoeira.li/blog/) - independent journalism initiative
+* [Sean Whitton's personal website](http://spwhitton.name/)
+* [Matto's personal website](https://box.matto.nl)
diff --git a/doc/news/version_3.20140916.mdwn b/doc/news/version_3.20140916.mdwn
deleted file mode 100644 (file)
index 1cf09e6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-ikiwiki 3.20140916 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Don't double-decode CGI submissions with Encode.pm &gt;= 2.53,
-     fixing "Error: Cannot decode string with wide characters".
-     Thanks, [[Antoine Beaupré|anarcat]]
-   * Avoid making trails depend on everything in the wiki by giving them
-     a better way to sort the pages
-   * Don't let users post comments that won't be displayed
-   * Fix encoding of Unicode strings in Python plugins.
-     Thanks, [[chrysn]]
-   * Improve performance and correctness of the \[[!if]] directive
-   * Let \[[!inline rootpage=foo postform=no]] disable the posting form
-   * Switch default \[[!man]] shortcut to manpages.debian.org. Closes: #[700322](http://bugs.debian.org/700322)
-   * Add UUID and TIME variables to edittemplate. Closes: #[752827](http://bugs.debian.org/752827)
-     Thanks, Jonathon Anderson
-   * Display pages in linkmaps as their pagetitle (no underscore escapes).
-     Thanks, [[chrysn]]
-   * Fix aspect ratio when scaling small images, and add support for
-     converting SVG and PDF graphics to PNG.
-     Thanks, [[chrysn]]
-     - suggest ghostscript (required for PDF-to-PNG thumbnailing)
-       and libmagickcore-extra (required for SVG-to-PNG thumbnailing)
-     - build-depend on ghostscript so the test for scalable images can be run
-   * In the CGI wrapper, incorporate $config{ENV} into the environment
-     before executing Perl code, so that PERL5LIB can point to a
-     non-system-wide installation of IkiWiki.
-     Thanks, Lafayette Chamber Singers Webmaster
-   * filecheck: accept MIME types not containing ';'
-   * autoindex: index files in underlays if the resulting pages aren't
-     going to be committed. Closes: #[611068](http://bugs.debian.org/611068)
-   * Add \[[!templatebody]] directive so template pages don't have to be
-     simultaneously a valid template and valid HTML
-   * Add [[smcv]] to Uploaders and release to Debian"""]]
-[[!meta date="2014-09-16 11:16:52 +0100"]]
diff --git a/doc/news/version_3.20150614.mdwn b/doc/news/version_3.20150614.mdwn
new file mode 100644 (file)
index 0000000..1b08f5a
--- /dev/null
@@ -0,0 +1,8 @@
+ikiwiki 3.20150614 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * inline: change default sort order from age to "age title" for
+     determinism, partially fixing deterministic build for git-annex,
+     ikiwiki-hosting etc. (Closes: #[785757](http://bugs.debian.org/785757))
+   * img: avoid ImageMagick misinterpreting filenames containing a colon
+   * img test: set old timestamp on source file that will change, so that
+     the test will pass even if it takes less than 1 second"""]]
\ No newline at end of file
index c938036053bbd5ac4671d3939d80f274108d2141..b9501a034e2e7901cee9df3d6a4862f2fd3627cb 100644 (file)
@@ -4,4 +4,4 @@ This plugin enables Markdown processing using [Pandoc](http://johnmacfarlane.net
 
 This is an expanded and updated version of [[Jason Blevin|users/jasonblevins]]'s pandoc plugin. Get it and see further details at <https://github.com/dubiousjim/pandoc-iki>.
 
-A version, merging enhancements in various forks is available at <https://github.com/sciunto/ikiwiki-pandoc>. PR are welcome.
+Several authors are maintaining a code here: <https://github.com/sciunto-org/ikiwiki-pandoc>. Several enhancements found on github were merged and we keep developing the plugin. PR are welcome. :)
index a8d4c67fddb2ddd36b46c98f23a5a075986264ad..af7c06caf16283391589de2dc8328ac8291e7183 100644 (file)
@@ -30,6 +30,6 @@ The plusone directive allows to override the automativally generated url by spec
 
 ## DOWNLOAD
 
-* single file: [plusone.pm](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob_plain;f=IkiWiki/Plugin/plusone.pm;hb=refs/heads/plusone)
-* browse repository: <http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=shortlog;h=refs/heads/plusone>
-* git repo: `git://git.recluse.de/users/bzed/ikiwiki.git` or <http://git.recluse.de/repos/users/bzed/ikiwiki.git> (Use the plusone branch)
+* single file: [plusone.pm](https://git.bzed.at/raw/~bzed/ikiwiki.git/plusone/IkiWiki!Plugin!plusone.pm)
+* browse repository: <https://git.bzed.at/blob/~bzed%2Fikiwiki.git/plusone/IkiWiki%2FPlugin%2Fplusone.pm>
+* git repo: `git://git.recluse.de/users/bzed/ikiwiki.git` or <https://git.bzed.at/r/~bzed/ikiwiki.git> (Use the plusone branch)
index 06d4120cd5a00c59323c1c43174cc4fcac5db960..d2ed71e785cf9027baaccd64a871c8a3b993c57a 100644 (file)
@@ -25,6 +25,6 @@ This plugin includes the necessary tracking codes for Piwik and/or Google Analyt
 
 ## DOWNLOAD
 
-* single files: [tracking.pm](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=IkiWiki/Plugin/tracking.pm;hb=refs/heads/tracking) [piwik.tmpl](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=templates/piwik.tmpl;hb=refs/heads/tracking) [google_analytics.tmpl](http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=blob;f=templates/google_analytics.tmpl;hb=refs/heads/tracking)
-* browse repository: <http://git.recluse.de/?p=users/bzed/ikiwiki.git;a=shortlog;h=refs/heads/tracking>
-* git repo: `git://git.recluse.de/users/bzed/ikiwiki.git` or <http://git.recluse.de/repos/users/bzed/ikiwiki.git> (Use the tracking branch)
+* single files: [tracking.pm](https://git.bzed.at/raw/~bzed/ikiwiki.git/tracking/IkiWiki!Plugin!tracking.pm) [piwik.tmpl](https://git.bzed.at/raw/~bzed/ikiwiki.git/tracking/templates!piwik.tmpl) [google_analytics.tmpl](https://git.bzed.at/raw/~bzed/ikiwiki.git/tracking/templates!google_analytics.tmpl)
+* browse repository: <https://git.bzed.at/tree/~bzed%2Fikiwiki.git/tracking>
+* git repo: `git://git.bzed.at/~bzed/ikiwiki.git` or <https://git.bzed.at/r/~bzed/ikiwiki.git> (Use the tracking branch)
index c87469d6f3f9aad8ba344d348354f6dfc29d7a6b..bc525a562abfb187b65d6acc008165340e102d8b 100644 (file)
@@ -16,3 +16,23 @@ It would be handy if the `class` and `id` tags were passed through to the surrou
 I have created a patch that allows the image to be sharpened when resampled.
 There is also an additional option to interlace the image using plane for
 progressive display. --[[kjs]]
+
+---
+
+Is it possible to give an external image URL, must the image be local? One use case would be displaying *badges*, like [[the number of stars|https://img.shields.io/github/stars/joeyh/ikiwiki.svg]] of a [[github project|http://github.com/joeyh/ikiwiki]], but ``\[[!img https://img.shields.io/github/stars/joeyh/ikiwiki.svg]]`` does not work: [[!img https://img.shields.io/github/stars/joeyh/ikiwiki.svg]]. --[[Louis|spalax]]
+
+> Eventually wrote my own plugin: [[plugins/contrib/rimg]]. --[[Louis|spalax]]
+
+>> All the markup formats supported by ikiwiki can do raw HTML (possibly
+>> filtered), so you can use `<img>` for basic remote images; or you can
+>> use your chosen markup format's image syntax, like
+>> !\[some stars](https://img.shields.io/github/stars/joeyh/ikiwiki.svg)
+>> for Markdown. I don't think ikiwiki directives should duplicate markup
+>> formats' features unless it makes a significant difference to functionality
+>> or usability. --[[smcv]]
+
+>>> I totally agree. I never think about using HTML in my markdown documents,
+>>> and I did not know the `!\[Alt text](image url)`. Anyway, this plugin took
+>>> me less than one hour to write and publish; I will delete it soon.
+>>>
+>>> Anyway, thanks for your answer. --[[Louis|spalax]]
index 642b266f86743b7a7f4795ab6c0c376102dbba0a..7a5b532265e669ef2aa768a884b32b0a1203869c 100644 (file)
@@ -1,7 +1,7 @@
 This plugin allows users to subscribe to pages, and emails them when
 those pages are created or changed.
 
-It needs the [[!cpan Mail::SendMail]] perl module, and sends mail
+It needs the [[!cpan Mail::Sendmail]] perl module, and sends mail
 using the local MTA.
 
 Each user can configure which pages they are interested in, using an
index 95f4a39dfb9f3f0e24de672419f62cb043835422..b6d0611dc9bf72ea5c208f60eac5c5bd970acc18 100644 (file)
@@ -741,7 +741,7 @@ Ordinary [[WikiLinks|ikiwiki/WikiLink]] appear in `%links`, but not in
 
 ### `%pagesources`
 
-The `%pagesources` has can be used to look up the source filename
+The `%pagesources` hash can be used to look up the source filename
 of a page. So the key is the page name, and the value is the source
 filename. Do not modify this hash.
 
index b9f68de5a644358c57a2c27a2801fb6ae3ad3c6a..25e5324c618cdedf6db691dfe5659dc9f3c0c330 100644 (file)
@@ -1,15 +1,14 @@
-[[!osm ]]
-[[!waypoint  lat="45°30N" lon="73°40W" name="My city" tag="city"]]
-
+[[!template  id=test45 text="""Here is the text to insert into my note."""]]
+dddddddddddd
 
 [[!meta date="Thu Jun 16 22:04:33 2005" updated="Thu Dec 22 01:23:20 2011"]]
 
 This is the [[SandBox]], a page anyone can edit to try out ikiwiki
 (version [[!version  ]]).
-
+vvvv
 CamelCase ?
 
-What about [[this page]]?
+What about [[this page]], nono better [[that page]]?
 
 hello world (right back at ya)
 
@@ -17,6 +16,8 @@ wait how does versioning work
 
 test, is it being saved? Probably. I will check. This seems really straightforward.
 
+Hello!
+
 ~~~
 pre formated text?
 ~~~
@@ -31,6 +32,7 @@ A block of text
 >> Without a space works too.
 >>> to three levels
 
+This is pretty sweet
 
 Azerty
 ** Qsdf **
diff --git a/doc/sandbox/that_page.mdwn b/doc/sandbox/that_page.mdwn
new file mode 100644 (file)
index 0000000..8eacc87
--- /dev/null
@@ -0,0 +1,5 @@
+## This is that page
+
+That page is goood.
+
+How to set viewing permissions?
index c45316e44907cc1758c886eab574399fd768a707..378e579ba77223133e51cf58cfea39a4f741be5e 100644 (file)
@@ -92,7 +92,7 @@ Here is a full list of the template files used:
 * `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`,
   `editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`,
   `editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`,
-  `passwordmail.tmpl`, `emailauth.tmpl, `login-selector.tmpl`, 
+  `passwordmail.tmpl`, `emailauth.tmpl`, `login-selector.tmpl`, 
   `revert.tmpl` - Parts of ikiwiki's user interface; do not normally need
   to be customised.
 
index f825e2ae3c08fb24dc458c5944248a8a6b797433..3cd6149a9cead7339564e67b3164ca76df0ac841 100644 (file)
@@ -12,6 +12,10 @@ Feel free to add your own [[theme|themes]] here, but first consider writing a si
 
  * **[[Bootstrap theme|http://anonscm.debian.org/gitweb/?p=users/jak/website.git;a=summary]]**, contributed by [[JAK LINUX|http://jak-linux.org/about/]], based on [[Twitter Bootstrap|http://twitter.github.com/bootstrap/]]
 
- * **[[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]]**, contributed by [[ramsey]], based on [[Twitter Bootstrap 3|http://getbootstrap.com]]
+ * **[[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]]**, contributed by [[ramsey]], based on [[Twitter Bootstrap 3|http://getbootstrap.com]], also modified by [dequis.org](https://github.com/dequis/ikiwiki-bootstrap-theme/tree/dequis.org)
 
  * **[[Bootstrap 2|https://notabug.org/hiatobr/ikiwiki-bootstrap-theme-2]]**, contributed by [Hacklab Independência](https://hi.ato.br), a fork of [[ramsey]]'s [[Bootstrap 3|https://github.com/ramseydsilva/ikiwiki-bootstrap-theme]] original work. You may see examples on [[my user page|/users/desci]]
+
+ * yet another **[Bootstrap 3](https://github.com/anderbubble/ikiwiki-bootstrap)** theme, contributed by anderbubble
+
+ * and one more **[Bootstrap 3](https://github.com/tgpfeiffer/ikiwiki-bootstrap-template)** theme (can't you guys get along already?!), contributed by tgpfeiffer, this one shipping a copy of the bootstrap files
index 49ae172d1f31b4091c88d0c66142c8a854cbcb15..6af4f961936cd76ff80bf814ceffd3320a30e811 100644 (file)
@@ -75,7 +75,7 @@ repository.
 ## Configuring the wiki on the wiki machine so that it uses the repository of the git machine
 
 - Configure ssh so that it uses the ssh key `id_SITE` to connect to the git
-  michine: add the following lines to file `~/.ssh/config` on the ikiwiki
+  machine: add the following lines to file `~/.ssh/config` on the ikiwiki
   machine:
 
         Host server.name.of.the.git.machine
diff --git a/doc/tips/bootstrap_themes_evaluation.mdwn b/doc/tips/bootstrap_themes_evaluation.mdwn
new file mode 100644 (file)
index 0000000..f1f6553
--- /dev/null
@@ -0,0 +1,14 @@
+There are now 4 or more ikiwiki bootstrap themes flying around in the [[theme_market]]. It is quite confusing.
+
+In order to figure out exactly which ones fares the best, i made test wikis for all of them. All the wikis have a sidebar with the sidebar plugin enable, so if you don't see it, it's because the theme doesn't support it.
+
+* <http://bootstrap-jak.wiki.orangeseeds.org/> demos the [jak-linux.org](http://jak-linux.org/about/) original bootstrap 2 theme, now updated to 3.3.4. note that this theme needs the [bootmenu](https://github.com/dnstap/dnstap-ikiwiki/blob/master/libdir/IkiWiki/Plugin/bootmenu.pm) plugin to generate a menu, and doesn't support the sidebar plugin
+* <http://bootstrap-ramseydsilva.wiki.orangeseeds.org> demos the [ramseydsilva](https://github.com/ramseydsilva/ikiwiki-bootstrap-theme) bootstrap 3 theme
+* <http://bootstrap-hiatobr.wiki.orangeseeds.org> demos the [hiatobr](https://notabug.org/hiatobr/ikiwiki-bootstrap-theme-2) fork of the above
+* <http://bootstrap-dequis.wiki.orangeseeds.org> demos the [dequis](https://github.com/dequis/ikiwiki-bootstrap-theme) theme, *another* fork of the above
+* <http://bootstrap-tgpfeiffer.wiki.orangeseeds.org> demos the [tgpfeiffer](https://github.com/tgpfeiffer/ikiwiki-bootstrap-template) rewrite
+* <http://bootstrap-anderbubble.wiki.orangeseeds.org/> demos the theme from [anderbubble](https://github.com/anderbubble/ikiwiki-bootstrap), another separate implementation
+
+Hopefully this will help others figure out what the heck is going on here... Personnally, I think I prefer the JAK linux one, but i don't like the idea of depending on a theme-specific plugin...  -- [[anarcat]]
+
+Update: I ended up forking the Jak theme also... My experience has been documented in [this blog post](http://anarc.at/blog/2015-09-09-bootstrap/?updated). --[[anarcat]]
index 92d4ce9dadb77675d306aacf7ec04ec128d3573d..229f27148938dd0d85e37ecbd117e7c43cc7ca96 100644 (file)
@@ -15,7 +15,7 @@ There are several possible level of decentralisation:
  1. [[a simple HTML mirror|tips/Git_repository_and_web_server_on_different_hosts/]]
  2. [[separate ikiwiki and git servers|tips/Hosting_Ikiwiki_and_master_git_repository_on_different_machines]]
  3. separate `srcdir`, still requires a central bare repo - uses [[plugins/pinger]]
- 4. completely distinct ikiwiki installs, synchronised with [[plugins/contrib/gitpush]]
+ 4. completely distinct ikiwiki installs
 
 Here's a graphic overview of those:
 
@@ -60,7 +60,7 @@ Step by step setup instructions for this are detailed below.
 [[!img decentralized_wikis.svg size=400x]]
 
 In this configuration, each wiki is fully independent and pushes its
-changes to other wikis using the [[plugins/contrib/gitpush]] plugin.
+changes to other wikis using git.
 
 ## Step by step setup instructions
 
@@ -207,12 +207,11 @@ The following entries will be different from the above setup file:
     git_wrapper: /home/user/source.git/hooks/post-commit
     git_test_receive_wrapper: /home/user/source.git/hooks/pre-receive
 
-To do this, the mirror needs to push back to the master, using the [[plugins/contrib/gitpush]] plugin:
+To make the mirror push back to the master, use, for example:
 
-    git_push_to:
-    - git://wiki.example.com/
+    git_wrapper_background_command: git push git://wiki.example.com/
 
-This will ensure that commits done on the mirror will propagate back to the master.
+This will help ensure that commits done on the mirror will propagate back to the master.
 
 ## Other ideas
 
index ab5eb229b0eae766826b9ac50c2c1a5034c5a0c9..f85529980028b7af3a1cd6d016620b9bc87468b9 100644 (file)
@@ -201,3 +201,5 @@ browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/pagest
 >> Here's a branch. It depends on my `ready/limit` branch
 >> from [[todo/pick a new canonical name for equivalent of SQL limit]].
 >> --[[smcv]]
+
+>>> [[Merged|done]] --[[smcv]]
diff --git a/doc/todo/Page_template_with_RTL_support.mdwn b/doc/todo/Page_template_with_RTL_support.mdwn
new file mode 100644 (file)
index 0000000..7f11fd5
--- /dev/null
@@ -0,0 +1,16 @@
+Hi,
+
+I've modified page.tmpl to take into account rtl languages. Basically I've modified the `<html>` tag to generate
+
+       <html dir="$DIRECTION" lang="$LANG">
+
+if the PO plugin is enabled.
+
+I can't seem to attach a patch - sending it to Joey.
+Copy pasting markup here seems to be quite problematic.
+Pasting it here: https://paste.debian.net/318146/
+
+
+Cheers.
+
+> [[applied|done]] --[[Joey]]
index d13fa0a6ff420f6cbff509f07c5a6f22c5e7551a..81cf2c49a28c7104fdc25e6377ed3aa340688a8a 100644 (file)
@@ -65,7 +65,9 @@ General points:
 
 The `role` attribute is not allowed by the XHTML 1.0 Strict DTD, so we
 should only emit it in HTML5 mode (and we should probably
-[[todo/generate_HTML5_by_default]]).
+[[todo/generate_HTML5_by_default]]). --[[smcv]]
+
+> Now we do. --[[smcv]]
 
 Specific roles:
 
@@ -93,3 +95,5 @@ but only in HTML5 mode for the reason given above. I have not applied
 a role to the sidebar just yet.
 
 --[[smcv]]
+
+> Feedback desired. Tagging this [[reviewed]] to take it off the patches list --[[smcv]]
index e39d4c19b1d15a8680d96fbd7645810aaa5a9c37..f0c6c19b6c688d3b2c6cd8517c4a58ac42f52071 100644 (file)
@@ -28,3 +28,9 @@ There is a [[plugins/blogspam]] plugin that uses the blogspam.org service
 to check for common spam signatures. --[[Joey]] 
 
 [[done]]
+
+----
+
+I am sorry to say that neither those solutions are sufficient for a site that allows anonymous comments. blogspam lets thousands of commits through here, as i described in [[todo/commandline_comment_moderation]]. Now, maybe I didn't configure blogspam correctly, I am not sure. I just enabled the plugin and set `blogspam_pagespec: postcomment(blog/*) or */discussion`. I have also imported the blocklist from this wiki's ikiwiki.setup, generated from [[spam_fighting]]. I have had to add around 10 IPs to that list already.
+
+It seems to me a list of blocked URLs or blocked IPs as mentionned above would be an interesting solution. blogspam is great, but the API doesn't seem to support reporting IPs or bad content back, which seems to be a major problem in working around false negatives. I'm tempted to just remove the `done` tag above, because this is clearly not fixed for me here... --[[anarcat]]
diff --git a/doc/todo/commandline_comment_moderation.mdwn b/doc/todo/commandline_comment_moderation.mdwn
new file mode 100644 (file)
index 0000000..429c115
--- /dev/null
@@ -0,0 +1,60 @@
+So I have enabled the [[moderatedcomments]] plugin on my wiki. and good thing that! around 1000 spammy comments showed up in the last 3 months! Awful!
+
+It's pretty hard to figure out the ham and the spam in there. One thing I was hoping was to use the power of the commandline to filter through all that stuff. Now, it seems there's only a "ikiwiki-comment" tool now, and nothing to examine the moderated comments.
+
+It seems to me it would be great to have some tool to filter through that...
+
+
+So it turns out it was over 3000 comments. The vast majority of those (every one but 42 comments) were from the IP `46.161.41.34` which i recommend null-routing everywhere. I used the following shell magic to figure that out:
+
+<pre>
+#!/bin/sh
+
+set -e
+
+cd .ikiwiki/transient || {
+    echo could not find comments, make sure you are in a ikiwiki source directory.
+    exit 1
+    }
+# count the number of comments
+echo found $(find . -name '*._comment_pending' | wc -l) pending comments
+# number of comments per IP
+echo IP distribution:
+find . -name '*._comment_pending' | xargs grep -h ip= | sort | uniq -c | sort -n
+# generate a banlist for insertion in `banusers`, assuming all the
+# pending comments are spam
+echo banlist would look like:
+find . -name '*._comment_pending' | xargs grep -h ip= | sort -u| sed 's/ ip="//;s/"//;s/^/- ip(/;s/$/)/'
+
+echo to remove comments from a specific IP, use one of those:
+find . -name '*._comment_pending' | xargs grep -h ip= | sort -u \
+    | sed 's/ ip="//;s/"//;' \
+    | while read ip; do
+          echo "find . -name '*._comment_pending' | xargs grep -l 'ip=\"$ip\"'| xargs rm"
+      done
+echo to flush all pending comments, use:
+echo "find . -name '*._comment_pending' -delete"
+</pre>
+
+The remaining 42 comments I reviewed throught the web interface, then flushed using the above command. My final addition to the banlist is:
+
+<pre>
+- ip(159.224.160.225)
+- ip(176.10.104.227)
+- ip(176.10.104.234)
+- ip(188.143.233.211)
+- ip(193.201.227.41)
+- ip(195.154.181.152)
+- ip(213.238.175.29)
+- ip(31.184.238.11)
+- ip(37.57.231.112)
+- ip(37.57.231.204)
+- ip(46.161.41.34)
+- ip(46.161.41.199)
+- ip(95.130.13.111)
+- ip(95.181.178.142)
+</pre>
+
+ --[[anarcat]]
+
+Update: i made a script, above. And the banlist is much larger now so the above list is pretty much out of date now... --[[anarcat]]
index bedf21d0ca5c07d68c11e8eb566957224b5d3d1e..d9bb38099d052c57417f9c4b9c5e69114405a26b 100644 (file)
@@ -77,6 +77,55 @@ at git show-ref to deduce whether to throw an error or not.
 > Ah, but then git-log would still complain "bad revision 'HEAD'"
 > --[[Joey]] 
 
+    jrayhawk@piny:/srv/git/jrayhawk.git$ time perl -e 'for( $i = 1; $i < 10000; $i++) { system("git", "show-ref", "--quiet", "--verify", "--", "refs/heads/master"); }'
+    
+    real  0m10.988s
+    user  0m0.120s
+    sys   0m1.210s
+
+> FWIW, "an extra millisecond per edit" vs "full git coverage" is no
+> contest for me; I use that patch on seven different systems, including
+> freedesktop.org, because I've spent more time explaining to users either
+> why Ikiwiki won't work on their empty repositories or why their
+> repositories need useless initial commits (a la Branchable) that make
+> pushing not work and why denyNonFastForwards=0 and git push -f are
+> necessary than all the milliseconds that could've been saved in the
+> world.
+> 
+> But, since we're having fun rearranging deck chairs on the RMS Perl
+> (toot toot)...
+> 
+> There's some discrepency here I wasn't expecting:
+
+    jrayhawk@piny:/srv/git/jrayhawk.git$ time dash -c 'i=0; while [ $i -lt 10000 ]; do i=$((i+1)); git show-ref --quiet --verify -- refs/heads/master; done'
+    
+    real  0m9.986s
+    user  0m0.170s
+    sys   0m0.940s
+
+> While looking around in the straces, I notice Perl, unlike {b,d}ash
+> appears to do PATH lookup on every invocation of git, adding up to
+> around 110 microseconds apiece on a post-2.6.38 16-thread QPI system:
+
+    29699      0.000112 execve("/home/jrayhawk/bin/git", ["git", "show-ref", "--quiet", "--verify", "--", "refs/heads/master"], [/* 17 vars */]) = -1 ENOENT (No such file or directory)
+    29699      0.000116 execve("/usr/local/bin/git", ["git", "show-ref", "--quiet", "--verify", "--", "refs/heads/master"], [/* 17 vars */]) = -1 ENOENT (No such file or directory)
+    29699      0.000084 execve("/usr/bin/git", ["git", "show-ref", "--quiet", "--verify", "--", "refs/heads/master"], [/* 17 vars */]) = 0
+
+> You can probably save a reasonable number of context switches and
+> RCU-heavy (or, previously, lock-heavy) dentry lookups by doing a Perl
+> equivalent of `which git` and using the result. It might even add up to
+> a whole millisecond in some circumstances!
+> 
+> No idea where the rest of that time is going. Probably cache misses
+> on the giant Perl runtime or something.
+> 
+> ...
+> 
+> Now I feel dirty for having spent more time talking about optimization
+> than that optimization is likely to save. This must be what being an
+> engineer feels like.
+> --jrayhawk
+
 <pre>
 @@ -474,7 +478,10 @@ sub rcs_update () {
        # Update working directory.
@@ -98,6 +147,19 @@ called on every refresh. Probably could be dealt with similarly as above.
 Also, is there any point in breaking the pull up into a
 fetch followed by a merge? --[[Joey]] 
 
+> The same benchmarking applies, at least.
+>
+> Re: fetch/merge: We can't test for the nonexistence of the origin branch
+> without fetching it, and we can't merge it if it is, indeed,
+> nonexistant.
+>
+> Unless you're implying that it would be better to just spam stderr with
+> unnecessary scary messages and/or ignore/suppress them and lose the
+> ability to respond appropriately to every other error condition. As
+> maintainer, you deal with a disproportionate amount of the resulting
+> support fallout, so I'm perfectly satisfied letting you make that call.
+> --jrayhawk
+
 <pre>
 @@ -559,7 +566,7 @@ sub rcs_commit_helper (@) {
        # So we should ignore its exit status (hence run_or_non).
@@ -111,3 +173,6 @@ fetch followed by a merge? --[[Joey]]
 </pre>
 
 This seems fine to apply. --[[Joey]]
+
+> Hooray!
+> --jrayhawk
diff --git a/doc/todo/need_a_way_to_close_a_bug_via_a_comment.mdwn b/doc/todo/need_a_way_to_close_a_bug_via_a_comment.mdwn
new file mode 100644 (file)
index 0000000..dfa52cf
--- /dev/null
@@ -0,0 +1,12 @@
+When ikiwiki is being used for issue tracking, it would be convenient to
+have a way to close a bug from a comment, rather than editing the bug
+report page in a wiki-manner.
+
+So, some way to set a tag from a comment, such that it applies to the
+parent page.
+
+Turning on allowdirectives may make that work (I have not tried), but
+it's probably too heavyweight/intrusive/possible a security issue.
+
+Maybe extend the comment directive with a field to set/unset tags?
+--[[Joey]]
index 4e70f81798d6e810d02131a358d0530bdacdfe02..875402ec0e43c2e4b27c9bef6628eef08957ec37 100644 (file)
@@ -42,3 +42,5 @@ browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/
 
 I personally prefer `\[[!inline limit=10]]` so I have put that in a branch.
 Agreement/objections/better ideas welcome. --[[smcv]]
+
+> In the absence of any feedback I've applied that branch. [[done]] --[[smcv]]
diff --git a/doc/todo/userdir__40____41___pagespec_directive_to_match_userpage_and_SubPages.mdwn b/doc/todo/userdir__40____41___pagespec_directive_to_match_userpage_and_SubPages.mdwn
new file mode 100644 (file)
index 0000000..b64bf0a
--- /dev/null
@@ -0,0 +1,13 @@
+[[!tag wishlist patch ]]
+[[!template id=gitbranch branch=bfree/userdirps author="niall"]]
+I've written a very small plugin, inspired by 
+[[forum/Can_ikiwiki_be_configured_as_multi_user_blog__63__]] 
+which adds match_userdir to IkiWiki::PageSpec
+
+userdir() in a [[IkiWiki/PageSpec]] takes no arguments and checks 
+if the page is the users userpage or a SubPage of it.
+
+The plugin is named userdirps.
+
+In case my gitbranch template is wrong:
+[[https://github.com/bfree/ikiwiki/commit/1f699d15c0778702cc5264dd3c8f822c6b0609ba]]
index 325d748a2fa3b95cc8caece02e33f8ddbb11931f..0519cf926048954554e3b85ebca8e33cd6ebd5d2 100644 (file)
@@ -36,8 +36,7 @@ link to the album. Useful for visual index of albums.
 * Extract GPS data and populate a [[plugins/osm]] waypoint if available.
 * Add span around osm icon to allow for styling.
 
-For my public websites above the image metadata is "manually" ie shell script
-populated but I'll eventually start using automatic metadata for new images.
+For my public websites above have been using the tweaked img plugin for many months now. It works well except when deleting images, this seems to require a removal of the indexdb and a rebuild... not very convenient.
 
 A simple test wiki with downloadable setup and data can be found at:
 <http://src.kalleswork.net/masterbranch/>
index c3a13c214330e32fe9473f6891608b6b53872f85..f1c44067ec77648b84d3ed954c61e5560a003f6f 100755 (executable)
@@ -85,6 +85,12 @@ git)
 
        cd "$srcdir"
        git init
+       if [ -z "$(git config user.name)" ]; then
+               git config user.name IkiWiki
+       fi
+       if [ -z "$(git config user.email)" ]; then
+               git config user.email ikiwiki.info
+       fi
        echo /.ikiwiki > .gitignore
        git add .
        git commit -m "initial commit"
index 10e5f2e9b6e056b727a8aaf0b3df395e66e64c5f..6de6cb27c586b0c883ce52e700a2b5884cb2a52e 100644 (file)
@@ -1,5 +1,5 @@
 Name:           ikiwiki
-Version: 3.20150614
+Version: 3.20160121
 Release:        1%{?dist}
 Summary:        A wiki compiler
 
index 1e51f9dd347c79e738d4aa9b4ef33da86aeafbfa..8e1480564af9400e050c32ed634d6cc1beb64a97 100755 (executable)
--- a/pm_filter
+++ b/pm_filter
@@ -28,6 +28,6 @@ elsif (/^use lib/) {
 elsif ($. == 1 && ($ENV{NOTAINT}=0) && m{^(#!.*perl.*?)$}) {
        $_=qq{$1 -T\n};
 }
-elsif (/^\$ENV{PATH}="(.*)";/) {
+elsif (/^\$ENV\{PATH}="(.*)";/) {
        $_="\$ENV{PATH}=\"$1:$prefix/bin\";\n";
 }
index 86438334225eb12a35a329c8e7619acdc2d122dd..f13acc8fbdd7ea9662dee2e827e10c0de80d3445 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-06-09 22:32+0100\n"
+"POT-Creation-Date: 2016-01-21 09:43+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -52,7 +52,7 @@ msgstr ""
 msgid "You are banned."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:490 ../IkiWiki/CGI.pm:491 ../IkiWiki.pm:1652
+#: ../IkiWiki/CGI.pm:492 ../IkiWiki/CGI.pm:493 ../IkiWiki.pm:1651
 msgid "Error"
 msgstr ""
 
@@ -124,12 +124,12 @@ msgstr ""
 msgid "feed crashed XML::Feed!"
 msgstr ""
 
-#: ../IkiWiki/Plugin/aggregate.pm:652
+#: ../IkiWiki/Plugin/aggregate.pm:654
 #, perl-format
 msgid "creating new page %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/aggregate.pm:682 ../IkiWiki/Plugin/edittemplate.pm:137
+#: ../IkiWiki/Plugin/aggregate.pm:684 ../IkiWiki/Plugin/edittemplate.pm:137
 msgid "failed to process template:"
 msgstr ""
 
@@ -303,7 +303,7 @@ msgstr ""
 msgid "comment moderation"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:939
+#: ../IkiWiki/Plugin/comments.pm:941
 #, perl-format
 msgid "%i comment"
 msgid_plural "%i comments"
@@ -313,7 +313,7 @@ msgstr[1] ""
 #. translators: Here "Comment" is a verb;
 #. translators: the user clicks on it to
 #. translators: post a comment.
-#: ../IkiWiki/Plugin/comments.pm:949
+#: ../IkiWiki/Plugin/comments.pm:951
 msgid "Comment"
 msgstr ""
 
@@ -372,21 +372,21 @@ msgstr ""
 msgid "edittemplate %s registered for %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/emailauth.pm:55
+#: ../IkiWiki/Plugin/emailauth.pm:61
 msgid "Invalid email address."
 msgstr ""
 
-#: ../IkiWiki/Plugin/emailauth.pm:90 ../IkiWiki/Plugin/passwordauth.pm:377
+#: ../IkiWiki/Plugin/emailauth.pm:98 ../IkiWiki/Plugin/passwordauth.pm:377
 msgid "Failed to send mail"
 msgstr ""
 
-#: ../IkiWiki/Plugin/emailauth.pm:92
+#: ../IkiWiki/Plugin/emailauth.pm:100
 msgid ""
 "You have been sent an email, with a link you can open to complete the login "
 "process."
 msgstr ""
 
-#: ../IkiWiki/Plugin/emailauth.pm:109
+#: ../IkiWiki/Plugin/emailauth.pm:117
 msgid ""
 "Wrong login token length. Please check that you pasted in the complete login "
 "link from the email!"
@@ -418,26 +418,25 @@ msgstr ""
 msgid "%s is an attachment, not a page."
 msgstr ""
 
-#: ../IkiWiki/Plugin/git.pm:839 ../IkiWiki/Plugin/git.pm:902
-#: ../IkiWiki.pm:1872
+#: ../IkiWiki/Plugin/git.pm:866 ../IkiWiki/Plugin/git.pm:929 ../IkiWiki.pm:1871
 #, perl-format
 msgid "you are not allowed to change %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/git.pm:861
+#: ../IkiWiki/Plugin/git.pm:888
 #, perl-format
 msgid "you cannot act on a file with mode %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/git.pm:865
+#: ../IkiWiki/Plugin/git.pm:892
 msgid "you are not allowed to change file modes"
 msgstr ""
 
-#: ../IkiWiki/Plugin/git.pm:935
+#: ../IkiWiki/Plugin/git.pm:962
 msgid "you are not allowed to revert a merge"
 msgstr ""
 
-#: ../IkiWiki/Plugin/git.pm:952
+#: ../IkiWiki/Plugin/git.pm:981
 #, perl-format
 msgid "Failed to revert commit %s"
 msgstr ""
@@ -515,31 +514,31 @@ msgstr ""
 msgid "missing pages parameter"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:216
+#: ../IkiWiki/Plugin/inline.pm:228
 #, perl-format
 msgid "the %s and %s parameters cannot be used together"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:322
+#: ../IkiWiki/Plugin/inline.pm:334
 #, perl-format
 msgid "%s (RSS feed)"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:326
+#: ../IkiWiki/Plugin/inline.pm:338
 #, perl-format
 msgid "%s (Atom feed)"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:359
+#: ../IkiWiki/Plugin/inline.pm:371
 msgid "Add a new post titled:"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:400 ../IkiWiki/Plugin/template.pm:46
+#: ../IkiWiki/Plugin/inline.pm:412 ../IkiWiki/Plugin/template.pm:46
 #, perl-format
 msgid "failed to process template %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/inline.pm:739
+#: ../IkiWiki/Plugin/inline.pm:752
 msgid "RPC::XML::Client not found, not pinging"
 msgstr ""
 
@@ -594,7 +593,7 @@ msgstr ""
 msgid "redir cycle is not allowed"
 msgstr ""
 
-#: ../IkiWiki/Plugin/meta.pm:450
+#: ../IkiWiki/Plugin/meta.pm:451
 msgid "sort=meta requires a parameter"
 msgstr ""
 
@@ -900,31 +899,31 @@ msgstr ""
 msgid "(Diff truncated)"
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:39 ../IkiWiki/Plugin/rename.pm:37
+#: ../IkiWiki/Plugin/remove.pm:40 ../IkiWiki/Plugin/rename.pm:37
 #, perl-format
 msgid "%s does not exist"
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:56
+#: ../IkiWiki/Plugin/remove.pm:57
 #, perl-format
 msgid "%s is not in the srcdir, so it cannot be deleted"
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:59 ../IkiWiki/Plugin/rename.pm:46
+#: ../IkiWiki/Plugin/remove.pm:60 ../IkiWiki/Plugin/rename.pm:46
 #, perl-format
 msgid "%s is not a file"
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:166
+#: ../IkiWiki/Plugin/remove.pm:167
 #, perl-format
 msgid "confirm removal of %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:203
+#: ../IkiWiki/Plugin/remove.pm:204
 msgid "Please select the attachments to remove."
 msgstr ""
 
-#: ../IkiWiki/Plugin/remove.pm:263
+#: ../IkiWiki/Plugin/remove.pm:264
 msgid "removed"
 msgstr ""
 
@@ -1176,52 +1175,52 @@ msgid ""
 "allow this"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:335 ../IkiWiki/Render.pm:396
+#: ../IkiWiki/Render.pm:336 ../IkiWiki/Render.pm:397
 #, perl-format
 msgid "skipping bad filename %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:352 ../IkiWiki/Render.pm:401
+#: ../IkiWiki/Render.pm:353 ../IkiWiki/Render.pm:402
 #, perl-format
 msgid "%s has multiple possible source pages"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:438
+#: ../IkiWiki/Render.pm:439
 #, perl-format
 msgid "querying %s for file creation and modification times.."
 msgstr ""
 
-#: ../IkiWiki/Render.pm:517
+#: ../IkiWiki/Render.pm:518
 #, perl-format
 msgid "removing obsolete %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:602
+#: ../IkiWiki/Render.pm:603
 #, perl-format
 msgid "building %s, which links to %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:611
+#: ../IkiWiki/Render.pm:612
 #, perl-format
 msgid "removing %s, no longer built by %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:694 ../IkiWiki/Render.pm:776
+#: ../IkiWiki/Render.pm:695 ../IkiWiki/Render.pm:777
 #, perl-format
 msgid "building %s, which depends on %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:789
+#: ../IkiWiki/Render.pm:790
 #, perl-format
 msgid "building %s, to update its backlinks"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:901
+#: ../IkiWiki/Render.pm:902
 #, perl-format
 msgid "building %s"
 msgstr ""
 
-#: ../IkiWiki/Render.pm:970
+#: ../IkiWiki/Render.pm:971
 #, perl-format
 msgid "ikiwiki: cannot build %s"
 msgstr ""
@@ -1340,36 +1339,36 @@ msgstr ""
 msgid "failed to load external plugin needed for %s plugin: %s"
 msgstr ""
 
-#: ../IkiWiki.pm:1634
+#: ../IkiWiki.pm:1633
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr ""
 
-#: ../IkiWiki.pm:1828
+#: ../IkiWiki.pm:1827
 #, perl-format
 msgid "bad file name %s"
 msgstr ""
 
-#: ../IkiWiki.pm:2141
+#: ../IkiWiki.pm:2140
 #, perl-format
 msgid "template %s not found"
 msgstr ""
 
-#: ../IkiWiki.pm:2399
+#: ../IkiWiki.pm:2398
 msgid "yes"
 msgstr ""
 
-#: ../IkiWiki.pm:2484
+#: ../IkiWiki.pm:2483
 #, perl-format
 msgid "invalid sort type %s"
 msgstr ""
 
-#: ../IkiWiki.pm:2505
+#: ../IkiWiki.pm:2504
 #, perl-format
 msgid "unknown sort type %s"
 msgstr ""
 
-#: ../IkiWiki.pm:2654
+#: ../IkiWiki.pm:2653
 #, perl-format
 msgid "cannot match pages: %s"
 msgstr ""
old mode 100644 (file)
new mode 100755 (executable)
index 249d625f66058550f766c9d500511a1de0e51ade..26e3859abedc37b39c70a2bcf40c505751f73455 100755 (executable)
@@ -1,21 +1,32 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
+
+my $installed = $ENV{INSTALLED_TESTS};
 
 ok(! system("rm -rf t/tmp; mkdir t/tmp"));
-ok(! system("make -s ikiwiki.out"));
-ok(! system("make underlay_install DESTDIR=`pwd`/t/tmp/install PREFIX=/usr >/dev/null"));
+
+my @command;
+if ($installed) {
+       @command = qw(env LC_ALL=C ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       ok(! system("make underlay_install DESTDIR=`pwd`/t/tmp/install PREFIX=/usr >/dev/null"));
+       @command = qw(env LC_ALL=C perl -I. ./ikiwiki.out
+               --underlaydir=t/tmp/install/usr/share/ikiwiki/basewiki
+               --set underlaydirbase=t/tmp/install/usr/share/ikiwiki
+               --templatedir=templates);
+}
 
 foreach my $plugin ("", "listdirectives") {
-       ok(! system("LC_ALL=C perl -I. ./ikiwiki.out --rebuild --plugin brokenlinks ".
+       ok(! system(@command, qw(--rebuild --plugin brokenlinks),
                        # always enabled because pages link to it conditionally,
                        # which brokenlinks cannot handle properly
-                       "--plugin smiley ".
-                       ($plugin ? "--plugin $plugin " : "").
-                       "--underlaydir=t/tmp/install/usr/share/ikiwiki/basewiki ".
-                       "--set underlaydirbase=t/tmp/install/usr/share/ikiwiki ".
-                       "--templatedir=templates t/basewiki_brokenlinks t/tmp/out"));
+                       qw(--plugin smiley),
+                       ($plugin ? ("--plugin", $plugin) : ()),
+                       qw(t/basewiki_brokenlinks t/tmp/out)));
        my $result=`grep 'no broken links' t/tmp/out/index.html`;
        ok(length($result));
        if (! length $result) {
@@ -27,3 +38,5 @@ foreach my $plugin ("", "listdirectives") {
        ok(! system("rm -rf t/tmp/out t/basewiki_brokenlinks/.ikiwiki"));
 }
 ok(! system("rm -rf t/tmp"));
+
+done_testing();
index 41e731c8092ba1777ac0a01901212e38afce60d1..a5add970192c953b77c9968ebd0a51cbb4f46755 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
 use IkiWiki;
 
 ok(! system("rm -rf t/tmp"));
@@ -9,6 +9,20 @@ ok(mkdir "t/tmp");
 ok(! system("cp -R t/tinyblog t/tmp/in"));
 ok(mkdir "t/tmp/in/post" or -d "t/tmp/in/post");
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
 my $comment;
 
 $comment = <<EOF;
@@ -39,8 +53,7 @@ ok(utime(222222222, 222222222, "t/tmp/in/post/comment_2._comment"));
 ok(utime(333333333, 333333333, "t/tmp/in/post/comment_1._comment"));
 
 # Build the wiki
-ok(! system("make -s ikiwiki.out"));
-ok(! system("perl -I. ./ikiwiki.out --verbose --plugin comments --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi --rss --atom --underlaydir=underlays/basewiki --set underlaydirbase=underlays --set comments_pagespec='*' --templatedir=templates t/tmp/in t/tmp/out"));
+ok(! system(@command, qw(--verbose --plugin comments --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi --rss --atom --set comments_pagespec=* t/tmp/in t/tmp/out)));
 
 # Check that the comments are in the right order
 
@@ -55,3 +68,5 @@ sub slurp {
 my $content = slurp("t/tmp/out/post/index.html");
 ok(defined $content);
 ok($content =~ m/I conquered.*I explored.*I landed/s);
+
+done_testing();
index fae0e84c9afda1365b14106313640e8e9aa5f889..07c392cd3a70ae59992f422124814cd21fdd5b32 100755 (executable)
@@ -4,15 +4,30 @@ use warnings;
 use strict;
 use Test::More tests => 106;
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       ok(1, "running installed");
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
 # setup
 my $srcdir="t/tmp/src";
 my $destdir="t/tmp/dest";
-ok(! system("make -s ikiwiki.out"));
 
 # runs ikiwiki to build test site
 sub runiki {
        my $testdesc=shift;
-       ok((! system("perl -I. ./ikiwiki.out --plugin txt --plugin rawhtml --underlaydir=underlays/basewiki --set underlaydirbase=underlays --templatedir=templates $srcdir $destdir @_")),
+       ok((! system(@command, qw(--plugin txt --plugin rawhtml),
+                               $srcdir, $destdir, @_)),
                $testdesc);
 }
 sub refreshiki {
diff --git a/t/cvs.t b/t/cvs.t
index cbac43252ecbe7ae4c1ef850cff83fe1187d1dde..43a2ca3a81f77e07afb997c3e118e64957ba1e81 100755 (executable)
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -4,6 +4,8 @@ use strict;
 use Test::More; my $total_tests = 72;
 use IkiWiki;
 
+my $installed = $ENV{INSTALLED_TESTS};
+
 my $default_test_methods = '^test_*';
 my @required_programs = qw(
        cvs
@@ -606,12 +608,14 @@ sub _generate_and_configure_post_commit_hook {
        $config{wrapper} = $config{cvs_wrapper};
 
        require IkiWiki::Wrapper;
-       {
-               no warnings 'once';
+       if ($installed) {
                $IkiWiki::program_to_wrap = 'ikiwiki.out';
-               # XXX substitute its interpreter to Makefile's $(PERL)
-               # XXX best solution: do this to all scripts during build
        }
+       else {
+               $IkiWiki::program_to_wrap = `which ikiwiki`;
+       }
+       # XXX substitute its interpreter to Makefile's $(PERL)
+       # XXX best solution: do this to all scripts during build
        IkiWiki::gen_wrapper();
 
        my $cvs = "cvs -d $config{cvsrepo}";
diff --git a/t/git.t b/t/git.t
index 0396ae0652a26b5be875ed9a6c733a81f6656117..71195fdfae5df5092fe5716c64bd1c1546e0c337 100755 (executable)
--- a/t/git.t
+++ b/t/git.t
@@ -16,7 +16,7 @@ BEGIN {
                die $@;
        }
 }
-use Test::More tests => 22;
+use Test::More tests => 26;
 
 BEGIN { use_ok("IkiWiki"); }
 
@@ -27,8 +27,16 @@ $config{diffurl} = '/nonexistent/cgit/plain/[[file]]';
 IkiWiki::loadplugins();
 IkiWiki::checkconfig();
 
+my $makerepo;
+if ($ENV{INSTALLED_TESTS}) {
+       $makerepo = "ikiwiki-makerepo";
+}
+else {
+       $makerepo = "./ikiwiki-makerepo";
+}
+
 ok (mkdir($config{srcdir}));
-is (system("./ikiwiki-makerepo git $config{srcdir} $dir/repo"), 0);
+is (system("$makerepo git $config{srcdir} $dir/repo"), 0);
 
 my @changes;
 @changes = IkiWiki::rcs_recentchanges(3);
@@ -117,4 +125,21 @@ unlike(
        q{path separators are preserved when UTF-8scaping filename}
 );
 
+# do a clean checkout to verify that "empty ident not allowed" is avoided
+ok(! system("rm", "-rf", $config{srcdir}));
+ok(! system("git", "clone", "$dir/repo", $config{srcdir}));
+
+writefile('unconfigured_author.mdwn', $config{srcdir}, 'I am an unconfigured git author');
+IkiWiki::rcs_add("unconfigured_author.mdwn");
+IkiWiki::rcs_commit(
+       file => "unconfigured_author.mdwn",
+       message => "hello, world",
+       token => "moo",
+);
+
+@changes = IkiWiki::rcs_recentchanges(6);
+
+is($#changes, 5);
+is($changes[0]{pages}[0]{"page"}, "unconfigured_author");
+
 system "rm -rf $dir";
diff --git a/t/img.t b/t/img.t
index 7598dd9f02459fc91825979703fdfcb7f846765c..b73988b7caba703983e9b012212b06bc1ab01e54 100755 (executable)
--- a/t/img.t
+++ b/t/img.t
@@ -14,13 +14,33 @@ package IkiWiki;
 use warnings;
 use strict;
 use Test::More;
+plan(skip_all => "Image::Magick not available")
+       unless eval q{use Image::Magick; 1};
 
-BEGIN { use_ok("IkiWiki"); }
-BEGIN { use_ok("Image::Magick"); }
+use IkiWiki;
+
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
+push @command, qw(--set usedirs=0 --plugin img t/tmp/in t/tmp/out --verbose);
 
 my $magick = new Image::Magick;
 my $SVGS_WORK = defined $magick->QueryFormat("svg");
 
+$magick->Read("t/img/twopages.pdf");
+my $PDFS_WORK = defined $magick->Get("width");
+
 ok(! system("rm -rf t/tmp; mkdir -p t/tmp/in"));
 
 ok(! system("cp t/img/redsquare.png t/tmp/in/redsquare.png"));
@@ -31,7 +51,7 @@ ok(! system("cp t/img/redsquare.png t/tmp/in/a:b:c:d.png"));
 ok(! system("cp t/img/redsquare.png t/tmp/in/a:b:c:d:e:f:g:h:i:j.png"));
 
 if ($SVGS_WORK) {
-       writefile("emptysquare.svg", "t/tmp/in",
+       writefile("bluesquare.svg", "t/tmp/in",
                '<svg width="30" height="30"><rect x="0" y="0" width="30" height="30" fill="blue"/></svg>');
 }
 
@@ -40,7 +60,15 @@ ok(! system("cp t/img/twopages.pdf t/tmp/in/twopages.pdf"));
 
 my $maybe_svg_img = "";
 if ($SVGS_WORK) {
-       $maybe_svg_img = "[[!img emptysquare.svg size=10x]]";
+       $maybe_svg_img = "[[!img bluesquare.svg size=10x]]";
+}
+
+my $maybe_pdf_img = "";
+if ($PDFS_WORK) {
+       $maybe_pdf_img = <<EOF;
+[[!img twopages.pdf size=12x]]
+[[!img twopages.pdf size=16x pagenumber=1]]
+EOF
 }
 
 writefile("imgconversions.mdwn", "t/tmp/in", <<EOF
@@ -51,17 +79,12 @@ writefile("imgconversions.mdwn", "t/tmp/in", <<EOF
 [[!img a:b:c.png size=x4]]
 [[!img a:b:c:d:e:f:g:h:i:j.png size=x6]]
 $maybe_svg_img
-[[!img twopages.pdf size=12x]]
-[[!img twopages.pdf size=16x pagenumber=1]]
+$maybe_pdf_img
 EOF
 );
 ok(utime(333333333, 333333333, "t/tmp/in/imgconversions.mdwn"));
 
-ok(! system("make -s ikiwiki.out"));
-
-my $command = "perl -I. ./ikiwiki.out --set usedirs=0 --templatedir=templates --plugin img t/tmp/in t/tmp/out --verbose";
-
-ok(! system($command));
+ok(! system(@command));
 
 sub size($) {
        my $filename = shift;
@@ -80,13 +103,20 @@ is(size("$outpath/10x-redsquare.png"), "10x10");
 ok(! -e "$outpath/30x-redsquare.png");
 ok($outhtml =~ /width="30" height="30".*expecting 30x30/);
 
-if ($SVGS_WORK) {
+SKIP: {
+       skip "SVG support not installed (try libmagickcore-extra)", 1
+               unless $SVGS_WORK;
        # if this fails, you need libmagickcore-6.q16-2-extra installed
-       is(size("$outpath/10x-emptysquare.png"), "10x10");
+       is(size("$outpath/10x-bluesquare.png"), "10x10");
+}
+
+SKIP: {
+       skip "PDF support not installed (try ghostscript)", 2
+               unless $PDFS_WORK;
+       is(size("$outpath/12x-twopages.png"), "12x12");
+       is(size("$outpath/16x-p1-twopages.png"), "16x2");
 }
 
-is(size("$outpath/12x-twopages.png"), "12x12");
-is(size("$outpath/16x-p1-twopages.png"), "16x2");
 ok($outhtml =~ /width="8" height="8".*expecting 8x8/);
 is(size("$outpath/x8-hello:world.png"), "8x8");
 is(size("$outpath/x4-a:b:c.png"), "4x4");
@@ -97,12 +127,12 @@ is(size("$outpath/x6-a:b:c:d:e:f:g:h:i:j.png"), "6x6");
 if (1) { # for easier testing
        writefile("imgconversions.mdwn", "t/tmp/in", "nothing to see here");
 
-       ok(! system("$command --refresh"));
+       ok(! system(@command, "--refresh"));
 
-       ok(! -e "$outpath/10x-simple.png");
-       ok(! -e "$outpath/10x-simple-svg.png");
-       ok(! -e "$outpath/10x-simple-pdf.png");
-       ok(! -e "$outpath/10x-p1-simple-pdf.png");
+       ok(! -e "$outpath/10x-redsquare.png");
+       ok(! -e "$outpath/10x-bluesquare.png");
+       ok(! -e "$outpath/12x-twopages.png");
+       ok(! -e "$outpath/16x-p1-twopages.png");
        ok(! -e "$outpath/x8-hello:world.png");
        ok(! -e "$outpath/x4-a:b:c.png");
        ok(! -e "$outpath/x6-a:b:c:d:e:f:g:h:i:j.png");
index f2ffbbc2f6bdaeec36e48f7e4376e8721b2a8ac1..8c0f1c35ab1f4c79f97e0669cdea4ad9cacb2111 100755 (executable)
@@ -4,6 +4,24 @@ use strict;
 use Test::More;
 use IkiWiki;
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
+push @command, qw(--set usedirs=0 --plugin inline
+       --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi
+       --rss --atom t/tmp/in t/tmp/out --verbose);
+
 my $blob;
 
 my $add_new_post = gettext("Add a new post titled:");
@@ -22,11 +40,15 @@ sub write_old_file {
 write_old_file("protagonists.mdwn",
        '[[!inline pages="protagonists/*" rootpage="protagonists/new"]]');
 write_old_file("friends.mdwn",
-       '[[!inline pages="friends/*" postform=yes sort=title show=2]]');
+       '[[!inline pages="friends/*" postform=yes sort=title limit=2]]');
 write_old_file("antagonists.mdwn",
        '[[!inline pages="antagonists/*"]]');
+# using old spelling of "limit" ("show") to verify backwards compat
 write_old_file("enemies.mdwn",
        '[[!inline pages="enemies/*" postform=no rootpage=enemies sort=title reverse=yes show=2]]');
+# to test correct processing of ../
+write_old_file("blah/blah/enemies.mdwn",
+       '[[!inline pages="enemies/*" postform=no rootpage=enemies sort=title reverse=yes show=2]]');
 foreach my $page (qw(protagonists/shepard protagonists/link
                antagonists/saren antagonists/ganondorf
                friends/garrus friends/liara friends/midna friends/telma
@@ -34,14 +56,12 @@ foreach my $page (qw(protagonists/shepard protagonists/link
                enemies/zant)) {
        write_old_file("$page.mdwn", "this page is {$page}");
 }
+# test cross-linking between pages as rendered in RSS
+write_old_file("enemies/zant.mdwn", "this page is {enemies/zant}\n\n".
+       "Zant hates [[friends/Midna]].");
 
-ok(! system("make -s ikiwiki.out"));
-
-my $command = "perl -I. ./ikiwiki.out --set usedirs=0 --plugin inline --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi --rss --atom --underlaydir=underlays/basewiki --set underlaydirbase=underlays --templatedir=templates t/tmp/in t/tmp/out --verbose";
-
-ok(! system($command));
-
-ok(! system("$command --refresh"));
+ok(! system(@command));
+ok(! system(@command, "--refresh"));
 
 $blob = readfile("t/tmp/out/protagonists.html");
 like($blob, qr{\Q$add_new_post\E}, 'rootpage=yes gives postform');
@@ -52,19 +72,33 @@ $blob = readfile("t/tmp/out/friends.html");
 like($blob, qr{\Q$add_new_post\E}, 'postform=yes forces postform');
 like($blob, qr{<input type="hidden" name="from" value="friends"},
        'implicit rootpage is /friends');
-like($blob, qr[this page is {friends/garrus}.*this page is {friends/liara}]s,
+like($blob, qr[this page is \{friends/garrus}.*this page is \{friends/liara}]s,
        'first two pages in desired sort order are present');
 unlike($blob, qr{friends/(?:midna|telma)},
-       'pages excluded by show should not be present');
+       'pages excluded by limit should not be present');
 
 $blob = readfile("t/tmp/out/antagonists.html");
 unlike($blob, qr{\Q$add_new_post\E}, 'default is no postform');
 
 $blob = readfile("t/tmp/out/enemies.html");
 unlike($blob, qr{\Q$add_new_post\E}, 'postform=no forces no postform');
-like($blob, qr[this page is {enemies/zant}.*this page is {enemies/rachni}]s,
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
        'first two pages in reversed sort order are present');
 unlike($blob, qr{enemies/(?:benezia|geth)},
        'pages excluded by show should not be present');
 
+$blob = readfile("t/tmp/out/enemies.rss");
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
+       'first two pages in reversed sort order are present');
+like($blob,
+       qr[Zant hates &lt;a href=(?:['"]|&quot;)http://example\.com/friends/midna.html(?:['"]|&quot;)&gt;Midna&lt;/a&gt;]s,
+       'link is correctly relative');
+
+$blob = readfile("t/tmp/out/blah/blah/enemies.rss");
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
+       'first two pages in reversed sort order are present');
+like($blob,
+       qr[Zant hates &lt;a href=(?:['"]|&quot;)http://example\.com/friends/midna.html(?:['"]|&quot;)&gt;Midna&lt;/a&gt;]s,
+       'link is correctly relative');
+
 done_testing;
diff --git a/t/meta.t b/t/meta.t
new file mode 100755 (executable)
index 0000000..d23d9bc
--- /dev/null
+++ b/t/meta.t
@@ -0,0 +1,169 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More;
+use IkiWiki;
+
+my $tmp = 't/tmp';
+my $srcdir = "$tmp/in";
+my $destdir = "$tmp/out";
+
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
+push @command, qw(--plugin meta --disable-plugin htmlscrubber);
+push @command, $srcdir, $destdir;
+
+sub write_build_read_compare {
+       my ($pagename, $input, $expected_output) = @_;
+       ok(! system("mkdir -p $srcdir"), q{setup});
+       writefile("$pagename.mdwn", $srcdir, $input);
+       ok(! system(@command), q{build});
+       like(readfile("$destdir/$pagename/index.html"), $expected_output);
+       ok(! system("rm -rf $tmp"), q{teardown});
+}
+
+write_build_read_compare(
+       'title',
+       q{[[!meta title="a page about bar"]]},
+       qr{<title>a page about bar</title>},
+);
+
+write_build_read_compare(
+       'description',
+       q{[[!meta description="a page about bar"]]},
+       qr{<meta name="description" content="a page about bar" />},
+);
+
+write_build_read_compare(
+       'guid',
+       q{[[!meta guid="12345"]]},
+       qr{<meta name="guid" content="12345" />},
+);
+
+write_build_read_compare(
+       'license',
+       q{[[!meta license="you get to keep both pieces"]]},
+       qr{<div class="pagelicense">},
+);
+
+write_build_read_compare(
+       'copyright',
+       q{[[!meta copyright="12345"]]},
+       qr{<div class="pagecopyright">},
+);
+
+write_build_read_compare(
+       'enclosure',
+       q{[[!meta enclosure="ikiwiki/login-selector/wordpress.png"]]},
+       qr{<meta name="enclosure" content="/ikiwiki/login-selector/wordpress.png" />},
+);
+
+write_build_read_compare(
+       'author',
+       q{[[!meta author="Noodly J. Appendage"]]},
+       qr{<meta name="author" content="Noodly J. Appendage" />},
+);
+
+write_build_read_compare(
+       'authorurl',
+       q{[[!meta authorurl="http://noodly.appendage"]]},
+       qr{<meta name="authorurl" content="http://noodly.appendage" />},
+);
+
+write_build_read_compare(
+       'permalink',
+       q{[[!meta permalink="http://noodly.appendage"]]},
+       qr{<link rel="bookmark" href="http://noodly.appendage" />},
+);
+
+write_build_read_compare(
+       'date',
+       q{[[!meta date="12345"]]},
+       qr{<meta name="date" content="12345" />},
+);
+
+write_build_read_compare(
+       'updated',
+       q{[[!meta updated="12345"]]},
+       qr{<meta name="updated" content="12345" />},
+);
+
+#write_build_read_compare(
+#      'stylesheet',
+#      q{[[!meta stylesheet="wonka.css"]]},
+#      qr{<link href="wonka.css"},
+#);
+
+#write_build_read_compare(
+#      'script',
+#      q{[[!meta script="wonka.js"]]},
+#      qr{<link href="wonka.js"},
+#);
+
+write_build_read_compare(
+       'openid',
+       q{[[!meta openid="wonka.openid.example"]]},
+       qr{<link href="wonka\.openid\.example" rel="openid\.delegate" />},
+);
+
+write_build_read_compare(
+       'foaf',
+       q{[[!meta foaf="wonka.foaf.example"]]},
+       qr{<link rel="meta" type="application/rdf\+xml" title="FOAF"},
+);
+
+write_build_read_compare(
+       'redir',
+       q{[[!meta redir="http://wonka.redir.example"]]},
+       qr{<meta http-equiv="refresh" content="0; URL=http://wonka\.redir\.example" />},
+);
+
+#write_build_read_compare(
+#      'link',
+#      q{[[!meta link="http://wonka.link.example"]]},
+#      qr{<link href="http://wonka\.link\.example" />},
+#);
+
+write_build_read_compare(
+       'name',
+       q{[[!meta name="thingy" value1="hi" value2="hello"]]},
+       qr{<meta name="thingy" value[0-9]{1}=".+?" value[0-9]{1}=".+?" />},
+);
+
+write_build_read_compare(
+       'keywords',
+       q{[[!meta keywords="word1,word2,word3"]]},
+       qr{<meta name="keywords" content="word1,word2,word3" />},
+);
+
+write_build_read_compare(
+       'arbitrary',
+       q{[[!meta moo="mooooo"]]},
+       qr{<meta name="moo" content="mooooo" />},
+);
+
+#write_build_read_compare(
+#      'twittercard1',
+#      '[[!meta twitter:card="player"]]',
+#      qr{<meta name="twitter:card" content="player" />},
+#);
+
+write_build_read_compare(
+       'twittercard2',
+       '[[!meta name="twitter:card" content="player"]]',
+       qr{<meta name="twitter:card" content="player" />},
+);
+
+done_testing();
index 9b46549038c12b8bc86c316cf7cb3369ded0f77d..615fa62edd1e7a123810acb130f8eaed4075d43e 100755 (executable)
@@ -4,7 +4,7 @@
 
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
 
 my %expected;
 
@@ -79,3 +79,5 @@ sub test_loop($$) {
 
 # Main
 test_loop('parentlinks', $expected{'parentlinks'});
+
+done_testing();
index 13a72fc5625fa25cd0b7a7624948fadd26ab9f09..edb05a81b1bbdf487aee7b59fff19e6c48fae329 100755 (executable)
@@ -1,14 +1,31 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
+
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
 
 ok(! system("rm -rf t/tmp"));
 ok(! system("mkdir t/tmp"));
-ok(! system("make -s ikiwiki.out"));
-ok(! system("perl -I. ./ikiwiki.out --plugin inline --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi --rss --atom --underlaydir=underlays/basewiki --set underlaydirbase=underlays --templatedir=templates t/tinyblog t/tmp/out"));
+ok(! system(@command, qw(--plugin inline --url=http://example.com
+               --cgiurl=http://example.com/ikiwiki.cgi --rss --atom
+               t/tinyblog t/tmp/out)));
 # This guid should never, ever change, for any reason whatsoever!
 my $guid="http://example.com/post/";
 ok(length `egrep '<guid.*>$guid</guid>' t/tmp/out/index.rss`);
 ok(length `egrep '<id>$guid</id>' t/tmp/out/index.atom`);
 ok(! system("rm -rf t/tmp t/tinyblog/.ikiwiki"));
+
+done_testing();
index ef90b5205e49932075e9f87d38fc91797b992447..c698d1835d5de1fe8ed1345afb87ac3d71c34b0e 100755 (executable)
@@ -9,13 +9,28 @@ BEGIN {
                        "XML::Feed and/or HTML::Parser or File::MimeInfo not available"};
        }
        else {
-               eval q{use Test::More tests => 136};
+               eval q{use Test::More tests => 137};
        }
 }
 
 use Cwd;
 use File::Basename;
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @base_command;
+if ($installed) {
+       ok(1, "running installed");
+       @base_command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @base_command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
 my $tmp = 't/tmp';
 my $statedir = 't/tinypodcast/.ikiwiki';
 
@@ -23,9 +38,7 @@ sub podcast {
        my $podcast_style = shift;
 
        my $baseurl = 'http://example.com';
-       my @command = (qw(./ikiwiki.out --plugin inline --rss --atom));
-       push @command, qw(-underlaydir=underlays/basewiki);
-       push @command, qw(-set underlaydirbase=underlays --templatedir=templates);
+       my @command = (@base_command, qw(--plugin inline --rss --atom));
        push @command, "--url=$baseurl", qw(t/tinypodcast), "$tmp/out";
 
        ok(! system("mkdir $tmp"),
@@ -113,9 +126,7 @@ sub podcast {
 }
 
 sub single_page_html {
-       my @command = (qw(./ikiwiki.out));
-       push @command, qw(-underlaydir=underlays/basewiki);
-       push @command, qw(-set underlaydirbase=underlays --templatedir=templates);
+       my @command = @base_command;
        push @command, qw(t/tinypodcast), "$tmp/out";
 
        ok(! system("mkdir $tmp"),
@@ -158,9 +169,7 @@ sub single_page_html {
 }
 
 sub inlined_pages_html {
-       my @command = (qw(./ikiwiki.out --plugin inline));
-       push @command, qw(-underlaydir=underlays/basewiki);
-       push @command, qw(-set underlaydirbase=underlays --templatedir=templates);
+       my @command = (@base_command, qw(--plugin inline));
        push @command, qw(t/tinypodcast), "$tmp/out";
 
        ok(! system("mkdir $tmp"),
index a1f3ad83082e19c867a98b5db3538b7b47e32087..c67c8ba17cbfb64fceb7b30b658966dfeda92913 100755 (executable)
@@ -16,6 +16,20 @@ use Errno qw(ENOENT);
 
 # Black-box (ish) test for relative linking between CGI and static content
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
 sub parse_cgi_content {
        my $content = shift;
        my %bits;
@@ -53,7 +67,6 @@ sub write_setup_file {
 wikiname: this is the name of my wiki
 srcdir: t/tmp/in
 destdir: t/tmp/out
-templatedir: templates
 $urlline
 cgiurl: $args{cgiurl}
 $w3mmodeline
@@ -71,7 +84,7 @@ EOF
 
 sub thoroughly_rebuild {
        ok(unlink("t/tmp/ikiwiki.cgi") || $!{ENOENT});
-       ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers"));
+       ok(! system(@command, qw(--setup t/tmp/test.setup --rebuild --wrappers)));
 }
 
 sub check_cgi_mode_bits {
@@ -131,7 +144,6 @@ sub run_cgi {
 }
 
 sub test_startup {
-       ok(! system("make -s ikiwiki.out"));
        ok(! system("rm -rf t/tmp"));
        ok(! system("mkdir t/tmp"));
 
index b7c6efd58345de974628f6e55dab4424336c9c09..1d496be2dec2e5231b053533adfd0d2a2bb761cd 100755 (executable)
@@ -3,6 +3,8 @@ use warnings;
 use strict;
 use Test::More;
 
+plan(skip_all => 'running installed') if $ENV{INSTALLED_TESTS};
+
 my @progs="ikiwiki.in";
 my @libs="IkiWiki.pm";
 # monotone, external, amazon_s3, po, and cvs
old mode 100644 (file)
new mode 100755 (executable)
index ffe8635..b9f366f
@@ -11,8 +11,8 @@ $IkiWiki::config{syslog} = 1;
 
 $IkiWiki::config{wikiname} = 'ASCII';
 is(debug('test'), '', 'plain ASCII syslog');
-$IkiWiki::config{wikiname} = 'not ⒶSCII';
-is(debug('test'), '', 'UTF8 syslog');
+$IkiWiki::config{wikiname} = 'not ⒶSCII and has %s in it';
+is(debug('𝗧ĕṡҭ'), '', 'UTF8 syslog');
 my $orig = $IkiWiki::config{wikiname};
 is(debug('test'), '', 'check for idempotency');
 is($IkiWiki::config{wikiname}, $orig, 'unchanged config');
index e3d1feca9ef3d3791ba7e93cf6bad2faf9abecc7..3e6509f35b7b2d76fcc7f0910e78cce5d2e9482e 100755 (executable)
@@ -3,6 +3,8 @@ use warnings;
 use strict;
 use Test::More;
 
+plan(skip_all => 'running installed') if $ENV{INSTALLED_TESTS};
+
 my @templates=(glob("templates/*.tmpl"), glob("doc/templates/*.mdwn"));
 plan(tests => 2*@templates);
 
index 826c51d3667ab1ae93c636c330e010d379630fec..4991e4521eaeee71b86b991c1e54643c9290da4a 100755 (executable)
@@ -1,7 +1,9 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
+
+plan(skip_all => 'running installed') if $ENV{INSTALLED_TESTS};
 
 $/=undef;
 open(IN, "doc/templates.mdwn") || die "doc/templates.mdwn: $!";
@@ -12,3 +14,5 @@ foreach my $file (glob("templates/*.tmpl")) {
        $file=~s/templates\///;
        ok($page =~ /\Q$file\E/, "$file documented on doc/templates.mdwn");
 }
+
+done_testing();
index bde812887ae1083aa97a65f93b1ec06bff9e2be8..cac64c36628c3bd75147e0e1ccb8d9aa74a5d3fc 100755 (executable)
--- a/t/trail.t
+++ b/t/trail.t
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More 'no_plan';
+use Test::More;
 use IkiWiki;
 
 sub check_trail {
@@ -27,6 +27,24 @@ my $blob;
 ok(! system("rm -rf t/tmp"));
 ok(! system("mkdir t/tmp"));
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = qw(perl -I. ./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates);
+}
+
+push @command, qw(--set usedirs=0 --plugin trail --plugin inline
+       --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi
+       --rss --atom t/tmp/in t/tmp/out --verbose);
+
 # Write files with a date in the past, so that when we refresh,
 # the update is detected.
 sub write_old_file {
@@ -129,13 +147,8 @@ write_old_file("wind_in_the_willows.mdwn", <<EOF
 EOF
 );
 
-ok(! system("make -s ikiwiki.out"));
-
-my $command = "perl -I. ./ikiwiki.out --set usedirs=0 --plugin trail --plugin inline --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi --rss --atom --underlaydir=underlays/basewiki --set underlaydirbase=underlays --templatedir=templates t/tmp/in t/tmp/out --verbose";
-
-ok(! system($command));
-
-ok(! system("$command --refresh"));
+ok(! system(@command));
+ok(! system(@command, "--refresh"));
 
 $blob = readfile("t/tmp/out/meme.html");
 ok($blob =~ /<a href="(\.\/)?badger.html">badger<\/a>/m);
@@ -232,7 +245,7 @@ writefile("limited/c.mdwn", "t/tmp/in", '[[!meta title="New C page"]]c');
 
 writefile("untrail.mdwn", "t/tmp/in", "no longer a trail");
 
-ok(! system("$command --refresh"));
+ok(! system(@command, "--refresh"));
 
 check_trail("add/a.html", "n=add/b p=");
 check_trail("add/b.html", "n=add/c p=add/a");
@@ -290,3 +303,5 @@ check_no_trail("untrail/a.html");
 check_no_trail("untrail/b.html");
 
 ok(! system("rm -rf t/tmp"));
+
+done_testing();
index cee0ff3be1e8460eddb039896ed381799ae6d6c1..f57d3ca9ccd0ea90a5dbe0ec04af0873417ecd1a 100755 (executable)
@@ -5,6 +5,8 @@ use Cwd qw();
 use File::Find;
 use Test::More;
 
+plan(skip_all => 'running installed') if $ENV{INSTALLED_TESTS};
+
 plan(skip_all => "XML::Parser not available")
        unless eval q{use XML::Parser (); 1;};
 
index 9e8b330a4a25124eb799b52ad9b840b0c6105fd6..183d733e1637f518f99a0c835765364f38edffd5 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<TMPL_IF HTML_LANG_CODE><html lang="<TMPL_VAR HTML_LANG_CODE>" dir="<TMPL_VAR HTML_LANG_DIR>" xmlns="http://www.w3.org/1999/xhtml"><TMPL_ELSE><html xmlns="http://www.w3.org/1999/xhtml"></TMPL_IF>
 <head>
 <TMPL_IF DYNAMIC>
 <TMPL_IF FORCEBASEURL><base href="<TMPL_VAR FORCEBASEURL>" /><TMPL_ELSE>
index 45265f2654d0c5a1b16156b7e65b49254654faf3..d07ecefc3ef71bb8ed52af5d2a46d06910e95ae2 100644 (file)
@@ -1,10 +1,12 @@
 <?xml version="1.0"?>
 <rss version="2.0"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
-     xmlns:dcterms="http://purl.org/dc/terms/" >
+     xmlns:dcterms="http://purl.org/dc/terms/"
+     xmlns:atom="http://www.w3.org/2005/Atom">
 <channel>
 <title><TMPL_VAR TITLE></title>
 <link><TMPL_VAR PAGEURL></link>
+<atom:link href="<TMPL_VAR FEEDURL>" rel="self" type="application/rss+xml"/>
 <TMPL_IF COPYRIGHT>
 <copyright><TMPL_VAR COPYRIGHT ESCAPE=HTML></copyright>
 </TMPL_IF>
index aebc5cf7ed66395ec8277a1e748d29184226f960..e67d5df83c435de85cb2eb4208ba254ce3402d27 100644 (file)
@@ -1,3 +1,7 @@
+// © 2006-2010 Joey Hess
+// Redistribution and use in source and compiled forms, with or without
+// modification, are permitted under any circumstances. No warranty.
+//
 // ikiwiki's javascript utility function library
 
 var hooks;
index 2a270d627abd45c706d9de78224f681dc96fd7d1..e8643f4c1a6860a7c7de5c9bbd00a9807b83aa97 100644 (file)
@@ -1,3 +1,7 @@
+// © 2006-2010 Joey Hess
+// Redistribution and use in source and compiled forms, with or without
+// modification, are permitted under any circumstances. No warranty.
+//
 // Causes html elements in the 'relativedate' class to be displayed
 // as relative dates. The date is parsed from the title attribute, or from
 // the element content.
index d190b737ae1fc8288ae846328caa62ab0688fbdb..597a37458afc61995685c8e95f3cd18adf4cbd25 100644 (file)
@@ -1,3 +1,7 @@
+// © 2006-2010 Joey Hess
+// Redistribution and use in source and compiled forms, with or without
+// modification, are permitted under any circumstances. No warranty.
+//
 // Uses CSS to hide toggleables, to avoid any flashing on page load. The
 // CSS is only emitted after it tests that it's going to be able
 // to show the toggleables.