SMOLNET PORTAL home about changes
imake plotting work without scales - 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 329e7cc8a47b33e9e4efb0f8bdcfb396e89bbb21	/scm/ploot/commit/329e7cc8a47b33e9e4efb0f8bdcfb396e89bbb21.gph	bitreich.org	70
1parent 6d206dec470107adc7708b518bff521d8974f8a7	/scm/ploot/commit/6d206dec470107adc7708b518bff521d8974f8a7.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Mon,  7 May 2018 02:06:55 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
imake plotting work without scales	Err	bitreich.org	70
i	Err	bitreich.org	70
iPlotting works with some essential features missing and not much	Err	bitreich.org	70
itesting.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M ffdraw.c                            |       1 +	Err	bitreich.org	70
i  M ploot.c                             |       2 --	Err	bitreich.org	70
i  M ploot.h                             |       3 ---	Err	bitreich.org	70
i  M plootxt.c                           |      63 +++++++++++++++----------------	Err	bitreich.org	70
i  M test.csv                            |     143 ++++++++++++++++++++++++-------	Err	bitreich.org	70
i  M util.h                              |       4 ++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i6 files changed, 149 insertions(+), 67 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/ffdraw.c b/ffdraw.c	/scm/ploot/file/ffdraw.c.gph	bitreich.org	70
i@@ -13,6 +13,7 @@	Err	bitreich.org	70
i #include <stdlib.h>	Err	bitreich.org	70
i #include <stdio.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+#include "util.h"	Err	bitreich.org	70
i #include "ploot.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
1diff --git a/ploot.c b/ploot.c	/scm/ploot/file/ploot.c.gph	bitreich.org	70
i@@ -11,8 +11,6 @@	Err	bitreich.org	70
i #include "util.h"	Err	bitreich.org	70
i #include "config.h"        /* after ploot.h for type definitions */	Err	bitreich.org	70
i 	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 char *tflag = "";	Err	bitreich.org	70
i char *uflag = "";	Err	bitreich.org	70
1diff --git a/ploot.h b/ploot.h	/scm/ploot/file/ploot.h.gph	bitreich.org	70
i@@ -1,9 +1,6 @@	Err	bitreich.org	70
i #include <time.h>	Err	bitreich.org	70
i #include <stdint.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#define MIN(x, y) ((x) < (y) ? (x) : (y))	Err	bitreich.org	70
i-#define MAX(x, y) ((x) > (y) ? (x) : (y))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i typedef uint16_t Color[4];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i typedef struct {	Err	bitreich.org	70
1diff --git a/plootxt.c b/plootxt.c	/scm/ploot/file/plootxt.c.gph	bitreich.org	70
i@@ -15,6 +15,7 @@	Err	bitreich.org	70
i #define BRAILLE_START        10240	Err	bitreich.org	70
i 	Err	bitreich.org	70
i int wflag = 80;	Err	bitreich.org	70
i+int width;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char *argv0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -35,12 +36,13 @@ plot_dot(long *out, int row, int col)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-plot_val(long *out, double val, double max, int row, int width)	Err	bitreich.org	70
i+plot_val(long *out, double val, double max, int row)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int col;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        col = (int)((double)(val * width * 2) / max);	Err	bitreich.org	70
i-        for (; col > 0; out++, col--)	Err	bitreich.org	70
i+        val = MIN(max, val);	Err	bitreich.org	70
i+        col = (int)(val * (double)(width - 1) / max * 2);	Err	bitreich.org	70
i+        for (; col > 0; col--)	Err	bitreich.org	70
i                 plot_dot(out + col / 2, row, col % 2);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -49,7 +51,7 @@ plot_val(long *out, double val, double max, int row, int width)	Err	bitreich.org	70
i  * values line.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i static time_t	Err	bitreich.org	70
i-plot_row(long *out, char *line, double *max, int nrow, int ncol, int width)	Err	bitreich.org	70
i+plot_row(long *out, char *line, double *max, int nrow, int ncol)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         time_t epoch;	Err	bitreich.org	70
i         double val;	Err	bitreich.org	70
i@@ -64,7 +66,7 @@ plot_row(long *out, char *line, double *max, int nrow, int ncol, int width)	Err	bitreich.org	70
i                 if (n >= ncol)	Err	bitreich.org	70
i                         fputs("too many values\n", stderr), exit(1);	Err	bitreich.org	70
i                 val = eatof(tok);	Err	bitreich.org	70
i-                plot_val(out + n * width, max[n - 1], nrow, val, width);	Err	bitreich.org	70
i+                plot_val(out + n * width, val, max[n], nrow);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         if (n < ncol)	Err	bitreich.org	70
i                 fputs("not enough values\n", stderr), exit(1);	Err	bitreich.org	70
i@@ -76,7 +78,7 @@ plot_row(long *out, char *line, double *max, int nrow, int ncol, int width)	Err	bitreich.org	70
i  * Read enough input in order to print one line and plot it into 'out'.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i static time_t	Err	bitreich.org	70
i-plot_line(long *out, double *max, int ncol, int width)	Err	bitreich.org	70
i+plot_line(long *out, double *max, int ncol)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         time_t epoch;	Err	bitreich.org	70
i         int n, nrow;	Err	bitreich.org	70
i@@ -89,7 +91,7 @@ plot_line(long *out, double *max, int ncol, int width)	Err	bitreich.org	70
i         for (nrow = 0; nrow < 4; nrow++) {	Err	bitreich.org	70
i                 if ((esfgets(line, LINE_MAX, stdin)) == NULL)	Err	bitreich.org	70
i                         exit(0);	Err	bitreich.org	70
i-                epoch = plot_row(out, line, max, nrow, ncol, width);	Err	bitreich.org	70
i+                epoch = plot_row(out, line, max, nrow, ncol);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return epoch;	Err	bitreich.org	70
i@@ -130,7 +132,6 @@ put_line(long *out)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         for (; *out != '\0'; out++)	Err	bitreich.org	70
i                 print_utf8_3bytes(*out);	Err	bitreich.org	70
i-        putchar('|');	Err	bitreich.org	70
i         putchar('\n');	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -139,16 +140,15 @@ plot(char labels[LINE_MAX], double *max, int ncol)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         time_t epoch, last_epoch;	Err	bitreich.org	70
i         long out[WIDTH_MAX + 1];	Err	bitreich.org	70
i-        int n, width;	Err	bitreich.org	70
i+        int n;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        width = (wflag - sizeof("XXxXXxXX _|")) / ncol - sizeof("|");	Err	bitreich.org	70
i         last_epoch = epoch = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        for (n = 0;; n = n == 20 ? 0 : n + 1) {	Err	bitreich.org	70
i+        for (n = 0;; n = n == 25 ? 0 : n + 1) {	Err	bitreich.org	70
i                 if (n == 0)	Err	bitreich.org	70
i                         put_time(0, 0, 2), puts(labels);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                epoch = plot_line(out, max, ncol, width);	Err	bitreich.org	70
i+                epoch = plot_line(out, max, ncol);	Err	bitreich.org	70
i                 put_time(epoch, last_epoch, n);	Err	bitreich.org	70
i                 last_epoch = epoch;	Err	bitreich.org	70
i                 put_line(out);	Err	bitreich.org	70
i@@ -157,25 +157,15 @@ plot(char labels[LINE_MAX], double *max, int ncol)	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static void	Err	bitreich.org	70
i-fmt_labels(char out[LINE_MAX], int ncol, char *labels[LINE_MAX / 2])	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        int i, w;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        w = wflag / ncol;	Err	bitreich.org	70
i-        for (i = 0; i < ncol; labels++, i++)	Err	bitreich.org	70
i-                out += snprintf(out, w - 1, " %.*s", w - 1, *labels);	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i  * Label must be able to store all pointers to token buf has to	Err	bitreich.org	70
i  * offer: sizeof(*buf / 2).	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-read_labels(char out[LINE_MAX])	Err	bitreich.org	70
i+read_labels(char *labv[LINE_MAX])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int ncol;	Err	bitreich.org	70
i-        char *l, line[LINE_MAX], **lab, *labels[LINE_MAX / 2], *tok;	Err	bitreich.org	70
i+        char *l, line[LINE_MAX], *tok;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if ((l = esfgets(line, LINE_MAX, stdin)) == NULL)	Err	bitreich.org	70
i                 fputs("missing label line\n", stderr), exit(1);	Err	bitreich.org	70
i@@ -183,20 +173,27 @@ read_labels(char out[LINE_MAX])	Err	bitreich.org	70
i         if (strcmp(strsep(&l, ","), "epoch") != 0)	Err	bitreich.org	70
i                 fputs("first label must be \"epoch\"\n", stderr), exit(1);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        lab = labels;	Err	bitreich.org	70
i-        for (ncol = 0; (tok = strsep(&l, ",")) != NULL; ncol++, lab++)	Err	bitreich.org	70
i-                *lab = tok;	Err	bitreich.org	70
i-        *lab = NULL;	Err	bitreich.org	70
i+        for (ncol = 0; (tok = strsep(&l, ",")) != NULL; ncol++, labv++)	Err	bitreich.org	70
i+                *labv = tok;	Err	bitreich.org	70
i+        *labv = NULL;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (ncol < 1)	Err	bitreich.org	70
i                 fputs("no label found\n", stderr), exit(1);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        fmt_labels(out, ncol, labels);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i         return ncol;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i+fmt_labels(char out[LINE_MAX], int ncol, char *labels[LINE_MAX / 2])	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int i;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        printf("%d\n", width);	Err	bitreich.org	70
i+        for (i = 0; i < ncol; labels++, i++)	Err	bitreich.org	70
i+                out += snprintf(out, width + 3, " %-*s |", width - 3, *labels);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+static void	Err	bitreich.org	70
i usage(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         fprintf(stderr, "usage: %s maxval... <csv\n", argv0);	Err	bitreich.org	70
i@@ -225,10 +222,12 @@ main(int argc, char **argv)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         double max[LINE_MAX / 2];	Err	bitreich.org	70
i         int ncol, nmax;	Err	bitreich.org	70
i-        char labels[LINE_MAX];	Err	bitreich.org	70
i+        char *labv[LINE_MAX / 2], labels[LINE_MAX];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         nmax = parse_args(argc, argv, max);	Err	bitreich.org	70
i-        ncol = read_labels(labels);	Err	bitreich.org	70
i+        ncol = read_labels(labv);	Err	bitreich.org	70
i+        width = (wflag - sizeof("XXxXXxXX _|")) / ncol - sizeof("|");	Err	bitreich.org	70
i+        fmt_labels(labels, ncol, labv);	Err	bitreich.org	70
i         if (ncol != nmax)	Err	bitreich.org	70
i                 fputs("not as many labels and arguments\n", stderr), exit(1);	Err	bitreich.org	70
i         plot(labels, max, ncol);	Err	bitreich.org	70
1diff --git a/test.csv b/test.csv	/scm/ploot/file/test.csv.gph	bitreich.org	70
i@@ -1,30 +1,113 @@	Err	bitreich.org	70
i-epoch,value	Err	bitreich.org	70
i-1525186140,34.691934	Err	bitreich.org	70
i-1525187040,34.405857	Err	bitreich.org	70
i-1525187940,32.498299	Err	bitreich.org	70
i-1525188840,27.619718	Err	bitreich.org	70
i-1525189740,30.942743	Err	bitreich.org	70
i-1525190640,32.813887	Err	bitreich.org	70
i-1525191540,32.230595	Err	bitreich.org	70
i-1525192440,30.917799	Err	bitreich.org	70
i-1525193340,31.829373	Err	bitreich.org	70
i-1525194240,30.912565	Err	bitreich.org	70
i-1525195140,32.899966	Err	bitreich.org	70
i-1525196040,31.234834	Err	bitreich.org	70
i-1525196940,31.196973	Err	bitreich.org	70
i-1525197840,30.626265	Err	bitreich.org	70
i-1525198740,30.734170	Err	bitreich.org	70
i-1525199640,29.900881	Err	bitreich.org	70
i-1525200540,28.375837	Err	bitreich.org	70
i-1525201440,28.976500	Err	bitreich.org	70
i-1525202340,27.949893	Err	bitreich.org	70
i-1525203240,26.158816	Err	bitreich.org	70
i-1525204140,23.383114	Err	bitreich.org	70
i-1525205040,26.615605	Err	bitreich.org	70
i-1525205940,30.636621	Err	bitreich.org	70
i-1525206840,28.831401	Err	bitreich.org	70
i-1525207740,29.878943	Err	bitreich.org	70
i-1525208640,22.641583	Err	bitreich.org	70
i-1525209540,30.158785	Err	bitreich.org	70
i-1525210440,30.718469	Err	bitreich.org	70
i-1525211340,30.369028	Err	bitreich.org	70
i+epoch,shortterm,midterm,longterm	Err	bitreich.org	70
i+1525186140,0.023804,0.056885,0.049561	Err	bitreich.org	70
i+1525187040,0.035767,0.047485,0.043701	Err	bitreich.org	70
i+1525187940,0.057861,0.050293,0.042480	Err	bitreich.org	70
i+1525188840,0.098267,0.099609,0.072266	Err	bitreich.org	70
i+1525189740,0.083618,0.091187,0.079468	Err	bitreich.org	70
i+1525190640,0.055298,0.063843,0.063354	Err	bitreich.org	70
i+1525191540,0.046875,0.056152,0.058960	Err	bitreich.org	70
i+1525192440,0.091187,0.062622,0.058716	Err	bitreich.org	70
i+1525193340,0.067871,0.060303,0.059937	Err	bitreich.org	70
i+1525194240,0.085571,0.056763,0.052612	Err	bitreich.org	70
i+1525195140,0.020874,0.054810,0.055176	Err	bitreich.org	70
i+1525196040,0.125122,0.062500,0.048096	Err	bitreich.org	70
i+1525196940,0.040649,0.041870,0.040649	Err	bitreich.org	70
i+1525197840,0.032471,0.049194,0.042114	Err	bitreich.org	70
i+1525198740,0.073853,0.088501,0.071045	Err	bitreich.org	70
i+1525199640,0.119995,0.072998,0.064697	Err	bitreich.org	70
i+1525200540,0.030518,0.043335,0.046265	Err	bitreich.org	70
i+1525201440,0.037842,0.042969,0.040894	Err	bitreich.org	70
i+1525202340,0.054810,0.049927,0.042358	Err	bitreich.org	70
i+1525203240,0.120728,0.077271,0.053589	Err	bitreich.org	70
i+1525204140,0.068970,0.086670,0.074585	Err	bitreich.org	70
i+1525205040,0.071289,0.083496,0.079834	Err	bitreich.org	70
i+1525205940,0.046265,0.059326,0.068848	Err	bitreich.org	70
i+1525206840,0.064209,0.083374,0.069214	Err	bitreich.org	70
i+1525207740,0.055054,0.046753,0.051758	Err	bitreich.org	70
i+1525208640,0.170410,0.088867,0.064575	Err	bitreich.org	70
i+1525209540,0.067627,0.092407,0.092163	Err	bitreich.org	70
i+1525210440,0.078003,0.087646,0.083130	Err	bitreich.org	70
i+1525211340,0.032959,0.043457,0.059204	Err	bitreich.org	70
i+1525212240,0.036377,0.054810,0.057861	Err	bitreich.org	70
i+1525213140,0.054565,0.078369,0.071655	Err	bitreich.org	70
i+1525214040,0.026611,0.041138,0.051514	Err	bitreich.org	70
i+1525214940,0.065186,0.067505,0.061768	Err	bitreich.org	70
i+1525215840,0.071411,0.055298,0.055176	Err	bitreich.org	70
i+1525229081,0.041260,0.045044,0.045654	Err	bitreich.org	70
i+1525229081,0.041260,0.045044,0.045654	Err	bitreich.org	70
i+1525229981,0.059692,0.102051,0.105835	Err	bitreich.org	70
i+1525230881,0.077148,0.067017,0.073730	Err	bitreich.org	70
i+1525231781,0.080200,0.074341,0.064575	Err	bitreich.org	70
i+1525232681,0.122437,0.099487,0.075806	Err	bitreich.org	70
i+1525233581,0.085815,0.076050,0.073486	Err	bitreich.org	70
i+1525234481,0.074585,0.064087,0.062012	Err	bitreich.org	70
i+1525235381,0.024902,0.047241,0.053345	Err	bitreich.org	70
i+1525236281,0.107910,0.081543,0.065918	Err	bitreich.org	70
i+1525237181,0.038696,0.075684,0.080688	Err	bitreich.org	70
i+1525238081,0.204834,0.181152,0.130737	Err	bitreich.org	70
i+1525238981,0.231445,0.158325,0.137695	Err	bitreich.org	70
i+1525239881,0.067505,0.089355,0.109497	Err	bitreich.org	70
i+1525240781,0.047852,0.088745,0.107910	Err	bitreich.org	70
i+1525241681,0.094360,0.085693,0.083618	Err	bitreich.org	70
i+1525242581,0.047363,0.043335,0.052856	Err	bitreich.org	70
i+1525243481,0.047363,0.031982,0.036621	Err	bitreich.org	70
i+1525244381,0.055054,0.042236,0.040039	Err	bitreich.org	70
i+1525245281,0.034668,0.041626,0.040039	Err	bitreich.org	70
i+1525246181,0.088867,0.065918,0.048706	Err	bitreich.org	70
i+1525247081,0.049072,0.051880,0.042236	Err	bitreich.org	70
i+1525247981,0.045166,0.048828,0.041382	Err	bitreich.org	70
i+1525248881,0.067261,0.061768,0.047852	Err	bitreich.org	70
i+1525249781,0.039917,0.056519,0.045654	Err	bitreich.org	70
i+1525250681,0.017822,0.030273,0.033081	Err	bitreich.org	70
i+1525251581,0.034668,0.033691,0.034546	Err	bitreich.org	70
i+1525252481,0.053223,0.051880,0.045166	Err	bitreich.org	70
i+1525253381,0.028687,0.050049,0.050659	Err	bitreich.org	70
i+1525254281,0.021118,0.042358,0.040649	Err	bitreich.org	70
i+1525255181,0.059204,0.047974,0.041870	Err	bitreich.org	70
i+1525256081,0.206421,0.141968,0.086670	Err	bitreich.org	70
i+1525256981,0.105713,0.087158,0.073486	Err	bitreich.org	70
i+1525257881,0.048950,0.060913,0.068359	Err	bitreich.org	70
i+1525258781,0.024414,0.036621,0.046753	Err	bitreich.org	70
i+1525259681,0.245239,0.109619,0.071045	Err	bitreich.org	70
i+1525260581,0.042236,0.063965,0.069092	Err	bitreich.org	70
i+1525261481,0.016724,0.054077,0.059692	Err	bitreich.org	70
i+1525262381,0.018433,0.078003,0.076660	Err	bitreich.org	70
i+1525263281,0.042480,0.057617,0.061890	Err	bitreich.org	70
i+1525264181,0.040161,0.041138,0.044189	Err	bitreich.org	70
i+1525265081,0.059082,0.090698,0.064575	Err	bitreich.org	70
i+1525265981,0.129272,0.080811,0.073486	Err	bitreich.org	70
i+1525266881,0.228516,0.164551,0.112915	Err	bitreich.org	70
i+1525267781,0.083130,0.058594,0.067627	Err	bitreich.org	70
i+1525268681,0.062378,0.063965,0.061523	Err	bitreich.org	70
i+1525269581,0.066895,0.069702,0.062500	Err	bitreich.org	70
i+1525270481,0.061768,0.080322,0.065674	Err	bitreich.org	70
i+1525271381,0.123657,0.089478,0.072021	Err	bitreich.org	70
i+1525272281,0.056885,0.045532,0.051514	Err	bitreich.org	70
i+1525273181,0.108887,0.056519,0.046387	Err	bitreich.org	70
i+1525274081,0.072266,0.119629,0.080078	Err	bitreich.org	70
i+1525274981,0.033447,0.058350,0.070190	Err	bitreich.org	70
i+1525275881,0.028198,0.050781,0.058105	Err	bitreich.org	70
i+1525276781,0.067261,0.059937,0.057495	Err	bitreich.org	70
i+1525277681,0.024780,0.028809,0.038452	Err	bitreich.org	70
i+1525278581,0.053955,0.049561,0.041748	Err	bitreich.org	70
i+1525279481,0.086304,0.065308,0.048096	Err	bitreich.org	70
i+1525281698,0.019165,0.047485,0.041870	Err	bitreich.org	70
i+1525281698,0.019165,0.047485,0.041870	Err	bitreich.org	70
i+1525282598,0.039551,0.034302,0.038086	Err	bitreich.org	70
i+1525283498,0.017700,0.022827,0.026367	Err	bitreich.org	70
i+1525284398,0.023560,0.034790,0.024292	Err	bitreich.org	70
i+1525285298,0.093506,0.078857,0.053101	Err	bitreich.org	70
i+1525286198,0.051025,0.066162,0.069458	Err	bitreich.org	70
i+1525287098,0.054077,0.057861,0.059082	Err	bitreich.org	70
i+1525287998,0.080200,0.071655,0.062744	Err	bitreich.org	70
i+1525288898,0.478638,0.375122,0.247192	Err	bitreich.org	70
i+1525289798,0.393066,0.390991,0.347046	Err	bitreich.org	70
i+1525290698,0.368164,0.383545,0.365723	Err	bitreich.org	70
i+1525291598,0.459229,0.463867,0.432129	Err	bitreich.org	70
i+1525292498,0.286865,0.354980,0.381958	Err	bitreich.org	70
i+1525293398,0.180786,0.178833,0.232910	Err	bitreich.org	70
i+1525294298,0.278198,0.260864,0.242920	Err	bitreich.org	70
i+1525295198,0.192505,0.183716,0.200806	Err	bitreich.org	70
i+1525296098,0.109375,0.185669,0.207153	Err	bitreich.org	70
i+1525296998,0.137085,0.126221,0.138184	Err	bitreich.org	70
i+1525297898,0.077881,0.092529,0.109619	Err	bitreich.org	70
1diff --git a/util.h b/util.h	/scm/ploot/file/util.h.gph	bitreich.org	70
i@@ -1,3 +1,7 @@	Err	bitreich.org	70
i+#define MIN(x, y) ((x) < (y) ? (x) : (y))	Err	bitreich.org	70
i+#define MAX(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 /* util.c */	Err	bitreich.org	70
i char                *strsep                (char **, const char *);	Err	bitreich.org	70
i void                 estriplf        (char *);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ploot/commit/329e7cc8a47b33e9...
Content-Typetext/plain; charset=utf-8