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 fimg_draw_something(FloatImg *fimg);
|
||||||
|
|
||||||
int parse_WxH(char *str, int *pw, int *ph);
|
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"
|
#include "../floatimg.h"
|
||||||
|
|
||||||
int fimg_pnm_infos(char *);
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo;
|
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);
|
str = "5s"; dval = 0.0;
|
||||||
fprintf(stderr, "got %d\n", foo);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -29,3 +29,16 @@ if (2 != foo) {
|
|||||||
return 2;
|
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 'n': nbre_capt = atoi(optarg); break;
|
||||||
case 'O': dest_dir = optarg; break;
|
case 'O': dest_dir = optarg; break;
|
||||||
case 'o': outfile = 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);
|
case 's': parse_WxH(optarg, &width, &height);
|
||||||
break;
|
break;
|
||||||
case 'u': upscaling = 1; break;
|
case 'u': upscaling = 1; break;
|
||||||
|
Loading…
Reference in New Issue
Block a user