| #! /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]' |