#!/bin/sh

#check arguments (we allow one optional argument of one natural number
#(positive intiger), with no leading zeros, commas, or decimal point)
case "$#" in
	0)
		sleep=1
	;;
	1)
		sleep=`expr x"$1" : x'\([1-9][0-9]*\)$'`
		[ x"$sleep" != x ] || {
			1>&2 echo "$0: usage: $0 [seconds]"
			exit 1
		}
	;;
	*)
		1>&2 echo "$0: usage: $0 [seconds]"
		exit 1
	;;
esac

#how do we output just a single control-G?

#how do we do backslash escape sequences?
echo_e=
x=`echo '\056'`
if [ X. != X"$x" ]; then
	x=`2>>/dev/null echo -e '\056'`
	if [ X. = X"$x" ]; then
		echo_e=-e
	else
		1>&2 echo "$0: don't know how to do backslash escape sequences with echo"
		exit 1
	fi
fi

#how do we do supression of newline
echo_c=
echo_n=
echo $echo_e '' | read x || {
	1>&2 echo "$0: echo $echo_e '' | read x fails!"
	exit 1
}
echo $echo_e '\c' | read x
if [ $? -ne 0 ]; then
	echo_c='\c'
else
	2>>/dev/null echo $echo_e -n '' | read x
	if [ $? -ne 0 ]; then
		echo_n=-n
	else
		1>&2 echo "$0: don't know how to do supress newline with echo"
		exit 1
	fi
fi

#how do we generate ^G?
for echo_a in '\a' '\007' '' ''
do
	x=`echo $echo_e $echo_n "$echo_a$echo_c"`
	[ X"$x" = X'' ] && break
done
[ X"$echo_a" != X ] || {
	1>&2 echo "$0: don't know how to generate control-G (bell) with echo"
	exit 1
}

#and now that we've gotten all that out of the way:

#ring the bell, repeatedly
while :
do
	echo $echo_e $echo_n "$echo_a$echo_c"
	sleep "$sleep"
done
