#!/bin/rc IMAGE_DIR=$home/lib/squeak_image SQUEAK=squeak SQUEAK_FTP=ftp.squeak.org MOUNT_PT=/n/squeak_ftp fn fetch_image { # Open FTP connection ftpfs -q -m $MOUNT_PT -a anonymous $SQUEAK_FTP # Freshen files in directory ls $MOUNT_PT/current_stable > /dev/null echo Fetching files... # Copy image file img_file=`{ls $MOUNT_PT/current_stable | grep 'Squeak[0-9]+\.[0-9]+'} cp $img_file $IMAGE_DIR # Copy sources file src_file=`{ls $MOUNT_PT/current_stable | grep 'SqueakV[0-9]+\.sources\.zip'} cp $src_file $IMAGE_DIR # Unzip files echo Unpacking files... cd $IMAGE_DIR for(f in *.zip) { unzip -f $f rm $f } cd .. # Close FTP connection unmount $MOUNT_PT } mkdir -p $IMAGE_DIR # Check whether the image file already exists or not _img=`{ls $IMAGE_DIR | grep 'Squeak[0-9]+\.[0-9]+.*\.image'} if(~ $#_img 0) { fetch_image _img=`{ls $IMAGE_DIR | grep 'Squeak[0-9]+\.[0-9]+.*\.image'} if(~ $#_img 0) { echo Error fetching image exit 'failure' } } # Run Squeak. Note that the current interpreter prepends the current working # directory to whatever pathame we give it. This "helpful" behavior means that # we must give it a relative pathname and must run it from our home directory. _relative=`{echo $_img | sed 's@'^$home^'/@@'} @{ cd $home ; $SQUEAK $_relative }