Utility to add a cached index to an existing movie file.
diff --git a/Demo/sgi/video/Vaddcache.py b/Demo/sgi/video/Vaddcache.py
new file mode 100755
index 0000000..191d6ea
--- /dev/null
+++ b/Demo/sgi/video/Vaddcache.py
@@ -0,0 +1,79 @@
+#! /usr/local/python
+
+# Add a cache to each of the files given as command line arguments
+
+
+# Usage:
+#
+# Vaddcache [file] ...
+
+
+# Options:
+#
+# file ... : file(s) to inspect; 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]'