#!/bin/sh

# e-submit
# burton rosenberg
#
# first release:
# Fri Feb  4 13:05:05 EST 2005
# Sat Feb  5 10:33:16 EST 2005
# Sat Feb  5 15:49:38 EST 2005
#

# $0 [-Mu username] directory_or_file
#    username must fit pattern user_name_p
#    directory must fit patterh dir_name_p, essentially _no blanks!_
#    if username is absent, whoami is used to determine username
#    if -M, mailing suppressed
#    if directory is a directory, tar and uuencode. if file, just send.

# these depend on course number

subject_line="csc322 submit"
mail_destination="csc322@mail.cs.miami.edu"
user_name_p='[a-z]\{4\}322'

# these are less likely to change

progname=`echo $0 | sed s@.*/@@`
usage_message="usage: $progname [-[M][u username]] directory_or_file"
dir_name_p='[^-_\.,0-9a-zA-Z]'
info_message_3="Submitted. You should get an auto-reponse with subject: "

if [ $# == 0 ] ;
then 
   echo $usage_message
   exit 0 ;
fi

if [[ $1 == -* ]] ;
then
   if ( echo $1 | grep [^-uM] > /dev/null ) ;
   then 
      echo $usage_message
      exit 0 ;
   fi
fi

if [[ $1 == -*u* ]] ;
then 
   user_name=$2 
   dir_name=$3 ;
else
   user_name=`whoami`
   if [[ $1 == -* ]] ;
   then
      dir_name=$2 ;
   else
      dir_name=$1 ;
   fi
fi 

if ( echo $user_name | grep -v $user_name_p > /dev/null ) ;
then
   echo error: username \"$user_name\" doesn\'t look right. Use -u option.
   exit 0 ;
fi

if [ ! -e $dir_name ] ;
then
   echo error: file $dir_name does not exist
   exit 0 ;
fi

if  ( echo $dir_name | grep $dir_name_p > /dev/null ) ;
then
   echo error: illegal characters in directory name \"$dir_name\"
   exit 0 ;
fi

subject_line="$subject_line $user_name:$dir_name" 

if [ -d $dir_name ] ;
then
   if [[ $1 == -*M* ]] ;
   then
      tar cz $dir_name | uuencode ${user_name}.tar > $dir_name.tar.uu ;
   else
      tar cz $dir_name | uuencode ${user_name}.tar | mail -s "$subject_line" $mail_destination 
   echo $info_message_3 "Re: $subject_line" ;
   fi
fi

if [ -f $dir_name ] ;
then
   cat $dir_name | mail -s "$subject_line" $mail_destination  
   echo $info_message_3 "Re: $subject_line" ;
fi 

# end of script
