summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xportato.py12
-rw-r--r--portato/plistener.py1
2 files changed, 12 insertions, 1 deletions
diff --git a/portato.py b/portato.py
index cea4ad7..421901a 100755
--- a/portato.py
+++ b/portato.py
@@ -14,13 +14,20 @@
from __future__ import with_statement, absolute_import
+import signal
import sys, os, subprocess
import gettext, locale
from optparse import OptionParser, SUPPRESS_HELP
from portato import get_listener
+from portato.helper import debug, info
from portato.constants import VERSION, LOCALE_DIR, APP, SU_COMMAND
+def sigchld_aborter (signal, frame):
+ """Aborts the current process when the child dies."""
+ debug("Child process died. Trying to abort.")
+ raise KeyboardInterrupt
+
def main ():
# set gettext stuff
locale.setlocale(locale.LC_ALL, '')
@@ -44,7 +51,6 @@ def main ():
if options.nofork or os.getuid() == 0: # start GUI
from portato.gui import run
- from portato.helper import info
info("%s v. %s", _("Starting Portato"), VERSION)
if options.shm:
@@ -67,7 +73,11 @@ def main ():
env.update(DBUS_SESSION_BUS_ADDRESS="")
cmd = SU_COMMAND.split()
subprocess.Popen(cmd+["%s --no-fork --shm %ld %ld %ld" % (sys.argv[0], mem.key, sig.key, rw.key)], env = env)
+
+ # set handler to abort the listener if needed
+ signal.signal(signal.SIGCHLD, sigchld_aborter)
+ # stast listener
get_listener().set_recv(mem, sig, rw)
if __name__ == "__main__":
diff --git a/portato/plistener.py b/portato/plistener.py
index 8d35ece..a45a17e 100644
--- a/portato/plistener.py
+++ b/portato/plistener.py
@@ -56,6 +56,7 @@ class PListener (object):
elif data[0] == "close":
break
except KeyboardInterrupt:
+ debug("Got KeyboardInterrupt. Aborting.")
break
self._mem.remove()
n class='insertions'>+2 2014-04-21makefile: install completion automatically and adjust lib pathsJason A. Donenfeld1-12/+30 2014-04-20Use sort -u instead of uniqJason A. Donenfeld1-2/+2 2014-04-20Don't use subshells for reading from find.Jason A. Donenfeld1-4/+4 2014-04-19bash-completion: fix completion-file's name in uninstallschalox1-1/+1 2014-04-19platform: Auto-detect local platform fileJason A. Donenfeld2-3/+3 In fact, if we're running from the source directory, just auto-detect the platform file in the first place. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2014-04-19platform: Allow custom platform file before installJason A. Donenfeld2-3/+5 The new environment variable, PASSWORD_STORE_PLATFORM_FILE is now used for loading custom platform files while pass lives as src/password-store.sh. After it is installed using 'make install', this environment variable is no longer used, and either no platform file is loaded (if the default platform is acceptable), or a hardcoded also-installed platform file is referenced. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2014-04-18reencrypt: cleaner temp file declarationJason A. Donenfeld1-4/+4 2014-04-18Remove unneeded semicolon.Jason A. Donenfeld1-14/+14 2014-04-18Check sneaky paths.Jason A. Donenfeld1-0/+15 2014-04-18Pruning: turns out rmdir does it for us with -p.Jason A. Donenfeld1-9/+3 2014-04-18Abstract remove empty directories into function.Jason A. Donenfeld1-14/+11 2014-04-18Remember to prune empty folders.Jason A. Donenfeld1-0/+8 2014-04-18init: allow deinitializationJason A. Donenfeld2-2/+18 2014-04-18bash-completion: filter dot files from resultsJason A. Donenfeld1-3/+8 2014-04-18reencrypt: remove option, do automaticallyJason A. Donenfeld5-39/+25 2014-04-18reencryption: add to completion filesJason A. Donenfeld3-1/+5 2014-04-18Specify variable gpg.Jason A. Donenfeld1-1/+1 2014-04-18style: don't escape new line on &&Jason A. Donenfeld1-2/+2 2014-04-18reencryption: remove temporary file on failureJason A. Donenfeld1-1/+1 2014-04-18reencryption: only reencrypt files when requiredJason A. Donenfeld2-16/+37 2014-04-17cp: typo as cvJason A. Donenfeld1-1/+1 2014-04-17bash: gpg_id is localJason A. Donenfeld1-0/+1 2014-04-17move/copy: always reencrypt passwords at destinationJason A. Donenfeld5-25/+56 2014-04-17makefile: allow platform files with gnu sedJason A. Donenfeld1-7/+8 Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2014-04-17mv: Add pass mv/rename supportJason A. Donenfeld5-3/+78 Based-on-work-by: Matthieu Weber <mweber@free.fr> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2014-04-17revelation2pass: add plain XML importJavali1-11/+15 I found that revelatio2pass.py script doesn't work. It can not decrypt my password file. I got following error message: raceback (most recent call last): File "git/password-store/contrib/importers/revelation2pass.py", line 159, in <module> main(args.FILE, verbose=args.verbose, xml=args.xml) File "git/password-store/contrib/importers/revelation2pass.py", line 140, in main cleardata_gz = decrypt_gz(password, data) File "git/password-store/contrib/importers/revelation2pass.py", line 117, in decrypt_gz ct = c.decrypt(cipher_text[28:]) File "/usr/lib/python2.7/site-packages/Crypto/Cipher/blockalgo.py", line 295, in decrypt return self._cipher.decrypt(ciphertext) I was unable to fix the problem, but I created a workaround, that add plain XML import option to the revelation2pass.py script. Revelation can export its password file as plain XML format. 2014-04-17platform: add cygwin supportJason A. Donenfeld2-1/+17 According to Brandon Jones, all we need to do is adjust /dev/clipboard from xclip. So we add a platform specific file to do so. http://www.relaytheurgency.com/2014/04/pass-in-cygwin-relatively-simple.html Suggested-by: Brandon Jones <jones.brandon.lee@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>