mkb.c (1291B)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <err.h>
#define DEFAULT_SIZE 32
#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 value = 0;
char *end = NULL;
char *sep = NULL;
char *char1 = NULL;
char *char2 = NULL;
char *begin = NULL;
char **current = NULL;
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);
else
value = atof(argv[1]);
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 : (current == &char1 ? &sep : &char2);
write(fileno(stdout), *current, strnlen(*current, 32));
}
write(fileno(stdout), end, strnlen(end, 32));
putc('\n', stdout);
return 0;
}
|