]> err.no Git - dpkg/commitdiff
Clean up after ctrl-c is received.
authorAdam Heath <doogie@debian.org>
Fri, 24 May 2002 05:26:48 +0000 (05:26 +0000)
committerAdam Heath <doogie@debian.org>
Fri, 24 May 2002 05:26:48 +0000 (05:26 +0000)
debian/changelog
scripts/dpkg-source.pl

index 6e14ab0311db6a04adf7bc8a64e444a68ef07caa..0c84aab14283812843b4b5faa44ce2700aa83180 100644 (file)
@@ -93,6 +93,8 @@ dpkg (1.10) unstable; urgency=low
   * Drop upgrade compat stuff in dpkg postinst for ancient versions (over
     5 years old)
   * Always set CLOEXEC on the lock fd.  Closes: Bug#147872
+  * Clean up tmp files when ctrl-c is sent to dpkg-source.  Closes:
+    Bug#58653.
 
  -- Wichert Akkerman <wakkerma@debian.org>  Mon, 20 Aug 2001 14:54:38 +0200
 
index 66df8ff20f8b11e233f119f1ae8f5781418a616d..5645959e364dd7ca9faa45021d349e1177193b1f 100755 (executable)
@@ -24,6 +24,15 @@ require 'controllib.pl';
 # Make sure patch doesn't get any funny ideas
 delete $ENV{'POSIXLY_CORRECT'};
 
+my @exit_handlers = ();
+sub exit_handler {
+       &$_ foreach ( reverse @exit_handlers );
+       exit(127);
+}
+$SIG{'INT'} = \&exit_handler;
+$SIG{'HUP'} = \&exit_handler;
+$SIG{'QUIT'} = \&exit_handler;
+
 sub usageversion {
     print STDERR
 "Debian dpkg-source $version.  Copyright (C) 1996
@@ -327,7 +336,9 @@ if ($opmode eq 'build') {
             $sourcestyle =~ m/[KP]/ ||
                 &error("orig dir \`$origdir' already exists, not overwriting,".
                        " giving up; use -sA, -sK or -sP to override");
+           push @exit_handlers, sub { erasedir($origdir) };
             erasedir($origdir);
+           pop @exit_handlers;
         } elsif ($! != ENOENT) {
             &syserr("unable to check for existence of orig dir \`$origdir'");
         }
@@ -338,13 +349,14 @@ if ($opmode eq 'build') {
 #        checktarsane($origtargz,$expectprefix);
         mkdir("$origtargz.tmp-nest",0755) ||
             &syserr("unable to create \`$origtargz.tmp-nest'");
+       push @exit_handlers, sub { erasedir("$origtargz.tmp-nest") };
         extracttar($origtargz,"$origtargz.tmp-nest",$expectprefix);
         rename("$origtargz.tmp-nest/$expectprefix",$expectprefix) ||
             &syserr("unable to rename \`$origtargz.tmp-nest/$expectprefix' to ".
                     "\`$expectprefix'");
         rmdir("$origtargz.tmp-nest") ||
             &syserr("unable to remove \`$origtargz.tmp-nest'");
-
+           pop @exit_handlers;
     }
         
     if ($sourcestyle =~ m/[kpursKPUR]/) {