r1880 - trunk/misc

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Aug 31 15:49:00 EDT 2006


Author: div0
Date: 2006-08-31 15:49:00 -0400 (Thu, 31 Aug 2006)
New Revision: 1880

Modified:
   trunk/misc/nexuiz-map-compiler
Log:
now restores shaderlist again and catches Ctrl-C


Modified: trunk/misc/nexuiz-map-compiler
===================================================================
--- trunk/misc/nexuiz-map-compiler	2006-08-31 19:40:10 UTC (rev 1879)
+++ trunk/misc/nexuiz-map-compiler	2006-08-31 19:49:00 UTC (rev 1880)
@@ -131,30 +131,55 @@
 	my %shaders = map { m!/([^/.]*)\.shader(?:$)! ? ($1 => 1) : () } glob "../scripts/*.shader";
 	open my $shaderlist, "+<", "$NEXUIZDIR/data/scripts/shaderlist.txt"
 		or die "open $NEXUIZDIR/data/scripts/shaderlist.txt: $!";
+	my $previous_shaderlist = "";
 	while(<$shaderlist>)
 	{
+		$previous_shaderlist .= $_;
 		y/\r\n//d;
 		delete $shaders{$_};
 	}
-	for(keys %shaders)
+	my $restore_shaderlist = sub
 	{
-		print $shaderlist "$_\n";
+		open $shaderlist, ">", "$NEXUIZDIR/data/scripts/shaderlist.txt";
+		print $shaderlist $previous_shaderlist;
+		close $shaderlist;
+	};
+	local $SIG{INT} = sub
+	{
+		print "SIGINT caught, cleaning up...\n";
+		$restore_shaderlist->();
+		exit 0;
+	};
+	eval
+	{
+		for(keys %shaders)
+		{
+			print $shaderlist "$_\n";
+		}
+		close $shaderlist;
+
+		q3map2 '-bsp', '-meta', @{$options->{bsp}},   "$m.map"
+			or die "-bsp: $?";
+		if($options->{scale} != 1)
+		{
+			q3map2 '-scale', $options->{scale}, "$m.bsp"
+				or die "-scale: $?";
+			rename "${m}_s.bsp", "$m.bsp"
+				or die "rename ${m}_s.bsp $m.bsp: $!";
+		}
+		q3map2 '-vis',          @{$options->{vis}},   "$m.map"
+			or die "-vis: $?";
+		q3map2 '-light',        @{$options->{light}}, "$m.map"
+			or die "-light: $?";
+
+		unlink "$m.srf";
+
+		$restore_shaderlist->();
+		1;
 	}
-	close $shaderlist;
-
-	q3map2 '-bsp', '-meta', @{$options->{bsp}},   "$m.map"
-		or die "-bsp: $?";
-	if($options->{scale} != 1)
+	or do
 	{
-		q3map2 '-scale', $options->{scale}, "$m.bsp"
-			or die "-scale: $?";
-		rename "${m}_s.bsp", "$m.bsp"
-			or die "rename ${m}_s.bsp $m.bsp: $!";
-	}
-	q3map2 '-vis',          @{$options->{vis}},   "$m.map"
-		or die "-vis: $?";
-	q3map2 '-light',        @{$options->{light}}, "$m.map"
-		or die "-light: $?";
-
-	unlink "$m.srf";
+		$restore_shaderlist->();
+		die $@;
+	};
 }




More information about the nexuiz-commits mailing list