when enabling the cgi wrapper I get,

generating wrappers.. "/var/www/cgi-bin/ikiwiki.cgi.c", line 91: warning: implicit function declaration: flock "/var/www/cgi-bin/ikiwiki.cgi.c", line 91: undefined symbol: LOCK_EX cc: acomp failed for /var/www/cgi-bin/ikiwiki.cgi.c failed to compile /var/www/cgi-bin/ikiwiki.cgi.c

cc -V cc: Sun C 5.9 SunOS_i386 Patch 124868-01 2007/07/12

I don't know enough C to provide a patch, but from googling it, people seem to be suggesting fcntl has an alternative.


changing

if (lockfd != -1 && flock(lockfd, LOCK_EX) == 0) {

to read

if (lockfd != -1 && lockf(lockfd, F_LOCK,0) == 0) {

in IkiWiki/Wrapper.pm lets it compile, according to http://man-wiki.net/index.php/3:lockf "On Linux, this call is just an interface for fcntl(2)" does this seem like a sensible fix?a

Don't see why not. flock was used only because it's being used in the same file for testing some other locks.

While lockf's fcntl locks are not inherited across a fork, that doesn't matter for this lock, which is only used to prevent more than one ikiwiki perl process being run at a time. Nor is there any need to be compatible with some other user of this lock; it's only checked in one place. applied --Joey