X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a0321594fb72ab1d215204f1838d2593e0b24f95..819a31ed24cfb95da7e37a7524ecf0655e106903:/ikiwiki?ds=inline diff --git a/ikiwiki b/ikiwiki index 97afa853f..dfb484f64 100755 --- a/ikiwiki +++ b/ikiwiki @@ -9,7 +9,7 @@ use HTML::Template; use lib '.'; # For use without installation, removed by Makefile. use vars qw{%config %links %oldlinks %oldpagemtime %pagectime - %renderedfiles %pagesources %inlinepages}; + %renderedfiles %pagesources %depends}; sub usage () { #{{{ die "usage: ikiwiki [options] source dest\n"; @@ -27,24 +27,29 @@ sub getconfig () { #{{{ default_pageext => ".mdwn", cgi => 0, svn => 1, + notify => 0, url => '', cgiurl => '', historyurl => '', diffurl => '', anonok => 0, rss => 0, + sanitize => 1, rebuild => 0, refresh => 0, getctime => 0, hyperestraier => 0, wrapper => undef, wrappermode => undef, + svnrepo => undef, + svnpath => "trunk", srcdir => undef, destdir => undef, templatedir => "/usr/share/ikiwiki/templates", underlaydir => "/usr/share/ikiwiki/basewiki", setup => undef, adminuser => undef, + adminemail => undef, ); eval q{use Getopt::Long}; @@ -61,10 +66,15 @@ sub getconfig () { #{{{ "hyperestraier" => \$config{hyperestraier}, "rss!" => \$config{rss}, "cgi!" => \$config{cgi}, + "notify!" => \$config{notify}, + "sanitize!" => \$config{sanitize}, "url=s" => \$config{url}, "cgiurl=s" => \$config{cgiurl}, "historyurl=s" => \$config{historyurl}, "diffurl=s" => \$config{diffurl}, + "svnrepo" => \$config{svnrepo}, + "svnpath" => \$config{svnpath}, + "adminemail=s" => \$config{adminemail}, "exclude=s@" => sub { $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/; }, @@ -148,14 +158,14 @@ sub debug ($) { #{{{ sub basename ($) { #{{{ my $file=shift; - $file=~s!.*/!!; + $file=~s!.*/+!!; return $file; } #}}} sub dirname ($) { #{{{ my $file=shift; - $file=~s!/?[^/]+$!!; + $file=~s!/*[^/]+$!!; return $file; } #}}} @@ -193,24 +203,27 @@ sub srcfile ($) { #{{{ error("internal error: $file cannot be found"); } #}}} -sub readfile ($) { #{{{ +sub readfile ($;$) { #{{{ my $file=shift; + my $binary=shift; if (-l $file) { error("cannot read a symlink ($file)"); } local $/=undef; - open (IN, "$file") || error("failed to read $file: $!"); + open (IN, $file) || error("failed to read $file: $!"); + binmode(IN) if $binary; my $ret=; close IN; return $ret; } #}}} -sub writefile ($$$) { #{{{ +sub writefile ($$$;$) { #{{{ my $file=shift; # can include subdirs my $destdir=shift; # directory to put file in my $content=shift; + my $binary=shift; my $test=$file; while (length $test) { @@ -232,6 +245,7 @@ sub writefile ($$$) { #{{{ } open (OUT, ">$destdir/$file") || error("failed to write $destdir/$file: $!"); + binmode(OUT) if $binary; print OUT $content; close OUT; } #}}} @@ -385,8 +399,8 @@ sub loadindex () { #{{{ $oldpagemtime{$page}=$items{mtime}[0]; $oldlinks{$page}=[@{$items{link}}]; $links{$page}=[@{$items{link}}]; - $inlinepages{$page}=join(" ", @{$items{inlinepage}}) - if exists $items{inlinepage}; + $depends{$page}=join(" ", @{$items{depends}}) + if exists $items{depends}; $renderedfiles{$page}=$items{dest}[0]; } $pagectime{$page}=$items{ctime}[0]; @@ -407,8 +421,8 @@ sub saveindex () { #{{{ "src=$pagesources{$page} ". "dest=$renderedfiles{$page}"; $line.=" link=$_" foreach @{$links{$page}}; - if (exists $inlinepages{$page}) { - $line.=" inlinepage=$_" foreach split " ", $inlinepages{$page}; + if (exists $depends{$page}) { + $line.=" depends=$_" foreach split " ", $depends{$page}; } print OUT $line."\n"; } @@ -433,61 +447,6 @@ sub misctemplate ($$) { #{{{ return $template->output; }#}}} -sub userinfo_get ($$) { #{{{ - my $user=shift; - my $field=shift; - - eval q{use Storable}; - my $userdata=eval{ Storable::lock_retrieve("$config{wikistatedir}/userdb") }; - if (! defined $userdata || ! ref $userdata || - ! exists $userdata->{$user} || ! ref $userdata->{$user} || - ! exists $userdata->{$user}->{$field}) { - return ""; - } - return $userdata->{$user}->{$field}; -} #}}} - -sub userinfo_set ($$$) { #{{{ - my $user=shift; - my $field=shift; - my $value=shift; - - eval q{use Storable}; - my $userdata=eval{ Storable::lock_retrieve("$config{wikistatedir}/userdb") }; - if (! defined $userdata || ! ref $userdata || - ! exists $userdata->{$user} || ! ref $userdata->{$user}) { - return ""; - } - - $userdata->{$user}->{$field}=$value; - my $oldmask=umask(077); - my $ret=Storable::lock_store($userdata, "$config{wikistatedir}/userdb"); - umask($oldmask); - return $ret; -} #}}} - -sub userinfo_setall ($$) { #{{{ - my $user=shift; - my $info=shift; - - eval q{use Storable}; - my $userdata=eval{ Storable::lock_retrieve("$config{wikistatedir}/userdb") }; - if (! defined $userdata || ! ref $userdata) { - $userdata={}; - } - $userdata->{$user}=$info; - my $oldmask=umask(077); - my $ret=Storable::lock_store($userdata, "$config{wikistatedir}/userdb"); - umask($oldmask); - return $ret; -} #}}} - -sub is_admin ($) { #{{{ - my $user_name=shift; - - return grep { $_ eq $user_name } @{$config{adminuser}}; -} #}}} - sub glob_match ($$) { #{{{ my $page=shift; my $glob=shift; @@ -542,6 +501,7 @@ sub main () { #{{{ rcs_update(); rcs_getctime() if $config{getctime}; refresh(); + rcs_notify() if $config{notify}; saveindex(); } } #}}}