]> git.saurik.com Git - apt.git/commit
Ignore SIGINT and SIGQUIT for Pre-Install hooks
authorJulian Andres Klode <jak@debian.org>
Fri, 19 Aug 2016 11:00:33 +0000 (13:00 +0200)
committerJulian Andres Klode <jak@debian.org>
Wed, 5 Oct 2016 19:53:38 +0000 (21:53 +0200)
commitf5aa6a782f1a8bcf08b572415ec6b521e11a8d82
tree67fde30fa2d3560d68129e5e558acdd5cfddeb42
parent65979c215df7a4fe1585fd988e4e5a06bc5d306b
Ignore SIGINT and SIGQUIT for Pre-Install hooks

Instead of erroring out when receiving a SIGINT, let the
child deal with it - we'll error out anyway if the child
exits with an error or due to the signal. Also ignore
SIGQUIT, as system() ignores it.

This basically fixes Bug #832593, but: we are running
the hooks via sh -c. Some shells exit with a signal
error even if the command they are executing catches
the signal and exits successfully. So far, this has
been noticed on dash, which unfortunately, is our
default shell.

Example:
$ cat trap.sh
trap 'echo int' INT; sleep 10; exit 0
$ if dash -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi
^Cint
FAIL: 130
$ if mksh -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi
^Cint
OK: 0
$ if bash -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi
^Cint
OK: 0

(cherry picked from commit a6ae3d3df490e7a5a1c8324ba9dc2e63972b1529)
apt-pkg/deb/dpkgpm.cc