SMOLNET PORTAL home about changes
idrawing dots - 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 8112f382b3e9104289ade9cae2d777ab4d68ea1b	/scm/ploot/commit/8112f382b3e9104289ade9cae2d777ab4d68ea1b.gph	bitreich.org	70
1parent 04a8bcf172e92e0f70bc889b5181bc3cbdb8f381	/scm/ploot/commit/04a8bcf172e92e0f70bc889b5181bc3cbdb8f381.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Fri,  2 Feb 2018 21:05:01 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
idrawing dots	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       2 +-	Err	bitreich.org	70
i  A config.h                            |       2 ++	Err	bitreich.org	70
i  M plot                                |       0 	Err	bitreich.org	70
i  M plot.c                              |      74 ++++++++++++++++++++++++++-----	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 66 insertions(+), 12 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,4 +1,4 @@	Err	bitreich.org	70
i CFLAGS        = -Wall -Wextra -Werror -std=c89 -pedantic	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-all: plot.o	Err	bitreich.org	70
i+all: plot.o config.h	Err	bitreich.org	70
i         ${CC} -o plot plot.o	Err	bitreich.org	70
1diff --git a/config.h b/config.h	/scm/ploot/file/config.h.gph	bitreich.org	70
i@@ -0,0 +1,2 @@	Err	bitreich.org	70
i+#define MAX_WIDTH        80	Err	bitreich.org	70
i+#define MAX_HEIGHT        20	Err	bitreich.org	70
1diff --git a/plot b/plot	/scm/ploot/file/plot.gph	bitreich.org	70
iBinary files differ.	Err	bitreich.org	70
1diff --git a/plot.c b/plot.c	/scm/ploot/file/plot.c.gph	bitreich.org	70
i@@ -1,18 +1,23 @@	Err	bitreich.org	70
i #include <stdio.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#include "config.h"	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 	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	Err	bitreich.org	70
i- * (including '\0' terminator).	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+ * max size of a double.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i void	Err	bitreich.org	70
i-humanize(double num, char *str, size_t len)	Err	bitreich.org	70
i+humanize(char *str, double num)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int        exp;	Err	bitreich.org	70
i         char        *label = " kMGTE", fmt[] = "%+.?f%c";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        for (exp = 0; ABS(num) > 1000; exp += 3)	Err	bitreich.org	70
i+        for (exp = 0; ABS(num) > 1000; exp++)	Err	bitreich.org	70
i                 num /= 1000;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         fmt[3] = (ABS(num) < 10) ? '3' : (ABS(num) < 100) ? '2' : '1';	Err	bitreich.org	70
i@@ -20,18 +25,65 @@ humanize(double num, char *str, size_t len)	Err	bitreich.org	70
i                 fmt[5] = '\0';	Err	bitreich.org	70
i                 fmt[3]++;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        snprintf(str, len, fmt, num, label[exp / 3]);	Err	bitreich.org	70
i-        if (num > 0)	Err	bitreich.org	70
i+        snprintf(str, 8, fmt, num, label[exp]);	Err	bitreich.org	70
i+        if (num >= 0)	Err	bitreich.org	70
i                 str[0] = ' ';	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int	Err	bitreich.org	70
i-main()	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Print two rows of a plot into a single line using ' ', '.' and ':'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+line(double *beg, double *end, double top, double bot)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        *val;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (val = beg; val <= end; val++)	Err	bitreich.org	70
i+                putchar((*val < bot) ? ' ' : (*val < top) ? '.' : ':');	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Returns the maximal double of values between `beg' and `end'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+double	Err	bitreich.org	70
i+maxdv(double *beg, double *end)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        char        str[8];	Err	bitreich.org	70
i+        double        *val, max;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        humanize(-1 << 18, str, sizeof(str));	Err	bitreich.org	70
i-        printf("%s\n", str);	Err	bitreich.org	70
i+        max = *beg;	Err	bitreich.org	70
i+        for (val = beg; val < end; val++) {	Err	bitreich.org	70
i+                if (*val > max)	Err	bitreich.org	70
i+                        max = *val;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        return max;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Plot values between `beg' and `end' in a plot of height `height'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+plot(int height, double *beg, double *end)	Err	bitreich.org	70
i+{	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+        char        label[8];	Err	bitreich.org	70
i+*/	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        max = maxdv(beg, end);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (h = height + height % 2; h > 0; h -= 2) {	Err	bitreich.org	70
i+                top = h * max / height;	Err	bitreich.org	70
i+                bot = (h - 1) * max / height;	Err	bitreich.org	70
i+                line(beg, end, top, bot);	Err	bitreich.org	70
i+                putchar('\n');	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+main()	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        val[] = { 0.0, 0.4, 3.4, 2.1, 3.5, 3.0, 1.1, 2.0 } ;	Err	bitreich.org	70
i+        plot(10, val, val + LEN(val));	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ploot/commit/8112f382b3e91042...
Content-Typetext/plain; charset=utf-8