Age | Commit message (Collapse) | Author |
|
holger reported that decode_utf8 was crashing with perl 5.8.8. Earlier, I
thought that passing 0 to the function avoided this with old perls, but
that was apparently not enough, it still crashes. So, put it inside the
eval, so we can at least recover from it crashing.
|
|
|
|
The old code actually did the same thing, just obfuscated -- since the eval
use wasn't quoted, it used the modules on load. Thus, the error (not to
mentioned the return) was bypassed, and it just failed on load.
But that seems like the right thing to do, really, so just made it clearer
that's what happens.
|
|
|
|
This is necessary so that things that fork to the background,
like pinger, and inline ping, don't block other cgis from running.
Note that websetup also calls unlockwiki, before refreshing / rebuilding
the wiki. It makes perfect sense for that not to block other cgis.
|
|
|
|
Fixed by making the cgi wrapper wait on a cgilock.
If you had to set apache's MaxClients low to avoid ikiwiki thrashing
your server, you can now turn it up to a high value.
The downside to this is that a cgi call that doesn't need to call lockwiki
will be serialised by this so only one can run at a time. (For example,
do=search.) There are few such calls, and all of them call loadindex,
so each still eats gobs of memory, so serialising them still seems ok.
|
|
|
|
This is not needed now that tagpage returns a page name starting with a
slash.
(Also fixes a minor bug that the edit links started with double slashes due
to the hack.)
|
|
|
|
earlier added to edit links.
|
|
parsing of any directives on the page.
|
|
|
|
links. Since this needs the just released XML::Feed 0.3, as well as a not yet released XML::RSS, it will fall back to the old method if no xml:base info is available.
|
|
|
|
|
|
(ie, otl inside a mdwn page, or syntax highlighted code inside a page).
|
|
Avoids some uninitialised value warnings.
|
|
Instead, shortcuts will explicitly be marked as such when registered, and
listdirectives can filter them out.
|
|
Move shortcut processing back to checkconfig, and avoid it failing if the
srcdir is not defined.
|
|
|
|
|
|
This speeds up web commits by 1/4th of a second or so, since perl does
not have to start up for the post commit hook.
perl's locking is completly FuBar, since it's impossible to tell what perl
flock() really does, and thus difficult to write code in other languages
that interoperates with perl's locking. (Let alone interoperating with
existing fcntl locking from perl...)
In this particular case, I think I was able to find a way to avoid the
insanity, mostly. The C code does a true flock(2), and if perl is using an
incompatable lock method that does not use the same locking primative at
the kernel level, then the C code's test will fail, and it will go ahead
and run the perl code. Then the perl code's test will test the right thing.
On Debian, at least lately, perl's flock() does a true flock(2), so the
optimisation does work.
|
|
This saves around 1/4th second per trusted commit since ikiwiki
doesn't need to start up.
|
|
been a while!
|
|
It needs to write to the user db.
|
|
|
|
luckily, don't really need to here
|
|
|
|
|
|
|
|
Still need to investigate possible races, and test some more.
|
|
These throw errors, do not have useful return codes.
|
|
|
|
Wired up check_canedit and check_canremove, still need to deal with
check_canattach, and test.
|
|
Still need to wire up the calls to check_* , but it's cold out here and my
hands are going numb, so enough for now.
|
|
Add an inject function, that can be used by plugins that want to replace
one of ikiwiki's functions with their own version. (This is a scary thing
that grubs through the symbol table, and replaces all exported occurances
of a function with the injected version.)
external: RPC functions can be injected to replace exported functions.
Removed the stupid displaytime hook, and use injection instead.
|
|
|
|
|
|
toplevel tagpage, and not closer subpages.
The html links already went there, but internally the links were not
recorded as absolute, which could cause confusing backlinks etc.
For example, with tagbase=tags, if blog/tags/bar existed and blog/foo was
tagged bar, it would link to /tags/bar. But, the link would be recorded
simply as a link to tags/bar, and so later blog/tags/bar would appear to
have the backlink.
|
|
feed links. So rss will be included along with atom, and pages with multiple feeds will get links added for all feeds.
|
|
utf-8 characters are written out as such, and not as the encoded perl strings the C Data::Dumper produces.
Note that the text produced by the C version was interpreted fine
when ikiwiki loaded the setup file. But it was not user-friendly.
|
|
entity-encoding the wikiname in the session cookie.
|
|
Need to use a hook because an exported function cannot be reliably
overridden. The replacement verstion was actually only affecting plugins
loaded after it.
formattime doesn't need a hook, since there's no reason to export it.
|
|
|
|
The machine parseable date needs to include a timezone.
Also, simplified the interface for date display.
|
|
|
|
|
|
Need to handle the case where url is not set.
|
|
from JasonBlevins
|