commit cdd01da820c711fda6ae491e7513c7011115969e
parent c7e2e0c80d4cb55c12d4fa99faba1922d0d9aa36
Author: z3bra <willyatmailoodotorg>
Date: Mon, 5 Oct 2015 13:25:19 +0200
Added 3 environment variables: START, END, SEP
START: Printed before the bar, defaults to brightwhite ANSI escape
END : Printed after the bar, defaults to color reset ANSI escape
SEP : Printed between done/remaining chars, defaults to brightwhite '╋'
Diffstat:
2 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,15 +1,14 @@
-PREFIX:=/usr
+PREFIX:=/usr/local
MANPREFIX:=$(PREFIX)/share/man
-CC := tcc
+CC := cc
LD := $(CC)
CFLAGS += -pedantic -Wall
LDFLAGS +=
BIN = mkb
-SRC = \
- mkb.c
+SRC = mkb.c
OBJ = $(SRC:.c=.o)
diff --git a/mkb.c b/mkb.c
@@ -5,22 +5,31 @@
#include <err.h>
#define DEFAULT_SIZE 32
-#define DEFAULT_CHAR1 "[1;37m▣"
-#define DEFAULT_CHAR2 "[1;30m▣"
+#define DEFAULT_CHAR1 "━"
+#define DEFAULT_CHAR2 "━"
+#define DEFAULT_START "[1;37m"
+#define DEFAULT_END "[0m"
+#define DEFAULT_SEP "╋[1;30m"
int
main (int argc, char **argv)
{
int i;
- float size = 0;
+ float size = 0;
float value = 0;
+ char *end = NULL;
+ char *sep = NULL;
char *char1 = NULL;
char *char2 = NULL;
- char *current = NULL;
+ char *begin = NULL;
+ char **current = NULL;
- size = getenv("SIZE") ? atoi(getenv("SIZE")) : DEFAULT_SIZE;
+ size = getenv("SIZE") ? atoi(getenv("SIZE")) : DEFAULT_SIZE;
char1 = getenv("CHAR1") ? getenv("CHAR1") : DEFAULT_CHAR1;
char2 = getenv("CHAR2") ? getenv("CHAR2") : DEFAULT_CHAR2;
+ begin = getenv("START") ? getenv("START") : DEFAULT_START;
+ end = getenv("END") ? getenv("END") : DEFAULT_END;
+ sep = getenv("SEP") ? getenv("SEP") : DEFAULT_SEP;
if (argc < 2)
scanf("%f", &value);
@@ -30,10 +39,12 @@ main (int argc, char **argv)
if (value > 100)
errx(1, "value should remain between 0 and 100");
+ write(fileno(stdout), begin, strnlen(begin, 32));
for (i=0; i<size; i++) {
- current = (i < value / 100 * size) ? char1 : char2;
- write(fileno(stdout), current, strnlen(current, 32));
+ current = (i < value / 100 * size) ? &char1 : (current == &char1 ? &sep : &char2);
+ write(fileno(stdout), *current, strnlen(*current, 32));
}
+ write(fileno(stdout), end, strnlen(end, 32));
putc('\n', stdout);