about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2010-06-18 16:22:59 +0200
committerhut <hut@lavabit.com>2010-06-18 16:22:59 +0200
commitb289f6796ef213a83595db77c06b7586cdbcb730 (patch)
tree38fe630ec436d1cf50917a75d85f9f90596b10a2
parent26962ded19264ae1885386783c861d002d8fd1dc (diff)
downloadranger-b289f6796ef213a83595db77c06b7586cdbcb730.tar.gz
main: catch SystemExit and return the exit value
-rwxr-xr-xranger.py5
-rw-r--r--ranger/__main__.py4
2 files changed, 7 insertions, 2 deletions
diff --git a/ranger.py b/ranger.py
index ccc9f0d6..f290d796 100755
--- a/ranger.py
+++ b/ranger.py
@@ -30,6 +30,8 @@ fi
 return 1
 """
 
+import sys
+
 # Redefine the docstring, since the previous one was hijacked to
 # embed a shellscript.
 __doc__ = """Ranger - file browser for the unix terminal"""
@@ -40,7 +42,6 @@ __doc__ = """Ranger - file browser for the unix terminal"""
 try:
 	from ranger.__main__ import main
 except ImportError:
-	import sys
 	if '-d' not in sys.argv and '--debug' not in sys.argv:
 		print("Can't import the main module.")
 		print("To run an uninstalled copy of ranger,")
@@ -48,4 +49,4 @@ except ImportError:
 	else:
 		raise
 else:
-	main()
+	sys.exit(main())
diff --git a/ranger/__main__.py b/ranger/__main__.py
index a03509cf..a3e0ef1c 100644
--- a/ranger/__main__.py
+++ b/ranger/__main__.py
@@ -212,6 +212,8 @@ def main():
 	except Exception:
 		import traceback
 		crash_traceback = traceback.format_exc()
+	except SystemExit as error:
+		return error.args[0]
 	finally:
 		try:
 			fm.ui.destroy()
@@ -222,6 +224,8 @@ def main():
 			print("Ranger crashed.  " \
 					"Please report this (including the traceback) at:")
 			print("http://savannah.nongnu.org/bugs/?group=ranger&func=additem")
+			return 1
+		return 0
 
 
 if __name__ == '__main__':