annotate Lib/uu.py @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 7c5f94f56f79
children 1148e7ebca35
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # uu.py
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # Copyright 1994 by Lance Ellinghouse
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Cathedral City, California Republic, United States of America.
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 # All Rights Reserved
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 # Permission to use, copy, modify, and distribute this software and its
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 # documentation for any purpose and without fee is hereby granted,
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # provided that the above copyright notice appear in all copies and that
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # both that copyright notice and this permission notice appear in
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 # supporting documentation, and that the name of Lance Ellinghouse
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 # not be used in advertising or publicity pertaining to distribution
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # of the software without specific, written prior permission.
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 # FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE CENTRUM BE LIABLE
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 # FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2915
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
19 #
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
20 # Modified by Jack Jansen, CWI, July 1995:
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
21 # - Use binascii module to do the actual line-by-line conversion
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
22 # between ascii and binary. This results in a 1000-fold speedup. The C
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
23 # version is still 5 times faster, though.
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
24 # - Arguments more compliant with python standard
2915
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
25 #
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 # This file implements the UUencode and UUdecode functions.
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
28 # encode(in_file, out_file [,name, mode])
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
29 # decode(in_file [, out_file, mode])
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
30
2915
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
31 import binascii
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
32 import os
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
33 import string
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
35 Error = 'uu.Error'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
36
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
37 def encode(in_file, out_file, name=None, mode=None):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
38 """Uuencode file"""
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
39 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
40 # If in_file is a pathname open it and change defaults
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
41 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
42 if in_file == '-':
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
43 in_file = sys.stdin
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
44 elif type(in_file) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
45 if name == None:
3143
7c5f94f56f79 Fixed two minor errors.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3032
diff changeset
46 name = os.path.basename(in_file)
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
47 if mode == None:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
48 try:
3143
7c5f94f56f79 Fixed two minor errors.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3032
diff changeset
49 mode = os.stat(in_file)[0]
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
50 except AttributeError:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
51 pass
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
52 in_file = open(in_file, 'rb')
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
53 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
54 # Open out_file if it is a pathname
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
55 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
56 if out_file == '-':
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
57 out_file = sys.stdout
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
58 elif type(out_file) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
59 out_file = open(out_file, 'w')
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
60 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
61 # Set defaults for name and mode
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
62 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
63 if name == None:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
64 name = '-'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
65 if mode == None:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
66 mode = 0666
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
67 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
68 # Write the data
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
69 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
70 out_file.write('begin %o %s\n' % ((mode&0777),name))
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 str = in_file.read(45)
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 while len(str) > 0:
2915
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
73 out_file.write(binascii.b2a_uu(str))
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 str = in_file.read(45)
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 out_file.write(' \nend\n')
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
76
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
77
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
78 def decode(in_file, out_file=None, mode=None):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
79 """Decode uuencoded file"""
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
80 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
81 # Open the input file, if needed.
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
82 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
83 if in_file == '-':
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
84 in_file = sys.stdin
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
85 elif type(in_file) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
86 in_file = open(in_file)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
87 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
88 # Read the header line, and fill in optional args if needed
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
89 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
90 hdr = in_file.readline()
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
91 if not hdr:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
92 raise Error, 'Empty input file'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
93 hdrfields = string.split(hdr)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
94 if len(hdrfields) <> 3 or hdrfields[0] <> 'begin':
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
95 raise Error, ('Incorrect uu header line', hdr)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
96 if out_file == None:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
97 out_file = hdrfields[2]
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
98 if mode == None:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
99 mode = string.atoi(hdrfields[1])
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
100 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
101 # Open the output file
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
102 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
103 if out_file == '-':
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
104 out_file = sys.stdout
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
105 elif type(out_file) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
106 fp = open(out_file, 'wb')
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 try:
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
108 os.path.chmod(out_file, mode)
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 except AttributeError:
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
110 pass
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
111 out_file = fp
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
112 #
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
113 # Main decoding loop
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
114 #
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 str = in_file.readline()
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
116 while str and str != 'end\n':
2915
4509dfe19b68 Use binascii module for inner loop
Jack Jansen <jack.jansen@cwi.nl>
parents: 1872
diff changeset
117 out_file.write(binascii.a2b_uu(str))
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 str = in_file.readline()
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
119 if not str:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
120 raise Error, 'Truncated input file'
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
121
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 def test():
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
123 """uuencode/uudecode main program"""
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 import sys
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
125 import getopt
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
126
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
127 dopt = 0
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
128 topt = 0
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
129 input = sys.stdin
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
130 output = sys.stdout
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
131 ok = 1
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
132 try:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
133 optlist, args = getopt.getopt(sys.argv[1:], 'dt')
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
134 except getopt.error:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
135 ok = 0
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
136 if not ok or len(args) > 2:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
137 print 'Usage:', sys.argv[0], '[-d] [-t] [input [output]]'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
138 print ' -d: Decode (in stead of encode)'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
139 print ' -t: data is text, encoded format unix-compatible text'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
140 sys.exit(1)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
141
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
142 for o, a in optlist:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
143 if o == '-d': dopt = 1
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
144 if o == '-t': topt = 1
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
145
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
146 if len(args) > 0:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
147 input = args[0]
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
148 if len(args) > 1:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
149 output = args[1]
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
150
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
151 if dopt:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
152 if topt:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
153 if type(output) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
154 output = open(output, 'w')
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
155 else:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
156 print sys.argv[0], ': cannot do -t to stdout'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
157 sys.exit(1)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
158 decode(input, output)
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 else:
3032
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
160 if topt:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
161 if type(input) == type(''):
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
162 input = open(input, 'r')
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
163 else:
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
164 print sys.argv[0], ': cannot do -t from stdin'
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
165 sys.exit(1)
3b3e68075833 Changed arguments and added a lot of functionality besides
Jack Jansen <jack.jansen@cwi.nl>
parents: 2915
diff changeset
166 encode(input, output)
1872
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
167
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 if __name__ == '__main__':
32e6c3a671d0 mhlib.py: delay opening of sequences file so we don't overwrite it when
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 test()