#include #include #include #include #include #include #include #include "disk.h" #include "config.h" char * label; int pbwidth = 0; int tmp1, tmp2, tmp3; void progressbar_init(char * text) { char * x; if (text) label = text; else label = ""; x = getenv("COLUMNS"); if (x) pbwidth = atoi(x); pbwidth -= strlen(label); if (pbwidth < 30) pbwidth = 30; tmp1 = tmp2 = tmp3 = -1; } void progressbar_display(float percent, int opt) { int i1, i2, seq; seq = (int)(percent*4*10) % 4; if (tmp1 == (int)percent && tmp2 == opt && tmp3 == seq) return; tmp1 = (int)percent; tmp2 = opt; tmp3 = seq; printf ("%s: %3d%% |", label, (int)percent); i1 = (pbwidth-8) * percent / 100; for (i2 = 0; i2 < i1; i2++) putchar('='); if (i2 < pbwidth-8) putchar("/|\\-"[seq]); for (;i2=0) printf (" %d ", opt); printf ("\r"); fflush(stdout); } void progressbar_stop(void) { int i2; printf ("%s: 100%% |", label); for (i2 = 0; i2 <= pbwidth-8; i2++) putchar('='); puts("|"); fflush(stdout); } int yesno(char * prompt) { char tmp[1024]; while (1) { printf("%s (y/n): ", prompt); fflush(stdout); fgets(tmp, sizeof(tmp), stdin); if (tmp[0] == 'y' || tmp[0] == 'Y') return 1; if (tmp[0] == 'n' || tmp[0] == 'N') return 0; } }