#!/bin/sh
# nopl - dekodowanie QP/Base64 i wycinanie polskich znakw
# (c) Sebastian Zagrodzki <s.zagrodzki@sokrates.mimuw.edu.pl>
# Strona domowa: http://sokrates.mimuw.edu.pl/~zagrodzki
#
# Ten program moe by wykorzystywany jedynie do celw niekomercyjnych.
# Uywanie go bez wiedzy i zgody autora w celach zarobkowych jest
# niedozwolone.
# Autor nie ponosi odpowiedzialnoci za adne skutki wynike z dziaania 
# programu, nie gwarantuje te poprawnoci jego dziaania.

[ -r /usr/share/sms/smsrc ] && . /usr/share/sms/smsrc
[ -r /etc/smsrc ] && . /etc/smsrc
[ -r $HOME/etc/smsrc ] && . $HOME/etc/smsrc
[ -r $HOME/.smsrc ] && . $HOME/.smsrc

[ -z "$MM" ] && [ -x /bin/mmencode -o -x /usr/bin/mmencode ] && MM="mmencode"
[ -z "$MM" -a -x /usr/bin/mmencode ] && MM="/usr/bin/mmencode"
[ -z "$MM" -a -x $HOME/bin/mmencode ] && MM="$HOME/bin/mmencode"
if [ -z "$MM" ]; then
	echo "Nie znalazem programu mmencode!"
	exit 127
fi

while
	read REPLY
do
	while
		echo "$REPLY" | grep -q '=?[^?]*?.?[^?]*?='
	do
		KOD="`echo \"$REPLY\" |\
			sed 's/.*=?\([^?]*\)?.?[^?]*?=.*/\1/' |\
			sed 's#/#\\\\/#'`"
		ENC="`echo \"$REPLY\" |\
			sed 's/.*=?[^?]*?\(.\)?[^?]*?=.*/\1/' |\
			sed 's#/#\\\\/#'`"
		STARE="`echo \"$REPLY\" |\
			sed 's/.*=?[^?]*?.?\([^?]*\)?=.*/\1/'`"
		case "$ENC" in
		q|Q)
			NOWE="`echo \"$STARE\" |\
				$MM -q -u | tr '_' ' '`"
			;;
		b|B)
			NOWE="`echo \"$STARE\" |\
				$MM -u`"
			;;
		esac
		NOWE="`echo \"$NOWE\" |\
			sed 's#/#\\\\/#g'`"
		STARE="`echo \"$STARE\" |\
			sed 's#/#\\\\/#g'`"
		REPLY="`echo \"$REPLY\" |\
			sed 's/=?'\"$KOD\"'?'\"$ENC\"'?'\"$STARE\"'?=/'\"$NOWE\"'/'`"
	done
	
	# nastpne dwie linijki powoduj zamian polskich znakw na
	# zwyke znaki ascii. Jeli Twj telefon "rozumie" polskie
	# krzaczki: moesz to wykomentowa.
	REPLY=`echo "$REPLY" |\
		tr '󶿼ʣӦ' 'acelnoszzACELNOSZZ'`
	echo "$REPLY"
done
