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()