SMOLNET PORTAL home about changes
ireding from stdin with scanf, may still need to debug ring buffers - 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 3b39b0db61c4795ea3c0af49b0c2151585e502b6	/scm/ploot/commit/3b39b0db61c4795ea3c0af49b0c2151585e502b6.gph	bitreich.org	70
1parent c529b0f871ecc44395506be3e5eb928caa4b63e0	/scm/ploot/commit/c529b0f871ecc44395506be3e5eb928caa4b63e0.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Sat,  3 Feb 2018 03:13:14 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ireding from stdin with scanf, may still need to debug ring buffers	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       6 +++++-	Err	bitreich.org	70
i  M ploot.c                             |      53 ++++++++++++++++++++++---------	Err	bitreich.org	70
i  A ploot.core                          |       0 	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 43 insertions(+), 16 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/ploot/file/Makefile.gph	bitreich.org	70
i@@ -1,7 +1,11 @@	Err	bitreich.org	70
i CFLAGS        = -Wall -Wextra -Werror -std=c89 -pedantic	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-all: ploot.o config.h	Err	bitreich.org	70
i+all:ploot	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+ploot: ploot.o config.h	Err	bitreich.org	70
i         ${CC} -static -o ploot ploot.o	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i         rm -f *.o ploot	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.PHONY: all clean	Err	bitreich.org	70
1diff --git a/ploot.c b/ploot.c	/scm/ploot/file/ploot.c.gph	bitreich.org	70
i@@ -10,8 +10,9 @@	Err	bitreich.org	70
i #define MAX_VAL        80	Err	bitreich.org	70
i #define MARGIN        7	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#define ABS(x)        ((x) < 0 ? -(x) : (x))	Err	bitreich.org	70
i-#define LEN(x)        (sizeof(x) / sizeof(*x))	Err	bitreich.org	70
i+#define ABS(x)                ((x) < 0 ? -(x) : (x))	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@@ -132,6 +133,29 @@ plot(int height, double *beg, double *end, char *str)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i+ * Add `val' at the current position `pos' of the `ring' buffer and return the	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+{	Err	bitreich.org	70
i+        *ring = 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+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Copy the ring buffer `rbuf' content with current position `pos' into the	Err	bitreich.org	70
i+ * buffer `buf'.  Both buffer of length `len'.	Err	bitreich.org	70
i+ */	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+        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+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i  * Read a simple format with one double per line and save the last `MAX_WIDTH'	Err	bitreich.org	70
i  * values into `buf' which must be at least MAX_VAL wide and return a pointer	Err	bitreich.org	70
i  * to the last element or NULL if the input contains error.	Err	bitreich.org	70
i@@ -139,12 +163,16 @@ plot(int height, double *beg, double *end, char *str)	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 read input continuously */	Err	bitreich.org	70
i-        double        val_rbuf[MAX_VAL];	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-        (void)val_rbuf;	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+        ring_copy(buf, rbuf, len, pos);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        return buf;	Err	bitreich.org	70
i+        return buf + MIN(p, len);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i@@ -156,7 +184,7 @@ 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 buffers to read input continuously */	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@@ -177,13 +205,7 @@ usage(void)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i main(int argc, char **argv)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        double        val[] = { 55, 55, 1, 72, 53, 73, 6, 45, 7, 71, 18, 100, 78, 56,	Err	bitreich.org	70
i-            53, 24, 99, 99, 37, 91, 67, 68, 9, 16, 83, 30, 68, 51, 38, 47, 91,	Err	bitreich.org	70
i-            35, 73, 36, 52, 99, 19, 91, 89, 7, 40, 88, 75, 50, 92, 91, 23, 54,	Err	bitreich.org	70
i-            90, 98, 91, 94, 10, 39, 55, 71, 44, 77, 48, 74, 66, 53, 81, 85, 44,	Err	bitreich.org	70
i-            71, 84, 93, 8, 50, 77, 16, 57, 68, 52, 82, 36, 7, 13, 10, 7, 95, 64,	Err	bitreich.org	70
i-            71, 61, 12, 29, 63, 85, 72, 98, 59, 96, 91, 67, 24, 48, 4, 90, 1,	Err	bitreich.org	70
i-            15, 57, 11, 93, 18, 18, 78, 85, 36, 35, 15, 7, 85, 31, 73, 57, 70 };	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@@ -193,6 +215,7 @@ main(int argc, char **argv)	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i         } ARGEND;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        plot(flag_h, val, val + LEN(val), "Sample data generated with jot");	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         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/ploot.core b/ploot.core	/scm/ploot/file/ploot.core.gph	bitreich.org	70
iBinary files differ.	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ploot/commit/3b39b0db61c4795e...
Content-Typetext/plain; charset=utf-8