s4-python: Override SIGINT handler in scripts only.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 25 Sep 2012 18:49:22 +0000 (20:49 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 25 Sep 2012 18:59:09 +0000 (20:59 +0200)
Override the SIGINT handler in a few select cases only, rather than
doing so in one of the samba Python modules. I've done this where it
matters most; we can add this code to other scripts too if necessary.

This means that importing the 'samba' module from a third party
application does not have side-effects on the state of the signal
handlers.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=9068

source4/scripting/bin/samba-tool
source4/scripting/bin/samba_upgradeprovision
source4/scripting/bin/smbstatus
source4/scripting/bin/subunitrun
source4/scripting/python/pyglue.c

index 8ec6514bbf5e93860fc897fcafad36e6939547c8..bb9662666c121bb5b15e67a1ed80ddfcafc1b376 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 # Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008-2012
 # Copyright (C) Amitay Isaacs <amitay@gmail.com> 2011
 # Copyright (C) Giampaolo Lauria <lauria2@yahoo.com> 2011
 #
@@ -23,6 +24,12 @@ import sys
 # Find right direction when running from source tree
 sys.path.insert(0, "bin/python")
 
+# make sure the script dies immediately when hitting control-C,
+# rather than raising KeyboardInterrupt. As we do all database
+# operations using transactions, this is safe.
+import signal
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+
 from samba.netcmd.main import cmd_sambatool
 cmd = cmd_sambatool()
 subcommand = None
index 344d7f56c2a5791de4d4adeb089a50adb10ee8f7..54ffbeab1e6cb1d3e6a1b931b81fb63b1e1d890f 100755 (executable)
@@ -66,6 +66,12 @@ from samba.upgradehelpers import (dn_sort, get_paths, newprovision,
                                  print_provision_ranges)
 from samba.xattr import copytree_with_xattrs
 
+# make sure the script dies immediately when hitting control-C,
+# rather than raising KeyboardInterrupt. As we do all database
+# operations using transactions, this is safe.
+import signal
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+
 replace=2**FLAG_MOD_REPLACE
 add=2**FLAG_MOD_ADD
 delete=2**FLAG_MOD_DELETE
index 055753b3fabd5d7cc38f3b5740ed246083cc45cf..7ff98df6b3ed7152f20a9fde4207f86980820f8b 100755 (executable)
@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 #
 #  provide information on connected users and open files
-#  Copyright ǒ Jelmer Vernooij 2008
+#  Copyright (c) Jelmer Vernooij 2008
 #
 #  Based on the original in EJS:
 #  Copyright Andrew Tridgell 2005
 
 import os, sys
 
+# make sure the script dies immediately when hitting control-C,
+# rather than raising KeyboardInterrupt. As we do all database
+# operations using transactions, this is safe.
+import signal
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+
 sys.path.insert(0, "bin/python")
 
 import optparse
index df46b08801e97ae2e6c66f3cbc3893591e3dc45c..15a78bf499b8f8ec46f5e1925680ea8cd2d7fab9 100755 (executable)
 
 import sys
 
+# make sure the script dies immediately when hitting control-C,
+# rather than raising KeyboardInterrupt. As we do all database
+# operations using transactions, this is safe.
+import signal
+signal.signal(signal.SIGINT, signal.SIG_DFL)
+
 # Find right directory when running from source tree
 sys.path.insert(0, "bin/python")
 
index cc312ba0689b38e9aff4330314ec59b180c8c074..c21de46798dcf04a2a0f39d962ed817a10835174 100644 (file)
@@ -244,12 +244,5 @@ void init_glue(void)
 
        PyModule_AddObject(m, "version",
                                           PyString_FromString(SAMBA_VERSION_STRING));
-
-       /* one of the most annoying things about python scripts is
-          that they don't die when you hit control-C. This fixes that
-          sillyness. As we do all database operations using
-          transactions, this is also safe. 
-       */
-       signal(SIGINT, SIG_DFL);
 }