#
#  Chet Ramey <chet.ramey@case.edu>
#
#  Copyright 1998 Chester Ramey
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2, or (at your option)
#   any later version.
#
#   TThis program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software Foundation,
#   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

isnum2()
{
	case "$1" in
	'[-+]' | '')	return 1;;	# empty or bare `-' or `+'
	[-+]*[!0-9]*)	return 1;;	# non-digit with leading sign
	[-+]*)		return 0;;	# OK
	*[!0-9]*)	return 1;;	# non-digit
	*)		return 0;;	# OK
	esac
}

# this one handles floating point
isnum3()
{
	case "$1" in
	'')		return 1;;	# empty
	*[!0-9.+-]*)	return 1;;	# non-digit, +, -, or .
	*?[-+]*)	return 1;;	# sign as second or later char
	*.*.*)		return 1;;	# multiple decimal points
	*)		return 0;;	# OK
	esac
}
