X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/101321752362ba3117909fb5913edc2d396f9133..12fa9c031f7a9dc25dba628aa91fc347586e4ab6:/IkiWiki/Plugin/aggregate.pm

diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index 614c3fa55..83bd670cb 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -70,10 +70,12 @@ sub checkconfig () {
 	if (! defined $config{aggregateinternal}) {
 		$config{aggregateinternal}=1;
 	}
-	if (! defined $config{cookies}) {
-		$config{cookies}={ file => "$ENV{HOME}/.ikiwiki/cookies" };
+	if (! defined $config{cookiejar}) {
+		$config{cookiejar}={ file => "$ENV{HOME}/.ikiwiki/cookies" };
 	}
 
+	# This is done here rather than in a refresh hook because it
+	# needs to run before the wiki is locked.
 	if ($config{aggregate} && ! ($config{post_commit} && 
 	                             IkiWiki::commit_hook_enabled())) {
 		launchaggregation();
@@ -199,7 +201,7 @@ sub migrate_to_internal {
 		if (-e $oldoutput) {
 			require IkiWiki::Render;
 			debug("removing output file $oldoutput");
-			IkiWiki::prune($oldoutput);
+			IkiWiki::prune($oldoutput, $config{destdir});
 		}
 	}
 	
@@ -496,6 +498,7 @@ sub needsaggregate () {
 }
 
 sub aggregate (@) {
+	eval q{use Net::INET6Glue::INET_is_INET6}; # may not be available
 	eval q{use XML::Feed};
 	error($@) if $@;
 	eval q{use URI::Fetch};
@@ -611,6 +614,7 @@ sub add_page (@) {
 		# updating an existing post
 		$guid=$guids{$params{guid}};
 		return if $guid->{expired};
+		write_page($feed, $guid, $mtime, \%params);
 	}
 	else {
 		# new post
@@ -637,23 +641,33 @@ sub add_page (@) {
 			$c++
 		}
 
-		# Make sure that the file name isn't too long. 
-		# NB: This doesn't check for path length limits.
-		my $max=POSIX::pathconf($config{srcdir}, &POSIX::_PC_NAME_MAX);
-		if (defined $max && length(htmlfn($page)) >= $max) {
+		$guid->{page}=$page;
+		eval { write_page($feed, $guid, $mtime, \%params) };
+		if ($@) {
+			# assume failure was due to a too long filename
+			# (or o
 			$c="";
 			$page=$feed->{dir}."/item";
 			while (exists $IkiWiki::pagecase{lc $page.$c} ||
 			      -e $IkiWiki::Plugin::transient::transientdir."/".htmlfn($page.$c) ||
-
-			       -e "$config{srcdir}/".htmlfn($page.$c)) {
+			      -e "$config{srcdir}/".htmlfn($page.$c)) {
 				$c++
 			}
+
+			$guid->{page}=$page;
+			write_page($feed, $guid, $mtime, \%params);
 		}
 
-		$guid->{page}=$page;
 		debug(sprintf(gettext("creating new page %s"), $page));
 	}
+}
+
+sub write_page ($$$$$) {
+	my $feed=shift;
+	my $guid=shift;
+	my $mtime=shift;
+	my %params=%{shift()};
+
 	$guid->{feed}=$feed->{name};
 	
 	# To write or not to write? Need to avoid writing unchanged pages