home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume17 / contest-prog / part03 / gr < prev    next >
Text File  |  1989-02-06  |  4KB  |  203 lines

  1. #! /bin/sh
  2. cd $HOME
  3. if test -f lock
  4. then
  5.    echo another judge has me busy, try again momentarily
  6.    exit
  7. fi
  8. failure=""
  9. touch lock
  10. cat $MAIL >>mal
  11. cp /dev/null $MAIL
  12. fn=`grep Judge:  mal |head -1`
  13. case $fn in
  14.    "")rm lock;exit;;
  15. esac
  16. fun=` echo $fn | sed 's/Judge/judge/'  `
  17. echo $fn
  18. echo $fun
  19. sed "s=$fn=$fun=" mal >/tmp/pqr$$
  20. cp /tmp/pqr$$ mal
  21. rm -f /tmp/pqr$$
  22.  
  23.  
  24. echo fn = $fn
  25. fl=`echo $fn|cut -f2 -d' '`
  26. echo fl = $fl
  27. seconds=`echo $fn|cut -f3 -d' '`
  28. echo seconds = $seconds
  29. endtime=`cat endtime`
  30. echo endtime = $endtime
  31.  
  32. da=`echo $fn|cut -f2 -d';'`
  33. echo da = $da
  34.  
  35. case $fl in
  36.    "")rm -f lock;exit;;
  37. esac
  38.  
  39. t=`echo $fl|cut -f3 -d'/'`
  40. echo t = $t
  41. case $t in
  42.    team0) t=judges;;
  43. esac
  44. echo t = $t
  45. p=`echo $fl|cut -f4 -d'/'`
  46. echo $seconds $endtime
  47. if expr $seconds '>' $endtime
  48. then
  49.    echo too late
  50.    echo $fn >/tmp/dumb$$
  51.    echo "submitted too late">>/tmp/dumb$$
  52.    mail $t < /tmp/dumb$$
  53.    rm /tmp/dumb$$
  54.    rm lock
  55.    exit
  56. else
  57.    echo not too late
  58. fi
  59.  
  60. src=`shorten $t.$p`
  61. echo src=$src
  62. echo p = $p
  63. if test -f $src.right
  64. then
  65.    echo They seem to have already completed that problem...
  66.    echo  Do you want to proceed?
  67.    read zork
  68.    case $zork in
  69.       y) ;;
  70.       *) rm -f lock;exit;;
  71.    esac
  72. fi
  73.  
  74.  
  75.  
  76. s=$fl
  77. echo s = $s
  78. ext=`basename $s`
  79. echo ext = $ext
  80. case $ext in
  81.    *.p)c=pc;dot=p;;
  82.    *.pas)c=pascal;dot=p;;
  83.    *.c)c=cc;dot=c;;
  84.    *.f)c=fortran;dot=f;;
  85.    *) echo invalid extension;rm -f lock;exit;;
  86. esac
  87.  
  88. if test -f $s 
  89. then
  90.    echo cp $s $src.$$.$dot
  91.    cp $s $src.$$.$dot
  92. else
  93.    echo $s not found
  94.    echo $s >/tmp/dumb$$
  95.    echo "was not found in your directory">>/tmp/dumb$$
  96.    mail $t </tmp/dumb$$ 
  97.    rm -f lock
  98.    echo bye
  99.    rm -f /tmp/dumb$$
  100.    exit
  101. fi
  102. #q=`echo $p|cut -f2 -db`
  103. #q=`echo $q|cut -f1 -d.`
  104. q=`digits $p`
  105. qq=`digits $t`
  106. case $q in
  107.    -)q=99;;
  108. esac
  109. case $qq in
  110.    -)qq=99;;
  111. esac
  112. echo $qq $q
  113. echo $src.$$.$dot
  114. echo the compiler is $c
  115. if $c -o subdir/${src}.$$.e $src.$$.$dot
  116. then
  117.    echo compiled ok ... about to run it
  118. else
  119.    echo compilation failed
  120.    failure=1
  121. fi
  122. case $failure in
  123.    "")
  124.    echo about to run $src.$$.e
  125.    cp prob$q.in subdir/prob$q.in$$
  126.    echo cp prob$q.in subdir/prob$q.in$$
  127.    #cd subdir
  128.    if test -f prob$q.in
  129.    then
  130.       echo "chexec8 <subdir/prob$q.in$$ >out subdir/$src.$$.e"
  131.       rm -f out
  132.       chexec8 <subdir/prob$q.in$$ >out subdir/$src.$$.e
  133.       chmod og-rwx out
  134.       
  135.    else
  136.       echo prob$q.in$$ not found in gr ... you dummy!
  137.       exit
  138.    fi
  139.    #cd ..
  140.    echo through running
  141.    diff  out  prob$q.ans
  142.    rm -f subdir/*
  143.    if compare out prob$q.ans
  144.    then
  145.       echo "1" $qq $q $seconds>>scoreboard
  146.       echo yes their output is correct
  147.       mv out keep/$src.$$.m
  148.       rm lock
  149.       echo \
  150.       "CONGRATS! $t successfully did prob$q at `date`">\
  151.       $src.right
  152.       mail $t < $src.right
  153.       echo "submitted: $seconds">$src.at
  154.       echo "$t completed problem $q at `date`">$src.msg
  155.       list=""
  156.       for i in `cat listofteams` ; 
  157.       do
  158.          case $i in
  159.             $t) ;;
  160.             *) list="$list $i"
  161.             ;;
  162.          esac
  163.       done
  164.       mail $list < $src.msg
  165.       exit
  166.    else
  167.       echo "0" $qq $q $seconds >>scoreboard
  168.       echo not correct
  169.       mv  out keep/$src.$$.m
  170.       rm lock
  171.       echo  "do you wish to mail them an explanatory note? "
  172.       read zork
  173.       case $zork in
  174.          y) 
  175.          echo "mail $t"
  176.          mail -s "$p" $t
  177.          ;;
  178.          *) echo "your $p not correct">failure$$
  179.          mail -s "$p" $t<failure$$
  180.          rm -f failure$$
  181.          ;;
  182.       esac
  183.    fi
  184.    ;;
  185.    1)
  186.    echo "0" $qq $q $seconds >>scoreboard
  187.    echo not correct
  188.    mv out keep/$src.$$.m
  189.    rm lock
  190.    echo  "do you wish to mail them an explanatory note? "
  191.    read zork
  192.    case $zork in
  193.       y) 
  194.       echo "mail $t"
  195.       mail -s "$p" $t
  196.       ;;
  197.       *) echo "your $p not correct">failure$$
  198.       mail -s "$p" $t<failure$$
  199.       rm -f failure$$
  200.       ;;
  201.    esac
  202. esac
  203.