From 863c32ec9d6810e50d6fce3d73620d9f8c92c60f Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 31 Aug 2006 19:49:00 +0000 Subject: [PATCH] now restores shaderlist again and catches Ctrl-C git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1880 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- misc/nexuiz-map-compiler | 61 ++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/misc/nexuiz-map-compiler b/misc/nexuiz-map-compiler index eafdf1340..104e15501 100755 --- a/misc/nexuiz-map-compiler +++ b/misc/nexuiz-map-compiler @@ -131,30 +131,55 @@ for my $m(@{$options->{maps}}) 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"; - } - close $shaderlist; - - q3map2 '-bsp', '-meta', @{$options->{bsp}}, "$m.map" - or die "-bsp: $?"; - if($options->{scale} != 1) + open $shaderlist, ">", "$NEXUIZDIR/data/scripts/shaderlist.txt"; + print $shaderlist $previous_shaderlist; + close $shaderlist; + }; + local $SIG{INT} = sub { - 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: $?"; + print "SIGINT caught, cleaning up...\n"; + $restore_shaderlist->(); + exit 0; + }; + eval + { + for(keys %shaders) + { + print $shaderlist "$_\n"; + } + close $shaderlist; - unlink "$m.srf"; + 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; + } + or do + { + $restore_shaderlist->(); + die $@; + }; } -- 2.39.2