]> Zhao Yanbai Git Server - minix.git/commitdiff
. don't print error by usyslogd (for on CD)
authorBen Gras <ben@minix3.org>
Thu, 11 Aug 2005 15:17:52 +0000 (15:17 +0000)
committerBen Gras <ben@minix3.org>
Thu, 11 Aug 2005 15:17:52 +0000 (15:17 +0000)
. added progress bar technology to setup script

commands/scripts/setup.sh
commands/simple/Makefile
commands/simple/progressbar.c [new file with mode: 0755]
commands/simple/usyslogd.c

index 4cffc08842d730ea4288cde332a2e14d22c5c443..a9f9e209ce144a21d53e7f8d64911bfe09de08cf 100755 (executable)
@@ -335,7 +335,8 @@ echo ""
 
 mount /dev/$usr /mnt || exit           # Mount the intended /usr.
 
-cpdir -v /usr /mnt || exit             # Copy the usr floppy.
+files="`find /usr | wc -l`"
+cpdir -v /usr /mnt | progressbar "$files" || exit      # Copy the usr floppy.
 
 umount /dev/$usr || exit               # Unmount the intended /usr.
 
index bd23287bd5d950c83d295064a70f834f87479d05..d0eae64aadfb3d7703f67930092557beafaa4a9d 100755 (executable)
@@ -132,6 +132,7 @@ ALL = \
        ping \
        pr \
        pr_routes \
+       progressbar \
        prep \
        printf \
        printroot \
@@ -579,6 +580,10 @@ pr_routes: pr_routes.c
        $(CCLD) -o $@ $?
        @install -S 4kw $@
 
+progressbar:   progressbar.c
+       $(CCLD) -o $@ $?
+       @install -S 4kw $@
+
 prep:  prep.c
        $(CCLD) -o $@ $?
        @install -S 4kw $@
@@ -964,6 +969,7 @@ install:    \
        /usr/bin/ping \
        /usr/bin/pr \
        /usr/bin/pr_routes \
+       /usr/bin/progressbar \
        /usr/bin/prep \
        /usr/bin/printf \
        /usr/bin/printenv \
@@ -1370,6 +1376,9 @@ install:  \
 /usr/bin/pr_routes:    pr_routes
        install -cs -o root -m 4755 $? $@
 
+/usr/bin/progressbar:  progressbar
+       install -cs -o root -m 4755 $? $@
+
 /usr/bin/prep: prep
        install -cs -o bin $? $@
 
diff --git a/commands/simple/progressbar.c b/commands/simple/progressbar.c
new file mode 100755 (executable)
index 0000000..1066032
--- /dev/null
@@ -0,0 +1,63 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+_PROTOTYPE(int main, (int argc, char **argv));
+
+void
+prettyprogress(long b, long maxb, time_t starttime)
+{
+  /* print progress indication */
+  time_t spent, now;
+  long bpsec;
+  time(&now);
+  spent = now - starttime;
+  if(spent > 0 && (bpsec = b / spent) > 0) {
+       int len, i;
+       long secremain, minremain, hremain;
+         secremain = (maxb - b) / bpsec;
+         minremain = (secremain / 60) % 60;
+         hremain = secremain / 3600;
+       len = fprintf(stderr, "Remain %ld files. ETA: %d:%02d:%02d  [",
+               maxb - b,
+               hremain, minremain, secremain % 60);
+#define WIDTH 77
+       len = WIDTH - len;
+       for(i = 0; i < (b * (len-1) / maxb); i++) 
+               fprintf(stderr, "=");
+       fprintf(stderr, "|");
+       for(; i < len-2; i++) 
+               fprintf(stderr, "-");
+       fprintf(stderr, "]\r");
+       fflush(stderr);
+  }
+
+  return;
+}
+
+int main(argc, argv)
+int argc;
+char *argv[];
+{
+       long i = 0, count = 0;
+       char line[2000];
+       time_t start;
+       if(argc < 2) return 1;
+       count = atol(argv[1]);
+       if(count < 1) return 1;
+       time(&start);
+       printf("\n");
+       while(fgets(line, sizeof(line), stdin)) {
+               i++;
+               printf("\e[K%s", line);
+               if(i <= count) prettyprogress(i, count, start);
+               printf("\e[A");
+               fflush(NULL);
+               sleep(1);
+       }
+
+       fprintf(stderr, "\nDone.\e[K\n");
+
+       return 0;
+}
index e012d973459f245776d12cf333f7ce8f0abf7e38..edc3babc9e6bcfa54363ce6bf6779201f9987aaa 100644 (file)
@@ -80,7 +80,6 @@ main(int argc, char *argv[])
        }
 
        if(!(logfp = fopen("/usr/log/messages", "a"))) {
-               perror("/usr/log/messages");
                return 1;
        }