File: prop.sh

package info (click to toggle)
libapache-mod-ssl 2.8.22-1sarge1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,208 kB
  • ctags: 1,649
  • sloc: ansic: 13,070; sh: 3,304; lex: 190; makefile: 99; yacc: 97; perl: 11
file content (49 lines) | stat: -rwxr-xr-x 1,153 bytes parent folder | download | duplicates (2)
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
#!/bin/sh
##
##  prop.sh -- process indication though a propeller
##  Copyright (c) 1998-2004 Ralf S. Engelschall, All Rights Reserved. 
##

line="$*"

perl=''
for dir in `echo $PATH | sed -e 's/:/ /g'` .; do
    if [ -f "$dir/perl" ]; then
        perl="$dir/perl"
        break
    fi
done
if [ ".$perl" != . ]; then
    #
    #   Perl is preferred because writing to STDERR in
    #   Perl really writes immediately as one would expect
    #
    $perl -e '
        @p = ("|","/","-","\\"); 
        $i = 0; 
        while (<STDIN>) { 
            printf(STDERR "\r%s...%s\b", $ARGV[0], $p[$i++]);
            $i = 0 if ($i > 3); 
        }
        printf(STDERR "\r%s    \n", $ARGV[0]);
    ' "$line"
else
    #
    #   But when Perl doesn't exists we use Awk even
    #   some Awk's buffer even the /dev/stderr writing :-(
    #
    awk '
        BEGIN { 
            split("|#/#-#\\", p, "#");
            i = 1; 
        } 
        { 
            printf("\r%s%c\b", line, p[i++]) > "/dev/stderr"; 
            if (i > 4) { i = 1; } 
        }
        END {
            printf("\r%s    \n", line) > "/dev/stderr";
        }
    ' "line=$line" 
fi