#!/bin/sh LOG_FILE="log.txt" TMP_DIR="/tmp" TIMEOUT=10 echo "Content-type: text/html" echo echo echo "Hello" myname=`basename $0` LOCK_NAME="lock.${myname}" SELECTION=`echo ${QUERY_STRING} | sed 's/%3A/:/g' | cut -d= -f2` SELECTION_FILE="data/${SELECTION}.txt" USER=`echo "${REMOTE_USER}" | cut -d@ -f1` # Make sure we've got a selection, or redirect back if [ "${SELECTION}" == "" ] ; then goto RedirectBack exit fi if [ ! `ls ${SELECTION_FILE}` ] ; then goto RedirectBack; exit fi # Clear out stale lock files stalefile=`find ${TMP_DIR} -name ${LOCK_NAME} -cmin +10 -print` if [ "${stalefile}" != "" ]; then stalepid=`cat ${TMP_DIR}/${LOCK_NAME}` if kill -9 ${stalepid} then rm -f ${TMP_DIR}/${LOCK_NAME} fi fi # Obtain mutex trap "if [ grep -w $$ ${TMP_DIR}/${LOCK_NAME} ]; then \ rm -f ${TMP_DIR}/${LOCK_NAME} \ fi" 0 until (umask 222; echo $$ >${TMP_DIR}/$LOCK_NAME) 2>/dev/null # test & set do # Wait so we don't burn to much CPU sleep 2 # Clear out the lock file, if it became stale stalefile=`find ${TMP_DIR} -name ${LOCK_NAME} -cmin +${TIMEOUT} -print` if [ "${stalefile}" != "" ]; then rm -f ${TMP_DIR}/${LOCK_NAME} fi done # Unregister user for file in `ls data/*.txt` do file=`echo ${file} | cut -d/ -f2` grep -wvh ${USER} data/${file} > /tmp/${file}.$$ rm -f data/${file} mv /tmp/${file}.$$ data/${file} done echo "${USER} ${SELECTION}" >> ${LOG_FILE} RedirectBack: echo ${USER} >> ${SELECTION_FILE} echo "" echo " " echo " " echo " 15-123 Spring 2007 Final Exam Signups" echo " " echo " " echo " Redirecting you to Operation complete, redirecting you to see results" echo " " echo " " # rm -f ${TMP_DIR}/${LOCK_NAME}