Browse Source

better handling of float cli arguments

master
tth 3 years ago
parent
commit
c3bc39750d
  1. 3
      floatimg.h
  2. 22
      funcs/t.c
  3. 13
      funcs/utils.c
  4. 9
      v4l2/grabvidseq.c

3
floatimg.h

@ -88,5 +88,8 @@ int fimg_save_as_png(FloatImg *src, char *outname, int flags); @@ -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

@ -8,20 +8,28 @@ @@ -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;
str = "12.34"; dval = 0.0;
foo = parse_double(str, &dval);
printf("%-10s -> %3d %g\n", str, foo, dval);
pnm_init(&argc, argv);
str = "12e4"; dval = 0.0;
foo = parse_double(str, &dval);
printf("%-10s -> %3d %g\n", str, foo, dval);
if (2 == argc) infile = argv[1];
str = "5s"; 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 = "PORN"; dval = 0.0;
foo = parse_double(str, &dval);
printf("%-10s -> %3d %g\n", str, foo, dval);
return 0;
}

13
funcs/utils.c

@ -29,3 +29,16 @@ if (2 != foo) { @@ -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;
}
/* --------------------------------------------------------------------- */

9
v4l2/grabvidseq.c

@ -122,7 +122,14 @@ while ((opt = getopt(argc, argv, "d:ghn:o:O:p:s:uv")) != -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…
Cancel
Save