#!/bin/sh

# Par Julien MOREAU	( jmoreau@bigfoot.com )

nbps=1				# Nombre de paramètres souhaités
nom_cmde=`basename $0`		# Nom de la commande
usage="Usage: $nom_cmde <filename> [...]"		# Message d'aide
usage=$usage"\n\tEnleve l'entête d'e-mail(s) sauvé(s) en fichiers."
usage=$usage"\n\tCeci, quelque soit la taille de l'entête."
usage=$usage"\n\t( La 1ère ligne vide sert de séparateur. )"

if test `uname` != "HP-UX" ; then e="-e" ; fi

if [ $# -lt $nbps -o "$1" = "-h" ] ; then # Si le nb de param est incorrecte,
	echo $e $usage 1>&2 ; exit 2	# Affichage aide puis arrêt.
fi

tmp=~/$nom_cmde.tmp

for fic in $* ; do
	echo $e "$fic ... \c"

	if test ! -r $fic ; then # Si le 1er arg n'est pas un fichier lisible
		echo "illisible ou inexistant !" 1>&2
	elif head -1 $fic|grep -qv ^From ; then
		echo "n'est pas un email avec entête !" 1>&2
	else
		echo $e "mise en forme ... \c"
		etat=1 ; num_ligne=0
		while read ligne ; do
			num_ligne=`expr $num_ligne + 1`
			case $etat in
				1) if test -z "$ligne" ; then etat=2 ; fi ;;
				2) if test -n "$ligne" ; then
					ligne_deb=$num_ligne ; etat=3
				   fi ;;
				3) if test -z "$ligne" ; then
					ligne_fin=`expr $num_ligne - 1`
					etat=4
				   fi ;;
				4) if test -n "$ligne" ; then
					etat=3
				   fi ;;
				*) echo "Etat invalide ($etat) !" 1>&2 ;;
			esac
		done < $fic

		diff=`expr $ligne_fin - $ligne_deb`
		diff=`expr $diff + 1`
		head -n $ligne_fin $fic|tail -$diff > $tmp

			# Sécurité si le fichier est vide
		if test -s $tmp ; then mv $tmp $fic ; else rm -f $tmp ; fi
		echo "OK."
	fi
done

exit 0		# Sortie sans erreur