iusing getopt all the same - ploot - simple plotting tools Err bitreich.org 70
hgit clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot URL:git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot bitreich.org 70
1Log /scm/ploot/log.gph bitreich.org 70
1Files /scm/ploot/files.gph bitreich.org 70
1Refs /scm/ploot/refs.gph bitreich.org 70
1Tags /scm/ploot/tag bitreich.org 70
1README /scm/ploot/file/README.md.gph bitreich.org 70
1LICENSE /scm/ploot/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 453cb7f82c06a904e3b5aae5ee57d9a1fd91f460 /scm/ploot/commit/453cb7f82c06a904e3b5aae5ee57d9a1fd91f460.gph bitreich.org 70
1parent ebff9e927a35af076a55e62732001c860c883244 /scm/ploot/commit/ebff9e927a35af076a55e62732001c860c883244.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sun, 4 Feb 2018 23:31:58 +0100 Err bitreich.org 70
i Err bitreich.org 70
iusing getopt all the same Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i D arg.h | 25 ------------------------- Err bitreich.org 70
i M ploot.c | 58 ++++++++++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 37 insertions(+), 46 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/arg.h b/arg.h /scm/ploot/file/arg.h.gph bitreich.org 70
i@@ -1,25 +0,0 @@ Err bitreich.org 70
i-#define USED(x) ((void)(x)) Err bitreich.org 70
i- Err bitreich.org 70
i-extern char *argv0; Err bitreich.org 70
i- Err bitreich.org 70
i-#define ARGBEGIN(argc, argv) \ Err bitreich.org 70
i- for (argv0 = *argv, argv++, argc--; \ Err bitreich.org 70
i- argv[0] != NULL && argv[0][0] == '-' && argv[0][1] != '\0'; \ Err bitreich.org 70
i- argc--, argv++) { \ Err bitreich.org 70
i- char **arg_v, *arg_s; \ Err bitreich.org 70
i- if (argv[0][1] == '-' && argv[0][2] == '\0') { \ Err bitreich.org 70
i- argv++, argc--; \ Err bitreich.org 70
i- break; \ Err bitreich.org 70
i- } \ Err bitreich.org 70
i- arg_v = argv; \ Err bitreich.org 70
i- for (arg_s = *argv; *arg_s != '\0'; arg_s++) { \ Err bitreich.org 70
i- if (arg_v != argv) \ Err bitreich.org 70
i- break; \ Err bitreich.org 70
i- switch (*arg_s) Err bitreich.org 70
i- Err bitreich.org 70
i-#define ARGEND \ Err bitreich.org 70
i- } \ Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i-#define EARGF(x) \ Err bitreich.org 70
i- ((argv[1] == NULL) ? ((x), NULL) : (argc--, argv++, argv[0])) Err bitreich.org 70
1diff --git a/ploot.c b/ploot.c /scm/ploot/file/ploot.c.gph bitreich.org 70
i@@ -3,8 +3,8 @@ Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i+#include <unistd.h> Err bitreich.org 70
i Err bitreich.org 70
i-#include "arg.h" Err bitreich.org 70
i #include "config.h" Err bitreich.org 70
i Err bitreich.org 70
i #define MAX_VAL 80 Err bitreich.org 70
i@@ -14,9 +14,6 @@ Err bitreich.org 70
i #define MIN(x, y) ((x) < (y) ? (x) : (y)) Err bitreich.org 70
i #define LEN(x) (sizeof(x) / sizeof(*x)) Err bitreich.org 70
i Err bitreich.org 70
i-char *argv0; Err bitreich.org 70
i-int flag_h = 20; Err bitreich.org 70
i- Err bitreich.org 70
i /* Err bitreich.org 70
i * Set `str' to a human-readable form of `num' with always a width of 7 (+ 1 Err bitreich.org 70
i * the '\0' terminator). Buffer overflow is ensured not to happen due to the Err bitreich.org 70
i@@ -63,7 +60,7 @@ title(char *str, int width) Err bitreich.org 70
i { Err bitreich.org 70
i if (str == NULL) Err bitreich.org 70
i return; Err bitreich.org 70
i- printf("%*s\n\n", (int)(width + strlen(str) + MARGIN) / 2, str); Err bitreich.org 70
i+ printf("%*s\n", (int)(width + strlen(str) + MARGIN) / 2, str); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i@@ -119,7 +116,8 @@ plot(int height, double *beg, double *end, char *str) Err bitreich.org 70
i double top, bot, max; Err bitreich.org 70
i int h; Err bitreich.org 70
i Err bitreich.org 70
i- title(str, end - beg); Err bitreich.org 70
i+ if (str != NULL) Err bitreich.org 70
i+ title(str, end - beg); Err bitreich.org 70
i Err bitreich.org 70
i max = maxdv(beg, end); Err bitreich.org 70
i for (h = height + height % 2; h > 0; h -= 2) { Err bitreich.org 70
i@@ -137,9 +135,9 @@ plot(int height, double *beg, double *end, char *str) Err bitreich.org 70
i * next postion. Err bitreich.org 70
i */ Err bitreich.org 70
i size_t Err bitreich.org 70
i-ring_add(double *ring, size_t len, size_t pos, double val) Err bitreich.org 70
i+ring_add(double *rbuf, size_t len, size_t pos, double val) Err bitreich.org 70
i { Err bitreich.org 70
i- *ring = val; Err bitreich.org 70
i+ *rbuf = val; Err bitreich.org 70
i Err bitreich.org 70
i return (pos < len) ? pos + 1 : 0; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -151,8 +149,13 @@ ring_add(double *ring, size_t len, size_t pos, double val) Err bitreich.org 70
i void Err bitreich.org 70
i ring_copy(double *buf, double *rbuf, size_t len, size_t pos) Err bitreich.org 70
i { Err bitreich.org 70
i+ size_t i = 0; Err bitreich.org 70
i+ Err bitreich.org 70
i memcpy(buf, rbuf + pos, (len - pos) * sizeof(*rbuf)); Err bitreich.org 70
i memcpy(buf + (len - pos), rbuf, pos * sizeof(*rbuf)); Err bitreich.org 70
i+ printf("len: %zd, pos: %zd\n", len, pos); Err bitreich.org 70
i+ for (i = 0; i < len; i++) Err bitreich.org 70
i+ printf("%03zd: %lf\n", i, buf[i]); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i@@ -163,16 +166,18 @@ ring_copy(double *buf, double *rbuf, size_t len, size_t pos) Err bitreich.org 70
i double * Err bitreich.org 70
i read_simple(double buf[MAX_VAL]) Err bitreich.org 70
i { Err bitreich.org 70
i- /* ring buffer to keep the last `MAX_VAL' values */ Err bitreich.org 70
i double rbuf[MAX_VAL], val; Err bitreich.org 70
i size_t p, pos, len; Err bitreich.org 70
i Err bitreich.org 70
i len = LEN(rbuf); Err bitreich.org 70
i for (p = pos = 0; scanf("%lf\n", &val) > 0; p++) Err bitreich.org 70
i- pos = ring_add(rbuf, val, len, pos); Err bitreich.org 70
i+ pos = ring_add(rbuf, len, pos, val); Err bitreich.org 70
i+ len = MIN(len, p); Err bitreich.org 70
i+ pos = MIN(pos, p); Err bitreich.org 70
i+ Err bitreich.org 70
i ring_copy(buf, rbuf, len, pos); Err bitreich.org 70
i Err bitreich.org 70
i- return buf + MIN(p, len); Err bitreich.org 70
i+ return buf + len; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i@@ -184,7 +189,6 @@ read_simple(double buf[MAX_VAL]) Err bitreich.org 70
i double * Err bitreich.org 70
i read_time_series(double *valv, time_t *timev) Err bitreich.org 70
i { Err bitreich.org 70
i- /* ring buffer to keep the last `MAX_VAL' values */ Err bitreich.org 70
i time_t time_rbuf[MAX_VAL]; Err bitreich.org 70
i double val_rbuf[MAX_VAL]; Err bitreich.org 70
i Err bitreich.org 70
i@@ -198,7 +202,7 @@ read_time_series(double *valv, time_t *timev) Err bitreich.org 70
i void Err bitreich.org 70
i usage(void) Err bitreich.org 70
i { Err bitreich.org 70
i- printf("usage: %s [-h height]\n", argv0); Err bitreich.org 70
i+ printf("usage: ploot [-h height]\n"); Err bitreich.org 70
i exit(1); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -206,16 +210,28 @@ int Err bitreich.org 70
i main(int argc, char **argv) Err bitreich.org 70
i { Err bitreich.org 70
i double val[MAX_VAL], *end; Err bitreich.org 70
i- Err bitreich.org 70
i- ARGBEGIN(argc, argv) { Err bitreich.org 70
i- case 'h': Err bitreich.org 70
i- flag_h = atoi(EARGF(usage())); Err bitreich.org 70
i- if (flag_h <= 0) Err bitreich.org 70
i+ char c; Err bitreich.org 70
i+ Err bitreich.org 70
i+ int flag_h = 20; Err bitreich.org 70
i+ char *flag_t = NULL; Err bitreich.org 70
i+ Err bitreich.org 70
i+ while ((c = getopt(argc, argv, "h:t:")) != -1) { Err bitreich.org 70
i+ switch (c) { Err bitreich.org 70
i+ case -1: Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case 'h': Err bitreich.org 70
i+ if ((flag_h = atoi(optarg)) <= 0) Err bitreich.org 70
i+ usage(); Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case 't': Err bitreich.org 70
i+ flag_t = optarg; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ default: Err bitreich.org 70
i usage(); Err bitreich.org 70
i- break; Err bitreich.org 70
i- } ARGEND; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ } Err bitreich.org 70
i Err bitreich.org 70
i end = read_simple(val); Err bitreich.org 70
i- plot(flag_h, val, end, "Sample data generated with jot"); Err bitreich.org 70
i+ plot(flag_h, val, end, flag_t); Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
.
Response:
text/plain