better handling of float cli arguments
This commit is contained in:
parent
b85b66caed
commit
c3bc39750d
|
@ -88,5 +88,8 @@ int fimg_save_as_png(FloatImg *src, char *outname, int flags);
|
|||
int fimg_draw_something(FloatImg *fimg);
|
||||
|
||||
int parse_WxH(char *str, int *pw, int *ph);
|
||||
int parse_double(char *str, double *dptr);
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
22
funcs/t.c
22
funcs/t.c
|
@ -8,20 +8,28 @@
|
|||
|
||||
#include "../floatimg.h"
|
||||
|
||||
int fimg_pnm_infos(char *);
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo;
|
||||
char *infile = "foo.pnm";
|
||||
double dval;
|
||||
char *str;
|
||||
|
||||
pnm_init(&argc, argv);
|
||||
str = "12.34"; dval = 0.0;
|
||||
foo = parse_double(str, &dval);
|
||||
printf("%-10s -> %3d %g\n", str, foo, dval);
|
||||
|
||||
if (2 == argc) infile = argv[1];
|
||||
str = "12e4"; dval = 0.0;
|
||||
foo = parse_double(str, &dval);
|
||||
printf("%-10s -> %3d %g\n", str, foo, dval);
|
||||
|
||||
foo = fimg_pnm_infos(infile);
|
||||
fprintf(stderr, "got %d\n", foo);
|
||||
str = "5s"; dval = 0.0;
|
||||
foo = parse_double(str, &dval);
|
||||
printf("%-10s -> %3d %g\n", str, foo, dval);
|
||||
|
||||
str = "PORN"; dval = 0.0;
|
||||
foo = parse_double(str, &dval);
|
||||
printf("%-10s -> %3d %g\n", str, foo, dval);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -29,3 +29,16 @@ if (2 != foo) {
|
|||
return 2;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
int parse_double(char *str, double *dptr)
|
||||
{
|
||||
double value;
|
||||
int foo;
|
||||
|
||||
foo = sscanf(str, "%lf", &value);
|
||||
if (1 == foo) {
|
||||
*dptr = value;
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
|
|
@ -122,7 +122,14 @@ while ((opt = getopt(argc, argv, "d:ghn:o:O:p:s:uv")) != -1) {
|
|||
case 'n': nbre_capt = atoi(optarg); break;
|
||||
case 'O': dest_dir = optarg; break;
|
||||
case 'o': outfile = optarg; break;
|
||||
case 'p': period = 1e6*atof(optarg); break;
|
||||
case 'p': foo = parse_double(optarg, &period);
|
||||
if (foo<0) {
|
||||
fprintf(stderr,
|
||||
"error parsing -p arg '%s'\n",
|
||||
optarg);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case 's': parse_WxH(optarg, &width, &height);
|
||||
break;
|
||||
case 'u': upscaling = 1; break;
|
||||
|
|
Loading…
Reference in New Issue