irefactor a bit - 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 a2f50e1cb8af6ef5571c142b93b8ade388e0bfa5 /scm/ploot/commit/a2f50e1cb8af6ef5571c142b93b8ade388e0bfa5.gph bitreich.org 70
1parent 1f4e757723ea483ab2c60c8fec2937569441af9e /scm/ploot/commit/1f4e757723ea483ab2c60c8fec2937569441af9e.gph bitreich.org 70
hAuthor: Josuah Demangeon <me@josuah.net> URL:mailto:me@josuah.net bitreich.org 70
iDate: Tue, 18 Feb 2020 08:33:24 +0100 Err bitreich.org 70
i Err bitreich.org 70
irefactor a bit Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M def.h | 48 +++++++------------------------ Err bitreich.org 70
i M drawille.c | 58 +++++++++++++++++++++++-------- Err bitreich.org 70
i M ploot-braille.c | 106 +++++++++---------------------- Err bitreich.org 70
i M ploot-farbfeld.c | 8 ++++---- Err bitreich.org 70
i M ploot-feed.c | 6 +++--- Err bitreich.org 70
i M test.csv | 1 + Err bitreich.org 70
i M util.c | 46 ------------------------------- Err bitreich.org 70
i Err bitreich.org 70
i7 files changed, 90 insertions(+), 183 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/def.h b/def.h /scm/ploot/file/def.h.gph bitreich.org 70
i@@ -35,62 +35,34 @@ struct vlist { Err bitreich.org 70
i char *label; /* for the legend */ Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i-/* csv.c */ Err bitreich.org 70
i- Err bitreich.org 70
i+/**/ Err bitreich.org 70
i void csv_addrow (struct vlist *, size_t, char *); Err bitreich.org 70
i void csv_labels (FILE *, char *, struct vlist **, size_t *); Err bitreich.org 70
i void csv_values (FILE *, struct vlist *, size_t); Err bitreich.org 70
i- Err bitreich.org 70
i-/* drawille.c */ Err bitreich.org 70
i- Err bitreich.org 70
i-size_t drawille_fmt_row (struct drawille *, char *, size_t, int); Err bitreich.org 70
i+size_t drawille_put_row (struct drawille *, FILE *, int); Err bitreich.org 70
i void drawille_dot (struct drawille *, int, int); Err bitreich.org 70
i struct drawille *drawille_new (int, int); Err bitreich.org 70
i void drawille_line (struct drawille *, int, int, int, int); Err bitreich.org 70
i-void drawille_line_hist (struct drawille *, int, int, int, int, int); Err bitreich.org 70
i-void drawille_dot_hist (struct drawille *, int, int, int); Err bitreich.org 70
i+void drawille_histogram_dot (struct drawille *, int, int, int); Err bitreich.org 70
i+void drawille_histogram_line (struct drawille *, int, int, int, int, int); Err bitreich.org 70
i+int drawille_histogram (struct vlist *, struct drawille *, time_t, time_t, double, double); Err bitreich.org 70
i char * drawille_text (struct drawille *, int, int, struct font *, char *); Err bitreich.org 70
i- Err bitreich.org 70
i-/* font.c */ Err bitreich.org 70
i- Err bitreich.org 70
i size_t font_width (struct font *, int); Err bitreich.org 70
i size_t font_strlen (struct font *, char *); Err bitreich.org 70
i- Err bitreich.org 70
i-/* font*.c */ Err bitreich.org 70
i- Err bitreich.org 70
i-struct font font13; Err bitreich.org 70
i-struct font font7; Err bitreich.org 70
i-struct font font8; Err bitreich.org 70
i- Err bitreich.org 70
i-/* ploot-braille.c */ Err bitreich.org 70
i- Err bitreich.org 70
i+struct font font13; Err bitreich.org 70
i+struct font font7; Err bitreich.org 70
i+struct font font8; Err bitreich.org 70
i char const *arg0; Err bitreich.org 70
i- Err bitreich.org 70
i-/* ploot-farbfeld.c */ Err bitreich.org 70
i- Err bitreich.org 70
i-char const *arg0; Err bitreich.org 70
i- Err bitreich.org 70
i-/* ploot-feed.c */ Err bitreich.org 70
i- Err bitreich.org 70
i-char const *arg0; Err bitreich.org 70
i- Err bitreich.org 70
i-/* scale.c */ Err bitreich.org 70
i- Err bitreich.org 70
i int scale_ypos (double, double, double, int); Err bitreich.org 70
i int scale_xpos (time_t, time_t, time_t, int); Err bitreich.org 70
i void scale_vminmax (double *, double *, int); Err bitreich.org 70
i void scale (struct vlist *, int, time_t *, time_t *, time_t *, double *, double *, double *); Err bitreich.org 70
i- Err bitreich.org 70
i-/* util.c */ Err bitreich.org 70
i- Err bitreich.org 70
i size_t strlcpy (char *, const char *, size_t); Err bitreich.org 70
i void put3utf (long); Err bitreich.org 70
i char * strsep (char **, const char *); Err bitreich.org 70
i void estriplf (char *); Err bitreich.org 70
i double eatof (char *); Err bitreich.org 70
i long eatol (char *); Err bitreich.org 70
i-char * esfgets (char *, size_t, FILE *); Err bitreich.org 70
i int humanize (char *, double); Err bitreich.org 70
i-void vlog (char const *, char const *, va_list); Err bitreich.org 70
i-void warn (char const *, ...); Err bitreich.org 70
i-void err (int, char const *, ...); Err bitreich.org 70
i+ Err bitreich.org 70
i+#endif Err bitreich.org 70
1diff --git a/drawille.c b/drawille.c /scm/ploot/file/drawille.c.gph bitreich.org 70
i@@ -6,6 +6,7 @@ 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 <math.h> Err bitreich.org 70
i Err bitreich.org 70
i #include "def.h" Err bitreich.org 70
i Err bitreich.org 70
i@@ -52,7 +53,7 @@ drawille_get(struct drawille *drw, int row, int col) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i size_t Err bitreich.org 70
i-drawille_fmt_row(struct drawille *drw, char *buf, size_t sz, int row) Err bitreich.org 70
i+drawille_put_row(struct drawille *drw, FILE *fp, int row) Err bitreich.org 70
i { Err bitreich.org 70
i char txt[] = "xxx"; Err bitreich.org 70
i size_t n; Err bitreich.org 70
i@@ -60,7 +61,7 @@ drawille_fmt_row(struct drawille *drw, char *buf, size_t sz, int row) Err bitreich.org 70
i n = 0; Err bitreich.org 70
i for (int col = 0; col < drw->col; col++) { Err bitreich.org 70
i drawille_cell_utf(drawille_get(drw, row, col), txt); Err bitreich.org 70
i- n += snprintf(buf+n, sz-n, "%s", txt); Err bitreich.org 70
i+ n += fputs(txt, fp); Err bitreich.org 70
i } Err bitreich.org 70
i return n; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -111,7 +112,7 @@ drawille_line_next(struct line *l) Err bitreich.org 70
i int e; Err bitreich.org 70
i Err bitreich.org 70
i if (l->x0 == l->x1 && l->y0 == l->y1) Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i Err bitreich.org 70
i e = l->err; Err bitreich.org 70
i if (e > -l->dx) { Err bitreich.org 70
i@@ -122,7 +123,7 @@ drawille_line_next(struct line *l) Err bitreich.org 70
i l->y0 += l->sy; Err bitreich.org 70
i l->err += l->dx; Err bitreich.org 70
i } Err bitreich.org 70
i- return 0; Err bitreich.org 70
i+ return 1; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i@@ -137,27 +138,54 @@ drawille_line(struct drawille *drw, int x0, int y0, int x1, int y1) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i-drawille_line_hist(struct drawille *drw, int x0, int y0, int x1, int y1, int zero) Err bitreich.org 70
i+drawille_histogram_dot(struct drawille *drw, int x, int y, int zero) Err bitreich.org 70
i { Err bitreich.org 70
i- struct line l; Err bitreich.org 70
i int sign; Err bitreich.org 70
i Err bitreich.org 70
i+ sign = (y > zero) ? (+1) : (-1); Err bitreich.org 70
i+ for (; y != zero + sign; y -= sign) Err bitreich.org 70
i+ drawille_dot(drw, x, y); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+void Err bitreich.org 70
i+drawille_histogram_line(struct drawille *drw, int x0, int y0, int x1, int y1, int zero) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ struct line l; Err bitreich.org 70
i+ Err bitreich.org 70
i drawille_line_init(&l, x0, y0, x1, y1); Err bitreich.org 70
i do { Err bitreich.org 70
i- sign = (l.y0 > zero) ? (-1) : (+1); Err bitreich.org 70
i- for (int y = l.y0; y != zero + sign; y += sign) Err bitreich.org 70
i- drawille_dot(drw, l.x0, y); Err bitreich.org 70
i+ drawille_histogram_dot(drw, l.x0, l.y0, zero); Err bitreich.org 70
i } while (drawille_line_next(&l)); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-void Err bitreich.org 70
i-drawille_dot_hist(struct drawille *drw, int x, int y, int zero) Err bitreich.org 70
i+/* Err bitreich.org 70
i+ * Plot the body as an histogram interpolating the gaps and include Err bitreich.org 70
i+ * a vertical and horizontal axis. Err bitreich.org 70
i+ */ Err bitreich.org 70
i+int Err bitreich.org 70
i+drawille_histogram(struct vlist *vl, struct drawille *drw, Err bitreich.org 70
i+ time_t tmin, time_t tmax, double vmin, double vmax) Err bitreich.org 70
i { Err bitreich.org 70
i- int sign; Err bitreich.org 70
i+ int x, xprev, y, yprev, zero; Err bitreich.org 70
i+ double *v; Err bitreich.org 70
i+ time_t *t; Err bitreich.org 70
i+ size_t n; Err bitreich.org 70
i Err bitreich.org 70
i- sign = (y > zero) ? (-1) : (+1); Err bitreich.org 70
i- for (; y != zero + sign; y += sign) Err bitreich.org 70
i- drawille_dot(drw, x, y); Err bitreich.org 70
i+ zero = scale_ypos(0, vmin, vmax, drw->row*4); Err bitreich.org 70
i+ v = vl->v; Err bitreich.org 70
i+ t = vl->t; Err bitreich.org 70
i+ n = vl->n; Err bitreich.org 70
i+ for (; n > 0; n--, t++, v++) { Err bitreich.org 70
i+ if (isnan(*v)) /* XXX: better handling? */ Err bitreich.org 70
i+ continue; Err bitreich.org 70
i+ y = scale_ypos(*v, vmin, vmax, drw->row * 4); Err bitreich.org 70
i+ x = scale_xpos(*t, tmin, tmax, drw->col * 2); Err bitreich.org 70
i+ if (n < vl->n) Err bitreich.org 70
i+ drawille_histogram_line(drw, xprev, yprev, x, y, zero); Err bitreich.org 70
i+ xprev = x; Err bitreich.org 70
i+ yprev = y; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static int Err bitreich.org 70
1diff --git a/ploot-braille.c b/ploot-braille.c /scm/ploot/file/ploot-braille.c.gph bitreich.org 70
i@@ -12,61 +12,43 @@ Err bitreich.org 70
i Err bitreich.org 70
i char const *arg0 = NULL; Err bitreich.org 70
i Err bitreich.org 70
i-/* Err bitreich.org 70
i- * Return the step between two values. Err bitreich.org 70
i- */ Err bitreich.org 70
i static int Err bitreich.org 70
i-braille_time_interval(time_t step) Err bitreich.org 70
i+braille_axis_x(FILE *fp, time_t tmin, time_t tmax, time_t tstep, int col) Err bitreich.org 70
i { Err bitreich.org 70
i- time_t scale[] = { Err bitreich.org 70
i- 1, 5, 2, 10, 20, 30, 60, 60*2, 60*5, 60*10, 60*20, 60*30, Err bitreich.org 70
i- 3600, 3600*2, 3600*5, 3600*10, 3600*18, 3600*24, 3600*24*2, Err bitreich.org 70
i- 3600*24*5, 3600*24*10, 3600*24*20, 3600*24*30, 3600*24*50, Err bitreich.org 70
i- 3600*24*100, 3600*24*365, 0 Err bitreich.org 70
i- }; Err bitreich.org 70
i- Err bitreich.org 70
i- for (time_t *s = scale; *s != 0; s++) Err bitreich.org 70
i- if (*s >= 20 * step) Err bitreich.org 70
i- return *s; Err bitreich.org 70
i- return 1; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-static size_t Err bitreich.org 70
i-braille_axis_x(FILE *fp, time_t step, time_t tmax, int col) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int x, prec; Err bitreich.org 70
i+ int x, o, prec; Err bitreich.org 70
i char tmp[sizeof("MM/DD HH:MM")], *fmt; Err bitreich.org 70
i size_t n; Err bitreich.org 70
i- time_t t, interval; Err bitreich.org 70
i+ time_t t; Err bitreich.org 70
i Err bitreich.org 70
i- interval = braille_time_interval(step); Err bitreich.org 70
i- fmt = (step < 3600 * 12) ? "^%H:%M:%S" : Err bitreich.org 70
i- (step < 3600 * 24) ? "^%m/%d %H:%M" : Err bitreich.org 70
i+ fmt = (tstep < 3600 * 12) ? "^%H:%M:%S" : Err bitreich.org 70
i+ (tstep < 3600 * 24) ? "^%m/%d %H:%M" : Err bitreich.org 70
i "^%Y/%m/%d"; Err bitreich.org 70
i n = x = 0; Err bitreich.org 70
i Err bitreich.org 70
i- t = tmax - col * 2 * step; Err bitreich.org 70
i- t += interval - t % interval; Err bitreich.org 70
i- for (; t < tmax; t += interval) { Err bitreich.org 70
i+ t = tmin; Err bitreich.org 70
i+ t += tstep - t % tstep; Err bitreich.org 70
i+ for (; t < tmax; t += tstep) { Err bitreich.org 70
i+ x = (t - tmin) * col / (tmax - tmin); Err bitreich.org 70
i strftime(tmp, sizeof tmp, fmt, localtime(&t)); Err bitreich.org 70
i- x = ((t - tmax) / 2 + col * step) / step; Err bitreich.org 70
i prec = x - n + strlen(tmp); Err bitreich.org 70
i- fprintf(fp, "%*s", prec, tmp); Err bitreich.org 70
i+ if ((o = fprintf(fp, "%*s", prec, tmp)) < 0) Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ n += o; Err bitreich.org 70
i } Err bitreich.org 70
i fputc('\n', fp); Err bitreich.org 70
i- return 1; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i * Plot a single line out of the y axis, at row <r> out of <rows>. Err bitreich.org 70
i */ Err bitreich.org 70
i static void Err bitreich.org 70
i-braille_axis_y(FILE *fp, double min, double max, int r, int rows) Err bitreich.org 70
i+braille_axis_y(FILE *fp, double vmin, double vmax, int r, int rows) Err bitreich.org 70
i { Err bitreich.org 70
i char tmp[10] = "", *s; Err bitreich.org 70
i double val; Err bitreich.org 70
i Err bitreich.org 70
i- val = (max - min) * (rows - r) / rows + min; Err bitreich.org 70
i+ val = (rows - r) * (vmax - vmin) / rows; Err bitreich.org 70
i humanize(tmp, val); Err bitreich.org 70
i s = (r == 0) ? "┌" : Err bitreich.org 70
i (r == rows - 1) ? "└" : Err bitreich.org 70
i@@ -75,70 +57,40 @@ braille_axis_y(FILE *fp, double min, double max, int r, int rows) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static int Err bitreich.org 70
i-braille_render(struct drawille *drw, FILE *fp, time_t tmin, time_t tmax) Err bitreich.org 70
i+braille_render(struct drawille *drw, FILE *fp, double vmin, double vmax) Err bitreich.org 70
i { Err bitreich.org 70
i- char buf[LINE_MAX]; Err bitreich.org 70
i- Err bitreich.org 70
i /* Render the plot line by line. */ Err bitreich.org 70
i for (int row = 0; row < drw->row; row++) { Err bitreich.org 70
i- drawille_fmt_row(drw, buf, sizeof buf, row); Err bitreich.org 70
i- braille_axis_y(fp, tmin, tmax, row, drw->row); Err bitreich.org 70
i+ drawille_put_row(drw, fp, row); Err bitreich.org 70
i+ braille_axis_y(fp, vmin, vmax, row, drw->row); Err bitreich.org 70
i fputc('\n', fp); Err bitreich.org 70
i } Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-/* Err bitreich.org 70
i- * Plot the body as an histogram interpolating the gaps and include Err bitreich.org 70
i- * a vertical and horizontal axis. Err bitreich.org 70
i- */ Err bitreich.org 70
i-static int Err bitreich.org 70
i-braille_hist(struct vlist *vl, FILE *fp, time_t tmin, time_t tmax, int row, int col) Err bitreich.org 70
i-{ Err bitreich.org 70
i- int x, y, zero, shift; Err bitreich.org 70
i- double *v, vmin, vmax; Err bitreich.org 70
i- time_t *t; Err bitreich.org 70
i- size_t n; Err bitreich.org 70
i- struct drawille *drw; Err bitreich.org 70
i- Err bitreich.org 70
i- if ((drw = drawille_new(row, col)) == NULL) Err bitreich.org 70
i- err(1, "allocating drawille canvas"); Err bitreich.org 70
i- Err bitreich.org 70
i- shift = (drw->row > 1) ? (2) : (0); /* center values on "|-" marks */ Err bitreich.org 70
i- vmin = vmax = 0; Err bitreich.org 70
i- zero = scale_ypos(0, vmin, vmax, drw->row*4) - shift; Err bitreich.org 70
i- v = vl->v; Err bitreich.org 70
i- t = vl->t; Err bitreich.org 70
i- n = vl->n; Err bitreich.org 70
i- for (; n > 0; n--, t++, v++) { Err bitreich.org 70
i- if (isnan(*v)) /* XXX: better handling? */ Err bitreich.org 70
i- continue; Err bitreich.org 70
i- y = scale_ypos(*v, vmin, vmax, drw->row * 4) - shift; Err bitreich.org 70
i- x = scale_xpos(*t, tmin, tmax, drw->col * 2); Err bitreich.org 70
i- drawille_dot_hist(drw, x, y, zero); Err bitreich.org 70
i- } Err bitreich.org 70
i- if (braille_render(drw, fp, tmin, tmax) == -1) Err bitreich.org 70
i- err(1, "rendering braille canvas"); Err bitreich.org 70
i- free(drw); Err bitreich.org 70
i- return 0; Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-static int Err bitreich.org 70
i+static void Err bitreich.org 70
i plot(struct vlist *vl, FILE *fp, size_t ncol, int row, int col) Err bitreich.org 70
i { Err bitreich.org 70
i size_t len; Err bitreich.org 70
i double vmin, vmax, vstep; Err bitreich.org 70
i time_t tmin, tmax, tstep; Err bitreich.org 70
i+ struct drawille *drw; Err bitreich.org 70
i Err bitreich.org 70
i len = 500; Err bitreich.org 70
i col -= 8; Err bitreich.org 70
i Err bitreich.org 70
i scale(vl, ncol, &tmin, &tmax, &tstep, &vmin, &vmax, &vstep); Err bitreich.org 70
i+ warn("vstep=%lf vstep=%ld", vstep, tstep); Err bitreich.org 70
i Err bitreich.org 70
i- if (braille_hist(vl, fp, tmin, tmax, row, col) == -1) Err bitreich.org 70
i+ if ((drw = drawille_new(row, col)) == NULL) Err bitreich.org 70
i err(1, "allocating drawille canvas"); Err bitreich.org 70
i- braille_axis_x(fp, tstep, tmax, col); Err bitreich.org 70
i- return 0; Err bitreich.org 70
i+ if (drawille_histogram(vl, drw, tmin, tmax, vmin, vmax) == -1) Err bitreich.org 70
i+ err(1, "allocating drawille canvas"); Err bitreich.org 70
i+ if (braille_render(drw, fp, vmin, vmax) == -1) Err bitreich.org 70
i+ err(1, "rendering braille canvas"); Err bitreich.org 70
i+ if (braille_axis_x(fp, tmin, tmax, tstep, col) == -1) Err bitreich.org 70
i+ err(1, "printing x axis");; Err bitreich.org 70
i+ free(drw); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
1diff --git a/ploot-farbfeld.c b/ploot-farbfeld.c /scm/ploot/file/ploot-farbfeld.c.gph bitreich.org 70
i@@ -65,10 +65,10 @@ struct canvas { Err bitreich.org 70
i struct color *buf; Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i-char const *arg0 = NULL; Err bitreich.org 70
i-static char *tflag = ""; Err bitreich.org 70
i-static char *uflag = ""; Err bitreich.org 70
i-static struct font *font = &font13; Err bitreich.org 70
i+char const *arg0 = NULL; Err bitreich.org 70
i+static char *tflag = ""; Err bitreich.org 70
i+static char *uflag = ""; Err bitreich.org 70
i+static struct font *font = &font13; Err bitreich.org 70
i Err bitreich.org 70
i static struct cname cname[] = { Err bitreich.org 70
i /* name red green blue alpha */ Err bitreich.org 70
1diff --git a/ploot-feed.c b/ploot-feed.c /scm/ploot/file/ploot-feed.c.gph bitreich.org 70
i@@ -13,9 +13,9 @@ Err bitreich.org 70
i #define WIDTH_MAX 1024 Err bitreich.org 70
i #define BRAILLE_START 10240 Err bitreich.org 70
i Err bitreich.org 70
i-char const *arg0 = NULL; Err bitreich.org 70
i-static int wflag = 80; Err bitreich.org 70
i-static int width = 0; Err bitreich.org 70
i+char const *arg0 = NULL; Err bitreich.org 70
i+static int wflag = 80; Err bitreich.org 70
i+static int width = 0; Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i * Turn the bit at position (row, col) on in the . Err bitreich.org 70
1diff --git a/test.csv b/test.csv /scm/ploot/file/test.csv.gph bitreich.org 70
i@@ -109,5 +109,6 @@ epoch,shortterm,midterm,longterm 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+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.c b/util.c /scm/ploot/file/util.c.gph bitreich.org 70
i@@ -77,19 +77,6 @@ eatol(char *str) Err bitreich.org 70
i return atol(str); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-char * Err bitreich.org 70
i-esfgets(char *buf, size_t n, FILE *file) Err bitreich.org 70
i-{ Err bitreich.org 70
i- if (fgets(buf, n, file) == NULL) { Err bitreich.org 70
i- if (ferror(stdin)) Err bitreich.org 70
i- perror("fread from stdin"), exit(1); Err bitreich.org 70
i- else Err bitreich.org 70
i- return NULL; Err bitreich.org 70
i- } Err bitreich.org 70
i- estriplf(buf); Err bitreich.org 70
i- return buf; Err bitreich.org 70
i-} 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 8 (+1 for Err bitreich.org 70
i * the '\0' terminator). Buffer overflow is ensured not to happen due to the Err bitreich.org 70
i@@ -114,36 +101,3 @@ humanize(char *str, double val) Err bitreich.org 70
i Err bitreich.org 70
i return exp * 3; Err bitreich.org 70
i } Err bitreich.org 70
i- Err bitreich.org 70
i-void Err bitreich.org 70
i-vlog(char const *base, char const *fmt, va_list va) Err bitreich.org 70
i-{ Err bitreich.org 70
i- fprintf(stderr, "%s: ", base); Err bitreich.org 70
i- vfprintf(stderr, fmt, va); Err bitreich.org 70
i- if (errno) Err bitreich.org 70
i- fprintf(stderr, ": %s", strerror(errno)); Err bitreich.org 70
i- fputc('\n', stderr); Err bitreich.org 70
i- fflush(stderr); Err bitreich.org 70
i- errno = 0; /* avoid repeating the error in loop */ Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-void Err bitreich.org 70
i-warn(char const *fmt, ...) Err bitreich.org 70
i-{ Err bitreich.org 70
i- va_list va; Err bitreich.org 70
i- Err bitreich.org 70
i- va_start(va, fmt); Err bitreich.org 70
i- vlog(arg0, fmt, va); Err bitreich.org 70
i- va_end(va); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-void Err bitreich.org 70
i-err(int e, char const *fmt, ...) Err bitreich.org 70
i-{ Err bitreich.org 70
i- va_list va; Err bitreich.org 70
i- Err bitreich.org 70
i- va_start(va, fmt); Err bitreich.org 70
i- vlog(arg0, fmt, va); Err bitreich.org 70
i- va_end(va); Err bitreich.org 70
i- exit(e); Err bitreich.org 70
i-} Err bitreich.org 70
.
Response:
text/plain