#include <useful.h>
#include <parseargs.h>

VERSIONID("$Header: fp_args.c,v 2.0 89/12/24 00:56:21 eric Exp $");

/*
**  PARSEARGV argument type functions for floating point operands.
**
**	These are broken out to avoid loading the floating precision
**	conversion routines when they aren't actually needed.
**
**	Author:
**		Eric Allman
**		University of California, Berkeley
*/

/*ARGSUSED*/
BOOL
argDouble(ad, vp, copyf)
	register ARGDESC *ad;
	register char *vp;
	BOOL copyf;
{
	auto char *vpp;
	extern double strtod ARGS((char *, char **));

	*(double *) ad->ad_valp = strtod(vp, &vpp);
	if (*vpp != '\0')
	{
		usrerr("invalid floating point argument '%s' for %s",
			vp, ad->ad_prompt);
		return (FALSE);
	}
	else
	{
		return (TRUE);
	}
}

/*ARGSUSED*/
BOOL
argFloat(ad, vp, copyf)
	register ARGDESC *ad;
	register char *vp;
	BOOL copyf;
{
	auto char *vpp;
	extern double strtod ARGS((char *, char **));

	*(float *) ad->ad_valp = (float) strtod(vp, &vpp);
	if (*vpp != '\0')
	{
		usrerr("invalid floating point argument '%s' for %s",
			vp, ad->ad_prompt);
		return (FALSE);
	}
	else
	{
		return (TRUE);
	}
}
