#!/bin/sh
# This is an example script that you can use to resent
# failed messages. The script inserts a counter in the message
# file that is used to ensure that the number of retries
# is limited.
# The script does not need any command line arguments.

smsd_user="smsd"

owner=""
if [ -f /etc/passwd ]; then
  if grep $smsd_user: /etc/passwd >/dev/null; then
    owner=$smsd_user
  fi
fi

failed=/var/spool/sms/failed
outgoing=/var/spool/sms/outgoing
max=5

used=0
notused=0
cd $failed

for file in *; do
  if [ "$file" = "*" ]; then
    echo "No failed files found"
    exit 0
  fi
  retry=`formail -zx Retry: < $file`
  if [ "$retry" ]; then
    retry=`expr $retry + 1`
  else
    retry=1
  fi
  if [ $retry -gt $max ]; then
    notused=`expr $notused + 1`
  else
    used=`expr $used + 1`
    mv $file $file.old
    formail -f -I "Retry: $retry" < $file.old > $file

    if [ "x$owner" != x ]; then
      chown $owner $file
    fi

    mv $file $outgoing
    rm $file.old
  fi
done

echo "$used messages moved again into outgoing spool directory"
echo "$notused messages ignored because of to many retries"

exit 0
