[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [stem/master] Adding BSD compatability to system.is_running



commit 3731bba464e22dc5501b7b9ae62c29ebc34ad7ba
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date:   Sun Oct 16 17:27:57 2011 -0700

    Adding BSD compatability to system.is_running
    
    Copying over an arm fix I made earlier this week from
    util.torTools.isTorRunning so that it would work on OSX/FreeBSD/OpenBSD.
---
 stem/util/system.py |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/stem/util/system.py b/stem/util/system.py
index 3c520e8..bdada9b 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -61,7 +61,27 @@ def is_running(command, suppress_exc = True):
     OSError if this can't be determined and suppress_exc is False
   """
   
-  command_listing = call("ps -A co command")
+  # Linux and the BSD families have different variants of ps. Guess based on
+  # os.uname() results which to try first, then fall back to the other.
+  #
+  # Linux
+  #   -A          - Select all processes. Identical to -e.
+  #   -co command - Shows just the base command.
+  #
+  # Mac / BSD
+  #   -a        - Display information about other users' processes as well as
+  #               your own.
+  #   -o ucomm= - Shows just the ucomm attribute ("name to be used for
+  #               accounting")
+  
+  primary_resolver, secondary_resolver = "ps -A co command", "ps -ao ucomm="
+  
+  if os.uname()[0] in ("Darwin", "FreeBSD", "OpenBSD"):
+    primary_resolver, secondary_resolver = secondary_resolver, primary_resolver
+  
+  command_listing = call(primary_resolver)
+  if not command_listing:
+    command_listing = call(secondary_resolver)
   
   if command_listing:
     return command in command_listing



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits