mirror of
https://github.com/python/cpython.git
synced 2025-11-19 02:39:15 +00:00
Getting rid of support for MacOS9 and earlier. This is the first step,
and the biggest in size, but probably the easiest. Hunting through the source code comes next.
This commit is contained in:
parent
6045b9c935
commit
28ecf70db5
181 changed files with 0 additions and 22664 deletions
|
|
@ -1,97 +0,0 @@
|
|||
# Extract files from a SHAR archive.
|
||||
# Run this on the Mac.
|
||||
# Usage:
|
||||
# >>> import unshar
|
||||
# >>> f = open('SHAR')
|
||||
# >>> unshar.unshar(f)
|
||||
|
||||
import string
|
||||
import EasyDialogs
|
||||
|
||||
def unshar(fp, verbose=0, overwrite=0):
|
||||
ofp = None
|
||||
file = None
|
||||
while 1:
|
||||
line = fp.readline()
|
||||
if verbose > 3: print 'Got:', `line`
|
||||
if line[:1] == 'X':
|
||||
# Most common case first
|
||||
if ofp: ofp.write(line[1:])
|
||||
continue
|
||||
if not line:
|
||||
if verbose: print 'EOF'
|
||||
if ofp:
|
||||
print 'Unterminated file -- closing'
|
||||
ofp.close()
|
||||
ofp = None
|
||||
break
|
||||
if line[0] == '#':
|
||||
if verbose: print line,
|
||||
continue
|
||||
if line[:14] == 'sed "s/^X//" >':
|
||||
if verbose: print "!!!", `line`
|
||||
i = string.find(line, "'")
|
||||
j = string.find(line, "'", i+1)
|
||||
if i >= 0 and j > i:
|
||||
file = line[i+1:j]
|
||||
if '/' in file:
|
||||
words = string.splitfields(file, '/')
|
||||
for funny in '', '.':
|
||||
while funny in words: words.remove(funny)
|
||||
for i in range(len(words)):
|
||||
if words[i] == '..': words[i] = ''
|
||||
words.insert(0, '')
|
||||
file = string.joinfields(words, ':')
|
||||
try:
|
||||
ofp = open(file, 'r')
|
||||
ofp.close()
|
||||
ofp = None
|
||||
over = 1
|
||||
except IOError:
|
||||
over = 0
|
||||
if over and not overwrite:
|
||||
print 'Skipping', file, '(already exists) ...'
|
||||
continue
|
||||
ofp = open(file, 'w')
|
||||
if over:
|
||||
print 'Overwriting', file, '...'
|
||||
else:
|
||||
print 'Writing', file, '...'
|
||||
continue
|
||||
if line == 'END_OF_FILE\n':
|
||||
if not file:
|
||||
print 'Unexpected END_OF_FILE marker'
|
||||
if ofp:
|
||||
print 'done'
|
||||
ofp.close()
|
||||
ofp = None
|
||||
else:
|
||||
print 'done skipping'
|
||||
file = None
|
||||
continue
|
||||
if verbose: print "...", `line`
|
||||
|
||||
def main():
|
||||
import sys
|
||||
import os
|
||||
if len(sys.argv) > 1:
|
||||
for fname in sys.argv[1:]:
|
||||
fp = open(fname, 'r')
|
||||
dir, fn = os.path.split(fname)
|
||||
if dir:
|
||||
os.chdir(dir)
|
||||
unshar(fp)
|
||||
else:
|
||||
import macfs
|
||||
fname = EasyDialogs.AskFileForOpen()
|
||||
if not fname:
|
||||
sys.exit(0)
|
||||
fp = open(fname, 'r')
|
||||
dirname = EasyDialogs.AskFolder(message='Folder to save files in:')
|
||||
if not dirname:
|
||||
sys.exit(0)
|
||||
os.chdir(dirname)
|
||||
unshar(fp)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue