diff options
Diffstat (limited to 'Mac/Unsupported/unshar.py')
-rw-r--r-- | Mac/Unsupported/unshar.py | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/Mac/Unsupported/unshar.py b/Mac/Unsupported/unshar.py deleted file mode 100644 index ec14f2e..0000000 --- a/Mac/Unsupported/unshar.py +++ /dev/null @@ -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() |