aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/cvs.pm65
-rw-r--r--IkiWiki/Wrapper.pm3
-rw-r--r--ikiwiki.spec2
-rw-r--r--po/bg.po54
-rw-r--r--po/cs.po54
-rw-r--r--po/da.po54
-rw-r--r--po/de.po54
-rw-r--r--po/es.po54
-rw-r--r--po/fr.po54
-rw-r--r--po/gu.po54
-rw-r--r--po/ikiwiki.pot54
-rw-r--r--po/it.po54
-rw-r--r--po/pl.po54
-rw-r--r--po/sv.po54
-rw-r--r--po/tr.po54
-rw-r--r--po/vi.po54
-rwxr-xr-xt/cvs.t235
17 files changed, 631 insertions, 376 deletions
diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm
index 788f51167..841aec914 100644
--- a/IkiWiki/Plugin/cvs.pm
+++ b/IkiWiki/Plugin/cvs.pm
@@ -216,14 +216,12 @@ sub rcs_add ($) {
while ($file = pop @files_to_add) {
if (@files_to_add == 0) {
- # file
cvs_runcvs('add', cvs_keyword_subst_args($file)) ||
- warn("cvs add $file failed\n");
+ warn("cvs add file $file failed\n");
}
else {
- # directory
cvs_runcvs('add', $file) ||
- warn("cvs add $file failed\n");
+ warn("cvs add dir $file failed\n");
}
}
}
@@ -316,7 +314,9 @@ sub rcs_recentchanges ($) {
$oldrev =~ s/INITIAL/0/;
$newrev =~ s/\(DEAD\)//;
my $diffurl = defined $config{diffurl} ? $config{diffurl} : "";
- my $epage = uri_escape_utf8($page);
+ my $epage = join('/',
+ map { uri_escape_utf8($_) } split('/', $page)
+ );
$diffurl=~s/\[\[file\]\]/$epage/g;
$diffurl=~s/\[\[r1\]\]/$oldrev/g;
$diffurl=~s/\[\[r2\]\]/$newrev/g;
@@ -396,11 +396,15 @@ sub rcs_diff ($;$) {
my @cvsps = `env TZ=UTC cvsps -q --cvs-direct -z 30 -g -s $rev`;
my $blank_lines_seen = 0;
+ # skip log, get to the diff
while (my $line = shift @cvsps) {
$blank_lines_seen++ if ($line =~ /^$/);
last if $blank_lines_seen == 2;
}
+ @cvsps = @cvsps[0..$maxlines-1]
+ if defined $maxlines && @cvsps > $maxlines;
+
if (wantarray) {
return @cvsps;
}
@@ -491,24 +495,53 @@ sub cvs_keyword_subst_args ($) {
my $filemime = File::MimeInfo::default($file);
# if (-T $file) {
- if (defined($filemime) && $filemime eq 'text/plain') {
- return ($file);
- }
- else {
- return ('-kb', $file);
- }
+ defined($filemime) && $filemime eq 'text/plain'
+ ? return ('-kkv', $file)
+ : return ('-kb', $file);
}
sub cvs_runcvs(@) {
my @cmd = @_;
unshift @cmd, 'cvs', '-Q';
- local $CWD = $config{srcdir};
+ # CVS can't operate outside a srcdir, so we're always setting $CWD.
+ # "local $CWD" restores the previous value when we go out of scope.
+ # Usually that's correct. But if we're removing the last file from
+ # a directory, the post-commit hook will exec in a working directory
+ # that's about to not exist (CVS will prune it).
+ #
+ # chdir() manually here, so we can selectively not chdir() back.
+
+ my $oldcwd = $CWD;
+ chdir($config{srcdir});
+
+ eval q{
+ use IPC::Open3;
+ use Symbol qw(gensym);
+ use IO::File;
+ };
+ error($@) if $@;
+
+ my $cvsout = '';
+ my $cvserr = '';
+ local *CATCHERR = IO::File->new_tmpfile;
+ my $pid = open3(gensym(), \*CATCHOUT, ">&CATCHERR", @cmd);
+ while (my $l = <CATCHOUT>) {
+ $cvsout .= $l
+ unless 1;
+ }
+ waitpid($pid, 0);
+ my $ret = $? >> 8;
+ seek CATCHERR, 0, 0;
+ while (my $l = <CATCHERR>) {
+ $cvserr .= $l
+ unless $l =~ /^cvs commit: changing keyword expansion /;
+ }
+
+ print STDOUT $cvsout;
+ print STDERR $cvserr;
- open(my $savedout, ">&STDOUT");
- open(STDOUT, ">", "/dev/null");
- my $ret = system(@cmd);
- open(STDOUT, ">&", $savedout);
+ chdir($oldcwd) if -d $oldcwd;
return ($ret == 0) ? 1 : 0;
}
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index 06be36dfc..84b4b5a2f 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -28,10 +28,11 @@ sub gen_wrappers () {
%config=(%origconfig);
}
+our $program_to_wrap = $0;
sub gen_wrapper () {
$config{srcdir}=File::Spec->rel2abs($config{srcdir});
$config{destdir}=File::Spec->rel2abs($config{destdir});
- my $this=File::Spec->rel2abs($0);
+ my $this=File::Spec->rel2abs($program_to_wrap);
if (! -x $this) {
error(sprintf(gettext("%s doesn't seem to be executable"), $this));
}
diff --git a/ikiwiki.spec b/ikiwiki.spec
index 6df191250..89f6d8c24 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
Name: ikiwiki
-Version: 3.20121212
+Version: 3.20121213
Release: 1%{?dist}
Summary: A wiki compiler
diff --git a/po/bg.po b/po/bg.po
index 2ab4f5cdf..ace53ad3e 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-bg\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -64,73 +64,73 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, fuzzy, perl-format
msgid "missing %s parameter"
msgstr "липсващ параметър „id” на шаблона"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "нов източник"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "съобщения"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "ново"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "премахване на „%s” (на %s дни)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "премахване на „%s”"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "проверка на източника „%s”"
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "не е намерен източник на адрес „%s”"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
#, fuzzy
msgid "feed not found"
msgstr "шаблонът „%s” не е намерен"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "данните от източника предизвикаха грешка в модула XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "създаване на нова страницa „%s”"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "грешка при обработване на шаблона"
@@ -764,11 +764,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "гласуване"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Общо гласове:"
@@ -1081,7 +1085,7 @@ msgstr ""
msgid "failed to generate image from code"
msgstr "грешка при запис на файла „%s”: %s"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1248,31 +1252,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "генериране на обвивки..."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "„%s” не е изпълним файл"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "не може да бъде създадена обвивка, която използва файл за настройки"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "не е указан файл на обвивката"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "крешка при компилиране на файла %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "успешно генериране на %s"
diff --git a/po/cs.po b/po/cs.po
index a43b035cd..07489c8cf 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2009-09-11 20:23+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -64,72 +64,72 @@ msgstr "Agregace spuštěna přes web."
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr "Není třeba nic dělat, všechny kanály jsou aktuální!"
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "chybí parametr %s"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "nový kanál"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "příspěvky"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "nový"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "expiruji %s (stará %s dnů)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "expiruji %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "poslední kontrola %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "kontroluji kanál %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "nemohu najít kanál na %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "kanál nebyl nalezen"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(neplatné UTF-8 bylo z kanálu odstraněno)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(entity byly v kanálu zakódovány)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "kanál shodil XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "vytvářím novou stránku %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "nepodařilo se zpracovat:"
@@ -760,11 +760,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "hlasovat"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Celkem hlasů:"
@@ -1065,7 +1069,7 @@ msgstr "chybí TeXový kód"
msgid "failed to generate image from code"
msgstr "z kódu se nepodařilo vygenerovat obrázek"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1239,31 +1243,31 @@ msgstr "** Deaktivuji modul %s, protože selhává s touto hláškou:"
msgid "generating wrappers.."
msgstr "generuji obaly..."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s není spustitelný soubor"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "nemohu vytvořit obal, který využívá soubor setup"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "jméno souboru s obalem nebylo zadáno"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "nelze zkompilovat %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "%s byl úspěšně vytvořen"
diff --git a/po/da.po b/po/da.po
index 2a05ba215..1b14c0b41 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.20110430\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2011-05-05 13:30+0200\n"
"Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
"Language-Team: None\n"
@@ -68,72 +68,72 @@ msgstr "Indsamling udløst via web."
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr "Intet at gøre lige nu, alle fødninger er tidssvarende!"
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "mangler parametren %s"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "ny fødning"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "indlæg"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "nyt"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "udløber %s (%s dage gammel)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "udløber %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "senest undersøgt %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "undersøger fødning %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "kunne ikke finde fødning ved %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "fødning ikke fundet"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(defekt UTF-8 fjernet fra fødning)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(fødningselementer omgået (escaped))"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "fødning fik XML::Feed til at bryde sammen!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "opretter ny side %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
msgid "failed to process template:"
msgstr "behandling af skabelon mislykkedes:"
@@ -762,11 +762,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr "%s har forkert syntaks: skal bruge CODE|NAME"
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "stem"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Samlede stemmer:"
@@ -1067,7 +1071,7 @@ msgstr "manglende tex-kode"
msgid "failed to generate image from code"
msgstr "billedopbygning fra kode mislykkedes"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1241,31 +1245,31 @@ msgstr "** Deaktiverer udvidelse %s, da den fejler med denne besked:"
msgid "generating wrappers.."
msgstr "bygger wrappers.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s ser ikke ud til at kunne afvikles"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "kan ikke oprette en wrapper som bruger en opsætningsfil"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "wrapper-navn ikke angivet"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "kompilering af %s mislykkedes"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "Korrekt bygget %s"
diff --git a/po/de.po b/po/de.po
index c19fedb5a..bba40e79f 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.14159\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2010-03-14 16:09+0530\n"
"Last-Translator: Sebastian Kuhnert <mail@sebastian-kuhnert.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -65,72 +65,72 @@ msgstr "Das Web löst die Zusammenstellung aus"
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr "Es gibt nichts zu tun, alle Vorlagen (feeds) sind aktuell!"
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "Parameter %s fehlt"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "neue Vorlage (feed)"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "Beiträge"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "neu"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "%s läuft aus (%s Tage alt)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "%s läuft aus"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "zuletzt geprüft %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "überprüfe Vorlage (feed) %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "konnte Vorlage (feed) unter %s nicht finden"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "Vorlage (feed) nicht gefunden"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(ungültiges UTF-8 wurde aus der Vorlage (feed) entfernt)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(Einträge in der Vorlage (feed) wurden maskiert)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "Vorlage (feed) führte zum Absturz von XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "erstelle neue Seite %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "Fehler beim Ablauf:"
@@ -772,11 +772,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "abstimmen"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Alle Stimmen:"
@@ -1079,7 +1083,7 @@ msgstr "fehlender TeX-Code"
msgid "failed to generate image from code"
msgstr "konnte kein Bild aus dem Code erzeugen"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1259,31 +1263,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "erzeuge Wrapper.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s scheint nicht ausführbar zu sein"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "Kann keinen Wrapper erzeugen, der eine Einrichtungsdatei verwendet"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "Dateiname des Wrappers nicht angegeben"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "erzeugen von %s fehlgeschlagen"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "%s wurde erfolgreich erstellt"
diff --git a/po/es.po b/po/es.po
index d215c1b4e..917fc49be 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2009-06-14 12:32+0200\n"
"Last-Translator: Victor Moral <victor@taquiones.net>\n"
"Language-Team: <en@li.org>\n"
@@ -70,72 +70,72 @@ msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
"¡ No hay nada que hacer, todas las fuentes de noticias están actualizadas !"
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "falta el parámetro %s"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "nueva entrada"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "entradas"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "nuevo"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "%s caducada (%s días de antigüedad)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "%s caducada"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "última comprobación el %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "comprobando fuente de datos %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "no puedo encontrar la fuente de datos en %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "fuente de datos no encontrada"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(una secuencia UTF-8 inválida ha sido eliminada de la fuente de datos)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(los caracteres especiales de la fuente de datos están exceptuados)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "¡ la fuente de datos ha provocado un error fatal en XML::Feed !"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "creando nueva página %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "se ha producido un error fatal mientras procesaba la plantilla:"
@@ -775,11 +775,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "Votar"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Recuento de votos:"
@@ -1084,7 +1088,7 @@ msgstr "falta el código tex"
msgid "failed to generate image from code"
msgstr "no he podido crear la imagen desde el código"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1263,32 +1267,32 @@ msgstr ""
msgid "generating wrappers.."
msgstr "generando programas auxiliares.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "el programa %s no parece ser ejecutable"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr ""
"no puedo crear un programa envoltorio que utiliza un archivo de configuración"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "el programa envoltorio no ha sido especificado"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "ha fallado la compilación del programa %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "creado con éxito el programa envoltorio %s"
diff --git a/po/fr.po b/po/fr.po
index aef6a2a1d..5e4d414b6 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.141\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2010-10-03 10:42+0200\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -66,72 +66,72 @@ msgstr "Agrégation déclenchée par le web"
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr "Rien à faire pour le moment, tous les flux sont à jour !"
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "Paramètre %s manquant"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "Nouveau flux"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "Articles"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "Nouveau"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "Fin de validité de %s (date de %s jours)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "Fin de validité de %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "dernière vérification : %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "Vérification du flux %s..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "Impossible de trouver de flux à %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "Flux introuvable "
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(chaîne UTF-8 non valable supprimée du flux)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(échappement des entités de flux)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "Plantage du flux XML::Feed !"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "Création de la nouvelle page %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
msgid "failed to process template:"
msgstr "Échec du traitementdu modèle :"
@@ -769,11 +769,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr "La syntaxe de %s n'est pas correcte : il faut utiliser CODE|NOM"
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "Voter"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Total des suffrages :"
@@ -1076,7 +1080,7 @@ msgstr "Il manque le code TeX"
msgid "failed to generate image from code"
msgstr "Échec de la création de l'image à partir du code"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1256,32 +1260,32 @@ msgstr ""
msgid "generating wrappers.."
msgstr "Création des fichiers CGI..."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s ne semble pas être exécutable"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr ""
"Impossible de créer un fichier CGI utilisant un fichier de configuration"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "Le nom du fichier CGI n'a pas été indiqué"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "Échec de la compilation de %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "%s a été créé avec succès"
diff --git a/po/gu.po b/po/gu.po
index 9d2d53fad..7a47746d4 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-gu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
"Language-Team: Gujarati <team@utkarsh.org>\n"
@@ -63,72 +63,72 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "ખોવાયેલ %s વિકલ્પ"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "નવું ફીડ"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "પોસ્ટ"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "નવું"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "જુનું કરે છે %s (%s દિવસો જુનું)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "જુનું કરે છે %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "ફીડ %s ચકાસે છે ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "%s પર ફીડ મળી શક્યું નહી"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "ફીડ મળ્યું નહી"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, fuzzy, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "ફીડમાંથી અયોગ્ય રીતે UTF-8 નીકાળેલ છે"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "ફીડ ભાંગી ગયું XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "નવું પાનું %s બનાવે છે"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "ક્રિયા કરવામાં નિષ્ફળ:"
@@ -755,11 +755,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "મત"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "કુલ મત:"
@@ -1069,7 +1073,7 @@ msgstr "ખોવાયેલ કિંમતો"
msgid "failed to generate image from code"
msgstr "માપ બદલવામાં નિષ્ફળ: %s"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1236,31 +1240,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "આવરણ બનાવે છે.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s એ ચલાવી શકાય તેમ લાગતું નથી"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "ગોઠવણ ફાઇલનો ઉપયોગ કરે છે તેનું આવરણ બનાવી શકાતું નથી"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "આવરણ ફાઇલનામ સ્પષ્ટ કરેલ નથી"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index d1307cde5..fe83c4866 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-11 12:49-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\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"
@@ -64,72 +64,72 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
msgid "failed to process template:"
msgstr ""
@@ -737,11 +737,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr ""
@@ -1042,7 +1046,7 @@ msgstr ""
msgid "failed to generate image from code"
msgstr ""
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1209,31 +1213,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr ""
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr ""
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr ""
diff --git a/po/it.po b/po/it.po
index 062f1c2a7..e5e25f39e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2009-08-16 11:01+0100\n"
"Last-Translator: Luca Bruno <lucab@debian.org>\n"
"Language-Team: Italian TP <tp@lists.linux.it>\n"
@@ -63,72 +63,72 @@ msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
"Nessuna azione da intraprendere, tutti i notiziari sono già aggiornati."
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "parametro %s mancante"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "nuovo notiziario"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "articoli"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "nuovo"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "in scadenza %s (vecchio di %s giorni)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "in scadenza %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "ultimo controllo %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "controllo notiziario %s..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "impossibile trovare il notiziario %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "notiziario non trovato"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(codifica UTF-8 non valida eliminata dal notiziario)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(entità del notiziario espanse con escape)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "il notiziario ha fatto andare in crash XML::Feed."
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "creazione nuova pagina %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "errore nell'elaborazione:"
@@ -769,11 +769,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "voto"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Voti totali:"
@@ -1076,7 +1080,7 @@ msgstr "codice tex mancante"
msgid "failed to generate image from code"
msgstr "impossibile generare l'immagine dal codice"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1251,31 +1255,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "generazione contenitori..."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s non sembra essere eseguibile"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "impossibile creare un contenitore che utilizzi un file di setup"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "nome del file del contenitore non specificato"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "errore nel compilare %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "%s generato con successo"
diff --git a/po/pl.po b/po/pl.po
index 3b645d23e..50a4dd219 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 1.51\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2007-04-27 22:05+0200\n"
"Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n"
"Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -66,73 +66,73 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, fuzzy, perl-format
msgid "missing %s parameter"
msgstr "brakujący parametr %s"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "nowy kanał RSS"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "wpisy"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "nowy wpis"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "wygasający wpis %s (ma już %s dni)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "wygasający wpis %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "sprawdzanie kanału RSS %s..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "nie znaleziono kanału RSS pod adresem %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
#, fuzzy
msgid "feed not found"
msgstr "nieznaleziony kanał RSS"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, fuzzy, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "Nieprawidłowe kodowanie UTF-8 usunięte z kanału RSS"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "awaria kanału RSS w module XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "tworzenie nowej strony %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "awaria w trakcie przetwarzania:"
@@ -768,11 +768,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "głosuj"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Oddane głosy:"
@@ -1090,7 +1094,7 @@ msgstr "brakujące wartości"
msgid "failed to generate image from code"
msgstr "awaria w trakcie zmiany rozmiaru: %s"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1257,31 +1261,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "tworzenie osłon..."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "osłona %s nie jest wykonywalna"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "awaria w trakcie tworzenia osłony używającej pliku konfiguracyjnego"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "nieokreślona nazwa pliku osłony"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "awaria w trakcie kompilowania %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "pomyślnie utworzono %s"
diff --git a/po/sv.po b/po/sv.po
index cebd63d86..320eb9900 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -63,73 +63,73 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, fuzzy, perl-format
msgid "missing %s parameter"
msgstr "mall saknar id-parameter"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "ny kanal"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "inlägg"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "ny"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "låter %s gå ut (%s dagar gammal)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "låter %s gå ut"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "kontrollerar kanalen %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "kunde inte hitta kanalen på %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
#, fuzzy
msgid "feed not found"
msgstr "mallen %s hittades inte"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "kanalen kraschade XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "skapar nya sidan %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "misslyckades med att behandla mall:"
@@ -760,11 +760,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "röst"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Antal röster:"
@@ -1076,7 +1080,7 @@ msgstr ""
msgid "failed to generate image from code"
msgstr "misslyckades med att skriva %s: %s"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1243,31 +1247,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "genererar wrappers.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "%s verkar inte vara körbar"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "kan inte skapa en wrapper som använder en konfigurationsfil"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "filnamn för wrapper har inte angivits"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "misslyckades med att kompilera %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "generering av %s lyckades"
diff --git a/po/tr.po b/po/tr.po
index b29e2c6d8..ae1bf6ad4 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.20091031\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2009-11-08 03:04+0200\n"
"Last-Translator: Recai Oktaş <roktas@debian.org>\n"
"Language-Team: Turkish <debian-l10n-turkish@lists.debian.org>\n"
@@ -60,72 +60,72 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, perl-format
msgid "missing %s parameter"
msgstr "%s parametresi eksik"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "yeni özet akışı"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "gönderi"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "yeni"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "%s için zaman aşımı (%s gün eski)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "%s için zaman aşımı"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr "son güncelleme: %s"
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "%s özet akışı denetleniyor ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "%s özet akışı bulunamadı"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
msgid "feed not found"
msgstr "özet akışı bulunamadı"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(geçersiz UTF-8 dizgisi özet akışından çıkarıldı)"
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr "(özet akışı girdileri işlendi)"
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "özet akışı XML::Feed'in çakılmasına yol açtı!"
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "%s için yeni sayfa oluşturuluyor"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
msgid "failed to process template:"
msgstr ""
@@ -734,11 +734,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr ""
@@ -1039,7 +1043,7 @@ msgstr ""
msgid "failed to generate image from code"
msgstr ""
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1207,31 +1211,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr ""
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr ""
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr ""
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr ""
diff --git a/po/vi.po b/po/vi.po
index 0d9f5736f..26fa35c9a 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-16 15:16-0400\n"
+"POT-Creation-Date: 2013-02-02 14:16-0500\n"
"PO-Revision-Date: 2007-01-13 15:31+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -64,73 +64,73 @@ msgstr ""
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:237
+#: ../IkiWiki/Plugin/aggregate.pm:236
#, fuzzy, perl-format
msgid "missing %s parameter"
msgstr "mẫu thiếu tham số id"
-#: ../IkiWiki/Plugin/aggregate.pm:272
+#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new feed"
msgstr "nguồn tin mới"
-#: ../IkiWiki/Plugin/aggregate.pm:286
+#: ../IkiWiki/Plugin/aggregate.pm:285
msgid "posts"
msgstr "bài"
-#: ../IkiWiki/Plugin/aggregate.pm:288
+#: ../IkiWiki/Plugin/aggregate.pm:287
msgid "new"
msgstr "mới"
-#: ../IkiWiki/Plugin/aggregate.pm:475
+#: ../IkiWiki/Plugin/aggregate.pm:474
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "đang mãn hạn %s (cũ %s ngày)"
-#: ../IkiWiki/Plugin/aggregate.pm:482
+#: ../IkiWiki/Plugin/aggregate.pm:481
#, perl-format
msgid "expiring %s"
msgstr "đang mãn hạn %s"
-#: ../IkiWiki/Plugin/aggregate.pm:510
+#: ../IkiWiki/Plugin/aggregate.pm:509
#, perl-format
msgid "last checked %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:514
+#: ../IkiWiki/Plugin/aggregate.pm:513
#, perl-format
msgid "checking feed %s ..."
msgstr "đang kiểm tra nguồn tin %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:519
+#: ../IkiWiki/Plugin/aggregate.pm:518
#, perl-format
msgid "could not find feed at %s"
msgstr "không tìm thấy nguồn tin ở %s"
-#: ../IkiWiki/Plugin/aggregate.pm:542
+#: ../IkiWiki/Plugin/aggregate.pm:541
#, fuzzy
msgid "feed not found"
msgstr "không tìm thấy mẫu %s"
-#: ../IkiWiki/Plugin/aggregate.pm:553
+#: ../IkiWiki/Plugin/aggregate.pm:552
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:561
+#: ../IkiWiki/Plugin/aggregate.pm:560
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:569
+#: ../IkiWiki/Plugin/aggregate.pm:568
msgid "feed crashed XML::Feed!"
msgstr "nguồn tin đã gây ra XML::Feed sụp đổ."
-#: ../IkiWiki/Plugin/aggregate.pm:661
+#: ../IkiWiki/Plugin/aggregate.pm:660
#, perl-format
msgid "creating new page %s"
msgstr "đang tạo trang mới %s"
-#: ../IkiWiki/Plugin/aggregate.pm:689 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:688 ../IkiWiki/Plugin/edittemplate.pm:135
#, fuzzy
msgid "failed to process template:"
msgstr "mẫu không xử lý được:"
@@ -760,11 +760,15 @@ msgstr ""
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
-#: ../IkiWiki/Plugin/poll.pm:70
+#: ../IkiWiki/Plugin/poll.pm:72 ../IkiWiki/Plugin/poll.pm:87
msgid "vote"
msgstr "bỏ phiếu"
-#: ../IkiWiki/Plugin/poll.pm:78
+#: ../IkiWiki/Plugin/poll.pm:86
+msgid "Write in"
+msgstr ""
+
+#: ../IkiWiki/Plugin/poll.pm:93
msgid "Total votes:"
msgstr "Tổng số phiếu :"
@@ -1076,7 +1080,7 @@ msgstr ""
msgid "failed to generate image from code"
msgstr "lỗi ghi %s: %s"
-#: ../IkiWiki/Plugin/trail.pm:363
+#: ../IkiWiki/Plugin/trail.pm:393
#, perl-format
msgid "building %s, its previous or next page has changed"
msgstr ""
@@ -1243,31 +1247,31 @@ msgstr ""
msgid "generating wrappers.."
msgstr "đang tạo ra các bộ bao bọc.."
-#: ../IkiWiki/Wrapper.pm:36
+#: ../IkiWiki/Wrapper.pm:37
#, perl-format
msgid "%s doesn't seem to be executable"
msgstr "có vẻ là %s không phải có khả năng thực hiện"
-#: ../IkiWiki/Wrapper.pm:40
+#: ../IkiWiki/Wrapper.pm:41
msgid "cannot create a wrapper that uses a setup file"
msgstr "không thể tạo bộ bao bọc sử dụng tập tin thiết lập"
-#: ../IkiWiki/Wrapper.pm:44
+#: ../IkiWiki/Wrapper.pm:45
msgid "wrapper filename not specified"
msgstr "chưa xác định tên tập tin bộ bao bọc"
-#: ../IkiWiki/Wrapper.pm:108
+#: ../IkiWiki/Wrapper.pm:109
msgid "Please wait"
msgstr ""
#. translators: The parameter is a C filename.
-#: ../IkiWiki/Wrapper.pm:267
+#: ../IkiWiki/Wrapper.pm:268
#, perl-format
msgid "failed to compile %s"
msgstr "lỗi biên dịch %s"
#. translators: The parameter is a filename.
-#: ../IkiWiki/Wrapper.pm:287
+#: ../IkiWiki/Wrapper.pm:288
#, perl-format
msgid "successfully generated %s"
msgstr "%s đã được tạo ra"
diff --git a/t/cvs.t b/t/cvs.t
index 9afd5a7e9..cbac43252 100755
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More; my $total_tests = 42;
+use Test::More; my $total_tests = 72;
use IkiWiki;
my $default_test_methods = '^test_*';
@@ -26,14 +26,13 @@ sub test_web_comments {
# - when the first comment for page.mdwn is added, and page/ is
# created to hold the comment, page/ isn't added to CVS control,
# so the comment isn't either
+ # - can't reproduce after chmod g+s ikiwiki.cgi (20120204)
# - side effect for moderated comments: after approval they
# show up normally AND are still pending, too
# - comments.pm treats rcs_commit_staged() as returning conflicts?
}
sub test_chdir_magic {
- # cvs.pm operations are always occurring inside $config{srcdir}
- # other ikiwiki operations are occurring wherever, and are unaffected
# when are we bothering with "local $CWD" and when aren't we?
}
@@ -52,12 +51,14 @@ sub test_cvs_run_cvs {
# steal from git.pm: safe_git(), run_or_{die,cry,non}
# - open() instead of system()
# always call cvs_run_cvs(), don't ever run 'cvs' directly
+ # - for cvs_info(), make it respect wantarray
}
sub test_cvs_run_cvsps {
# parameterize command like run_cvs()
# expose config vars for e.g. "--cvs-direct -z 30"
# always pass -x (unless proven otherwise)
+ # - but diff doesn't! optimization alert
# always pass -b HEAD (configurable like gitmaster_branch?)
}
@@ -94,21 +95,43 @@ sub test_cvs_is_controlling {
# TESTS FOR GENERAL PLUGIN API CALLS
sub test_checkconfig {
- # undef cvspath, expect "ikiwiki"
- # define cvspath normally, get it back
- # define cvspath in a subdir, get it back?
- # define cvspath with extra slashes, get sanitized version back
- # - yoink test_extra_path_slashes
- # undef cvs_wrapper, expect $config{wrappers} same size as before
-
- my $initial_cvspath = $config{cvspath};
- $config{cvspath} = "/ikiwiki//";
+ my $default_cvspath = 'ikiwiki';
+
+ undef $config{cvspath}; IkiWiki::checkconfig();
+ is(
+ $config{cvspath}, $default_cvspath,
+ q{can provide default cvspath},
+ );
+
+ $config{cvspath} = "/$default_cvspath/"; IkiWiki::checkconfig();
+ is(
+ $config{cvspath}, $default_cvspath,
+ q{can set typical cvspath and strip well-meaning slashes},
+ );
+
+ $config{cvspath} = "/$default_cvspath//subdir"; IkiWiki::checkconfig();
+ is(
+ $config{cvspath}, "$default_cvspath/subdir",
+ q{can really sanitize cvspath as assumed by rcs_recentchanges},
+ );
+
+ my $default_num_wrappers = @{$config{wrappers}};
+ undef $config{cvs_wrapper}; IkiWiki::checkconfig();
+ is(
+ @{$config{wrappers}}, $default_num_wrappers,
+ q{can start with no wrappers configured},
+ );
+
+ $config{cvs_wrapper} = $config{cvsrepo} . "/CVSROOT/post-commit";
IkiWiki::checkconfig();
is(
- $config{cvspath},
- $initial_cvspath,
- q{rcs_recentchanges assumes checkconfig has sanitized cvspath},
+ @{$config{wrappers}}, ++$default_num_wrappers,
+ q{can add cvs_wrapper},
);
+
+ undef $config{cvs_wrapper};
+ $config{cvspath} = $default_cvspath;
+ IkiWiki::checkconfig();
}
sub test_getsetup {
@@ -132,6 +155,11 @@ sub test_rcs_prepedit {
# for existing file, returns latest revision in repo
# - what's this used for? should it return latest revision in checkout?
# for new file, returns empty string
+
+ # netbsd web log says "could not open lock file"
+ # XXX does this work right?
+ # how about with un-added dirs in the srcdir?
+ # how about with cvsps.core lying around?
}
sub test_rcs_commit {
@@ -145,7 +173,8 @@ sub test_rcs_commit {
# - else, revert + return content with the conflict markers in it
# git.pm receives "session" param -- useful here?
# web commits start with "web commit {by,from} "
- # seeing File::chdir errors on commit?
+
+ # XXX commit can fail due to "could not open lock file"
}
sub test_rcs_commit_staged {
@@ -159,9 +188,21 @@ sub test_rcs_add {
my $message = "add a top-level ASCII (non-UTF-8) page via VCS API";
my $file = q{test0.mdwn};
- add_and_commit($file, $message, q{* some plain ASCII text});
+ add_and_commit($file, $message, qq{# \$Id\$\n* some plain ASCII text});
is_newly_added($file);
- is_in_keyword_substitution_mode($file, undef);
+ is_in_keyword_substitution_mode($file, q{-kkv});
+ like(
+ readfile($config{srcdir} . "/$file"),
+ qr/^# \$Id: $file,v 1\.1 .+\$$/m,
+ q{can expand RCS Id keyword},
+ );
+ my $generated_file = $config{destdir} . q{/test0/index.html};
+ ok(-e $generated_file, q{post-commit hook generates content});
+ like(
+ readfile($generated_file),
+ qr/^<h1>\$Id: $file,v 1\.1 .+\$<\/h1>$/m,
+ q{can htmlize mdwn, including RCS Id},
+ );
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 1);
is_most_recent_change(\@changes, stripext($file), $message);
@@ -187,7 +228,7 @@ sub test_rcs_add {
$file = q{test4/test5/test1.mdwn};
add_and_commit($file, $message, readfile("t/test1.mdwn"));
is_newly_added($file);
- is_in_keyword_substitution_mode($file, undef);
+ is_in_keyword_substitution_mode($file, q{-kkv});
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 2);
is_most_recent_change(\@changes, stripext($file), $message);
@@ -218,14 +259,14 @@ sub test_rcs_add {
$message = "add a UTF-8 and a binary file in different dirs";
my $file1 = "test8/test9.mdwn";
my $file2 = "test10/test11.ico";
- can_mkdir(qw(test8 test10));
+ can_mkdir($_) for (qw(test8 test10));
writefile($file1, $config{srcdir}, readfile('t/test2.mdwn'));
writefile($file2, $config{srcdir}, $bindata_in, 1);
IkiWiki::rcs_add($_) for ($file1, $file2);
IkiWiki::rcs_commit_staged(message => $message);
is_newly_added($_) for ($file1, $file2);
- is_in_keyword_substitution_mode($file1, undef);
- is_in_keyword_substitution_mode($file2, '-kb');
+ is_in_keyword_substitution_mode($file1, q{-kkv});
+ is_in_keyword_substitution_mode($file2, q{-kb});
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 3);
@changes = IkiWiki::rcs_recentchanges(4);
@@ -233,15 +274,39 @@ sub test_rcs_add {
# XXX test for both files in the commit, and no other files
is_most_recent_change(\@changes, $file2, $message);
+ $message = "remove the UTF-8 and binary files we just added";
+ IkiWiki::rcs_remove($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+ ok(! -d "$config{srcdir}/test8", q{empty dir pruned by post-commit});
+ ok(! -d "$config{srcdir}/test10", q{empty dir pruned by post-commit});
+ @changes = IkiWiki::rcs_recentchanges(11);
+ is_total_number_of_changes(\@changes, 5);
+ # XXX test for both files in the commit, and no other files
+ is_most_recent_change(\@changes, $file2, $message);
+
+ $message = "re-add UTF-8 and binary files with names swapped";
+ writefile($file2, $config{srcdir}, readfile('t/test2.mdwn'));
+ writefile($file1, $config{srcdir}, $bindata_in, 1);
+ IkiWiki::rcs_add($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+ isnt_newly_added($_) for ($file1, $file2);
+ is_in_keyword_substitution_mode($file2, q{-kkv});
+ is_in_keyword_substitution_mode($file1, q{-kb});
+ @changes = IkiWiki::rcs_recentchanges(11);
+ is_total_number_of_changes(\@changes, 6);
+ # XXX test for both files in the commit, and no other files
+ is_most_recent_change(\@changes, $file2, $message);
+
# prevent web edits from attempting to create .../CVS/foo.mdwn
# on case-insensitive filesystems, also prevent .../cvs/foo.mdwn
# unless your "CVS" is something else and we've made it configurable
+ # also want a pre-commit hook for this?
- # can it assume we're under CVS control? or must it check?
+ # pre-commit hook:
+ # - lcase filenames
+ # - ?
- # extract method: filetype-guessing
- # add a binary file, remove it, add a text file by same name, no -kb?
- # add a text file, remove it, add a binary file by same name, -kb?
+ # can it assume we're under CVS control? or must it check?
}
sub test_rcs_remove {
@@ -304,9 +369,67 @@ sub test_rcs_recentchanges {
}
sub test_rcs_diff {
+ my @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 0);
+
+ my $message = "add a UTF-8 and an ASCII file in different dirs";
+ my $file1 = "rcsdiff1/utf8.mdwn";
+ my $file2 = "rcsdiff2/ascii.mdwn";
+ my $contents2 = ''; $contents2 .= "$_. foo\n" for (1..11);
+ can_mkdir($_) for (qw(rcsdiff1 rcsdiff2));
+ writefile($file1, $config{srcdir}, readfile('t/test2.mdwn'));
+ writefile($file2, $config{srcdir}, $contents2);
+ IkiWiki::rcs_add($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+
+ # XXX we rely on rcs_recentchanges() to be called first!
+ # XXX or else for no cvsps cache to exist yet...
+ # XXX because rcs_diff() doesn't pass -x (as an optimization)
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 1);
+
+ unlike(
+ $changes[0]->{pages}->[0]->{diffurl},
+ qr/%2F/m,
+ q{path separators are preserved when UTF-8scaping filename},
+ );
+
+ my $changeset = 1;
+
+ my $maxlines = undef;
+ my $scalar_diffs = IkiWiki::rcs_diff($changeset, $maxlines);
+ like(
+ $scalar_diffs,
+ qr/^\+11\. foo$/m,
+ q{unbounded scalar diffs go all the way to 11},
+ );
+ my @array_diffs = IkiWiki::rcs_diff($changeset, $maxlines);
+ is(
+ $array_diffs[$#array_diffs],
+ "+11. foo\n",
+ q{unbounded array diffs go all the way to 11},
+ );
+
+ $maxlines = 8;
+ $scalar_diffs = IkiWiki::rcs_diff($changeset, $maxlines);
+ unlike(
+ $scalar_diffs,
+ qr/^\+11\. foo$/m,
+ q{bounded scalar diffs don't go all the way to 11},
+ );
+ @array_diffs = IkiWiki::rcs_diff($changeset, $maxlines);
+ isnt(
+ $array_diffs[$#array_diffs],
+ "+11. foo\n",
+ q{bounded array diffs don't go all the way to 11},
+ );
+ is(
+ scalar @array_diffs,
+ $maxlines,
+ q{bounded array diffs contain expected maximum number of lines},
+ );
+
# can it assume we're under CVS control? or must it check?
- # in list context, return all lines (with \n), up to $maxlines if set
- # in scalar context, return the whole diff, up to $maxlines if set
}
sub test_rcs_getctime {
@@ -415,6 +538,7 @@ sub list_module {
sub _startup {
my $can_plan = shift;
_plan_for_test_more($can_plan);
+ hook(type => "genwrapper", id => "cvstest", call => \&_wrapper_paths);
_generate_test_config();
}
@@ -450,8 +574,12 @@ sub _generate_test_config {
%config = IkiWiki::defaultconfig();
$config{rcs} = "cvs";
$config{srcdir} = "$dir/src";
+ $config{allow_symlinks_before_srcdir} = 1;
+ $config{destdir} = "$dir/dest";
$config{cvsrepo} = "$dir/repo";
$config{cvspath} = "ikiwiki";
+ use Cwd; $config{templatedir} = getcwd() . '/templates';
+ $config{diffurl} = "/nonexistent/cvsweb/[[file]]";
IkiWiki::loadplugins();
IkiWiki::checkconfig();
}
@@ -462,12 +590,39 @@ sub _generate_test_repo {
my $cvs = "cvs -d $config{cvsrepo}";
my $dn = ">/dev/null";
+
system "$cvs init $dn";
system "mkdir $dir/$config{cvspath} $dn";
system "cd $dir/$config{cvspath} && "
. "$cvs import -m import $config{cvspath} VENDOR RELEASE $dn";
system "rm -rf $dir/$config{cvspath} $dn";
system "$cvs co -d $config{srcdir} $config{cvspath} $dn";
+
+ _generate_and_configure_post_commit_hook();
+}
+
+sub _generate_and_configure_post_commit_hook {
+ $config{cvs_wrapper} = $config{cvsrepo} . "/CVSROOT/test-post";
+ $config{wrapper} = $config{cvs_wrapper};
+
+ require IkiWiki::Wrapper;
+ {
+ no warnings 'once';
+ $IkiWiki::program_to_wrap = 'ikiwiki.out';
+ # 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}";
+ my $dn = ">/dev/null";
+
+ system "mkdir $config{destdir} $dn";
+ system "cd $dir && $cvs co CVSROOT $dn && cd CVSROOT && " .
+ "echo 'DEFAULT $config{cvsrepo}/CVSROOT/test-post %{sVv} &' "
+ . " >> loginfo && "
+ . "$cvs commit -m 'test repo setup' $dn && "
+ . "cd .. && rm -rf CVSROOT";
}
sub add_and_commit {
@@ -489,18 +644,28 @@ sub can_mkdir {
);
}
-sub is_newly_added {
- my $file = shift;
- is(
+sub is_newly_added { _newly_added_or_not(shift, 1) }
+sub isnt_newly_added { _newly_added_or_not(shift, 0) }
+sub _newly_added_or_not {
+ my ($file, $expected_new) = @_;
+ my ($func, $word);
+ if ($expected_new) {
+ $func = \&Test::More::is;
+ $word = q{is};
+ }
+ else {
+ $func = \&Test::More::isnt;
+ $word = q{isn't};
+ }
+ $func->(
IkiWiki::Plugin::cvs::cvs_info("Repository revision", $file),
'1.1',
- qq{$file is newly added to CVS},
+ qq{$file $word newly added to CVS},
);
}
sub is_in_keyword_substitution_mode {
my ($file, $mode) = @_;
- $mode = '(none)' unless defined $mode;
is(
IkiWiki::Plugin::cvs::cvs_info("Sticky Options", $file),
$mode,
@@ -537,3 +702,7 @@ sub stripext {
$file =~ s|$extension$||g;
return $file;
}
+
+sub _wrapper_paths {
+ return qq{newenviron[i++]="PERL5LIB=$ENV{PERL5LIB}";};
+}