iswitch back to arg.h - 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 dd70db86b2270b2a539f863664d2af0c5c7f1040 /scm/ploot/commit/dd70db86b2270b2a539f863664d2af0c5c7f1040.gph bitreich.org 70 1parent 5bf25770fadc2327ef217388561e203217b1870e /scm/ploot/commit/5bf25770fadc2327ef217388561e203217b1870e.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sat, 17 Mar 2018 16:33:30 +0100 Err bitreich.org 70 i Err bitreich.org 70 iswitch back to arg.h Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 8 +++++--- Err bitreich.org 70 i A arg.h | 27 +++++++++++++++++++++++++++ Err bitreich.org 70 i M ploot.c | 54 +++++++++++++++---------------- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 58 insertions(+), 31 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,15 +1,17 @@ Err bitreich.org 70 i CFLAGS = -Wall -Wextra -Werror -std=c89 -pedantic -D_POSIX_C_SOURCE=200809L Err bitreich.org 70 i Err bitreich.org 70 i+.PHONY: all 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+ploot.o: config.h arg.h Err bitreich.org 70 i+ploot: ploot.o Err bitreich.org 70 i ${CC} -static -o ploot ploot.o Err bitreich.org 70 i Err bitreich.org 70 i+.PHONY: install Err bitreich.org 70 i install: ploot Err bitreich.org 70 i mkdir -p ${PREFIX}/bin Err bitreich.org 70 i cp ploot ${PREFIX}/bin/ploot Err bitreich.org 70 i Err bitreich.org 70 i+.PHONY: clean 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/arg.h b/arg.h /scm/ploot/file/arg.h.gph bitreich.org 70 i@@ -0,0 +1,27 @@ Err bitreich.org 70 i+#ifndef ARG_H Err bitreich.org 70 i+#define ARG_H 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 **_argv, *_a; \ 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+ for (_argv = argv, _a = *argv + 1; *_a != '\0'; _a++) { \ Err bitreich.org 70 i+ switch (*_a) Err bitreich.org 70 i+ Err bitreich.org 70 i+#define ARGEND \ Err bitreich.org 70 i+ if (_argv != argv) \ Err bitreich.org 70 i+ break; \ 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), (char *)0) : (argc--, argv++, argv[0])) Err bitreich.org 70 i+ Err bitreich.org 70 i+#endif Err bitreich.org 70 1diff --git a/ploot.c b/ploot.c /scm/ploot/file/ploot.c.gph bitreich.org 70 i@@ -6,6 +6,7 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include 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 ABS(x) ((x) < 0 ? -(x) : (x)) Err bitreich.org 70 i@@ -13,6 +14,8 @@ Err bitreich.org 70 i #define MAX(x, y) ((x) > (y) ? (x) : (y)) Err bitreich.org 70 i #define LEN(buf) (sizeof(buf) / sizeof(*(buf))) Err bitreich.org 70 i Err bitreich.org 70 i+char *argv0; 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 set pos to Err bitreich.org 70 i ** the next postion. Err bitreich.org 70 i@@ -36,9 +39,9 @@ do { \ 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-int flag_h = 20; Err bitreich.org 70 i-char *flag_t = NULL; Err bitreich.org 70 i-time_t flag_o = 0; Err bitreich.org 70 i+int hflag = 20; Err bitreich.org 70 i+char *tflag = NULL; Err bitreich.org 70 i+time_t oflag = 0; 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@@ -121,13 +124,13 @@ haxis(double *beg, double *end, time_t time) Err bitreich.org 70 i for (tp = beg; tp < end; tp++) Err bitreich.org 70 i putchar((*tp < 0) ? ('x') : ('-')); Err bitreich.org 70 i putchar('\n'); Err bitreich.org 70 i- if (flag_o > 0) { Err bitreich.org 70 i+ if (oflag > 0) { Err bitreich.org 70 i printf("%*c", MARGIN - 1, ' '); Err bitreich.org 70 i strftime(dbeg, sizeof(dbeg), "%Y/%m/%d", localtime(&time)); Err bitreich.org 70 i for (tp = beg; tp < end; tp += 7) { Err bitreich.org 70 i strftime(buf, sizeof(buf), " %H:%M", localtime(&time)); Err bitreich.org 70 i fputs(buf, stdout); Err bitreich.org 70 i- time += flag_o * 7; Err bitreich.org 70 i+ time += oflag * 7; Err bitreich.org 70 i } Err bitreich.org 70 i strftime(dend, sizeof(dend), "%Y/%m/%d", localtime(&time)); Err bitreich.org 70 i printf("\n %-*s %s\n", (int)(beg - end) + 4, dbeg, dend); Err bitreich.org 70 i@@ -271,36 +274,31 @@ main(int argc, char **argv) Err bitreich.org 70 i { Err bitreich.org 70 i time_t tbuf[MAX_VAL], *tend, start; Err bitreich.org 70 i double vbuf[MAX_VAL], *vend; Err bitreich.org 70 i- int c; Err bitreich.org 70 i- Err bitreich.org 70 i- while ((c = getopt(argc, argv, "h:t:o:")) != -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- case 'o': Err bitreich.org 70 i- flag_o = atol(optarg); Err bitreich.org 70 i- break; Err bitreich.org 70 i- default: Err bitreich.org 70 i- usage(); Err bitreich.org 70 i- } Err bitreich.org 70 i- } Err bitreich.org 70 i Err bitreich.org 70 i- if (flag_o == 0) { Err bitreich.org 70 i+ ARGBEGIN(argc, argv) { Err bitreich.org 70 i+ case 'h': Err bitreich.org 70 i+ if ((hflag = atoi(EARGF(usage()))) <= 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+ tflag = EARGF(usage()); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'o': Err bitreich.org 70 i+ oflag = atol(EARGF(usage())); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ usage(); Err bitreich.org 70 i+ } ARGEND Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (oflag == 0) { Err bitreich.org 70 i vend = read_simple(vbuf); Err bitreich.org 70 i start = 0; Err bitreich.org 70 i } else { Err bitreich.org 70 i tend = read_time_series(vbuf, tbuf); Err bitreich.org 70 i- vend = skip_gaps(tbuf, tend, vbuf, flag_o); Err bitreich.org 70 i+ vend = skip_gaps(tbuf, tend, vbuf, oflag); Err bitreich.org 70 i start = *tbuf; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- plot(vbuf, vend, flag_h, flag_t, start); Err bitreich.org 70 i+ plot(vbuf, vend, hflag, tflag, start); Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 .