mikew@wyse.wyse.com (Mike Wexler) (09/13/88)
Submitted-by: dana@thumper.bellcore.com (Dana A. Chee) Posting-number: Volume 1, Issue 35 Archive-name: xmille/part18 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 15 (of 15)." # Contents: cards/accident_both control/scrollbar.c # Wrapped by mikew@wyse on Wed Sep 7 18:59:34 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f cards/accident_both -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cards/accident_both\" else echo shar: Extracting \"cards/accident_both\" \(12292 characters\) sed "s/^X//" >cards/accident_both <<'END_OF_cards/accident_both' X#define accident_both_width 100 X#define accident_both_height 150 Xstatic char accident_both_bits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xcf, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xd7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbb, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xee, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xf5, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf9, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xc7, 0xfb, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xbb, X 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, X 0x7d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0x55, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0x7d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0x6d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0x7d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xc7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xef, 0xff, 0xff, 0xdf, 0x3f, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xef, 0xff, 0xff, 0xdf, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, X 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0xfc, X 0xff, 0xff, 0xff, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, X 0xf3, 0xff, 0xff, 0x3f, 0xe7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xed, 0xef, 0x01, 0x00, 0xde, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xad, 0xeb, 0xff, 0xff, 0x5f, 0xd7, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x75, 0xdd, 0x01, 0x00, 0xee, 0xba, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xf5, 0xde, 0xff, 0xff, 0xef, 0xbd, 0xfe, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x75, 0xdd, 0xff, 0xff, 0xef, 0xba, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0xeb, 0x07, 0x80, 0x5f, 0xd7, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xef, 0xfb, 0x7f, 0xdf, 0xdf, X 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xf3, 0xfd, 0xff, 0x3e, X 0xe7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0xfc, 0xff, 0xff, X 0xff, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, X 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfe, 0xff, 0x03, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xab, 0xaa, 0x7e, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xdb, 0xdd, 0x7e, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xab, 0xaa, 0x7e, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xfb, 0xff, 0x7e, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0x03, 0x00, X 0xfe, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x75, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xae, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xae, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x75, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; END_OF_cards/accident_both if test 12292 -ne `wc -c <cards/accident_both`; then echo shar: \"cards/accident_both\" unpacked with wrong size! fi # end of overwriting check fi if test -f control/scrollbar.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"control/scrollbar.c\" else echo shar: Extracting \"control/scrollbar.c\" \(17369 characters\) sed "s/^X//" >control/scrollbar.c <<'END_OF_control/scrollbar.c' X/* X * scrollbar.c X */ X#if 0 X# include <X11/Xlib.h> X# include <X11/Xutil.h> X# include "control.h" X Xstruct scrollbar { X Scrollbar scrollbar; X int forecolor, backcolor; X int orientation; X int borderwidth; X Pixmap border; X Pixmap background; X}; X Xstruct perwindow { X int length; X Window parent; X int locatorpos; X int locatormille; X int locatormax; X int locatormaxmille; X int state; X struct scrollbar *class; X int (*notify)(); X int (*onetrip)(); X}; X X/* X * possible values of ->state X */ X X# define GENERAL 0 X# define DRAGGING_LOCATOR 1 X# define DOWN 2 X# define DOWN_IN_DOWN_BOX 3 X# define DOWN_IN_UP_BOX 4 X Xstatic XContext perwindowContext; X Xstatic XContext assocContext; Xstatic int nextScrollbar; Xextern Display *dpy; X X# define minpos(p) (0) X# define maxpos(p) ((p)->length - 2 * ARROWWIDTH) X# define milletopos(m,p) ((m) * maxpos(p) / 1000) X# define postomille(l,p) ((l) * 1000 / maxpos (p)) X# define postoloc(l) ((l) + ARROWWIDTH) X# define loctopos(l) ((l) - ARROWWIDTH) X X# define ARROWHEIGHT SCROLLWIDTH X# define ARROWWIDTH SCROLLWIDTH X# define LOCATORWIDTH SCROLLWIDTH / 3 X Xstatic short arrowDownOff[50] = { X 0xffff, 0x01ff, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0xff80, 0x0003, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x0080, 0x0002, X 0x00f8, 0x003e, X 0x0010, 0x0010, X 0x0020, 0x0008, X 0x0040, 0x0004, X 0x0080, 0x0002, X 0x0100, 0x0001, X 0x8200, 0x0000, X 0x4400, 0x0000, X 0x2800, 0x0000, X 0x1000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X}; X Xstatic short arrowDownOn[50] = { X 0xffff, 0x01ff, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xff80, 0x0003, X 0xfff8, 0x003f, X 0xfff0, 0x001f, X 0xffe0, 0x000f, X 0xffc0, 0x0007, X 0xff80, 0x0003, X 0xff00, 0x0001, X 0xfe00, 0x0000, X 0x7c00, 0x0000, X 0x3800, 0x0000, X 0x1000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X 0x0000, 0x0000, X}; X Xstatic short arrowUpOff [50], arrowRightOff [50], arrowLeftOff [50]; Xstatic short arrowUpOn [50], arrowRightOn [50], arrowLeftOn [50]; X Xstatic Cursor dragCursor; Xstatic short dragBits[16]; X Xstatic int arrowsSet; X XScrollbar XCcreateScrollbar (orientation, forecolor, backcolor, X borderwidth, border, background) Xint orientation; Xint forecolor, backcolor; Xint borderwidth; XPixmap border; XPixmap background; X{ X char *malloc (); X struct scrollbar *s; X X if (!assocContext) X assocContext = XUniqueContext(); X if (!arrowsSet) { X setArrows(); X arrowsSet = 1; X } X s = (struct scrollbar *) malloc (sizeof (struct scrollbar)); X nextScrollbar++; X s->scrollbar = nextScrollbar; X XSaveContext (dpy, assocContext, nextScrollbar, (char *) s); X s->forecolor = forecolor; X s->backcolor = backcolor; X s->orientation = orientation; X s->borderwidth = borderwidth; X s->border = border; X s->background = background; X return s->scrollbar; X} X XWindow XCmapScrollbar (parent, scrollbar, notify, onetrip) XWindow parent; XScrollbar scrollbar; Xint (*notify)(), (*onetrip)(); X{ X struct scrollbar *s; X struct perwindow *p; X Window w; X int x, y, width, height; X Window grandParent; X Window *siblings; X int nsiblings; X X if( XFindContext (dpy, assocContext, scrollbar, &s) ) X { X printf ("scroll bar %d doesn't exist\n", scrollbar); X return 0; X } X if( !XQueryTree (parent, &grandParent, &nsiblings, &siblings)) { X printf ("can't get tree\n"); X return 0; X } X if (siblings) X free (siblings); X if (!computePosition (parent, s, &x, &y, &width, &height)) X return 0; X w = XCreateWindow (grandParent, x, y, width, height, s->borderwidth, X s->border, s->background); X XMapWindow (w); X if (!perwindowContext) X perwindowContext = XUniqueContext(); X p = (struct perwindow *) malloc (sizeof (struct perwindow)); X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X p->length = width; X break; X case SCROLL_RIGHT: X case SCROLL_LEFT: X p->length = height; X break; X } X p->state = GENERAL; X p->parent = parent; X p->class = s; X p->locatorpos = -1; X p->notify = notify; X p->onetrip = onetrip; X XSaveContext (dpy, perwindowContext, w, p); X drawArrows (w, s, p); X return w; X} X XCunmapScrollbar (w) XWindow w; X{ X struct perwindow *p; X X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X XDeleteContext (dpy, perwindowContext, w); X free (p); X XDestroyWindow (w); X return 1; X} X XCresizeScrollbar (w) XWindow w; X{ X struct perwindow *p; X struct scrollbar *s; X int x, y, width, height; X X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X s = p->class; X if (!computePosition (p->parent, s, &x, &y, &width, &height)) X return 0; X XConfigureWindow (w, x, y, width, height); X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X p->length = width; X break; X case SCROLL_RIGHT: X case SCROLL_LEFT: X p->length = height; X break; X } X if (p->locatorpos >= 0) X p->locatorpos = milletopos (p->locatormille, p); X if (p->locatormax >= 0) X p->locatormax = milletopos (p->locatormaxmille, p); X return 1; X} X XWindow XCgetScrollbarParent (w) XScrollbar w; X{ X struct perwindow *p; X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X return p->parent; X} X XCredrawScrollbar (w) XWindow w; X{ X struct scrollbar *s; X struct perwindow *p; X X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X s = p->class; X drawArrows (w, s, p); X moveLocator (w, s, p, p->locatorpos, p->locatormax); X return 1; X} X XCsetScrollbarLocator (w, permillemin, permillemax) XWindow w; Xint permillemin, permillemax; X{ X struct perwindow *p; X struct scrollbar *s; X X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X s = p->class; X if (permillemin < 0) X permillemin = 0; X if (permillemax > 1000) X permillemax = 1000; X moveLocator (w, s, p, X milletopos (permillemin, p), X milletopos (permillemax, p)); X return 1; X} X X# define NOWHERE 0 X# define IN_UP_BOX 1 X# define IN_DOWN_BOX 2 X# define IN_UP_AREA 3 X# define IN_DOWN_AREA 4 X# define IN_LOCATOR 5 X X/* X * used for dragging the locator around X */ X Xstatic int downmouse; /* mouse position at down click */ Xstatic int downloc; /* locator position at down click */ X XCmanageScrollbar (rep) XXEvent *rep; X{ X struct perwindow *p; X struct scrollbar *s; X int inwindow; X int region; X XButtonEvent *bevent; X XMouseMovedEvent *mevent; X int permille; X Window w; X X w = rep->window; X if( XFindContext (dpy, perwindowContext, w, &p) ) X return 0; X s = p->class; X switch (rep->type) { X case ExposeWindow: X CredrawScrollbar (w); X break; X case ButtonPressed: X switch (p->state) { X case GENERAL: X bevent = (XButtonEvent *) rep; X region = findRegion (s, p, bevent->x, bevent->y); X switch (region) { X case IN_LOCATOR: X p->state = DRAGGING_LOCATOR; X downloc = p->locatorpos; X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X downmouse = bevent->x; X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X downmouse = bevent->y; X break; X } X break; X case IN_UP_BOX: X p->state = DOWN_IN_UP_BOX; X highlightBox (w, s, p, p->state); X spinbutton (w, s, p, IN_UP_BOX); X break; X case IN_DOWN_BOX: X p->state = DOWN_IN_DOWN_BOX; X highlightBox (w, s, p, p->state); X spinbutton (w, s, p, IN_DOWN_BOX); X break; X case IN_DOWN_AREA: X case IN_UP_AREA: X p->state = DOWN; X switch (region) { X case IN_DOWN_AREA: X p->notify (p->parent, SCROLL_DOWN_AREA); X break; X case IN_UP_AREA: X p->notify (p->parent, SCROLL_UP_AREA); X break; X } X } X } X break; X case ButtonReleased: X switch (p->state) { X case DRAGGING_LOCATOR: X p->state = GENERAL; X break; X case DOWN_IN_DOWN_BOX: X case DOWN_IN_UP_BOX: X unhighlightBox (w, s, p, p->state); X case DOWN: X p->state = GENERAL; X break; X } X case MouseMoved: X switch (p->state) { X case DRAGGING_LOCATOR: X p->notify (p->parent, updateLocator (w, s, p)); X p->onetrip (p->parent); X break; X } X break; X } X} X Xstatic Xspinbutton (w, s, p, region) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; Xint region; X{ X int r; X X r = region; X for (;;) { X switch (p->state) { X case DOWN_IN_UP_BOX: X case DOWN_IN_DOWN_BOX: X if (r != region) { X unhighlightBox (w, s, p, p->state); X p->state = GENERAL; X return; X } X switch (region) { X case IN_UP_BOX: X p->notify (p->parent, SCROLL_UP_BUTTON); X p->onetrip (p->parent); X break; X case IN_DOWN_BOX: X p->notify (p->parent, SCROLL_DOWN_BUTTON); X p->onetrip (p->parent); X break; X } X break; X default: X return; X } X r = checkMouseRegion (w, s, p); X } X} X Xstatic XfindRegion (s, p, x, y) Xstruct scrollbar *s; Xstruct perwindow *p; Xint x,y; X{ X int loc; X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X if (y < 0 || SCROLLWIDTH <= y) X return NOWHERE; X loc = x; X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X if (x < 0 || SCROLLWIDTH <= x) X return NOWHERE; X loc = y; X break; X } X if (loc < 0 || loc >= p->length) X return NOWHERE; X if (loc <= ARROWWIDTH) X return IN_UP_BOX; X if (loc >= p->length - ARROWWIDTH) X return IN_DOWN_BOX; X if (loc < postoloc (p->locatorpos)) X return IN_UP_AREA; X if (loc > postoloc (p->locatormax)) X return IN_DOWN_AREA; X return IN_LOCATOR; X} X Xstatic XupdateLocator (w, s, p) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; X{ X int pos, loc; X int subw, x, y; X int len; X X XUpdateMouse (w, &x, &y, &subw); X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X loc = x; X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X loc = y; X break; X } X pos = loctopos (postoloc (downloc) + loc - downmouse); X if (pos < minpos(p)) X pos = minpos(p); X if (pos > maxpos(p)) X pos = maxpos (p); X return postomille (pos, p); X} X Xstatic XcheckMouseRegion (w, s, p) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; X{ X int x, y, subw, state; X int region; X X XQueryMouseButtons (w, &x, &y, &subw, &state); X X /* X * Note that if we are playing back a recording then the button X * state will not be as it was during the recording (pressed), X * so we short circuit it. X */ X X region = findRegion (s, p, x, y); X if (region == IN_UP_BOX && p->state == DOWN_IN_UP_BOX) X return IN_UP_BOX; X if (region == IN_DOWN_BOX && p->state == DOWN_IN_DOWN_BOX) X return IN_DOWN_BOX; X return NOWHERE; X} X Xstatic XcomputePosition (parent, s, xp, yp, wp, hp) XWindow parent; Xstruct scrollbar *s; Xint *xp, *yp, *wp, *hp; X{ X WindowInfo parentInfo; X X /* make sure the server has the most recent parent info */ X XSync (0); X if (!XQueryWindow (parent, &parentInfo)) { X printf ("can't get window info for %d\n", parent); X return 0; X } X switch (s->orientation) { X case SCROLL_TOP: X *xp = 0; X *yp = -SCROLLWIDTH - parentInfo.bdrwidth; X *wp = parentInfo.width; X *hp = SCROLLWIDTH; X break; X case SCROLL_BOTTOM: X *xp = 0; X *yp = parentInfo.height + parentInfo.bdrwidth; X *wp = parentInfo.width; X *hp = SCROLLWIDTH; X break; X case SCROLL_LEFT: X *xp = -SCROLLWIDTH - parentInfo.bdrwidth; X *yp = 0; X *wp = SCROLLWIDTH; X *hp = parentInfo.height; X break; X case SCROLL_RIGHT: X *xp = parentInfo.width + parentInfo.bdrwidth; X *yp = 0; X *wp = SCROLLWIDTH; X *hp = parentInfo.height; X break; X } X *xp += parentInfo.x; X *yp += parentInfo.y; X return 1; X} X Xstatic XdrawArrows (w, s, p) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; X{ X int x, y; X short *up, *down; X X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X up = arrowLeftOff; X down = arrowRightOff; X x = p->length - ARROWWIDTH; X y = 0; X switch (p->state) { X case DOWN_IN_DOWN_BOX: X down = arrowRightOn; X break; X case DOWN_IN_UP_BOX: X up = arrowLeftOn; X break; X } X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X up = arrowUpOff; X down = arrowDownOff; X x = 0; X y = p->length - ARROWWIDTH; X switch (p->state) { X case DOWN_IN_DOWN_BOX: X down = arrowDownOn; X break; X case DOWN_IN_UP_BOX: X up = arrowUpOn; X break; X } X break; X } X XBitmapBitsPut (w, 0, 0, X ARROWWIDTH, ARROWHEIGHT, X up, s->forecolor, s->backcolor, X 0, GXcopy, AllPlanes); X XBitmapBitsPut (w, x, y, X ARROWWIDTH, ARROWHEIGHT, X down, s->forecolor, s->backcolor, X 0, GXcopy, AllPlanes); X} X Xstatic XhighlightBox (w, s, p, state) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; Xint state; X{ X drawoneArrow (w, s, p, state, 1); X} X Xstatic XunhighlightBox (w, s, p, state) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; Xint state; X{ X drawoneArrow (w, s, p, state, 0); X} X Xstatic XdrawoneArrow (w, s, p, state, on) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; Xint state; Xint on; X{ X int x, y; X short *bitsup, *bitsdown, *bits; X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X x = p->length - ARROWWIDTH; X y = 0; X if (on) { X bitsup = arrowLeftOn; X bitsdown = arrowRightOn; X } else { X bitsup = arrowLeftOff; X bitsdown = arrowRightOff; X } X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X x = 0; X y = p->length - ARROWWIDTH; X if (on) { X bitsup = arrowUpOn; X bitsdown = arrowDownOn; X } else { X bitsup = arrowUpOff; X bitsdown = arrowDownOff; X } X break; X } X switch (state) { X case DOWN_IN_UP_BOX: X x = 0; X y = 0; X bits = bitsup; X break; X case DOWN_IN_DOWN_BOX: X bits = bitsdown; X break; X default: X return; X } X XBitmapBitsPut (w, x, y, ARROWWIDTH, ARROWHEIGHT, X bits, s->forecolor, s->backcolor, X 0, GXcopy, AllPlanes); X} X Xstatic XmoveLocator (w, s, p, pos, max) XWindow w; Xstruct scrollbar *s; Xstruct perwindow *p; Xint pos, max; X{ X int x, y, lw, lh; X int x0, y0, w0, h0; X int x1, y1, w1, h1; X int oldpos, oldmax, oldlen; X X if (max > maxpos (p)) X max = maxpos (p); X if (max < 0) X max = 0; X if (pos > maxpos (p)) X pos = maxpos (p); X if (pos < 0) X pos = 0; X oldpos = p->locatorpos; X oldmax = p->locatormax; X oldlen = oldmax - oldpos; X w0 = h0 = w1 = h1 = 0; X switch (s->orientation) { X case SCROLL_TOP: X case SCROLL_BOTTOM: X x = postoloc (pos); X y = SCROLLWIDTH / 2 - LOCATORWIDTH / 2; X y0 = y; X y1 = y; X lh = LOCATORWIDTH; X lw = max - pos; X h0 = lh; X h1 = lh; X if (pos < 0) { X /* X * erase the whole thing X */ X x0 = postoloc (oldpos); X w0 = oldlen; X } else if (p->locatorpos < 0) { X ; X } else { X if (pos > oldpos) { X /* X * erase before portion X */ X x0 = postoloc (oldpos); X w0 = pos - oldpos; X } X if (max < oldmax) { X /* X * erase after portion X */ X x1 = postoloc (max); X w1 = oldmax - max; X } X } X break; X case SCROLL_LEFT: X case SCROLL_RIGHT: X x = SCROLLWIDTH / 2 - LOCATORWIDTH / 2; X y = postoloc (pos); X x0 = x; X x1 = x; X lw = LOCATORWIDTH; X lh = max - pos; X w0 = lw; X w1 = lw; X if (pos < 0) { X /* X * erase the whole thing X */ X y0 = postoloc (oldpos); X h0 = oldlen; X } else if (p->locatorpos < 0) { X ; X } else { X if (pos > oldpos) { X /* X * erase before portion X */ X y0 = postoloc (oldpos); X h0 = pos - oldpos; X } X if (max < oldmax) { X /* X * erase after portion X */ X y1 = postoloc (max); X h1 = oldmax - max; X } X } X break; X } X if (pos >= 0) { X Vertex v[5]; X X v[0].x = x; v[0].y = y; v[0].flags = 0; X v[1].x = lw-1; v[1].y = 0; v[1].flags = VertexRelative; X v[2].x = 0; v[2].y = lh-1; v[2].flags = VertexRelative; X v[3].x = 1-lw; v[3].y = 0; v[3].flags = VertexRelative; X v[4].x = 0; v[4].y = 1-lh; v[4].flags = VertexRelative; X XDraw (w, v, 5, 1, 1, s->forecolor, GXcopy, AllPlanes); X XPixSet (w, x+1, y+1, lw-2, lh-2, s->backcolor); X } X if (oldpos >= 0) { X if (w0 != 0 && h0 != 0) X XTileSet (w, x0, y0, w0, h0, s->background); X if (w1 != 0 && h1 != 0) X XTileSet (w, x1, y1, w1, h1, s->background); X } X p->locatorpos = pos; X p->locatormax = max; X p->locatormille = postomille (p->locatorpos, p); X p->locatormaxmille = postomille (p->locatormax, p); X} X X# define getbit(array, bit, word) ((word < 0 || word >= 50) ? 0 : ((array[word] >> bit) & 01)) X Xstatic XsetArrows () X{ X int i; X int word, bit; X unsigned short tempLeftOn[2], tempRightOn[2]; X unsigned short tempLeftOff[2], tempRightOff[2]; X int on, off; X Bitmap dragmap; X int k; X X for (i = 0; i < ARROWHEIGHT; i++) X for (k = 0; k < 2; k++) { X arrowUpOff[i*2+k] = arrowDownOff[(ARROWHEIGHT-1-i)*2 + k]; X arrowUpOn[i*2+k] = arrowDownOn[(ARROWHEIGHT-1-i)*2 + k]; X } X for (i = 0; i < ARROWHEIGHT; i++) { X for (k = 0; k < 2; k++) { X tempLeftOn[k] = tempLeftOff[k] = 0; X tempRightOn[k] = tempRightOff[k] = 0; X } X for (k = 0; k < 2; k++) { X for (bit = 0; bit < 16; bit++) { X off = getbit (arrowDownOff, X i % 16, ((15-bit) + (1-k) * 16) * 2 + i/16); X on = getbit (arrowDownOn, X i % 16, ((15-bit) + (1-k) * 16) * 2 + i/16); X if (off) X tempRightOff[1-k] |= (1 << (15 - bit)); X if (on) X tempRightOn[1-k] |= (1 << (15 - bit)); X off = getbit (arrowUpOff, X i % 16, ((15-bit) + (1-k) * 16) * 2 + i/16); X on = getbit (arrowUpOn, X i % 16, ((15-bit) + (1-k) * 16) * 2 + i/16); X if (off) X tempLeftOff[1-k] |= (1 << (15 - bit)); X if (on) X tempLeftOn[1-k] |= (1 << (15 - bit)); X } X } X arrowLeftOn[i*2] = tempLeftOn[0]; X arrowLeftOn[i*2+1] = tempLeftOn[1]; X arrowLeftOff[i*2] = tempLeftOff[0]; X arrowLeftOff[i*2+1] = tempLeftOff[1]; X arrowRightOn[i*2] = tempRightOn[0]; X arrowRightOn[i*2+1] = tempRightOn[1]; X arrowRightOff[i*2] = tempRightOff[0]; X arrowRightOff[i*2+1] = tempRightOff[1]; X } X dragmap = XStoreBitmap (16, 16, dragBits); X dragCursor = XStoreCursor (dragmap, dragmap, 8, 8, 1, 0, GXnoop); X} X#endif END_OF_control/scrollbar.c if test 17369 -ne `wc -c <control/scrollbar.c`; then echo shar: \"control/scrollbar.c\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 15 \(of 15\). cp /dev/null ark15isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 15 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330