improved test/main program
diff --git a/Lib/quopri.py b/Lib/quopri.py
index 4c39228..55608d1 100755
--- a/Lib/quopri.py
+++ b/Lib/quopri.py
@@ -89,13 +89,45 @@
 
 def test():
 	import sys
-	if sys.argv[1:]:
-		if sys.argv[1] == '-t': # Quote tabs
-			encode(sys.stdin, sys.stdout, 1)
-		else:
-			decode(sys.stdin, sys.stdout)
-	else:
-		encode(sys.stdin, sys.stdout, 0)
+	import getopt
+	try:
+	    opts, args = getopt.getopt(sys.argv[1:], 'td')
+	except getopt.error, msg:
+	    sys.stdout = sys.stderr
+	    print msg
+	    print "usage: quopri [-t | -d] [file] ..."
+	    print "-t: quote tabs"
+	    print "-d: decode; default encode"
+	    sys.exit(2)
+	deco = 0
+	tabs = 0
+	for o, a in opts:
+	    if o == '-t': tabs = 1
+	    if o == '-d': deco = 1
+	if tabs and deco:
+	    sys.stdout = sys.stderr
+	    print "-t and -d are mutually exclusive"
+	    sys.exit(2)
+	if not args: args = ['-']
+	sts = 0
+	for file in args:
+	    if file == '-':
+		fp = sys.stdin
+	    else:
+		try:
+		    fp = open(file)
+		except IOError, msg:
+		    sys.stderr.write("%s: can't open (%s)\n" % (file, msg))
+		    sts = 1
+		    continue
+	    if deco:
+		decode(fp, sys.stdout)
+	    else:
+		encode(fp, sys.stdout, tabs)
+	    if fp is not sys.stdin:
+		fp.close()
+	if sts:
+	    sys.exit(sts)
 
 if __name__ == '__main__':
-	main()
+	test()