add floating point support

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7022 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1999-09-24 12:59:53 +00:00
parent 316b354de3
commit 5486efe053
2 changed files with 25 additions and 3 deletions

View File

@@ -70,9 +70,11 @@ print_arg (char *string, size_t len, int mdoc, int longp, struct getargs *arg)
if (arg->arg_help)
s = arg->arg_help;
else if (arg->type == arg_integer)
s = "number";
s = "integer";
else if (arg->type == arg_string)
s = "string";
else if (arg->type == arg_double)
s = "float";
else
s = "<undefined>";
@@ -383,6 +385,14 @@ arg_match_long(struct getargs *args, size_t num_args,
}
return ARG_ERR_BAD_ARG;
}
case arg_double:
{
double tmp;
if(sscanf(optarg + 1, "%lf", &tmp) != 1)
return ARG_ERR_BAD_ARG;
*(double*)current->value = tmp;
return 0;
}
default:
abort ();
}
@@ -443,6 +453,12 @@ getarg(struct getargs *args, size_t num_args,
}else if(args[k].type == arg_strings){
add_string((getarg_strings*)args[k].value, optarg);
goto out;
} else if(args[k].type == arg_double){
double tmp;
if(sscanf(optarg, "%lf", &tmp) != 1)
return ARG_ERR_BAD_ARG;
*(double*)args[k].value = tmp;
goto out;
}
return ARG_ERR_BAD_ARG;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1999 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -46,7 +46,13 @@
struct getargs{
const char *long_name;
char short_name;
enum { arg_integer, arg_string, arg_flag, arg_negative_flag, arg_strings } type;
enum { arg_integer,
arg_string,
arg_flag,
arg_negative_flag,
arg_strings,
arg_double
} type;
void *value;
const char *help;
const char *arg_help;