#!/bin/sh

# checklibrary - Se connecte au systme informatique de la bibliothque
#   municipale de Boulder et indique la date de retour de tous les
#   documents emprunts par l'utilisateur spcifi. Montre comment
#   travailler avec la mthode de formulaire post sous lynx.

lib1="http://nell.boulder.lib.co.us/patroninfo"
lib2="items"
libacctdb="$HOME/.library.account.info"
postdata="/tmp/$(basename $0).$$"
awkdata="/tmp/$(basename $0).awk.$$"

# Il nous faut: nom, numro de carte, numro d'enregistrement
#   tant donn le nom, on cherche les deux autres dans la base de
#   donnes de comptes de la bibliothque 

if [ $# -eq 0 ] ; then
  echo "Syntaxe: $(basename $0) \"dtenteur de carte\""; exit 0
fi

acctinfo="$(grep -i "$1" $libacctdb)"
name="$(echo $acctinfo | cut -d: -f1 | sed 's/ /+/g')"
cardno="$(echo $acctinfo | cut -d: -f2)"
recordno="$(echo $acctinfo | cut -d: -f3)"

if [ -z "$acctinfo" ] ; then
  echo "Problme: le compte $1 n'existe pas dans la base de donnes"
  echo "  de comptes de la bibliothque."
  exit 1
elif [ $(grep -i "$1" $libacctdb | wc -l) -gt 1 ] ; then
  echo "Problme: le compte $1 correspond  plusieurs enregistrements"
  echo "  dans la base de donnes de la bibliothque."
  exit 1
elif [ -z "$cardno" -o -z "$recordno" ] ; then
  echo "Problme: la carte ou les informations de l'enregistrement sont"
  echo "  corrompues dans la base de donnes." 
  exit 1
fi

trap "/bin/rm -f $postdata $awkdata" 0

cat << EOF > $postdata
name=${name}&code=${cardno}&submit=Display+record+for+person+named+above
EOF

cat << "EOF" > $awkdata
{ if ( NR % 3 == 1) { title=$0 } 
  if ( NR % 3 == 2) { print $0 "|" title }
}
EOF

lynx -source -post-data "$lib1/$recordno/$lib2" < $postdata | \
  grep -E '(^<td |name=\"renew)' | \
  sed 's/<[^>]*>//g'   | \
  awk -f $awkdata | sort

exit 0
