diff --git a/scripts/buildversion.py b/scripts/buildversion.py
index d61fc9e..1045049 100755
--- a/scripts/buildversion.py
+++ b/scripts/buildversion.py
@@ -4,7 +4,7 @@
 # Copyright (C) 2015  Kevin O'Connor <kevin@koconnor.net>
 #
 # This file may be distributed under the terms of the GNU GPLv3 license.
-import sys, os, subprocess, time, socket, optparse
+import sys, os, subprocess, shlex, time, socket, optparse
 
 VERSION_FORMAT = """
 /* DO NOT EDIT!  This is an autogenerated file.  See scripts/buildversion.py. */
@@ -12,16 +12,26 @@
 #define BUILD_TOOLS "%s"
 """
 
+# Run program and return the specified output
+def check_output(prog):
+    try:
+        process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE)
+        output = process.communicate()[0]
+        retcode = process.poll()
+    except OSError:
+        return ""
+    if retcode:
+        return ""
+    try:
+        return output.decode()
+    except UnicodeError:
+        return ""
+
 # Obtain version info from "git" program
 def git_version():
     if not os.path.exists('.git'):
         return ""
-    params = "git describe --tags --long --dirty".split()
-    try:
-        ver = subprocess.check_output(params).decode().strip()
-    except:
-        return ""
-    return ver
+    return check_output("git describe --tags --long --dirty").strip()
 
 # Look for version in a ".version" file.  Official release tarballs
 # have this file (see scripts/tarball.sh).
@@ -32,7 +42,7 @@
         f = open('.version', 'r')
         ver = f.readline().strip()
         f.close()
-    except:
+    except OSError:
         return ""
     return ver
 
@@ -50,11 +60,7 @@
     success = 0
     for tool in tools:
         # Extract first line from "tool --version" output
-        try:
-            ver = subprocess.check_output([tool, '--version']).decode()
-        except:
-            continue
-        verstr = ver.split('\n')[0]
+        verstr = check_output("%s --version" % (tool,)).split('\n')[0]
         # Check if this tool looks like a binutils program
         isbinutils = 0
         if verstr.startswith('GNU '):
