#!/bin/sh SRC_DIR=nachos-4.0 MY_SRC=$SRC_DIR PACKAGE=${SRC_DIR}.tar.Z GROUPNAME=my_group LAB=4 check_first() { if [ -e tmp ] then echo 'tmp' exits, refusing to overwrite exit 1 fi if [ -f $PACKAGE ] then echo Found $PACKAGE else echo Could not find $PACKAGE exit 1 fi } make_patch() { if [ "$1" != "" ] then PATCHFILE=$1 else PATCHFILE=${GROUPNAME}.${LAB}.patch fi mkdir tmp echo UNPACKING SROUCE: $PACKAGE; sleep 1 tar xzf $PACKAGE -C tmp mv tmp/$SRC_DIR tmp/${SRC_DIR}.orig cd tmp ln -s ../$MY_SRC $SRC_DIR echo MAKING PATCH: $PATCHFILE diff -Nur ${SRC_DIR}.orig $SRC_DIR > ../$PATCHFILE rm $SRC_DIR rm -rf ${SRC_DIR}.orig cd .. rmdir tmp } apply_patch() { if [ "$2" != "" ] then NEWDIR=$2 else NEWDIR=${GROUPNAME}.${LAB} fi if [ -e $NEWDIR ] then echo refusing to overwrite \'$NEWDIR\' exit 1 fi if [ "$1" != "" ] then PATCHFILE=$1 else PATCHFILE=${GROUPNAME}.${LAB}.patch fi if [ -f $PATCHFILE ] then echo Found patch \'$PATCHFILE\' else echo Could not find \'$PATCHFILE\' fi mkdir tmp echo UNPACKING SROUCE: $PACKAGE; sleep 1 tar xzf $PACKAGE -C tmp cd tmp echo applying \'$PATCHFILE\' patch -p0 <../$PATCHFILE mv $SRC_DIR ../$NEWDIR cd .. rmdir tmp } case "$1" in 'make') check_first make_patch $2;; 'apply') check_first apply_patch $2 $3;; *) echo USAGE:" "$0 make '[]' echo " "$0 apply '[]' echo " "$0 apply '[ ]' esac