]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/dpkgpm.cc
Merge branch 'cmake'
[apt.git] / apt-pkg / deb / dpkgpm.cc
index ccfc77d6a4831ba75a192ea6f6c5faf8999e92b8..3d0fd622c5ebf56132ab49cbc962603b85ccb1b3 100644 (file)
@@ -403,6 +403,7 @@ bool pkgDPkgPM::SendPkgsInfo(FILE * const F, unsigned int const &Version)
 bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
 {
    bool result = true;
+   static bool interrupted = false;
 
    Configuration::Item const *Opts = _config->Tree(Cnf);
    if (Opts == 0 || Opts->Child == 0)
@@ -410,6 +411,9 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
    Opts = Opts->Child;
 
    sighandler_t old_sigpipe = signal(SIGPIPE, SIG_IGN);
+   sighandler_t old_sigint = signal(SIGINT, [](int signum){
+        interrupted = true;
+   });
 
    unsigned int Count = 1;
    for (; Opts != 0; Opts = Opts->Next, Count++)
@@ -508,8 +512,12 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
          break;
       }
    }
+   signal(SIGINT, old_sigint);
    signal(SIGPIPE, old_sigpipe);
 
+   if (interrupted)
+      result = _error->Error("Interrupted");
+
    return result;
 }
                                                                        /*}}}*/