[arch-dev-public] [PATCH 1/3] Use format strings when printing errors

Dan McGee dan at archlinux.org
Sun Feb 27 12:25:39 EST 2011


And additionally, don't swallow error output from parsepkgbuild calls-
this helped debug the next issue with a patch to come.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 namcap.py |   13 +++++++------
 pacman.py |    7 ++++++-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/namcap.py b/namcap.py
index 69787db..44440a9 100755
--- a/namcap.py
+++ b/namcap.py
@@ -103,7 +103,7 @@ def process_realpackage(package, modules):
 	pkgtar = verify_package(package)
 
 	if not pkgtar:
-		print("Error: " + package + " is empty or is not a valid package")
+		print("Error: %s is empty or is not a valid package" % package)
 		return 1
 
 	pkginfo = pacman.load(package)
@@ -167,11 +167,12 @@ def process_pkginfo(pkginfo, modules):
 
 def process_pkgbuild(package, modules):
 	"""Runs namcap checks over a PKGBUILD"""
-	# We might want to do some verifying in here... but really... isn't that what pacman.load is for?
+	# We might want to do some verifying in here... but really... isn't that
+	# what pacman.load is for?
 	pkginfo = pacman.load(package)
 
 	if pkginfo == None:
-		print("Error: " + package + " is not a valid PKGBUILD")
+		print("Error: %s is not a valid PKGBUILD" % package)
 		return 1
 
 	# apply global PKGBUILD rules
@@ -227,7 +228,7 @@ for i, k in optlist:
 			if j in modules:
 				active_modules[j] = modules[j]
 			else:
-				print("Error: Rule '" + j + "' does not exist")
+				print("Error: Rule '%s' does not exist" % j)
 				usage()
 
 	# Used to exclude some rules from the check
@@ -238,7 +239,7 @@ for i, k in optlist:
 			if j in modules:
 				active_modules.pop(j)
 			else:
-				print("Error: Rule '" + j + "' does not exist")
+				print("Error: Rule '%s' does not exist" % j)
 				usage()
 
 	if i in ('-i', '--info'):
@@ -266,7 +267,7 @@ if len(active_modules) == 0:
 # Go through each package, get the info, and apply the rules
 for package in packages:
 	if not os.access(package, os.R_OK):
-		print("Error: Problem reading " + package)
+		print("Error: Problem reading %s" % package)
 		usage()
 
 	if os.path.isfile(package) and tarfile.is_tarfile(package):
diff --git a/pacman.py b/pacman.py
index eecc6c5..9473f6e 100644
--- a/pacman.py
+++ b/pacman.py
@@ -18,6 +18,7 @@
 # 
 
 import tarfile, os, re, subprocess
+import sys
 from Namcap.package import PacmanPackage
 
 pacmandb = '/var/lib/pacman/local/'
@@ -52,11 +53,15 @@ def load(package, root=None):
 		if workingdir == '':
 			workingdir = None
 		filename = os.path.basename(package)
-		process = subprocess.Popen(['parsepkgbuild',filename],
+		process = subprocess.Popen(['parsepkgbuild', filename],
 				stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=workingdir)
 		data = process.communicate()
 		# this means parsepkgbuild returned an error, so we are not valid
 		if process.returncode > 0:
+			if data[0]:
+				print("Error:", data[0].decode("utf-8", "ignore"))
+			if data[1]:
+				print("Error:", data[1].decode("utf-8", "ignore"), file=sys.stdout)
 			return None
 		ret = PacmanPackage(db = data[0].decode('utf-8', 'ignore'))
 
-- 
1.7.4.1



More information about the arch-dev-public mailing list