cpython/Demo/sgi/video/Vaddcache.py

80 lines
1.2 KiB
Python
Raw Normal View History

#! /ufs/guido/bin/sgi/python
# Add a cache to each of the files given as command line arguments
# Usage:
#
# Vaddcache [file] ...
# Options:
#
# file ... : file(s) to modify; default film.video
import sys
sys.path.append('/ufs/guido/src/video')
import VFile
import getopt
# Global options
# None
# Main program -- mostly command line parsing
def main():
opts, args = getopt.getopt(sys.argv[1:], '')
if not args:
args = ['film.video']
sts = 0
for filename in args:
if process(filename):
sts = 1
sys.exit(sts)
# Process one file
def process(filename):
try:
fp = open(filename, 'r+')
vin = VFile.RandomVinFile().initfp(fp, filename)
except IOError, msg:
sys.stderr.write(filename + ': I/O error: ' + `msg` + '\n')
return 1
except VFile.Error, msg:
sys.stderr.write(msg + '\n')
return 1
except EOFError:
sys.stderr.write(filename + ': EOF in video file\n')
return 1
try:
vin.readcache()
hascache = 1
except VFile.Error:
hascache = 0
if hascache:
sys.stderr.write(filename + ': already has a cache\n')
vin.close()
return 1
vin.printinfo()
vin.warmcache()
vin.writecache()
vin.close()
return 0
# Don't forget to call the main program
try:
main()
except KeyboardInterrupt:
print '[Interrupt]'