home
/
code
/
khatus.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8345f2b
)
Support sub-second intervals
author
Siraaj Khandkar
<siraaj@khandkar.net>
Mon, 16 Mar 2020 23:07:16 +0000
(19:07 -0400)
committer
Siraaj Khandkar
<siraaj@khandkar.net>
Mon, 16 Mar 2020 23:07:16 +0000
(19:07 -0400)
x5/khatus.c
patch
|
blob
|
blame
|
history
diff --git
a/x5/khatus.c
b/x5/khatus.c
index
e0b71cd
..
b6f66f7
100644
(file)
--- a/
x5/khatus.c
+++ b/
x5/khatus.c
@@
-39,14
+39,14
@@
struct Fifo {
typedef struct Config Config;
struct Config {
typedef struct Config Config;
struct Config {
-
int
interval;
+
double
interval;
char * separator;
Fifo * fifos;
int fifo_count;
int total_width;
int output_to_x_root_window;
} defaults = {
char * separator;
Fifo * fifos;
int fifo_count;
int total_width;
int output_to_x_root_window;
} defaults = {
- .interval = 1,
+ .interval = 1
.0
,
.separator = "|",
.fifos = NULL,
.fifo_count = 0,
.separator = "|",
.fifos = NULL,
.fifo_count = 0,
@@
-91,7
+91,7
@@
config_print(Config *cfg)
info(
"Config "
"{"
info(
"Config "
"{"
- " interval = %
d
,"
+ " interval = %
f
,"
" separator = %s,"
" fifo_count = %d,"
" total_width = %d,"
" separator = %s,"
" fifo_count = %d,"
" total_width = %d,"
@@
-114,6
+114,22
@@
is_pos_num(char *s)
return 1;
}
return 1;
}
+int
+is_decimal(char *s)
+{
+ char c;
+ int seen = 0;
+
+ while ((c = *(s++)) != '\0')
+ if (!isdigit(c)) {
+ if (c == '.' && !seen++)
+ continue;
+ else
+ return 0;
+ }
+ return 1;
+}
+
void
print_usage()
{
void
print_usage()
{
@@
-157,9
+173,9
@@
parse_opts_opt_i(Config *cfg, int argc, char *argv[], int i)
if (i >= argc)
usage("Option -i parameter is missing.\n");
param = argv[i++];
if (i >= argc)
usage("Option -i parameter is missing.\n");
param = argv[i++];
- if (!is_
pos_num
(param))
+ if (!is_
decimal
(param))
usage("Option -i parameter is invalid: \"%s\"\n", param);
usage("Option -i parameter is invalid: \"%s\"\n", param);
- cfg->interval = ato
i
(param);
+ cfg->interval = ato
f
(param);
opts_parse_any(cfg, argc, argv, i);
}
opts_parse_any(cfg, argc, argv, i);
}
@@
-394,9
+410,7
@@
main(int argc, char *argv[])
debug("argv0 = %s\n", argv0);
config_print(cfg);
debug("argv0 = %s\n", argv0);
config_print(cfg);
- /* TODO: Support interval < 1. i.e. implement timespec_of_float */
- ti.tv_sec = cfg->interval;
- ti.tv_nsec = 0;
+ ti = timespec_of_float(cfg->interval);
if (cfg->fifos == NULL)
usage("No fifo specs were given!\n");
if (cfg->fifos == NULL)
usage("No fifo specs were given!\n");
This page took
0.02211 seconds
and
4
git commands to generate.