On Mon, Jan 25, 2021 at 11:17:04AM +0100, Martijn van Duren wrote: > if (argc == 1) { > - double del = atof(argv[0]); > - if (del == 0) > + delay = strtodnum(argv[0], 0, UINT32_MAX / 1000000, &errstr); > + if (errstr != NULL) > viewstr = argv[0]; > - else > - delay = del;
You need the else. delay should only be changed if parsing was successful. > } else if (argc == 2) { > viewstr = argv[0]; > - delay = atof(argv[1]); > - if (delay <= 0) > - delay = 5; > + delay = strtodnum(optarg, 0, UINT32_MAX / 1000000, &errstr); This should be argv[1] instead of optarg. > + if (errstr != NULL) > + errx(1, "-s \"%s\": delay value is %s", optarg, errstr); > } The -s in the error message is wrong. Here delay was passed as argument. bluhm