end=4095
mul=16
for F in up rnd dwn
do
echo "//$F:"
echo " {"
for n from 0 to $end repeat
do
W=$( ti "$F(sqrt($n*$mul))" )
prints ss4ss3s "/*" $n "*/ " $W ,
done
echo " },"
done
M=07 T=07 S=06 m=59
while :
do
touch -t 1999$M$T$S$m.00 t.bish
l t.bish
l t.bish | grep -q 1999 && break
let "--m<0" && break
let "m<10" && m=0$m
done
Crc16() {
local n=00 crc_=0007439 byte=000000
for byte in $Bytes $Bytes
do
prints sf08bsf016b- $((2#, byte)) $((2#, crc_))
for n from 0 to 7 repeat
do
if let "{{crc_&16#8000} ^ {[byte&(1<<n)]<<(15-n)}}&16#ffff"
then
(( crc_= ((((crc_^2064)&2064)<<1)|(crc_<<1))
&((((crc_^2064)&2064)<<1)|~(2064<<1)),
crc_&=16#ffff, crc_|=1
))
else
(( crc_= ((((crc_^~2064)&2064)<<1)|(crc_<<1))
&((((crc_^~2064)&2064)<<1)|~(2064<<1)),
crc_&=~1, crc_&=16#ffff
))
fi
done
prints sf016 $((2#, crc_))
done
return 0
}
for n from 0 to 255 repeat
do
Bytes="$Bytes $n"
done
Crc16
set -f
uc_rc=$HOME/.xinitrc
us_rc=$HOME/.xserverrc
sc_rc=/usr/X11R6/lib/X11/xinit/xinitrc
ss_rc=/usr/X11R6/lib/X11/xinit/xserverrc
[ -s $sc_rc ] && cargs=$sc_rc
[ -s $uc_rc ] && cargs=$uc_rc
[ -s $ss_rc ] && sargs=$ss_rc
[ -s $us_rc ] && sargs=$us_rc
args=cargs
for A in $@
do
[ "$A" == -- ] && args=sargs continue
$args="${{args} $A"
done
sargs=$sargs
ifset sargs || {
pids=$( ps -wajx | grep '[/ ]xinit .*--' | cut -d' ' -f2 )
ps -wajx | grep ' :[0-9]' |
while read - - ppid - - - - - - cmd
do
expr " $pids " :: " $ppid " || continue
expr "$cmd" :dpy '/[^ ]%{1,} %(:[0-9]%)' || continue
expr "$cmd" :cmd '%([^ ]%{1,}%) :[0-9]' || continue
sargs=$cmd displ="$displ$dpy "
done
for dpy from 0 to 9 repeat
do
echo " :$dpy%c"
expr "$displ" :: ":$dpy " || sargs="$sargs :$dpy" break
done
echo
if expr "$sargs" :: '/[^ ]%{1,} :[0-9]'
then echo trying display :$dpy ...; sleep -m 1700
else sargs=''
fi
}
exec xinit $cargs -- $sargs
:
cd /home/bish
b=/home/cie/wms/cgi/bish_folso_cgi
Ccc -o$b -DVBM -DCGI bish.c
mcs -d $b
l $b
echo "hash%nverbose%nopen schellong.com" > Hftp
echo "user u8888888 rrrrrrrr%nbinary" >> Hftp
for Fh in $( cat H )
do
echo $Fh
echo "put $Fh" >> Hftp
<> $Fh
while seek + 0 sk; readl Z
do
expr "$Z" =:: '<table [^>]*WIDTH="150" *HEIGHT="35"[^>]*>' || continue
expr "$Z" =:Z 'WIDTH="150"' = 'WIDTH="150"'
catv Z =$sk,,0.
break
done
while seek + 0 sk; readl Z
do
expr "$Z" =:: '</table>' && break
ow=0
expr "$Z" :Z '%.d5' += '.d6' && ow=1
expr "$Z" =:Z 'width=60' = 'width=72' && ow=1
expr "$Z" =:Z 'width=40' = 'width=48' && ow=1
expr "$Z" =:Z 'width="60"' = 'width="72"' && ow=1
expr "$Z" =:Z 'width="40"' = 'width="48"' && ow=1
[ ow -eq 1 ] && catv Z =$sk,,0.
done
><
done
echo "quit" >> Hftp
headEMAIL='From: post@schellong.com
Reply-To: schellong@t-online.de
MIME-Version: 1.0
To: ~email~
Subject: 1000-fach-WebCounter
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
'
headEMAIL2='From: webmaster@schellong.com
Reply-To: webmaster@schellong.com
MIME-Version: 1.0
To: schellong@t-online.de
Subject: 1000-fach-WebCounter
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
'
Mtxt='
Sehr geehrte/r WebCounter-Kundin/Kunde,
den 1000-fach-Zähler, den Sie verwenden, hatte ich zu Anfang nur
WüW WWWW WWWWWW WWWWWWWWWW, WW WWWW .WWWW-WWWWWWW WWW WWWWWW WWWWWWWW
WWWWWWW WWW WWWWWäWWWW WäWWWW WWW WWWWWWWWWWW WWWWWWWW WW WöWWWW.
WWWW WWWWW WWWWWWW WWWW-WWWW-WäWWWW WWWW WW WWWWW WWWWWWWW.
WW WWW WWWWWWW WWWW WWWWWWWWWWWWWW WWWWWW WWW WWWW WWWWW WWWWW
.WWWW-WWWWWWWWW (WWWWWWWWWWWWWWWWW) üWWW WWWWW WWWWWWWW WWWWWWW
WWW WWWWWWW WWWWWWWWWW WWW WWW WW, WW WWW WWWWW WWWWWWW WWWWW-WäWWWW
WWWW WüW WWW WWWWWWWWWW WöWWW.
WWW WWWWWW - WWW WW WWWWWWWW WWWWWW WäWWWWWWWWWW WWWWW WWWWWWW WWWüWW
WWW WäWWWWWW WWWW WWWWW-WWWWWW WWW ÄWWWWWWWW.
WWWWW WWWWWW ''WWW WWWWWW WWWWWW'' WWWWWW WW WWW WWWWWWWWW WWWWWW
WäWWWW -WWWWWWäWWWWWW WW WWWWWWWWWW- WWW WWWWWWWWWWWWW WWWWWWWWWWWWW
WWWWWWWWWWWWWWW.
WW WWW WW, WWß WWW WWW WWWWWWWWWWWW WWW WWWWWWWWWW WWWWWWWWW WWW WW
WW WWWWWWWWW WWWWWWWWWWWW WWWWWW.
WWWWWWWWWWWW WWWW WWW WWWWWW WWW WWWW W WWWWWWWWW WWWW W-W WWWWWW,
WWW WWWW WWWWWWWWWW WWWWWWWW WW, WWWWäWWWWW WWWWW.
WW WWWWWWWWW WWWW.
WWWW WW WWW WWWWWW WWWWWWWWWW WWWWWW, WWWWW WWW WWW WWWWWWWWWWW
WWWWWWWWWW WWWWWW WäWWWWWWWWWWWW WWWWWWWWWW.
WWW WWWWW WWWW WWWWW WWWWWWWWW WWWW WWWWWWWWW WWW WWWWW WWWWäWWWWWWWWW
WWWW WWWWWWWWWWWW.
WWW WöWWWW WWWWWWWWWWW WWWWWW - WWW WWWW WWW WWWW WWWWW.
WWW WöWWWW WWWWWWW WWW WWWWWW WWWWWWWWWWWWWWWWWWWW WWWWW WWWWWWWWW.WW
WWWWWW, WWW WWWW WW-WWWW WäWWWWWW WWWWWWW WWWW WWW WWWWWWWWW.WWW
- WWW WWWW WWW WWWW WWWW WWWWW.
WWW WöWWWW WWWWW WWWWWWWWW WWWWWWW WWWWWWW WWW WWWWWW WWWWW WWWWWWWWWW
- WWWW WWWW WWW WWWäWWW WWW WWWWW.
WWW WWW WWWW WWWWWW WWWWWWWWWW, WWß WWWWWWWWWW WäWWWWWWWWWW WWWWWWWWWWWW
WWWWWW WäWWWWWWWWWW WWWWWWWWWWWWWWW!
WWW WWWWWW WWWW WWW WW WWWWWWWWWW WWWWW WWW, WW WWW WWWW WWWWWW WWW
''WWWWWWüWWWW'' WWWWWWWWWW WüWWW.
WWWW WWW WWWWWWW WWWWWW WWWWWW WWWWWW WWW WWWW-WWWW-WWWWWWW WWW WWW,
WWWWW WWW WWW WWWW WWW WWW WWWW WöWWWWWWW WWWWWWW WWWWWW WWW WWW WWWW
WWWWW WäWWWWWWWWWWWW WWWWWWWWWWWW WWWWW.
WWWWWWWW WäWW WW WWWWWWWW WWWWW WWWWWW, WWWW WWWWWW WWWW WäWWWWWWWWWWW
WWWWWWWWWW WWWWW WWWW WWWWWWWWWWWWWWW WüWWW.
WWWWWWWWW WWWW WWW WWWWWW WWWWWWWWWWWWW WäWWWWWWWWWW WWWWWWWWWWW
WWWWWWWW, WWWW WWW WWWWW WWWWWW WWWß, WWW WWWW WWWWWWWW WWWWWW WWWWW
WWW WWW WWWWWWW WWWW WüW WWWWWWWWWW WWWWWWWW.
WWW WWWWW WWW WWWW WWWW WWWWWWWW WWWWW, WW WWW WWW WWWWWW WWWWWWWWW
WWWW WWWWW WWWWWWWWW.
Mit freundlichen Grüßen
Helmut Schellong
'
for z in $( grep '[^@ ]%{1,}@[^@ ]%{1,}' K )
do
ifset z || continue
expr "$z" :z '[| ]' += ''
echo sendmail "$z"
expr "$headEMAIL" :Hbuf '~email~' = "$z"
catv Hbuf Mtxt | /etc/mail/sendmail "$z"
done
catv headEMAIL2 Mtxt | /etc/mail/sendmail "schellong@t-online.de"
local n=0000 rand1=00000 rand2=00000
> Rand
while [ n -lt 1000 ]
do
rand1=$RANDOM
[ rand1 -lt 200 ] || continue
rand2=$RANDOM
[ rand2 -lt 200 ] || continue
let ++n
echo $rand1 $rand2
done
><
v1="80 c0 ff 41 81 bf 00 42 82 c2 01 3f 7f c1 02 44 84 c4 03 45 85 c3 04 3e 7e be"
v2="0f cf 92 4f 12 d4 95 4e 15 d5 78 39 f8 ba 97 4c fb bb 96 3b 16 e0 a0 b2 22 e1"
i=0
for b in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
do
let ++i,ii=0
for v in $v1
do
let "++ii==i" && { d=$(catv /$b | base -b +10)
let "v=16#$v"
prints sss3ssf08ssf02ss3ssf08 $b : $d : $((2#,d)) " " %
$((16#,v)) : $v : $((2#,v))
}
done
done
echo %n
i=0
for b in AA BB CC DD EE FF GG HH II JJ KK LL MM NN %
OO PP QQ RR SS TT UU VV WW XX YY ZZ
do
let ++i,ii=0
for v in $v2
do
let "++ii==i" && { d=$(catv /$b =1,1 | base -b +10)
let "v=16#$v"
prints sss3ssf08ssf02ss3ssf08 $b : $d : $((2#,d)) " " %
$((16#,v)) : $v : $((2#,v))
}
done
done
cd a
a=*.LST
cd ../b
b=*.LST
cd ..
mkdirs a1 b1
for B in a b
do
for F in ${{B}
do
echo $B/$F ...
> ${B}1/$F
< $B/$F
while readl zeile
do
expr "$zeile" :: '^CO ' && {
expr "$zeile" :zeile '^%(.%{32}%)'
catv zeile /%n
}
done
><<
done
done
read "script? Script(s) *.scr angeben: "
[ -e sym.scr ] || : > sym.scr
[ -e pac.scr ] || : > pac.scr
[ -e dev.scr ] || : > dev.scr
:>add.log
for scr in $script
do
[ "$scr" == sym.scr -o "$scr" == pac.scr -o "$scr" == dev.scr ] &&
continue
read "prefix? Prefix für $scr [pre|Q]: "
[ "$prefix" == Q ] && continue
z=start
< $scr
while readl zeile
do
expr "$zeile" :nam '^Edit %([^ .]%{1,%}%)%.sym' && {
z=sym; of=sym.scr; pre=""
}
expr "$zeile" :nam '^Edit %([^ .]%{1,%}%)%.pac' && {
z=pac; of=pac.scr; pre=$prefix
}
expr "$zeile" :nam '^Edit %([^ .]%{1,%}%)%.dev' && {
z=dev; of=dev.scr; pre=$prefix
}
[ $z == start ] && {
expr "$zeile" :num '^Layer *%([0-9]%{1,%}%)' &&
let "num<100" && continue
catv zeile /%r%n >> sym.scr
catv zeile /%r%n >> pac.scr
catv zeile /%r%n >> dev.scr
continue
}
[ $z == cancel ] && continue
[ $z == sym -o $z == pac -o $z == dev ] &&
grep -q "^Edit $pre$nam%.$z" $of && {
print -r "$scr-!->$of: $pre$nam.$z" >> add.log
z=cancel; continue
}
case "$z" in
sym|pac|dev) expr "$zeile" :zeile "$nam" "$pre&"
z=${z}2; print -r "$zeile" ;;
sym2|pac2) : ;;
dev2) expr "$zeile" :zeile '%(Package ''%)%([^'']%)' %
'%1'"$pre"'%2'
;;
esac
catv zeile /%r%n >> $of
done
><
done
dirs=$( list -dp /home2 )
expr "$dirs" :dirs '/home2/All' = ''
local f=000000
list -fpR $dirs |
while let "++f<=10000" && readl F
do
link -s "$F" /home2/All/$f
done
remove -s /u/all.zip
zip /u/all.zip %
/dos/cie/mc/c/lib/*.* %
/dos/cie/mc/c/mu1000c/*.* %
/dos/cie/mc/c/mu1000c200/*.* %
/dos/cie/mc/c/mu2000c/*.* %
/dos/cie/mc/c/mu2000cFR/*.* %
/dos/cie/mc/c/mu2doc/*.* %
/dos/cie/mc/c/mu2siemens/*.* %
/dos/cie/mc/c/pms300/*.* %
/dos/cie/mc/c/tds/*.*
ls -l /u/*.zip
OFILE=bish_anz.out
NAM="Helmut Schellong%r"
STR="Pestalozzi-Straße 72%r"
ORT="32108 Bad Salzuflen%r"
TEL="Tel (05222) 82513 ù Fax 84540%r"
YMAX=2710 XMAX=1980
start() {
echo "%eE%e&a9L%e&k2G%e*t600R%e%1Binsc0,4,0,4,2;
sd1,341,2,1,4,10,5,0,6,3,7,4148ss;
DT³,1sp1wu0pw0.0lo2;
rf1,10,8,1,%c" >> $OFILE
echo "1,1,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,1,1,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "1,1,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,1,1,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,;" >> $OFILE
echo "PUpa0,0;" >> $OFILE
}
init() {
M=$1
AH=$((1280*M)) AB=$((430*M))
RDEC=$((7*M))
XY0=$(([XMAX-AB]-900)),$(([YMAX-AH]/2))
E1=$((30*M)) E2=$((45*M)) EB=$((10*M))
RO=$((12*M)) RU=$((12*M)) RLR=$((12*M)) RAD=$((50*M))
}
ecken() {
echo "
pa$XY0;rr-$E1,-${EB}rr$E2,-${EB}rr-$EB,-${E1}rr-$EB,$E2;
pr$AB,0rr-$E2,-${EB}rr$E1,-${EB}rr$EB,-${E1}rr$EB,$E2;
pr0,$AH;rr-$E2,${EB}rr$E1,${EB}rr$EB,-${E2}rr$EB,$E1;
pr-$AB,0rr-$E1,${EB}rr$E2,${EB}rr-$EB,-${E2}rr-$EB,$E1;
" >> $OFILE
}
rahmen() {
echo "
pa$XY0;pr$RDEC,$RDEC;rr$((AB-RDEC*2)),$((AH-RDEC*2));
pr$RLR,$((RU+RAD))pm0pr0,$((AH-RDEC*2-RAD*2-RU-RO));
ar$RAD,0,-90,0.5pr$((AB-RDEC*2-RAD*2-RLR*2)),0ar0,-$RAD,-90,0.5;
pr0,-$((AH-RDEC*2-RAD*2-RU-RO))ar-$RAD,0,-90,0.5;
pr-$((AB-RDEC*2-RAD*2-RLR*2)),0ar0,$RAD,-90,0.5pm2tr0ft10,0fptr;
" >> $OFILE
[ $M = 1 ] && echo "pa$XY0;ft11,1rr$AB,$AH;ft1;" >> $OFILE
}
abs() {
local rad=25 abs=6 ybr=10 neig=15 y
y=$(([rad*2-abs*2-ybr]*M))
echo "
sd4,$((8*M)),5,4lo14pa$XY0;pr$((AB/2)),$((RDEC+RU+10*M));
lb$TEL³pr0,$((28*M))sd4,$((8*M)),5,0lb$ORT³pr0,$((27*M));
lb$STR³pr0,$((27*M))lb$NAM³sd4,$((12*M));
pr0,$((27*M+32*M))pm0ci$((rad*M)),0.5pm2ft1fp;
pr0,$(([rad-abs]*M))pm0;
pr0,-$((ybr*M)),$((neig*M)),-$y,0,$((ybr*M)),-$((neig*M)),$y;
pm2ft10,0tr0fp
pr0,-$(([rad-abs]*2*M))pm0;
pr0,$((ybr*M)),-$((neig*M)),$y,0,-$((ybr*M)),$((neig*M)),-$y;
pm2fpft1tr1;
" >> $OFILE
}
text() {
local my=25
echo "
sd4,$((22*M)),5,4lo16pa$XY0;pr$((AB/2)),$((AH-RDEC-RO));
lbDOS...UNIX%r³pr0,-$((94*M));
sd4,$(mulfp 11 $M)lo6;
WWWWWWW-WWWWWWWW ¯WWW®%W³WWW,-$((WW*W));
WWWWWW~DWW WWWW WW~AWWW.%W³WWW,$(WWWWW WW $W)WWW,-$((WW*W));
WWWWWWW W~AW WWWWWWWWW WWW%W³WWW,-$((WW*W));
WWWWWWWWWW WWWWWWWW WWWWWWW.%W³WWW,-$((WW*W));
WWWWWWWWWWWW WWW WWWW-WWW.%W³WWW,-$((WW*W));
WWWWWWWWWW WWW WW WWW-WWWW%W³WWW,-$((WW*W));
WWWWWWWWWWW WWW WWWWWW WWWWWW!%W³WWW,-$((WW*W));
WWW,$(WWWWW W.WW $W),W,WWWWWW-$((WW/W-WWWW-WWW-WW*W)),W;
WWþ WWWWWWWWWWWWW WWWWW~AWWW WWW WWWWWWWW%W³WWW,-$((WW*W));
WWþ WWWWW WWWWWW WWWWWWWWW%W³WWW,-$((WW*W));
WW ( WWWWW,WWWWWW; WWWWWWWWW- W. WWWWW-WWWWW )%W³WWW,-$((WW*W));
WWþ WWWW-WWWW-WWWWWWWW-WWWWWWWWWW &|%W³WWW,-$((WW*W));
WWþ WWWWWWWWWWWWWW-WWW-WWWWWWWW%W³WWW,-$((WW*W));
WWþ WWW-WWWW-WW-WW-WWWWWW-WWWWWWWW%W³WWW,-$((WW*W));
WWþ WWWW,WWWW,WW,WWW,WWW,WW,WWW,... WWWWWW!%W³WWW,-$((WW*W));
WWþ WWWWWWW WWWWWWWWWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWWWWW~DWWWW WWWWWWW WWWWWWWWWWW%W³WWW,-$((WW*W));
WWþ WW WWWWWW WW-WWWW WWWWWWWWW WWW WWW. WW.%W³WWW,-$((WW*W));
WWþ WWWWWW WWWWWWWWWWWWWWW WWWWWWWWWWWWWWW%W³WWW,-$((WW*W));
WWþ WW~TáWW-WWWWWW W WWWWWWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWW W~AW WWWWWWWWWWW WWWWWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWWWWW WWWWWWWWWWWWWW-WWWWWW%W³WWW,-$((WW*W));
" >> $WWWWW
WWWW "
WWþ WWWWWWWWWWW~DWWWWWW W-WWW-W~DWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWW WWWWWWW WWWWWWWWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWWWWWWWWW ù WWWWW. >WWWW%W³WWW,-$((WW*W));
WWþ WWWWWWWWWWW WWW,WW,WW,WW,... WWWW~AWWWW%W³WWW,-$((WW*W));
WWþ WWWWWWW WWWWWWWWW W~AW WWW WWW WWW-WWWW%W³WWW,-$((WW*W));
WWW,$(WWWWW W.W $W),W,W;
WWWWW WW.WW : WW WWW,-- / WW,--%W³WWW,-$((WW*W));
WWWWW. WWWW. : WW WW WW,--%W³WWW,-$((WW*W));
WWW,W;
WWWWWWW-WWWWWW WWW~AWW. WW% WWWW%W³WWW,-$((WW*W));
WWWWW~AWWW W. WWWWWWWWW WW% WWWWWWá%W³WWW,-$((WW*W));
WWW,W;
WWWWWWWWWWWW WWWW WWWWW WWWWWWW.%W³WWW,-$((WW*W));
WWW~AWWWWWWWWWW òWW/WWW.%W³WWW,-$((WW*W));
WWWWWW/WWWW-WWWWWWWW WWWWW WW WW.%W³WWW,-$((WW*W));
" >> $OFILE
}
M1txt() {
echo "
pa$XY0;pr$((AB+200)),$AH;lo3sd4,28,5,0,6,3;
lbM $M:1%r%n³sd4,12,5,4,6,0;
lbDies ist nur ein Anschauungsbeispiel im%r%n³
lbOriginal-Maástab.%r%n³
lbAls Auflichtvorlage verwenden Sie bitte%r%n³
lbdie gr~Táere Beilage M 2:1.%r%n³
lbDer Grauton zeigt die einfarbige%r%n³
lbUnterlegung der Anzeigenfl~Dche.%r%n³
lbAnzeigenh~The = 128 mm%r%n³
lbAnzeigenbreite = 43 mm%r%n³
lbFarbprobe (gelb) aus iX:%r%n³
" >> $OFILE
}
MXtxt() {
echo "
pa$XY0;pr$((AB+200)),$AH;lo3sd4,28,5,0,6,3;
lbM $M:1%r%n³sd4,12,5,4,6,0;
lbBitte als Auflichtvorlage verwenden.%r%n³
lbDie Eckenkreuze begrenzen die gekaufte%r%n³
lbAnzeigenfl~Dche und sind nicht%r%n³
lbBestandteil dieser Fl~Dche.%r%n³
lbAnzeigenh~The = 128 mm (M1:1)%r%n³
lbAnzeigenbreite = 43 mm (M1:1)%r%n³
lbDie Anzeigenfl~Dche soll einfarbig%r%n³
lbunterlegt werden.%r%n³
lbFarbprobe (gelb) aus iX:%r%n³
" >> $OFILE
}
end_gl() {
echo '%e%%0A%c' >> $OFILE
}
mulfp() {
local ganz mul nn x nnx
expr $1 :: '.*%.' || { let "x=$1*$2"; echo $x%c; return; }
ganz=`expr $1 : '^%(.*%)%.'`
mul=`expr $1 : '^.*%.%([0-9]*%)0*$'`
nn=${#mul}
let "x=$ganz$mul*$2"
nnx=${#x}
echo `expr $x : '^%(.%{'$((nnx-nn))'%}%)'`.%c
echo `expr $x : '^.%{'$((nnx-nn))'%}%(.*%)$'`%c
return
}
read "maástab? Maástab: " rest
[ "$maástab" = 1 ] && {
echo %c > $OFILE
start
init 1
ecken
rahmen
abs
text
M1txt
end_gl
echo '%eE%c' >> $OFILE
cat $OFILE >> $DRUCKER
}
[ "$maástab" -gt 1 ] && {
echo %c > $OFILE
start
init $maástab
ecken
rahmen
abs
text
MXtxt
end_gl
echo '%eE%c' >> $OFILE
cat $OFILE >> $DRUCKER
}
[ -f $OFILE ] && rm $OFILE
Err() {
print -u2 "ERR: $1"
exit 1
return 0
}
set L:' '50
set E:.100
set D:.100
set R:.100
RA='^#define [^"]%{1,}_%d%d%d_'
z=e
n=-00001
cat texts256.h | {
> /tmp/_ps_txt
while readl Z
do
ifset Z || continue
case $z in
e)
expr "$Z" :E "$RA"'en %{1,3}"%([^"]%{1,}%)"' || continue
z=d
;;
d)
expr "$Z" :D "$RA"'de %{1,3}"%([^"]%{1,}%)"' || Err de
z=r
;;
r)
expr "$Z" :R "$RA"'ru %{1,3}"%([^"]%{1,}%)"' || Err ru
z=e
expr "$E" :E "'" += "''"
expr "$D" :D "'" += "''"
expr "$R" :R "'" += "''"
let "e=40-${#E}" "d=40-${#D}" "r=40-${#R}" "++n"
catv ". ( '" E ".', " $e,L %
".'" D ".', " $d,L %
".'" R ".' " $r,L ".)," /%n
;;
esac
done
><
}
> "array.pas"
echo '%n(*Eventuell letztes Komma löschen*)'
echo '%nconst%nERRMESG : array[0..'"$n"'] of array[0..2] of string = ('
cat /tmp/_ps_txt
echo ");%n"
><
[ -s "$1" ] || { print -u2 "Keine (gueltige) Datei: '$1'"; exit 1; }
set -f
asm1='
.PROGRAM ~nameteil~
.TITLE ~nameteil~
; Erzeugt von ash.bish: ~datetime~
.section IOBASE, IO, locate=0x0000
'
asm2='
.section IOXTND, DATA, locate=0x~extend~
'
h1='
#ifndef __MB90XXX_H
# define __MB90XXX_H
/*
- Please define __IO_NEAR in LARGE and COMPACT memory model, if the default
data bank (DTB) is 00. This will result in better performance in these
models.
- Please define __IO_FAR in SMALL and MEDIUM memory model, if the default
data bank (DTB) is other than 00. This might be the case in systems with
external RAM, which are not using internal RAM as default data area.
- Please define neither __IO_NEAR nor __IO_FAR in all other cases. This
will work with almost all configurations.
*/
#if defined(byte) || defined(word) || defined(dword)
# error "byte/word/dword definiert!"
#endif
# ifdef __IO_NEAR
# ifdef __IO_FAR
# error __IO_NEAR and __IO_FAR must not be defined at the same time
# else
# define ___IOWIDTH __near
# endif
# else
# ifdef __IO_FAR
# define ___IOWIDTH __far
# else /* specified by memory model */
# define ___IOWIDTH
# endif
# endif
# ifdef __IO_DEFINE
# define __IO_EXTERN
# define __IO_EXTENDED volatile ___IOWIDTH
# else
# define __IO_EXTERN extern /* for data, which can have __io */
# define __IO_EXTENDED extern volatile ___IOWIDTH
# endif
typedef unsigned char IO_BYTE;
typedef unsigned short IO_WORD;
typedef unsigned long IO_LWORD;
typedef const unsigned short IO_WORD_READ;
'
mktemp Tmpf1
mktemp Tmpf2
mktemp Tmpf3
Err() {
[ $# -gt 0 ] && print -u2 "ash.bish: ERROR: '$*'%n >>>$zeile<<<"
remove $Tmpf1 $Tmpf2 $Tmpf3
[ $# -eq 0 ] && exit 0
exit 1
return
}
PrGlob() {
local n=1 v=.. g1 g2 g3 g4
echo >> $Tmpf1
for 4 g1 g2 g3 g4 in $Glob
do
conv -l g1 g2 g3 g4
for n from 1 to 4 repeat
do
v=g$n
ifset g$n && g$n="__${{v}"
ifset g$((n+1)) && g$n="${{v}, "
done
prints ss-18s-18s-18s-18 " .GLOBAL " %
"$g1" "$g2" "$g3" "$g4" >> $Tmpf1
done
echo >> $Tmpf1
Glob=''
return
}
MkBitF() {
local bf=,,,,,,,, bfc0=,,,,,,,, bfc=,,,,,,,,
local b=00 b2=00 d=00 d0=00
BitFc='' bfc0=''
for bf in $BitF
do
let ++b
expr "$bf" :bfc '^%(..*%)%d$' && expr "$bf" :d '%(%d%)$' && {
let "d-d0==1" && [ "$bfc0" == "$bfc" ] && { d0=$d
let "b2==0" && { b2=1
let "(b-=2)>0" && BitFc="$BitFc . $b"
b=2
}
continue
}
let b2 && BitFc="$BitFc $bfc0 $((b-1))" b=1
bfc0=$bfc d0=$d b2=0
continue
}
let b2 && BitFc="$BitFc $bfc0 $((b-1))" b=1
bfc0='' d0=0 b2=0
done
ifset BitFc && {
let b2 && BitFc="$BitFc $bfc0 $b"
let !b2 && BitFc="$BitFc . $b"
for 2 bf b in $BitFc
do
[ "$bf" != . ] && expr "$BitF" :: "%<$bf%>" && { BitFc='' ; return 1; }
done
return 0
}
return 1
}
prints vs300 zeile
expr "$1" :ifn '^%(..*%)%.[^.]%{1,}$' || ifn="$1"
tz -2
time=$(systime -t)
expr "$asm1" :asm1 '~nameteil~' += "_$ifn"
expr "$asm1" :asm1 '~datetime~' = "$time"
catv asm1 >> $Tmpf1
echo "%n/* Erzeugt von ash.bish: $time, $ifn */" >> $Tmpf3
catv h1 >> $Tmpf3
extend=0000
adr=00000000
siz=00000001
siz2=00000000
arr=00000000
arr1=00000000
arr2=00000000
nam=..........
namu=..........
nam0=............
org=........
extrn=...........................
typ=................
typ2=................
typ20=................
typ21=................
type=................
prints vs2500 Glob
prints vs300 BitF
prints vs300 BitFc
Glob=''
nbitf=000 n=00000000 rb=000
local adrlim=00000255 mk=.............. ak=..............
local ab=.............. ar=.............. s=00000000
PrBitFields() {
local nn="$1" nk="$2" typ="$3"
local n=.......... un=.......... s=00
[ -n "$nn" ] && let "arr>=10&&nn<10" && nn=0$nn
prints s-17s14s "#define" "$namu$nn" " _$nam$nk.$typ"
{
for n in $BitF
do
expr "$n" :: '[.-]' && continue
un=$n conv -u un
[ $n == int ] && n=_int
prints s-9s-24s "#define" $namu${nn}_$un " _$nam$nk.bit.$n"
done
}
for 2 n s in $BitFc
do
expr "$n" :: '[.-]' && continue
un=$n conv -u un
[ $n == int ] && n=_int
prints s-9s-24s "#define" $namu${nn}_$un " _$nam$nk.bitc.$n"
done
echo
}
GetZeile() {
local z=' '
while readl zeile
do
ifset zeile || continue
expr "$zeile" =:extend '^EXT:%(....%)$' && continue
expr "$zeile" :: '^[+0-9]' || continue
while expr "$zeile" :zeile '^%(..*%)[ %t]*+%{1,}$'
do
readl z || break
zeile="$zeile $z"
done
return 0
done
return 1
}
PutBF() {
local w="$1" a=00 b=00
expr "$w" :a '(%(%d%{1,}%),%d%{1,})$'
expr "$w" :b '(%d%{1,},%(%d%{1,}%))$'
expr "$w" :w '^%([^(]%{1,}%)('
let "${#w}>6" && Err "Bitfeld-Name zu lang [6]: '$w'"
while :
do
BitF="$BitF $w$a"
let ++nbitf "a==b" && break
let "a<b" && let ++a
let "a>b" && let --a
done
return
}
DataFromZeile() {
local cas=adr w=.....................
for w in $zeile
do
case "$cas" in
adr) cas=nam
expr "$w" :: '^+$' && continue
expr "$w" :: '^[0-9][0-9a-fA-F]*$' && {
let "16#$w==adr" && continue
let "16#$w<adr" && let "siz=adr-16#$w"
let "adr=16#$w"
org=$w
continue
}
;,
nam) expr "$w" :: '^[a-zA-Z_]%w*$' || Err "$w"
cas=siz
let "${#w}>14" && Err "Name zu lang [14]: '$w'"
nam=$w
conv -l nam
[ "$nam" == "$nam0" ] && Err "Doppelt: $nam"
nam0="$nam"
Glob="$Glob $w"
;;
siz) cas=arr
expr "$w" :: '^%d$' && { siz=$w ; continue; }
expr "$w" :siz '^%(%d%):%d$' &&
expr "$w" :siz2 '^%d:%(%d%)$' && continue
;,
arr) cas=bit
expr "$w" :arr '^%(%d%{1,2}%)' &&
expr "$w" :w '^%d%{1,2}%(.*%)$'
expr "$w" :arr1 '^(%(%d%{1,2}%))$' && continue
expr "$w" :: '^(%d%{1,2},%d%{1,2})$' && {
expr "$w" :arr1 '%(%d%{1,}%)'
expr "$w" :arr2 ',%(%d%{1,}%))$'
continue
}
[ "$arr" != 0000 ] && continue
;,
bit) expr "$w" :: '^[a-zA-Z_]%w*(%d%{1,2},%d%{1,2})$' && {
PutBF "$w" ; continue
}
expr "$w" :: '^[-.a-zA-Z_]%w*$' || Err "$w"
expr "$w" :: '^[-.].' && Err "$w"
let "${#w}>6" && Err "Bitfeld-Name zu lang [6]: '$w'"
BitF="$BitF $w"
let ++nbitf
;;
*) Err Interner Fehler ;;
esac
done
[ "$cas" == adr -o "$cas" == nam ] && Err "$zeile"
[ "$cas" == bit ] && {
let "nbitf>0&&(siz2==0&&nbitf!=siz*8||siz2!=0&&nbitf!=siz2*8)" &&
Err "Anzahl:$BitF"
conv -l BitF
}
return
}
< "$1"
while GetZeile
do
BitF='' org=''
nbitf=000 arr=0000 arr1=00 arr2=00
siz=1 siz2=0
DataFromZeile
let "siz!=1&&siz!=2&&siz!=4" && Err "sz==$siz"
let "siz2!=0&&siz2!=1&&siz2!=2&&siz2!=4" && Err ":sz2==$siz2"
let "siz2>=siz" && Err "sz:sz $siz<=$siz2"
let "adrlim>0&&adr>adrlim" && { adrlim=0
let "16#$extend<256" && Err "EXT:hhhh-Zeile fehlt"
expr "$asm2" :asm2 '~extend~' = "$extend"
PrGlob
cat $Tmpf2 >> $Tmpf1
: > $Tmpf2
catv asm2 >> $Tmpf1
}
ifset org && prints sbssf04 " .org" 0x $org >> $Tmpf2
s=$siz
let arr && let "s*=arr"
let arr1 && let "s*=arr1"
let arr2 && let "s*=arr2"
prints s-17sbs __$nam .res.b $s >> $Tmpf2
let "adr+=s"
extrn="__IO_EXTERN __io"
let "adr-s>255" && extrn="__IO_EXTENDED "
let siz==1 && typ=IO_BYTE typ2=byte
let siz==2 && typ=IO_WORD typ2=word
let siz==4 && typ=IO_LWORD typ2=dword
let siz2==1 && typ20=IO_BYTE typ21=byte
let siz2==2 && typ20=IO_WORD typ21=word
let siz2==4 && typ20=IO_LWORD typ21=dword
ar= mk= ak= ab= rb=14
let "arr" && ar="[$arr]"
let "arr1" && mk="(a)" ak="[$arr1]" ab="[a]" rb=19
let "arr2" && mk="(a,b)" ak="[$arr1][$arr2]" ab="[a][b]" rb=19
namu="$nam"
conv -u namu
>> $Tmpf3
let "nbitf==0&&siz2==0" && {
prints s-17s${rb}sss "$extrn" $typ " _$nam" "$ar$ak" ";"
let "!arr" && {
prints s-17s${rb}ssn "#define" $namu$mk " _$nam" "$ab"
>< ; continue
}
for n from 0 to 0$((arr-1)) repeat
do
let "arr>=10&&n<10" && n=0$n
prints s-17s$((rb+2))ss "#define" $namu$n$mk " _$nam" "[$n]$ab"
done
echo
>< ; continue
}
let "nbitf==0&&siz2!=0" && {
echo "typedef union {"
echo " $typ $typ2;"
echo " $typ20 $typ21;"
echo "} ${namu}_t;"
prints s-17s${rb}sss "$extrn" ${namu}_t " _$nam" "$ar$ak" ";"
let "!arr" && {
prints s-17s${rb}sn "#define" $namu$mk " _$nam$ab.$typ21"
>< ; continue
}
for n from 0 to 0$((arr-1)) repeat
do
let "arr>=10&&n<10" && n=0$n
prints s-17s$((rb+2))s "#define" $namu$n$mk " _${nam}[$n]$ab.$typ21"
done
echo
>< ; continue
}
let arr1 && Err "Operation nicht moeglich: $ar$ak"
type=$typ
echo "typedef union {"
echo " $typ $typ2;"
let siz2 && type=$typ20 && echo " $typ20 $typ21;"
{
echo " struct {"
for n in $BitF
do
expr "$n" :: '[.-]' && n=''
[ "$n" == int ] && n=_int
prints ss10s7s " " $type "$n" ":1;"
done
echo " } bit;"
}
MkBitF && {
echo " struct {"
for 2 n s in $BitFc
do
expr "$n" :: '[.-]' && n=''
[ "$n" == int ] && n=_int
prints ss10s7s " " $type "$n" ":$s;"
done
echo " } bitc;"
}
echo "} ${namu}_t;"
prints s-17s16sss "$extrn" ${namu}_t " _$nam" "$ar" ";"
type=$typ2
let siz2 && type=$typ21
let arr && {
for n from 0 to 0$((arr-1)) repeat
do
PrBitFields $n "[$n]" $type
done
}
let !arr && PrBitFields "" "" $type
><
done
><
echo " .end%n" >> $Tmpf2
PrGlob
cat $Tmpf2 >> $Tmpf1
cat $Tmpf1 > $ifn.asm
>> $Tmpf3
echo "#define IDRw(i,v) (IDR(i)=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define IDRr(i) ((IDR(i)<<8|IDR(i)>>8)>>5)"
echo "#define AMR0w(v) (AMR0=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR0r ((AMR0<<8|AMR0>>8)>>5)"
echo "#define AMR1w(v) (AMR1=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR1r ((AMR1<<8|AMR1>>8)>>5)"
echo
echo "#define IDR0w(i,v) (IDR0(i)=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define IDR0r(i) ((IDR0(i)<<8|IDR0(i)>>8)>>5)"
echo "#define AMR00w(v) (AMR00=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR00r ((AMR00<<8|AMR00>>8)>>5)"
echo "#define AMR10w(v) (AMR10=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR10r ((AMR10<<8|AMR10>>8)>>5)"
echo
echo "#define IDR1w(i,v) (IDR1(i)=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define IDR1r(i) ((IDR1(i)<<8|IDR1(i)>>8)>>5)"
echo "#define AMR01w(v) (AMR01=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR01r ((AMR01<<8|AMR01>>8)>>5)"
echo "#define AMR11w(v) (AMR11=(((v)<<5)<<8|((v)<<5)>>8))"
echo "#define AMR11r ((AMR11<<8|AMR11>>8)>>5)"
><
echo "%n#endif%n" >> $Tmpf3
cat $Tmpf3 > $ifn.h
Err
exit 0
set -f
MUanrufen() {
local telnu=$1 ch=00 offs=00000 cksum:010 ring="RING$RN.........."
while :
do
case $AnrufZ in
dialout)
[ MOwahl -eq 0 ] && AnrufZ=getdata continue
let "$SECONDS-DOtime<=40" && { sleep 2; continue; }
WriteAT "$MOdialout" "$telnu" || DOtime=$SECONDS break
AnrufZ=waitpass TOsec=$SECONDS DOtime=0
;;
waitpass)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=pass
;;
pass)
com -it400id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD:' || break
ring="@DK40mopas"
com -cot50od10o10 ring
sleep -m 150
com -ocot30od10o2 RN
AnrufZ=waitpassok TOsec=$SECONDS
;;
waitpassok)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=passok
;;
passok)
com -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD %{1,3}OK' || break
AnrufZ=getdata
;;
getdata)
[ Status -eq 2 ] && AnrufZ=writecfg continue
[ Status -eq 3 ] && AnrufZ=readcfg continue
GetMUdata $Fmustatus Nn dk40 || {
echo "$Nn Bytes"
[ MOwahl -eq 0 ] && break
ring=@EN:
com -cot30od10o4 ring
break
}
echo "$Nn Bytes"
AnrufZ=data
;;
data)
MUkategorie_c $Fmustatus
cat $Fmustatus > $MUdir/stat
[ ! -e "$MUdir/lock" -o ! -s "$MUdir/eepr" ] && AnrufZ=readcfg continue
[ MOwahl -eq 0 ] && AnrufZ=0 goend
AnrufZ=mowrite continue
;;
mowrite)
ring=@EN:
sleep -m 400
com -cot50od10o4 ring
echo @EN: = $.
AnrufZ=waitmoend TOsec=$SECONDS
;;
waitmoend)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=moend
;;
moend)
com -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'Connection %{1,3}aborted' || break
AnrufZ=0
;;
dialin)
WriteAT "$MOabnehmen" || break
AnrufZ=getokayfail
;;
getokayfail)
GetMUdata $Fokayfail Nn rdonly || break
echo "$Nn Bytes"
AnrufZ=okayfail
;;
okayfail)
AnrufZ=0
;;
writecfg)
sum -w cksum < $MUdir/eepr
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
ring=129
base -10 ring +b ch
ring=@PC:
com -cot40od10o4 ring
com -it400id20i1 Ibuf
catv 1,Ibuf /%j
com -cot30od10o1 ch
com -it400id10i1 Ibuf
catv 1,Ibuf /%j
catv 2048,0 =Hbuf < $MUdir/eepr
for offs from 0 by 32 to 2016 repeat
do
com -cot80od10oO${offs}o32 Hbuf
com -it600id20i1 Ibuf
catv 1,Ibuf
done
com -cot30od10o2 cksum
com -it400id10i2 ring
echo
catv 2,cksum =cksum:
catv 2,ring =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || break
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=0
;;
readcfg)
ring=128
base -10 ring +b ch
ring=@PC:
com -cot40od10o4 ring
com -it400id20i1 Ibuf
catv 1,Ibuf /%j
com -cot30od10o1 ch
com -it3500id20i2050 Ibuf
echo $.
catv 2048,Ibuf > ../tmp/eeprin
sum -w cksum < ../tmp/eeprin
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
com -cot30od10o2 cksum
catv 2,cksum =cksum:
catv 2048,2,Ibuf =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || break
mucrc cksum Ibuf 2 1898 || break
catv 0,2,Ibuf =ring:
base -w ring +10 ring
echo "$cksum : $ring"
[ cksum -ne ring ] && break
cat ../tmp/eeprin > $MUdir/eepr
remove ../tmp/eeprin
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=0
;;
esac
return 0
done
return 1
}
GetMUdata() {
local nrw=0000000000 sum=00000
catv /@DK40: =6,Ibuf
[ "$3" == dk40 ] && com -cot100od10o6 Ibuf
until com -p
do
let "sum+=10, sum>3000" && break
sleep -m 10
done
echo "InputWait: $sum ms"
com -it500id20i4000 Ibuf
nrw=$. $2=$. sum=0
let "sum+=nrw, nrw==0" && return 1
> $1
while [ nrw -gt 0 ]
do
[ "$3" == dk40 ] && conv '-t `' Ibuf
catv $nrw,Ibuf
com -it500id20i4000 Ibuf
let "nrw=$., sum+=nrw"
done
><
$2=$sum
return 0
}
MAIN() {
sleep -m $Wait
Sec=$SECONDS
case $Status in
0)
[ MUcall -ge 30 -a MUcall -le 39 ] && { let "MUcall-=20"; Uvars MUcall; }
com -p && {
[ MOwahl -eq 0 ] && { com -ic; continue; }
com -it60id10i1500 Ibuf
catv $.,Ibuf =Hbuf:
catv '/[' Hbuf '/]'
GetMOmsgNr Hbuf && let "Hbuf&4" && MOri=1 MOrings=0 %
MOritime=$Sec Wait=150 Status=9 MUcall=39 Uvars MUcall
continue
}
fstat -mv Uv uvars.bish
[ Uv -ne Uv0 ] && { Uv0=$Uv . ./uvars.bish; }
[ MOwahl -ne 0 -a MOisinit -ne 1 ] && {
Status=7 MOinittime=-30
[ MOisinit -eq 0 ] && MUcall=37 Uvars MUcall
continue
}
[ MOwahl -eq 0 ] && MOisinit=0
[ Sec -ge St ] && {
let "St=Sec+10"; systime Stime
[ ConnTest -gt 0 ] && [ -s $Fstation ] && {
[ CTbuild -ne 0 ] && { BuildCT; continue; }
let "Sec-DOtime<=90||Sec-CTwait<=150" && continue
[ Stime -ge CTtime -a CTtime -ge 10 ] && {
SetVarsCT && MUcall=6; } ||
WrLog "Connect test" "SetVars failed: $CTgid/$CTaid"
}
}
[ MUcall -eq 1 ] && Status=1
[ MUcall -eq 2 ] && Status=2
[ MUcall -eq 6 ] && Status=6 echo CT: $CTgid $CTaid $CTtime $CTday
[ MUcall -lt 0 ] && MUcall=00 Uvars MUcall
[ Status -ne 0 ] && { AnrufZ=dialout let "MUcall=Status+30"; Uvars MUcall; }
continue
;;
9)
if com -p
then
MOri=0
com -it60id10i1500 Ibuf
catv $.,Ibuf =Hbuf:
catv '/[' Hbuf '/]'
GetMOmsgNr Hbuf && let "Hbuf&4" && MOri=1
else let "MOrings+=MOri, MOrings>=3" && {
Status=8 Wait=500 MUcall=38 Uvars MUcall
AnrufZ=dialin continue
}
MOri=0
fi
let "Sec-MOritime>20" && {
Status=0 Wait=500 MUcall=29 Uvars MUcall
WrLog "RING event" "less then 3 rings"
continue
}
continue
;;
1)
MUanrufen $Telnu || {
MOisinit=2 Status=0 MUcall=21 Uvars MUcall
WrLog "Call get data" "failed: $AnrufZ" $MUdir/log
}
[ $AnrufZ != 0 ] && continue
MOisinit=2 Status=0 MUcall=11 Uvars MUcall
continue
;;
2)
MUanrufen $Telnu || {
MOisinit=2 Status=0 MUcall=22 Uvars MUcall
WrLog "Call configure" "failed: $AnrufZ" $MUdir/log
}
[ $AnrufZ != 0 ] && continue
MOisinit=2 Status=0 MUcall=12 Uvars MUcall
continue
;;
6)
MUanrufen $Telnu || {
WrLog "Connect test $MUdir" "failed: $AnrufZ"
WrLog "Connect test" "failed: $AnrufZ" $MUdir/log
GetTryCT Hbuf
if [ Hbuf -ge CTtries ]
then FailCT; WriteCT full
else WriteCT try
fi
NextCT; CTwait=$Sec
MOisinit=2 Status=0 MUcall=26 Uvars MUcall
}
[ $AnrufZ != 0 ] && continue
WriteCT okay; NextCT; CTwait=$Sec
MOisinit=2 Status=0
continue
;;
8)
MUanrufen || {
MOisinit=2 Status=0 MUcall=28 Uvars MUcall
WrLog "Incoming call" "failed: $AnrufZ"
}
[ $AnrufZ != 0 ] && continue
OkayFail $Fokayfail || MUcall=28 Uvars MUcall
MOisinit=2 Status=0
continue
;;
7)
fstat -mv Uv uvars.bish
[ Uv -ne Uv0 ] && { Uv0=$Uv . ./uvars.bish; }
[ MOwahl -eq 0 ] && Status=0 MOisinit=0 continue
let "$Sec-MOinittime<30" && continue
WriteAT "$MOauflegen"
WriteAT "$MOinit" && Status=0 MOisinit=1
[ MOisinit -eq 2 ] && Status=0 MOisinit=0
MOinittime=$Sec
continue
;;
esac
}
WaitData() {
local dp=0 len=00000
Ilen=0
com -it400id20i1 dp
if expr "$dp" :: '^:$'
then
com -it400id20i1 dp
base -b dp +10 len
com -it400id20i$len Ibuf
Ilen=$.
Mode=BIN
else
com -it400id20i1000 Ibuf
Ilen=$.
catv 1,dp $Ilen,Ibuf =Ibuf
let "++Ilen"
Mode=TXT
fi
return 0
}
WaitREADY() {
local ok:.20
com -it700id20i10 Ibuf
catv $.,Ibuf =20,ok:
expr "$ok" :: '^@[0-9]:READY'"$RN" || return 1
catv 10,Ibuf
return 0
}
WaitOK() {
local ok:.20
com -it400id20i7 Ibuf
catv $.,Ibuf =20,ok:
expr "$ok" :: '^@[0-9]:OK'"$RN" || return 1
catv 7,Ibuf
return 0
}
Kommando() {
echo $1
return 0
}
ID() {
local n=0000000000 id=0000000000$1
local len=5 cksum=00000 ilen=00000
base -10 id +l id
base -10 len +b len
catv 1,len 4,id | sum -b cksum
let "cksum=~cksum&255"
base -10 cksum +b cksum
catv /: 1,len 4,id 1,cksum =id:
for n to $Lcnt repeat
do
[ Lcnt -gt 1 ] && echo %t$n
while :
do
case $IdZ in
IDsend)
Obuf="@3!ID$RN"
com -cot40od10o7 Obuf
WaitOK || break 2
com -cot40od10o7 id
WaitOK || break 2
Obuf="@3!SEND$RN"
com -cot40od10o9 Obuf
WaitOK || break 2
IdZ=datarecv
;;
datarecv)
WaitData || break 2
ilen=$Ilen
[ $Mode == BIN ] && let --ilen
catv $ilen,Ibuf /%j
Obuf="@3:OK$RN"
com -cot40od10o7 Obuf
IdZ=IDsend
WaitREADY || break 2
break
;;
esac
done
done
IdZ=IDsend
return 0
}
set Ibuf:0.2048
set Obuf:0.1024
IdZ=IDsend
Ilen=0000000000
Mode=BIN
Lcnt=0000000001
Lcnt=1
Ofile=stdout
catv /%r%n =RN:
case "FreeBSD" in
FreeBSD) Sio='/dev/ttyd0' Tty='/dev/ttyp1';;
OpenUnix) Sio='/dev/term/00t' Tty='/dev/pts016';;
*) Sio='/dev/null' Tty='/dev/console';;
esac
com +L $Sio || { print -u2 "TTY-Device '$Sio'" "open failed"; com -; exit 1; }
com -B57600
com -s 1
com -H comhandle
fstat -h 0 1 2 $comhandle
echo
Obuf="@3!START$RN"
com -cot40od10o10 Obuf
WaitOK || { print -u2 "START failed"; com -; exit 2; }
while print -u2 "
%tAusgabedatei : o file [$Ofile]
%tLoop count : l # [$Lcnt]
%tKommando : Kommando
%tID+SEND : # (id)
%tBeenden : E
%t : _%b%c"
do
read cmd opt
com -p && { com -it700id20i1000 Ibuf; catv $.,Ibuf; }
ifset cmd || continue
case "$cmd" in
o) expr "$opt" :: '^[a-zA-Z_0-9/\]%{1,}$' || continue
[ $Ofile == $opt ] && continue
Ofile=$opt
if [ $Ofile == stdout ]
then ><
else 1>$Ofile
fi
;;
l) expr "$opt" :: '^[1-9][0-9]*$' || continue
Lcnt=$opt
;;
[a-zA-Z][a-zA-Z_0-9]*)
expr "$cmd" :: '^[a-zA-Z_0-9]%{2,15}$' || continue
Kommando $cmd ;;
[0-9]??*)
expr "$cmd" :: '^[0-9][0-9]*$' || continue
ID $cmd ;;
E) break;;
*) echo %a%c; continue;;
esac
done
Obuf="@3!END$RN"
com -cot40od10o8 Obuf
WaitOK || print -u2 "END failed"
com -
exit 0
global
alias MU="cd \u\mc\c\mu1000c"
alias CV="cd \u\c\mucv"
set -f
set Z:.250 liste:.150 null:0.256
l=00 u=.. v=........ mif=0000 maf=0000
MakeBin() {
>$2
<$1
while read id dd adr grp idlink sort parbn typ bytelen darst nbit bitpos %
access dflt1 min max %
flags einheit name Tinfo Tgrp Tsgrp Tbit Text text
do
expr "$id" :: '^%$' && break
expr "$id" :: '^[:.]..*' && continue;
expr "$id" :id '^@%([0-9]%{1,}%)' && {
let "adr=$adr" "bytelen=$bytelen" "id=$id" "parbn=$parbn"
let "id+=dd*100000000"
prints vsf010 pid $id
nelem=1 mif=0 maf=0 voffs=0
expr "$flags" :nelem 'A%([0-9]%{1,}%)'
expr "$flags" :nelem 'S%([0-9]%{1,}%)'
liste=
while :
do
seek + 0 sk
readl Z
expr "$Z" :: '^@:.' || { seek $sk 0; break; }
catv 2,,Z =0:,,liste
done
[ "$darst" == 1 ] && darst=/
expr "$darst" :darst '%.%([0-9]%)'
if [ "$typ" == s ]
then
min=0
max=0
else
[ "$min" == '"' ] && min=0
[ "$max" == '"' ] && max=0
l=4 u=u
[ bytelen -eq 4 ] && l=8 u=ul
for v in min max
do
case "$typ" in
b) expr "${{v}}" :$v '^x%([0-9a-fA-F]%{1,}%)$' && goend
base -2 $v +16 $v ;;
x) goend ;;
*) continue ;;
esac
prints vssf0${l}s $v 0x ${{v}} $u ;;
done
fi
[ "$einheit" == '"' ] && einheit=
flg=0000000000 txtgrp=0 txtnum=0
expr "$flags" :txtnum 'T%(%d%{1,3}%)'
expr "$flags" :txtgrp 'G%(%d%{1,3}%)'
expr "$flags" :: 'a' && let "flg|=1<<30"
expr "$flags" :: 'Z' && let "flg|=1<<24"
expr "$flags" :: 'S' && let "flg|=1<<23"
expr "$flags" :: 'A' && let "flg|=1<<22"
expr "$flags" :: 'E' && let "flg|=1<<21"
expr "$flags" :: 'N' && let "flg|=1<<19"
expr "$flags" :: 'F' && let "flg|=1<<18"
expr "$flags" :: 'm' && let "flg|=1<<17"
expr "$flags" :: 'D' && let "flg|=1<<16"
expr "$flags" :: 'd' && let "flg|=1<<15"
expr "$flags" :: ':' && let "flg|=1<<14"
expr "$flags" :: 'I' && let "flg|=1<<13"
expr "$flags" :: 't1' && let "flg|=1<<12"
expr "$flags" :: 'l' && let "flg|=1<<11"
expr "$flags" :: 't2' && let "flg|=1<<10"
expr "$flags" :: 'B' && let "flg|=1<<8"
expr "$flags" :: '1%.' && let "flg|=1<<7"
expr "$flags" :: 'q' && let "flg|=1<<6"
expr "$flags" :: 'K' && let "flg|=1<<5"
expr "$flags" :: 'i' && let "flg|=1<<4"
expr "$flags" :: 's' && let "flg|=1<<3"
expr "$flags" :: 'n' && let "flg|=1<<2"
expr "$flags" :: 'b' && let "flg|=1<<1"
expr "$flags" :: 'r' && let "flg|=1"
[ "$name" == 0 -o "$name" == '"' ] && name=0 ptr= let "flg|=512"
base -10 pid +l
base -10 flg +l
let "flg&1<<15" && min=0 max=3200
if [ $typ == b -o $typ == x ]
then
expr "$min" :min '^0x%([0-9a-fA-F]%{1,}%)'
base -16 min +l
base -10 mif +w
expr "$max" :max '^0x%([0-9a-fA-F]%{1,}%)'
base -16 max +l
base -10 maf +w
else
if [ $typ == s ]
then
base -10 mif +l; base -10 mif +w
base -10 maf +l; base -10 maf +w
else
[ "$darst" == 'm' ] && let "min=(min+30)/60" "max=(max+30)/60"
expr "$darst" :: '^[123]$' && {
d=0001 g=... f=...
to 0$darst repeat; do let "d*=10"; done
for 2 g f in min mif max maf
do
let "$f=$g%d" "$g/=d" "$g<0&&$f<0" && let "$f*=-1"
done
}
base -10 min +l; base -10 mif +w
base -10 max +l; base -10 maf +w
fi
fi
base -16 access +w
base -10 nelem +w
base -10 bytelen +b
base -10 nbit +b
catv 1,typ 1,darst
prints vsF00020 null ''
catv einheit =null
catv 19,null /%n
if let "flg&1<<11"
then
prints vsF00096 null ''
catv liste =null
catv 95,null /%n
fi
}
done
><<
return 0
}
MakeBin ./base/cfgbase.txt cfg.dat
MakeBin ./base/mesbase.txt mes.dat
:
C10=190
K10=1900
<"$0"
while read z Ib ah
do
expr "$z" :: '^#%d%{1,}[mh]' || {
expr "$z" :: '^#$' && break
continue
}
conv -d. Ib ah
let "I=750+250*Ib/C10"
echo $z $Ib $ah $((100*K10/ah)) $I
done
><
[ $# -eq 0 ] && {
Files=?*.[chCH]
Files="$Files CFGBASE.TXT"
}
[ $# -gt 0 ] && Files=$*
for F in $Files
do
m=0
cat $F | {
> $F
while readl Z
do
expr "$Z" :Z 'Batt%.i1%[' += 'Batt.i[' && m=1
expr "$Z" :Z 'Batt%.%(%w%{1,}%)%(%[[^]]%{1,}]%)' + 'Batt.B%2.%1' && m=1
catv Z /%r%n
done
><
}
[ m -eq 1 ] && echo $F
done
ho=$((2#100000))
hs=$((2#010000))
ht=$((2#001000))
so=$((2#000100))
ss=$((2#000010))
st=$((2#000001))
echo ho hs ht so ss st
for n from 0 to 63 repeat
do
let "n&hs&&n&ss" && continue
let "e= (n&ho||(n&hs)==0&&(n&ht)==0)&&
(n&so||(n&ss)==0&&(n&st)==0)"
prints sf06s $((2#, n)) =$e
done
X=200 Y=1500 A=100
nthlr=10 nthou=6
nbav=1
dou=16 dlr=25 dv=8 dh=8 dvh=8
r=$((dou/2))
uebhh=$dou
uebhv=$((dou+nbav))
bi=850
ti=425
hi=400
bou=$((bi+2*dlr))
tlr=$((ti+dh+uebhh))
hlr=$hi
tou=$((tlr+uebhv))
Box="pa$X,$Y
er$bou,$dou;pr0,$dou;er$dlr,$hi;pr0,$hi;er$bou,$dou;pr$bou,0;er-$dlr,-$hi
pa$((X+bou+A)),$Y
er$tou,$dou;pr0,$dou;er$tlr,$hlr;pr0,$hlr;er$tou,$dou
pa$X,$((Y-A))
er$bou,-$tou
pa$X,$Y;pw0.3lt-2,5,1
pr$((dlr-nthlr)),$((dou-nthou));er$((bi+nthlr*2)),$((hi+nthou*2))
"
print -n "%e%1Bin;sc0,1980,0,2724,0sp1puwu0pw0.5la1,4,2,4;"
catv Box
print -n "%e%1A%eE"
[ $# -eq 0 ] && exit
Tmp=/tmp/blx_$$
find "$@" -type f -print | file -N -f - > $Tmp
[ -s $Tmp ] || { rm $Tmp; exit; }
<$Tmp
while readl F
do
expr "$F" :: 'ELF .*executable' || continue
expr "$F" :F '^%(..*%): ' || continue
[ -L "$F" -o -d "$F" ] && continue
[ -s "$F" ] || continue
brandelf "$F" || continue
brandelf -t Linux "$F" && brandelf "$F"
done
><
rm $Tmp
ozadd() {
typeset -i10 nadd=$1 nz=$# zn
shift
(( nz-=2 ))
for zn from $nz by -1 to 1 repeat
do
print -nr "$1"; shift
prints s$(( nadd/nz+1+[zn<=nadd%nz] ))-
done
print -r "$1"
}
set -f
[ $# -gt 0 ] && < "$1"
sps="`prints s18-`"
rw=`prints sf+80-`
rz=`prints sf+120-`
oz=`prints sf+120-`
oz=''
while read inp
do
ifset inp || {
ifset oz && {
catv sps oz /%n; oz=''
}
echo; continue
}
ifset oz && oz="$oz $inp"
ifset oz || oz="$inp"
[ ${#oz} -lt 44 ] && continue
while [ ${#oz} -ge 44 ]
do
[ ${#oz} -eq 44 ] && { catv sps oz /%n;oz=''; continue 2; }
catv 44,,oz =:rz
catv 44,oz =:oz
if expr "$rz" :: '^ '
then
catv sps oz /%n
expr "$rz" :oz '^.%(.*%)$'
elif expr "$oz" :rw ' %([^ ]*%)$'
then
rz="$rw$rz"
expr "$oz" :oz '^%(.*%) [^ ]*$'
let "rw=44-${#oz}"
catv sps
ozadd $rw $oz
oz="$rz"
else
catv sps oz /%n
oz="$rz"
fi
done
done
ifset oz && {
catv sps oz /%n
}
[ $# -gt 0 ] && ><
o=$1
until [ "$o" == l -o "$o" == u -o "$o" == lr -o "$o" == ur ]
do
echo ToLower/ToUpper [rekursiv]
read "o?Optionen {l|u}[r]: "
ifset o || exit 0
done
expr "$o" :: 'l' && lu=L
expr "$o" :: 'u' && lu=U
r=' '
expr "$o" :: 'r' && r=R
bish -c "list -d$r; list -f$r" |
while readl Z z
do
expr "$Z" :z '[^/\]%{1,}$' "%%$lu&"
cmpv Z z && continue
zz="$z"
a=0
while [ -e "$z" ]
do
let "++a>9" && continue 2
print -r "Bereits existent: '$z'"
expr "$z" :z '%(.%)%(%.[^.]%{1,}%)$' "%1$a%2" || z="$z$a"
done
print -r "$Z --> $z"
move "$Z" "$z"
fsync "$z"
let 'a==0' && continue
[ -e "$zz" ] && print -r "Bereits existent: '$zz'"
[ -e "$zz" -a -d "$zz" ] && continue
print -r "$z --> $zz"
move "$z" "$zz"
fsync "$zz"
done
exit 0
N=-15
[ $# -lt 1 ] && exit 0
[ $# -ge 2 ] && N=-$1 shift
ps -xhwwo user,pid,ppid,pgid,stat,tt,time,command |
while read - pid - - - - - cmd
do
[ pid -eq $$ ] && continue
expr "$cmd" :: "$1" && {
echo kill $cmd ...
kill $N $pid
}
done
:
ozadd() {
typeset -i10 nadd=$1 nz=$# zn
shift
(( nz-=2 ))
for zn from $nz by -1 to 1 repeat
do
print -nr "$1"; shift
prints s$(( nadd/nz+1+[zn<=nadd%nz] ))-
done
print -r "$1"
}
set -f
[ $# -gt 0 ] && < "$1"
sps="`prints s18-`"
rw=`prints sf+80-`
rz=`prints sf+120-`
oz=`prints sf+120-`
oz=''
while read inp
do
ifset inp || {
ifset oz && {
catv sps oz /%n; oz=''
}
echo; continue
}
ifset oz && oz="$oz $inp"
ifset oz || oz="$inp"
[ ${#oz} -lt 44 ] && continue
while [ ${#oz} -ge 44 ]
do
[ ${#oz} -eq 44 ] && { catv sps oz /%n;oz=''; continue 2; }
catv 44,,oz =:rz
catv 44,oz =:oz
if expr "$rz" :: '^ '
then
catv sps oz /%n
expr "$rz" :oz '^.%(.*%)$'
elif expr "$oz" :rw ' %([^ ]*%)$'
then
rz="$rw$rz"
expr "$oz" :oz '^%(.*%) [^ ]*$'
let "rw=44-${#oz}"
catv sps
ozadd $rw $oz
oz="$rz"
else
catv sps oz /%n
oz="$rz"
fi
done
done
ifset oz && {
catv sps oz /%n
}
[ $# -gt 0 ] && ><
local mhz=000 bt=0000000000 BT=10000000
local picos=00000 rsj=00 ts1=00 ts2=00 psc=00
local tq=0000000000 rsjw=00000 btr=0000000000 proz=0000
local Ts1=0000000000 Ts2=0000000000 c=00
for 3 mhz picos BT in 16 62500 10000000
do
for rsj from 0 to 3 repeat
do
for ts1 from 0 to 15 repeat
do
for ts2 from 0 to 7 repeat
do
for psc from 1 to 63 repeat
do
(( tq= (psc+1)*picos,
bt= (3+ts1+ts2)*tq,
rsjw= (rsj+1)*tq,
Ts1= (ts1+1)*tq,
Ts2= (ts2+1)*tq,
1000000%mhz!=0&&(bt>BT+100||bt<BT-100)||
1000000%mhz==0&&bt!=BT
)) && continue
c=00
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw+2*tq" && c='>> '
[ $c == 00 ] &&
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw" && c='G> '
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw+2*tq" && c='>>='
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw" && c='G>='
[ $c == 00 ] && continue
let "btr=ts2<<12|ts1<<8|rsj<<6|psc"
btr=$((16#, btr)); conv -u btr; prints vsf04 btr $btr
let "proz=(1+Ts1+1)*100/(1+Ts1+1+Ts2+1)"
echo "// ${mhz}[MHz]" "$((bt/1000))[ns]" $btr $proz %
"$c" ts2=$ts2 ts1=$ts1 rsj=$rsj psc=$psc
done
done
done
done
done
:
local mhz=000 bt=0000000000 BT=10000000
local picos=00000 rsj=00 ts1=00 ts2=00 psc=00
local tq=0000000000 rsjw=00000
local Ts1=0000000000 Ts2=0000000000 c=00
for 3 mhz picos BT in 24 41667 8000000
do
for rsj from 0 to 3 repeat
do
for ts1 from 0 to 15 repeat
do
for ts2 from 0 to 7 repeat
do
for psc from 1 to 63 repeat
do
(( tq= (psc+1)*picos,
bt= (3+ts1+ts2)*tq,
rsjw= (rsj+1)*tq,
Ts1= (ts1+1)*tq,
Ts2= (ts2+1)*tq,
1000000%mhz!=0&&(bt>BT+100||bt<BT-100)||
1000000%mhz==0&&bt!=BT
)) && continue
c=00
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw+2*tq" && c='>> '
[ $c == 00 ] &&
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw" && c='G> '
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw+2*tq" && c='>>='
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw" && c='G>='
[ $c == 00 ] && continue
echo "// ${mhz}[MHz]" "$((bt/1000))[ns]" %
"$c" ts2=$ts2 ts1=$ts1 rsj=$rsj psc=$psc
done
done
done
done
done
:
local mhz=000 bt=0000000000 BT=10000000
local picos=00000 rsj=00 ts1=00 ts2=00 psc=00
local tq=0000000000 rsjw=00000
local Ts1=0000000000 Ts2=0000000000 c=00
for 2 mhz picos in 16 62500 24 41667 32 31250
do
for rsj from 0 to 3 repeat
do
for ts1 from 0 to 15 repeat
do
for ts2 from 0 to 7 repeat
do
for psc from 1 to 63 repeat
do
(( tq= (psc+1)*picos,
bt= (3+ts1+ts2)*tq,
rsjw= (rsj+1)*tq,
Ts1= (ts1+1)*tq,
Ts2= (ts2+1)*tq,
1000000%mhz!=0&&(bt>BT+100||bt<BT-100)||
1000000%mhz==0&&bt!=BT
)) && continue
c=00
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw+2*tq" && c='>> '
[ $c == 00 ] &&
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw" && c='G> '
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw+2*tq" && c='>>='
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw" && c='G>='
[ $c == 00 ] && continue
echo "// ${mhz}[MHz]" "$((bt/1000))[ns]" %
"$c" ts2=$ts2 ts1=$ts1 rsj=$rsj psc=$psc
done
done
done
done
done
:
local mhz=000 bt=0000000000 BT=10000000
local picos=00000 rsj=00 ts1=00 ts2=00 psc=00
local tq=0000000000 rsjw=00000
local Ts1=0000000000 Ts2=0000000000 c=00
for 2 mhz picos in 32 31250 16 62500
do
for rsj from 0 to 3 repeat
do
for ts1 from 0 to 15 repeat
do
for ts2 from 0 to 7 repeat
do
for psc from 1 to 63 repeat
do
(( tq= (psc+1)*picos,
bt= (3+ts1+ts2)*tq,
rsjw= (rsj+1)*tq,
Ts1= (ts1+1)*tq,
Ts2= (ts2+1)*tq,
bt!=BT
)) && continue
c=00
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw+2*tq" && c='>> '
[ $c == 00 ] &&
let "Ts1>2*tq&&Ts1>rsjw&&Ts2>2*tq&&Ts2>rsjw" && c=' > '
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw+2*tq" && c='>>='
[ $c == 00 ] &&
let "Ts1>=2*tq&&Ts1>=rsjw&&Ts2>=2*tq&&Ts2>=rsjw" && c=' >='
[ $c == 00 ] && continue
echo "// ${mhz}[MHz]" "$((bt/1000))[ns]" %
"$c" ts2=$ts2 ts1=$ts1 rsj=$rsj psc=$psc
done
done
done
done
done
:
expr "$PWD" =:: '[/\]release$' && cd ..
expr "$PWD" :PD '[/\]%([^/\]%{1,}%)$'
conv -l PD
case "$PD" in
mu2000) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3cf) DSH='40000 40000 40000';;
upc4) DSH='40000 40000 40000';;
*) echo "Verzeichnisname ist so unbekannt. Bitte in 'build.bish anpassen!"; exit 1;;
esac
echo $PD
(. ./bish/uniqid.bish base/cfgbase.txt %
base/mesbase.txt %
base/txtbase.h ) || exit 9
(. ./bish/uniqadr.bish base/cfgbase.txt) || exit 9
(. ./bish/overlapadr.bish base/cfgbase.txt) || exit 9
(. ./bish/texts.bish)
(. ./bish/tpa.bish $DSH)
(. ./bish/cfg.bish)
:
expr "$PWD" =:: '[/\]release$' && cd ..
expr "$PWD" :PD '[/\]%([^/\]%{1,}%)$'
conv -l PD
case "$PD" in
mu2000) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3cf) DSH='40000 40000 40000';;
upc4) DSH='40000 40000 40000';;
u229) DSH='40000 40000 40000';;
*) echo "Verzeichnisname ist so unbekannt. Bitte in 'build.bish anpassen!"; exit 1;;
esac
echo $PD
(. ./bish/uniqid.bish base/cfgbase.txt %
base/mesbase.txt %
base/txtbase.h ) || exit 9
(. ./bish/texts.bish)
(. ./bish/tpa.bish $DSH)
(. ./bish/cfg.bish)
:
expr "$PWD" =:: '[/\]release$' && cd ..
expr "$PWD" :PD '[/\]%([^/\]%{1,}%)$'
conv -l PD
case "$PD" in
mu2000) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3cf) DSH='40000 40000 40000';;
upc4) DSH='40000 40000 40000';;
*) echo "Verzeichnisname ist so unbekannt. Bitte in 'build.bish anpassen!"; exit 1;;
esac
echo $PD
(. ./bish/uniqid.bish base/cfgbase.txt %
base/mesbase.txt %
base/txtbase.h ) || exit 9
(. ./bish/texts.bish)
(. ./bish/tpa.bish $DSH)
(. ./bish/cfg.bish)
:
expr "$PWD" :PD '/%([^/]%{1,}%)$'
conv -l PD
case "$PD" in
mu2000) DSH='8000 10000 10000 4000 4000 4000 4000';;
upc3) DSH='8000 10000 10000 4000 4000 4000 4000';;
*) DSH='8000 10000 10000 4000 4000 4000 4000';;
esac
echo $PD
(. ../bish/texts.bish)
(. ../bish/tpa.bish $DSH)
(. ../bish/cfg.bish)
:
(. ../bish/texts.bish)
(. ./tpa.bish)
(. ../bish/cfg.bish)
(. texts.bish)
(. tpa.bish)
(. cfg.bish)
for C from 0 to 255 repeat
do
base -10 C +b CB
let "C<32" && CB=" "
prints ss3ss4 " /* " $C " '$CB' */ " $C,
done
CalcSet() {
local pad=0000 ele=0000 adr=110000
while readl Z
do
expr "$Z" :flags ' %(p%d%{1,}A%d%{1,}%)st2T' && {
expr "$flags" :pad 'p%(%d%{1,}%)'
expr "$flags" :ele 'A%(%d%{1,}%)'
[ adr -gt 110000 ] && {
prints vsf06 adr $adr
expr "$Z" :Z ' %d%{6} ' = " $adr " ||
expr "$Z" :Z ' ' = '!'
}
let 'adr+=ele+pad'
}
catv Z /%n
done
return 0
}
CalcSet
< $1
> _$1
while readl zeile
do
expr "$zeile" :: '[ %t]call .' || { catv zeile /%j; continue; }
grep -Fq -e "$zeile" call || { catv zeile /%j; continue; }
echo '%tmovl %%ecx,ECX'
catv zeile /%j
echo '%tmovl ECX,%%ecx'
done
><<
set GER:.100
Found=00
Get() {
local ger=.... id=0000 n=000 inc=000 fnd=00 cid=$1
GER=
for 4 ger id n inc in %
LAMP 10 1 0 %
BUI 80 16 -64 %
MU 48 16 -16 %
STS 64 16 256 %
INV0 96 32 256 %
REC 128 128 256 %
DCC 768 128 256 %
RK1 256 16 16 %
FMB 288 4 256 %
XXA 292 4 256 %
XXX 296 16 256 %
CAL 312 8 256 %
FAN 320 16 256 %
MMB 336 4 256 %
DEB 340 2 256 %
RYB 342 2 256 %
BMB 344 8 256 %
INV1 352 32 256 %
RD1 736 32 256 %
RDP 760 8 256
do
let "$1>=id&&$1<id+n" && { let ++fnd; GER="$GER tx ${ger}.$((cid-id))"; }
let "$1>=id+inc&&$1<id+n+inc" && { let ++fnd; GER="$GER rx ${ger}.$((cid-id-inc))"; }
done
Found=$fnd
[ fnd -eq 0 ] && return 1
return 0
}
N=0000
local txrx=.... ger=..........
for N from 0 to $((1023+256)) repeat
do
prints s4- $N
Get $N
[ Found -eq 0 ] && GER="- - - -"
[ Found -eq 1 ] && GER="$GER - -"
for 2 txrx ger in $GER
do
prints s6ss-9- "&$txrx" " " "&$ger"
done
if let "(N&15)==15"
then
echo " \\%n%%%%%n%%%%%%%%"
else
echo " \\"
fi
done
p=/scratch/VALUE
cat /scratch/NT/EAGLE/SC/SMD.LBR- > 1.lib
cat /scratch/NT/EAGLE/SC/SMD.LBR- > 2.lib
cat /scratch/NT/EAGLE/SC/SMD.LBR- > 3.lib
n=31
while let "++n<=43"
do
cat $p/350$n >> 1.lib
cat $p/350$((n+12)) >> 2.lib
cat $p/350$((n+12*2)) >> 3.lib
done
base=gcc
name=/usr/local/info/$base.info
[ -s $name ] && cat $name >> ${base}_info
for n from 0 to 99 repeat
do
[ -s $name-$n ] && cat $name-$n >> ${base}_info
[ -s $name-$n.gz ] && gunzip -c $name-$n.gz >> ${base}_info
done
set -f
VonBis() {
local sd=0000 nam
[ $# -gt 0 ] || return
for nam in $*
do
ifset $nam || continue
while expr "${{nam}}" :sd '##%(-%{0,1}[0-9]%{1,}%)'
do
let 'sd+=von*inc2'
expr "${{nam}}" :$nam '##-%{0,1}[0-9]%{1,}' = "$sd"
done
while expr "${{nam}}" :sd '#%(-%{0,1}[0-9]%{1,}%)'
do
let 'sd+=von'
expr "${{nam}}" :$nam '#-%{0,1}[0-9]%{1,}' = "$sd"
done
done
return 0
}
MakeTexte() {
_id=0000000000
grp=0000000
obj=0000000
sk=000000
skvb=000000
adr=0032
buf=..................................................................
von=000
bis=000
inc=000
inc2=000
info1=000
info2=000
parbn=00
idadd=0000
3>d__1
print -u3 '%n# include <def.h>'
print -u3 '# include <var.h>'
print -u3 '# include <texte.h>%n%n%n'
print -u3 '// id: 0.0.000.00000'
print -u3 '// d grp object'
print -u3 '
// struct cfgdata_t { const BYTE *grp, *sgrp;
// UNS4 id;
// UNS2 adr, len, nbit, bitpos;
// UNS4 flags;
// BYTE typ, darst, info1, info2;
// UNS2 parbn, nelem, voffs;
// const BYTE FAR *dfstr;
// UNS4 dfmima[3];
// UNS2 szname;
// VOL void *name;
// const BYTE FAR *einheit, *text, *info;
// cfap_t Tinfo, Tgrp, Tsgrp, Tbit, Text;
// };
'
[ -n "$4" ] && : >$4
>d__2
4>d__3
print -u4 '%n%n%nconst struct cfgdata_t FAR '"$1"'data[]= {'
<$2
while seek + 0 sk; read id dd typ bytelen darst nbit bitpos %
dflt1 min1 max1 %
parbn flags einheit name Tinfo Tgrp Tsgrp Tbit Text text
do
info1=?
expr "$id" :: '^%$' && break
expr "$id" :: '^}$' && {
[ von -ge bis ] && inc=0 continue
seek $skvb 0; let 'von+=inc'; continue
}
expr "$id" :: '^{#$' && {
von=$dd bis=$typ inc=$bytelen inc2=$darst
ifset inc2 || inc2=1
seek + 0 skvb; continue
}
expr "$id" :: '^:..*' && {
idadd=0 psgrp=0 obj=0 let grp+=500000
seek $sk 0; readl Z; conv -D: Z
[ inc -gt 0 ] && VonBis Z
prints vssf08 pgrp G$1 $grp
prints su3ss ' const BYTE ' $pgrp "[]= %"$Z%";"
echo
let "adr>32" && let "adr=[(adr/264)+1+(adr%%264>=264/2)]*264"
continue
}
expr "$id" :: '^%...*' && {
seek $sk 0; readl Z; conv -D. Z
[ inc -gt 0 ] && VonBis Z
prints vssf08 psgrp g$1 $grp
prints su3ss ' const BYTE ' $psgrp "[]= %"$Z%";"
continue
}
expr "$id" :id '^@%([0-9]%{1,}%)' && {
let "obj+=500+idadd" "_id=grp+obj" "adr=$adr" "bytelen=$bytelen" "id=$id"
idadd=0
let dd && let "_id+=dd*100000000"
let id && _id=$id
[ inc -gt 0 -a "$typ" != s ] && VonBis parbn name text Tinfo Tgrp Tsgrp Tbit Text
[ inc -gt 0 -a "$typ" == s ] && VonBis parbn name text dflt1 Tinfo Tgrp Tsgrp Tbit Text
conv '-t` ' name
idname="$name"
expr "$idname" :: '^[A-Za-z_]' || idname="$text"
expr "$idname" :idname '^%([^\]%{1,}%)\000'
conv '-d[d]' idname
expr "$idname" :idname '[^A-Za-z_0-9]' += '_'
[ -n "$4" ] && prints ss-24s12 '#define ID_' "$idname" "$_id" >> $4
nelem=1 voffs=0
expr "$flags" :nelem 'A%([0-9]%{1,}%)' && {
voffs='sizeof('"$name"')'
[ "$name" == 0 ] && voffs=$bytelen
}
expr "$flags" :nelem 'S%([0-9]%{1,}%)' && {
expr "$name" :idname ']%..%{1,}$' = ']'
voffs='sizeof('"$idname"')'
[ "$name" == 0 ] && voffs=$bytelen
}
pad=0 autopad=0
expr "$flags" :pad 'p%([0-9]%{1,}%)' || {
autopad=1 let 'pad=bytelen*nelem'
}
buf='"'
while :
do
seek + 0 sk
readl Z
expr "$Z" :: '^@:.' || { seek $sk 0; break; }
catv 2,,Z =0:,,buf
done
[ ${#buf} -le 1 ] && buf=0
[ ${#buf} -gt 1 ] && buf="$buf%""
conv '-t` ' dflt1 text
[ "$darst" == 1 ] && darst=/
expr "$darst" :darst '%.%([0-9]%)'
[ "$dflt1" == '"' ] && dflt1=0
[ "$typ" == s -a "$dflt1" == '\000' ] && dflt1=
if [ "$typ" == s ]
then
let "autopad&&pad>4" && let "pad>>=1"
ptr='&'
w1= w2= w3=
min1='0'
max1="$min1"
expr "$flags" :: '#' && goend
dflt1="%"$dflt1%""
else
ptr='&'
w1=15 w2=15 w3=14
[ "$min1" == '"' ] && min1=0
[ "$max1" == '"' ] && max1=0
[ "$typ" == s ] && goend
l=4 u=u
[ bytelen -eq 4 ] && l=8 u=ul
for v in dflt1 min1 max1
do
case "$typ" in
b) expr "${{v}}" :$v '^x%([0-9a-fA-F]%{1,}%)$' && goend
base -2 $v +16 $v ;;
x) goend ;;
*) continue ;;
esac
prints vssf0${l}s $v 0x ${{v}} $u ;;
done
fi
flg=000000 info2=0
expr "$flags" :info2 '=%([1-9][0-9]%{0,2}%)'
expr "$flags" :: '[sz]' && let autopad && pad=0
expr "$flags" :: 'a' && let "flg|=1<<30"
expr "$flags" :: 'h' && let "flg|=1<<20"
expr "$flags" :: 'u4' && let "flg|=1<<19"
expr "$flags" :: 'u3' && let "flg|=1<<18"
expr "$flags" :: 'u2' && let "flg|=1<<17"
expr "$flags" :: 'u1' && let "flg|=1<<16"
expr "$flags" :: 'd' && let "flg|=1<<15"
expr "$flags" :: 'c' && let "flg|=1<<14"
expr "$flags" :: 'I' && let "flg|=1<<13"
expr "$flags" :: 't1' && let "flg|=1<<12"
expr "$flags" :: 'l' && let "flg|=1<<11"
expr "$flags" :: 't2' && let "flg|=1<<10"
expr "$flags" :: 'B[AS][0-9]' && let "flg|=256"
expr "$flags" :: '1%.' && let "flg|=128"
expr "$flags" :: 'q' && let "flg|=64"
expr "$flags" :: 'K[AS][0-9]' && let "flg|=32"
expr "$flags" :: 'i' && let "flg|=16"
expr "$flags" :: 's' && let "flg|=8"
expr "$flags" :: 'n' && let "flg|=4"
expr "$flags" :: 'b' && let "flg|=2"
expr "$flags" :: 'r' && let "flg|=1"
expr "$flags" :: '&' && ptr=
ds=0000000000000000000
vname=$name
expr "$flags" :: 'v' && ds=v name=0
[ "$name" == 0 -o "$name" == '"' ] && name=0 ptr= let "flg|=512"
[ "$name" != 0 ] && print -u5 "$1%t$bytelen%t$name"
prints vssf08s flags 0x $((16#, flg)) ul
prints vsf010 pid $_id
echo
prints s-28sbs %
"#define D${pid}grp" $pgrp, $psgrp
echo "// id; adr, len, nbit, bitpos,"
echo "// flags(_|abgl|_|_|_|_|_|_ | _|_|_|halten|u4cal|u3sys|u2hw|u1root)"
echo "// flags(dfltcalc|access|IP|Telem|infovals|Tbbig|novar|batt | step10|mess|kamm|initcan|sig|nod|bak|ro);"
echo "// typ, darst, info1, info2, parbn, nelem, voffs;"
prints s-28s11bs6bs5bs5bs5bsbsbsbsbsbsbsbs %
"#define D${pid}obj" %
$_id, $adr, $bytelen, $nbit, $bitpos, $flags, %
"'$typ'," "'$darst'," "'$info1'," "$info2," %
$parbn, "$nelem," "$voffs"
if [ "$typ" == s ]
then
[ "$ds" == v ] && prints s " const BYTE ${vname}[]= $dflt1;"
prints s " const BYTE FAR S${pid}[]= $dflt1;"
ds=S${pid} dflt1=0 min1=0 max1=0
else
ds=0
fi
prints s-28s %
"#define D${pid}str" "$ds"
prints s-28s${w1}bs${w2}bs${w3} %
"#define D${pid}dfmima" "$dflt1," "$min1," "$max1"
prints s-28sbs %
"#define D${pid}szname" "sizeof($name)," "$ptr$name"
if [ "$einheit" != '"' ]
then
prints s " const BYTE FAR E${pid}[]= %"$einheit%";"
einheit=E${pid}
else
einheit=0
fi
prints s " const BYTE FAR T${pid}[]= %"$text%";"
text=T${pid}
prints s-28s11sbs11 %
"#define D${pid}einhtxt" "$einheit" , "$text"
if [ "$buf" != 0 ]
then
prints s " const BYTE FAR I${pid}[]= $buf;"
buf=I${pid}
else
buf=0
fi
prints s-28s11 %
"#define D${pid}info" "$buf"
prints s-28sbsbsbsbs %
"#define D${pid}Text" $Tinfo, $Tgrp, $Tsgrp, $Tbit, $Text
let "adr+=bytelen*nelem+pad"
let "nelem>1" && idadd=500
prints su4sbsbsbsbsbsbsbsbs ' { ' %
D${pid}grp, D${pid}obj, D${pid}str, %
"{D${pid}dfmima}," %
D${pid}szname, D${pid}einhtxt, D${pid}info, D${pid}Text ' },'
continue
}
done
print -u4 ' { 0 }%n};%n%nconst unsigned '"$1"'data_ne= sizeof('"$1"'data)/sizeof(*'"$1"'data);%n%n'
><<<<
cat d__1 d__2 d__3 > $3
remove d__1 d__2 d__3
return 0
}
5>vn.txt
MakeTexte CFG cfgbase.txt cfgdata.c cfg.h
MakeTexte MES mesbase.txt mesdata.c
><
exit 0
set -f
MakeTexte() {
sk=000000
buf=..................................................................
txtnum=000
txtgrp=000
3>d__1
print -u3 '%n/* Made by script cfg.bish (H.Schellong) */'
print -u3 '%n# include "def.h"'
print -u3 '# include "share/var.h"'
print -u3 '# include "texte.h"%n%n%n'
print -u3 '// id: 0.0.000.00000'
print -u3 '// d grp object'
print -u3 '
// struct cfgdata_t { UNS4 id, adr, flags, idlink, sort;
// UNS2 grp, len, nbit, bitpos;
// BYTE typ, darst, txtnum, txtgrp;
// UNS2 parbn, nelem, voffs, access;
// const BYTE *dfstr;
// UNS4 dfmima[3];
// UNS2 szname;
// VOL void *name;
// const BYTE *einheit, *info;
// tsp_t Tinfo, Tgrp, Tsgrp, Tbit, Text;
// };
'
[ -n "$4" ] && print '%n/* Made by script cfg.bish (H.Schellong) */%n' >$4
>d__2
4>d__3
print -u4 '%n%n%nconst struct cfgdata_t '"$1"'data[]= {'
<$2
while read id dd adr grp idlink sort parbn typ bytelen darst nbit bitpos %
access dflt1 min1 max1 %
flags einheit name Tinfo Tgrp Tsgrp Tbit Text text
do
expr "$id" :: '^%$' && break
expr "$id" :: '^:..*' && { echo; continue; }
expr "$id" :: '^%...*' && { continue; }
expr "$id" :id '^@%([0-9]%{1,}%)' && {
let "adr=$adr" "bytelen=$bytelen" "id=$id" "parbn=$parbn"
let "idlink=$idlink" "sort=$sort" "grp=$grp"
let "id+=dd*100000000" "idlink+=dd*100000000"
conv '-t` ' name
idname="$name"
expr "$idname" :: '^[A-Za-z_]' || idname="$text"
expr "$idname" :idname '^%([^\]%{1,}%)\000'
conv '-d[d]' idname
expr "$idname" :idname '[^A-Za-z_0-9]' += '_'
[ -n "$4" ] && prints ss-24s12 '#define ID_' "$idname" "$id" >> $4
nelem=1 voffs=0
expr "$flags" :nelem 'A%([0-9]%{1,}%)' && {
voffs='sizeof('"$name"')'
[ "$name" == 0 ] && voffs=$bytelen
}
expr "$flags" :nelem 'S%([0-9]%{1,}%)' && {
expr "$name" :idname ']%..%{1,}$' = ']'
voffs='sizeof('"$idname"')'
[ "$name" == 0 ] && voffs=$bytelen
}
buf='"'
while :
do
seek + 0 sk
readl Z
expr "$Z" :: '^@:.' || { seek $sk 0; break; }
catv 2,,Z =0:,,buf
done
[ ${#buf} -le 1 ] && buf=0
[ ${#buf} -gt 1 ] && buf="$buf%""
conv '-t` ' dflt1
[ "$darst" == 1 ] && darst=/
expr "$darst" :darst '%.%([0-9]%)'
[ "$dflt1" == '"' ] && dflt1=0
[ "$typ" == s -a "$dflt1" == '\000' ] && dflt1=
if [ "$typ" == s ]
then
ptr='&'
w1= w2= w3=
min1='0'
max1="$min1"
expr "$flags" :: '#' && goend
dflt1="%"$dflt1%""
else
ptr='&'
w1=15 w2=15 w3=14
[ "$min1" == '"' ] && min1=0
[ "$max1" == '"' ] && max1=0
[ "$typ" == s ] && goend
l=4 u=u
[ bytelen -eq 4 ] && l=8 u=ul
for v in dflt1 min1 max1
do
case "$typ" in
b) expr "${{v}}" :$v '^x%([0-9a-fA-F]%{1,}%)$' && goend
base -2 $v +16 $v ;;
x) goend ;;
*) continue ;;
esac
prints vssf0${l}s $v 0x ${{v}} $u ;;
done
fi
flg=0000000000 txtgrp=0 txtnum=0
expr "$flags" :txtnum 'T%(%d%{1,3}%)'
expr "$flags" :txtgrp 'G%(%d%{1,3}%)'
expr "$flags" :: 'a' && let "flg|=1<<30"
expr "$flags" :: 'Z' && let "flg|=1<<24"
expr "$flags" :: 'S' && let "flg|=1<<23"
expr "$flags" :: 'A' && let "flg|=1<<22"
expr "$flags" :: 'E' && let "flg|=1<<21"
expr "$flags" :: 'N' && let "flg|=1<<19"
expr "$flags" :: 'F' && let "flg|=1<<18"
expr "$flags" :: 'm' && let "flg|=1<<17"
expr "$flags" :: 'D' && let "flg|=1<<16"
expr "$flags" :: 'd' && let "flg|=1<<15"
expr "$flags" :: ':' && let "flg|=1<<14"
expr "$flags" :: 'I' && let "flg|=1<<13"
expr "$flags" :: 't1' && let "flg|=1<<12"
expr "$flags" :: 'l' && let "flg|=1<<11"
expr "$flags" :: 't2' && let "flg|=1<<10"
expr "$flags" :: 'B' && let "flg|=1<<8"
expr "$flags" :: '1%.' && let "flg|=1<<7"
expr "$flags" :: 'q' && let "flg|=1<<6"
expr "$flags" :: 'K' && let "flg|=1<<5"
expr "$flags" :: 'i' && let "flg|=1<<4"
expr "$flags" :: 's' && let "flg|=1<<3"
expr "$flags" :: 'n' && let "flg|=1<<2"
expr "$flags" :: 'b' && let "flg|=1<<1"
expr "$flags" :: 'r' && let "flg|=1"
expr "$flags" :: '&' && ptr=
ds=0000000000000000000
vname=$name
expr "$flags" :: 'v' && ds=v name=0
[ "$name" == 0 -o "$name" == '"' ] && name=0 ptr= let "flg|=512"
[ "$name" != 0 ] && print -u5 "$1%t$bytelen%t$name"
prints vssf08 sort 0x $sort
prints vssf08 flags 0x $((16#, flg))
prints vsf010 pid $id
echo
echo "// id, adr,"
echo "// flags(_|abgl|_|_|_|_|_|strarr | sarr|arr|eventmap|_|nidlnk|feld|messw|unbdflt)"
echo "// flags(dfltcalc|bitfeld|IP|Telem|infovals|Tbbig|_|batt | step10|mess|kamm|initcan|sig|nod|bak|ro),"
echo "// idlink, sort;"
echo "// grp, len, nbit, bitpos, typ, darst, txtnum, txtgrp, parbn, nelem, voffs, access;"
prints s-28s11bs11bsbs11bs11 %
"#define D${pid}long" %
$id, $adr, $flags, $idlink, $sort
prints s-28s5bs5bs5bsbsbsbsbsbsbsbsbs %
"#define D${pid}obj" %
$grp, $bytelen, $nbit, $bitpos, %
"'$typ'," "'$darst'," "$txtnum," "$txtgrp," %
"$parbn," "$nelem," "$voffs," 0x${access}u
if [ "$typ" == s ]
then
[ "$ds" == v ] && prints s " const BYTE ${vname}[]= $dflt1;"
prints s " const BYTE S${pid}[]= $dflt1;"
ds=S${pid} dflt1=0 min1=0 max1=0
else
ds=0
fi
prints s-28s %
"#define D${pid}str" "$ds"
prints s-28s${w1}bs${w2}bs${w3} %
"#define D${pid}dfmima" "$dflt1," "$min1," "$max1"
prints s-28sbs %
"#define D${pid}szname" "sizeof($name)," "$ptr$name"
if [ "$einheit" != '"' ]
then
prints s " const BYTE E${pid}[]= %"$einheit%";"
einheit=E${pid}
else
einheit=0
fi
prints s-28s11 "#define D${pid}einhtxt" "$einheit"
if [ "$buf" != 0 ]
then
prints s " const BYTE I${pid}[]= $buf;"
buf=I${pid}
else
buf=0
fi
prints s-28s11 %
"#define D${pid}info" "$buf"
prints s-28sbsbsbsbs %
"#define D${pid}Text" $Tinfo, $Tgrp, $Tsgrp, $Tbit, $Text
prints su4sbsbsbsbsbsbsbsbs ' { ' %
D${pid}long, D${pid}obj, D${pid}str, %
"{D${pid}dfmima}," %
D${pid}szname, D${pid}einhtxt, D${pid}info, D${pid}Text ' },'
continue
}
done
print -u4 ' { 0 }%n};%n%nconst unsigned '"$1"'data_ne= sizeof('"$1"'data)/sizeof(*'"$1"'data);%n%n'
><<<<
cat d__1 d__2 d__3 > $3
remove d__1 d__2 d__3
return 0
}
5>./base/vn.txt
MakeTexte CFG ./base/cfgbase.txt cfgdata.c cfg.h
MakeTexte MES ./base/mesbase.txt mesdata.c
><
:
set -f
VonBis() {
local sd=0000 nam
[ $# -gt 0 ] || return
for nam in $*
do
ifset $nam || continue
while expr "${{nam}" :sd '#%(-%{0,1}[0-9]%)'
do
let 'sd+=von'
expr "${{nam}" :$nam '#-%{0,1}[0-9]' = "$sd"
done
done
return 0
}
_id=0000000000
grp=0000000
obj=0000000
sk=000000
skvb=000000
adr=0032
buf=..................................................................
von=000
bis=000
inc=000
3>d1
print -u3 '%n# include "def.h"'
print -u3 '# include "var.h"%n%n%n'
print -u3 '// id: 0.0.000.00000'
print -u3 '// grp object'
print -u3 '
// struct cfgdata_t { const BYTE *grp; WORD pdummy;
// DWORD id;
// WORD adr, len, flags, dummy;
// BYTE typ, darst, nelem, voffs;
// const BYTE __far *dfstr;
// DWORD dfmima[2][3];
// WORD szname;
// void *name;
// const BYTE __far *einheit, *text, *info;
// };
'
: >cfg.h
>d2
4>d3
print -u4 '%n%n%nconst struct cfgdata_t __far CFGdata[]= {'
<cfgbase.txt
while seek + 0 sk; read id typ bytelen darst %
dflt1 min1 max1 dflt2 min2 max2 %
flags einheit name text
do
pdummy=0
dummy=0
expr "$id" :: '^%$' && break
expr "$id" :: '^}$' && {
[ von -ge bis ] && inc=0 continue
seek $skvb 0; let 'von+=inc'; continue
}
expr "$id" :: '^{#$' && {
von=$typ bis=$bytelen inc=$darst
seek + 0 skvb; continue
}
expr "$id" :: '^:..*' && {
obj=0 let grp+=500000
seek $sk 0; readl Z; conv -D: Z
[ inc -gt 0 ] && VonBis Z
prints vssf08 pgrp G $grp
prints su3ss ' const BYTE ' $pgrp "[]= %"$Z%";"
echo
let "adr>32" && let "adr=[(adr/264)+1+(adr%%264>=264/2)]*264"
continue
}
expr "$id" :id '^@%([0-9]%{1,}%)' && {
let "obj+=100" "_id=grp+obj" "adr=$adr" "bytelen=$bytelen" "id=$id"
let id && _id=$id
[ inc -gt 0 -a "$typ" != s ] && VonBis name text
[ inc -gt 0 -a "$typ" == s ] && VonBis name text dflt1 dflt2
idname="$name"
expr "$idname" :: '^[A-Za-z_]' || idname="$text"
expr "$idname" :idname '^%([^\]%{1,}%)\000'
conv '-d[d]' idname
expr "$idname" :idname '[^A-Za-z_0-9]' += '_'
prints ss-24s12 '#define ID_' "$idname" "$_id" >> cfg.h
nelem=1 voffs=0
expr "$flags" :nelem 'A%([0-9]%{1,}%)' && {
voffs='sizeof('"$name"')'
[ "$name" == 0 ] && voffs=$bytelen
}
expr "$flags" :nelem 'S%([0-9]%{1,}%)' && {
expr "$name" :idname '^%(.*[^.]%)%.[^.]%{1,}$'
voffs='sizeof('"$idname"')'
[ "$name" == 0 ] && voffs=$bytelen
}
pad=0
expr "$flags" :pad 'p%([0-9]%{1,}%)' || {
let 'pad=bytelen*nelem'
}
buf='"'
while :
do
seek + 0 sk
readl Z
expr "$Z" :: '^@:.' || { seek $sk 0; break; }
catv 2,,Z =0:,,buf
done
[ ${#buf} -le 1 ] && buf=0
[ ${#buf} -gt 1 ] && buf="$buf%""
conv '-t` ' dflt1 dflt2 name text
[ "$darst" == 1 ] && darst=/
expr "$darst" :darst '%.%([0-9]%)'
[ "$typ" == s -a "$dflt1" == '\000' ] && dflt1=
[ "$dflt2" == '"' ] && dflt2="$dflt1"
if [ "$typ" == s ]
then
let "pad>4" && let "pad>>=1"
ptr=
w1= w2= w3=
min1='0'
min2="$min1"
max1="$min1"
max2="$min1"
expr "$flags" :: '#' && goend
dflt1="%"$dflt1%""
dflt2="%"$dflt2%""
else
ptr='&'
w1=15 w2=15 w3=14
[ "$min1" == '"' ] && min1=0
[ "$max1" == '"' ] && max1=0
[ "$min2" == '"' ] && min2="$min1"
[ "$max2" == '"' ] && max2="$max1"
[ "$typ" == s ] && goend
l=4 u=u
[ bytelen -eq 4 ] && l=8 u=ul
for v in dflt1 dflt2 min1 min2 max1 max2
do
case "$typ" in
b) base -2 $v +16 $v; prints vssf0${l}s $v 0x ${{v} $u ;;
x) prints vssf0${l}s $v 0x ${{v} $u ;;
esac
done
fi
flg=000000
expr "$flags" :: '[sz]' && pad=0
expr "$flags" :: 'l' && let "flg|=2048"
expr "$flags" :: ':L:' && let "flg|=1024"
expr "$flags" :: ':SP:' && let "flg|=512"
expr "$flags" :: 'B[AS][0-9]' && let "flg|=256"
expr "$flags" :: '1.' && let "flg|=128"
expr "$flags" :: 'q' && let "flg|=64"
expr "$flags" :: 'z' && let "flg|=32"
expr "$flags" :: 'i' && let "flg|=16"
expr "$flags" :: 's' && let "flg|=8"
expr "$flags" :: 'n' && let "flg|=4"
expr "$flags" :: 'a' && let "flg|=2"
expr "$flags" :: 'r' && let "flg|=1"
prints vssf04 flags 0x $((16#, flg))
[ "$name" == 0 -o "$name" == '"' ] && name=0 ptr=
prints vsf010 pid $_id
echo
prints s-28sbs %
"#define D${pid}grp" $pgrp, $pdummy
echo "// id; adr, len, flags(infovals|lang|spv|batt | step10|mess|zuo|initcan|sig|nod|abgl|ro), dummy; typ, darst, nelem, voffs;"
prints s-28s11bs6bs5bsbsbsbsbsbs %
"#define D${pid}obj" %
$_id, $adr, $bytelen, $flags, $dummy, %
"'$typ'," "'$darst'," "$nelem," "$voffs"
if [ "$typ" == s ]
then
prints s " const BYTE __far S${pid}[]= $dflt1;"
ds=S${pid} dflt1=0 min1=0 max1=0 dflt2=0 min2=0 max2=0
else
ds=0
fi
prints s-28s11 %
"#define D${pid}str" "$ds"
prints s-28s${w1}bs${w2}bs${w3} %
"#define D${pid}dfmima0" "$dflt1," "$min1," "$max1"
prints s-28s${w1}bs${w2}bs${w3} %
"#define D${pid}dfmima1" "$dflt2," "$min2," "$max2"
prints s-28sbs %
"#define D${pid}szname" "sizeof($name)," "$ptr$name"
if [ "$einheit" != '"' ]
then
prints s " const BYTE __far E${pid}[]= %"$einheit%";"
einheit=E${pid}
else
einheit=0
fi
prints s " const BYTE __far T${pid}[]= %"$text%";"
text=T${pid}
prints s-28s11sbs11 %
"#define D${pid}einhtxt" "$einheit" , "$text"
if [ "$buf" != 0 ]
then
prints s " const BYTE __far I${pid}[]= $buf;"
buf=I${pid}
else
buf=0
fi
prints s-28s11 %
"#define D${pid}info" "$buf"
let "adr+=bytelen*nelem+pad"
prints su4sbsbsbsbsbsbsbss ' { ' %
D${pid}grp, D${pid}obj, D${pid}str, %
"{{D${pid}dfmima0}," "{D${pid}dfmima1}}," %
D${pid}szname, D${pid}einhtxt, D${pid}info ' },'
continue
}
done
print -u4 ' { 0 }%n};%n%nconst unsigned CFGdata_ne= sizeof(CFGdata)/sizeof(*CFGdata);%n%n'
><<<<
cat d1 d2 d3 > cfgdata.c
remove d1 d2 d3
exit 0
INCL='
# include "def.h"
# include "var.h"
# include "texte.h"
'
HDR='
// id: 0.0.000.00000
// d grp object
// struct cfgdataT_t { cfap_t Tinfo, Tgrp, Tsgrp, Tbit, Text; };
//
// struct cfgdata_t { const BYTE *grp, *sgrp;
// UNS4 id;
// UNS2 adr, len, nbit, bitpos, flags;
// BYTE typ, darst, info1, info2;
// UNS2 parbn, nelem, voffs;
// const BYTE FAR *dfstr;
// UNS4 dfmima[2][3];
// UNS2 szname;
// VOL void *name;
// const BYTE FAR *einheit, *text, *info;
// const struct cfgdataT_t FAR *T;
// };
'
i=000000
set Z:.200
set Ta:.100
set Tb:.100
CFG2() {
i=-1
3>$1data0.c
4>$1dataT.c
catv HDR =3
catv INCL HDR =4
< $1data.c
while readl Z
do
expr "$Z" :: '^#define D%d%{10}grp ' && {
let ++i; catv /%n =4; catv Z /%n =3; continue
}
expr "$Z" :Ta ' %(const BYTE FAR E[0-9]%{10}%[]%)= ' && {
expr "$Z" :Tb '%[]= %(".%{1,}%);$' || echo $i:$Ta
catv '. extern ' Ta '.; //' Tb /%n =3
catv Z /%n =4
continue
}
expr "$Z" :Ta ' %(const BYTE FAR T[0-9]%{10}%[]%)= ' && {
expr "$Z" :Tb '%[]= %(".%{1,}%);$' || echo $i:$Ta
catv '. extern ' Ta '.; //' Tb /%n =3
catv Z /%n =4
continue
}
expr "$Z" :Ta ' %(const BYTE FAR I[0-9]%{10}%[]%)= ' && {
expr "$Z" :Tb '%[]= %(".%{1,}%);$' || echo $i:$Ta
catv '. extern ' Ta '.; //' Tb /%n =3
catv Z /%n =4
continue
}
expr "$Z" :Ta '^%(#define D%d%{10}Text %{1,}%)' && {
catv Ta "/&$2dataT[$i]%n" =3
catv Z /%n =4
continue
}
expr "$Z" :: 'const struct cfgdata_t FAR '"$2"'data%[]= {' && {
catv '/%n%n%nconst struct cfgdataT_t FAR '"$2"'dataT[]= {%n' =4
}
expr "$Z" :Ta '^ %{1,}{ D.%{1,}%( D%d%{10}Text %)' && {
catv '/ {' Ta '/},%n' =4
}
catv Z /%n =3
done
catv '/ { 0 }%n};%n%n%n%n' =4
><<<
echo $i
return 0
}
CFG2 cfg CFG
CFG2 mes MES
adr=110000
for n from 0 to 24 repeat
do
echo $((adr)); let "adr+=78+202"
echo $((adr)); let "adr+=36+114"
echo $((adr)); let "adr+=56+164"
echo $((adr)); let "adr+=192+64"
done
if [ "$(-ver s)" == unix ]
then MORE='gvim -fnR -'
LESSCHARSET=iso8859; export LESSCHARSET
else MORE='more'
fi
set CfgB:.50 MesB:.50 cmd:.10 rest:.30
set Z:.200 File:.50
Base=k
if [ -s base/cfgbase.txt ]
then CfgB=./base/cfgbase.txt
elif [ -s cfgbase.txt ]
then CfgB=./cfgbase.txt
else CfgB='???'
fi
if [ -s base/mesbase.txt ]
then MesB=./base/mesbase.txt
elif [ -s mesbase.txt ]
then MesB=./mesbase.txt
else MesB='???'
fi
File="$CfgB"
Check() {
catv '/noch nicht implementiert%j'
return 0
}
IDCheck() {
local id:010 id0:010 z0:.200 fst=0
grep -n '^[@x]%d%{8,10} ' |
sortl -f2 -d':@x ' | {
while readl Z
do
expr "$Z" :id '%(%d%{8,}%)'
if [ id -eq id0 ]
then [ fst -eq 0 ] && { fst=1; catv 140,z0 /%j; }
catv 140,Z /%j
else fst=0
fi
id0=$id z0="$Z"
done
}
return 0
}
Print() {
catv '/noch nicht implementiert%j'
return 0
}
while echo "
%tKonfigbasis : K datei [$CfgB]
%tMessbasis : M datei [$MesB]
%tBasis [$Base] : k|m
%tKorrektheit : c
%tID Prüfung : i
%tAusgabe : a
%tBeenden : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
K) [ -s "$rest" ] || { echo "%a%c"; continue; }
CfgB="$rest";;
M) [ -s "$rest" ] || { echo "%a%c"; continue; }
MesB="$rest";;
k) Base=k File="$CfgB";;
m) Base=m File="$MesB";;
c) Check <"$File" | $MORE;;
i) IDCheck <"$File" | $MORE;;
a) Print <"$File" | $MORE;;
E) break;;
*) echo "%a%c"; continue;;
esac
done
:
FILES=$*
set Z:.500
set Text:.100
set CText:.100
set Leer:.100
set FILE:.100
set HexC:010
R=000000000
G=000000000
B=000000000
PutText() {
expr "$Text" :Text '"' += '"'
expr "$Text" :Text '<' += '<'
expr "$Text" :Text '>' += '>'
expr "$Text" :Text '&' += '&'
expr "$Text" :Text ' ' += 'ë'
expr "$Text" :Text '\' += '\textbackslash '
expr "$Text" :Text '''' += '\textquoteright '
expr "$Text" :Text '`' += '\textquoteleft '
expr "$Text" :Text '"' += '\textquotedblright '
expr "$Text" :Text '%^' += '\textasciicircum '
expr "$Text" :Text '~' += '\textasciitilde '
expr "$Text" :Text '&' += '\&'
expr "$Text" :Text '#' += '\#'
expr "$Text" :Text '%$' += '\$'
expr "$Text" :Text '%%' += '\%'
expr "$Text" :Text '_' += '\_'
expr "$Text" :Text '{' += '\{'
expr "$Text" :Text '}' += '\}'
while expr "$Text" :Leer '%(ë%{1,}%)'
do
expr "$Leer" :Leer 'ë' += ' '
expr "$Text" :Text 'ë%{1,}' = "\verb:$Leer:"
done
ifset Text || return 1
catv Text
return 0
}
PutCText() {
while ifset CText
do
expr "$CText" :Text '^%( %{1,}%)' && {
PutText
expr "$CText" :CText '^ %{1,}' = ''
}
expr "$CText" :Text '^%([^ ]%{1,}%)' && {
catv ".\textcolor[rgb]{$R,$G,$B}{"
PutText
catv '/}'
expr "$CText" :CText '^[^ ]%{1,}' = ''
}
done
return 0
}
MkRgb() {
expr "$HexC" :R '^%(..%)....'
expr "$HexC" :G '^..%(..%)..'
expr "$HexC" :B '^....%(..%)'
let "R=16#$R" "G=16#$G" "B=16#$B"
let "R=(R*1000+127)/255" "G=(G*1000+127)/255" "B=(B*1000+127)/255"
[ ${#R} -eq 1 ] && R=0.00$R
[ ${#R} -eq 2 ] && R=0.0$R
[ ${#R} -eq 3 ] && R=0.$R
[ ${#R} -eq 4 ] && R=1.000
[ ${#G} -eq 1 ] && G=0.00$G
[ ${#G} -eq 2 ] && G=0.0$G
[ ${#G} -eq 3 ] && G=0.$G
[ ${#G} -eq 4 ] && G=1.000
[ ${#B} -eq 1 ] && B=0.00$B
[ ${#B} -eq 2 ] && B=0.0$B
[ ${#B} -eq 3 ] && B=0.$B
[ ${#B} -eq 4 ] && B=1.000
return 0
}
RApre='%([^<]%{1,}%)'
RAfcc='<font color="#%(......%)">'
RAfcb='<font color="#......"><b>%([^<]%{1,}%)</b></font>'
RAfcn='<font color="#......">%([^<]%{1,}%)</font>'
for FILE in $FILES
do
< $FILE
while readl Z
do expr "$Z" :: '<pre>' && break; done
catv '/\begin{ttfamily}%n'
while readl Z
do
expr "$Z" :: '</pre>' && break
catv "/\verb: :"
ifset Z || { catv /\\%n; continue; }
while ifset Z
do
expr "$Z" :Text "^$RApre" && {
PutText
expr "$Z" :Z "^$RApre" = ''
ifset Z || { catv /\\%n; continue 2; }
}
expr "$Z" :HexC "^$RAfcc" && {
MkRgb
expr "$Z" :CText "^$RAfcb" && {
PutCText
expr "$Z" :Z "^$RAfcb" = ''
ifset Z || { catv /\\%n; continue 2; }
continue
}
expr "$Z" :CText "^$RAfcn" && {
PutCText
expr "$Z" :Z "^$RAfcn" = ''
ifset Z || { catv /\\%n; continue 2; }
continue
}
}
><; print -u2 "*** $FILE ***"; exit 1
done
done
><
catv '/\end{ttfamily}%n'
done
exit 0
array C NUL SOH STX ETX EOT ENQ ACK BEL BS HTAB LF VTAB FF CR SO SI %
DLE XON DC2 XOFF DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
anz=256
col=4
start=0
[ $# -eq 1 ] && col=$1
[ $# -eq 2 ] && col=$1 anz=$2
[ $# -eq 3 ] && col=$1 anz=$2 start=$3
let row=anz/col
c=000 r=000 i=000
for r from 0 to $((row-1)) repeat
do
for c from 0 to $((col-1)) repeat
do
z=$((c*row+r+start))
i=$((z+1))
[ z -lt 32 ] && Z="$C[i]"
[ z -ge 32 ] && Z="\symbol{$z}"
[ c -gt 0 ] && print -n ' & '
prints sf@3bsf08- $z $((2#,z))
done
echo ' \\'
done
set -f
File="\softune\sample\gfs_594\$1"
[ $# -lt 1 -o ! -s "$File" ] && { print -u2 "? $File ?"; exit; }
Zeile="$(prints s256-)"
Arg1="$(prints s25-)"
Arg2="$(prints s25-)"
Arg3="$(prints s25-)"
Arg4="$(prints s25-)"
ArgTyp=00000000
NArg=00000000
PfName=00000000
ZN=00000000
Args() {
local i=0 t=0 a
expr "$1" :a 'Print[a-zA-Z_0-9]%{1,%}(%(..*%));'
expr "$a" :: '^[ %t]*[^, %t]%{1,%}[ %t]%{1,%}[^, %t]' && return 1
expr "$1" :PfName 'Print%([a-zA-Z_0-9]%{1,%}%)(..*);'
ArgTyp=''
while let "++i<=4"
do
t=0
while :
do t=1 expr "$a" :Arg$i '^[ %t]*%(".*[^\]"%)' &&
expr "$a" :a '^[ %t]*".*[^\]"%(.*%)$' && break
t=2 expr "$a" :Arg$i '^[ %t]*%(""%)' &&
expr "$a" :a '^[ %t]*""%(.*%)$' && break
t=3 expr "$a" :Arg$i '^[ %t]*%(''.''%)' &&
expr "$a" :a '^[ %t]*''.''%(.*%)$' && break
t=4 expr "$a" :Arg$i '^[ %t]*%(''\.''%)' &&
expr "$a" :a '^[ %t]*''\.''%(.*%)$' && break
t=5 expr "$a" :Arg$i '^[ %t]*%([0-9][0-9a-zA-Z]*%)' &&
expr "$a" :a '^[ %t]*[0-9][0-9a-zA-Z]*%(.*%)$' && break
t=6 expr "$a" :Arg$i '^[ %t]*%([^, %t]*%)' &&
expr "$a" :a '^[ %t]*[^, %t]*%(.*%)$' && break
print -u2 "Kein ArgTyp![$File:$ZN]" && exit
break
done
catv t =$i,1,ArgTyp
NArg=$i
ifset a || break
expr "$a" :a '^[ %t]*,%(.*%)$'
expr "$a" :a '^[ %t]*%(.*%)$'
ifset a || break
done
return 0
}
Skip() {
local skip=0 pr
while ifset pr && print -r "$Zeile"
pr=1 readl Zeile
do
let ++ZN
ifset Zeile || continue
[ $skip == 2 ] && expr "$Zeile" :: '^#endif' && { skip=0; continue; }
[ $skip == 1 ] && expr "$Zeile" :: '%*/[ %t]*$' && { skip=0; continue; }
[ $skip != 0 ] && continue
expr "$Zeile" :: 'defined(OLDPRN)' && { skip=2; continue; }
expr "$Zeile" :: '^[ %t]*//' && continue
expr "$Zeile" :: '^[ %t]*/%*' && {
expr "$Zeile" :: '%*/[ %t]*$' && continue
skip=1
continue
}
expr "$Zeile" :: 'Print[a-zA-Z_0-9]%{1,%}(' || continue
expr "$Zeile" :: 'Print[a-zA-Z_0-9]%{1,%}(..*);' ||
print -u2 "Mehrzeiler![$File:$ZN]" && continue
Args "$Zeile" || continue
pr=
PrNewFu
done
let skip && print -u2 "Offenes Ende: $skip[$File:$ZN]"
return 0
}
PrNewFu() {
local at=-------- na=0 fmt
case "Print$PfName" in
Printf) na=4 fmt='%?K%.16s' at=-kksu ;;
Print2num) na=3 fmt='%?K%.2u%?K' at=-kku ;;
Printnum) na=1 fmt='%3u' at=-u ;;
Printnr) na=1 fmt='%u' at=-u ;;
Printword) na=1 fmt='%5u' at=-u ;;
Printfloat) na=1 fmt='%,4.1u' at=-u ;;
Printfloat2) na=1 fmt='%,4.2u' at=-u ;;
Printfloat3) na=1 fmt='%,5.1u' at=-u ;;
Print_Ch) na=3 fmt='%?K%c' at=-kkc ;;
Print_Str) na=3 fmt='%?K%-16.16s' at=-kks ;;
Print_Strc) na=3 fmt='%?K%-16.16s' at=-kks ;;
Print_Str_l) na=3 fmt='%?K%.16s' at=-kks ;;
Print_Wert) na=3 fmt='%?K%3u' at=-kku ;;
Print_W) na=3 fmt='%?K%5u' at=-kku ;;
Print_Bit8) na=3 fmt='%?K%08b' at=-kku ;;
Print_Bit16) na=3 fmt='%?K%016b' at=-kku ;;
Print_Hex) na=3 fmt='%?K%#.4x' at=-kkx ;;
Print_F) na=3 fmt='%?K%,4.1u' at=-kku ;;
Print_F2) na=3 fmt='%?K%,4.2u' at=-kku ;;
Print_F3) na=3 fmt='%?K%,5.1u' at=-kku ;;
PrintDate) na=4 fmt='%?s %02u.%02u.%04u' at=-suuu ;;
PrintDatum) na=3 fmt='%02u.%02u.%04u' at=-uuu ;;
PrintTime) na=3 fmt='%02u:%02u:%02u' at=-uuu ;;
PrintTime_os) na=2 fmt='%02u:%02u' at=-uu ;;
*) print -u2 "? $PfName() ?" && exit ;;
esac
[ na -ne NArg ] && print -u2 "nArg: $NArg!=$na(soll)" && exit
expr "$fmt" :: '^%%?K' && {
:
}
local i=0
while let "++i, --n>=0"
do
echo "%t${Arg[i]}"
done
return 0
}
PrA() {
local n=$NArg i=0
echo "Print$PfName"
while let "++i, --n>=0"
do
echo "%t${Arg[i]}"
done
}
Skip < "$File"
an=00000000000
ifs=_______________
Dir="$(prints s120-)"
F="$(prints s80-)"
liste="$(prints s150-)"
vorne="$(prints s80-)"
funam="$(prints s250-)"
reste="$(prints s80-)"
a1="$(prints s60-)"
a2="$(prints s60-)"
a3="$(prints s60-)"
a4="$(prints s60-)"
rest="$(prints s60-)"
Zeile="$(prints s300-)"
zeile="$(prints s300-)"
[ $# -lt 1 ] && Dir=.
[ $# -ge 1 ] && Dir="$1"
[ "$Dir" == . ] && Dir=$(pwd)
conv -F/F\ Dir
[ -d "$Dir" ] || { echo "Keine Existenz: '$Dir'!"; exit 1; }
cd "$Dir"
echo Verzeichnis: $Dir
: *.c
[ $] -lt 1 ] && { echo "Keine *.c vorhanden!"; exit 1; }
local fmt=lu________________
funam=Print_Lan
read "funam?Funktionsname oder all: "
ifset funam || exit 0
[ "$funam" == all ] && funam="
Print_Str Print_Wert Print_Ch Print_W Print_F Print_F_pm Print_F2 Print2num
Printnum Printnum2 Printnr Printword Printfloat Printfloat_pm Printfloat2
Print_Lan Convert_w_s Convert_w_ganz_s Convert_w_ganz3_s Convert_b_s"
Args() {
ifs="$IFS" IFS=, rest= an=0
[ $1 -eq 1 ] && print -r "$liste" | read a1 rest
[ $1 -eq 2 ] && print -r "$liste" | read a1 a2 rest
[ $1 -eq 3 ] && print -r "$liste" | read a1 a2 a3 rest
[ $1 -eq 4 ] && print -r "$liste" | read a1 a2 a3 a4 rest
IFS="$ifs"
ifset rest && return 1
ifset a$1 || return 1
expr "$a1" :a1 '^ *%([0-9]%{1,%}%) *$' '%1' && let ++an
expr "$a2" :a2 '^ *%([0-9]%{1,%}%) *$' '%1' && let ++an
return 0
}
for funam in $funam
do
echo "$funam"
for F in *.c
do
grep -qm "$funam" "$F" || continue
grep -qm "//.*$funam.*//F/" "$F" && continue
echo "%t$F"
cat "$F" | {
: > "$F"
while readl Zeile zeile
do
while :
do
expr "$Zeile" :: '^[ %t]*/[*/]' && break
expr "$Zeile" :: '[^a-zA-Z_0-9]'"$funam"'([^;]%{1,%});' || break
expr "$Zeile" :vorne '^%(.*[^a-zA-Z_0-9]%)'"$funam(" || break
expr "$Zeile" :Zeile '^.*[^a-zA-Z_0-9]%('"$funam"'(.*%)$' '%1'
expr "$Zeile" :liste "^$funam("'%(..*%)$'
expr "$liste" :reste '^[^;]%{1,%}%();.*%)$'
expr "$liste" :liste '^%([^;]%{1,%}%));.*$'
expr "$liste" :liste '^ *' ''
expr "$liste" :liste ' *$' ''
case "$funam" in
Print_Lan)
Args 3 || break
if [ an -eq 2 ]
then
Zeile="${vorne}Print_lcd(%"%%$a1.${a2}K%%Fs%", MSG($a3)$reste"
else
Zeile="${vorne}Print_lcd(%"%%K%%Fs%", $a1,$a2, MSG($a3)$reste"
fi
print -r "//$zeile//F/" >> "$F"
;;
Print_Str|Print_Wert|Print_Ch|Print_W|Print_F|Print_F_pm|Print_F2|Print2num)
case "$funam" in
Print_Str) fmt=s ;;
Print_Wert) fmt=3u ;;
Print_Ch) fmt=c ;;
Print_W) fmt=5u ;;
Print_F) fmt=,4.1u ;;
Print_F2) fmt=,4.2u ;;
Print_F_pm) fmt=,4.1i ;;
Print2num) fmt=2u ;;
esac
Args 3 || break
if [ an -eq 2 ]
then
Zeile="${vorne}Print_lcd(%"%%$a1.${a2}K%%$fmt%", $a3$reste"
else
Zeile="${vorne}Print_lcd(%"%%K%%$fmt%", $a1,$a2, $a3$reste"
fi
print -r "//$zeile//F/" >> "$F"
;;
Printnum|Printnum2|Printnr|Printword|Printfloat|Printfloat_pm|Printfloat2)
case "$funam" in
Printnum) fmt=3u ;;
Printnum2) fmt=02u ;;
Printnr) fmt=u ;;
Printword) fmt=5u ;;
Printfloat) fmt=,4.1u ;;
Printfloat2) fmt=,4.2u ;;
Printfloat_pm) fmt=,4.1i ;;
esac
Args 1 || break
Zeile="${vorne}Print_lcd(%"%%$fmt%", $a1$reste"
print -r "//$zeile//F/" >> "$F"
;;
Convert_w_s|Convert_w_ganz_s|Convert_w_ganz3_s|Convert_b_s)
case "$funam" in
Convert_w_s) fmt=,6.1i ;;
Convert_w_ganz_s) fmt=5i ;;
Convert_w_ganz3_s) fmt=3u ;;
Convert_b_s) fmt=02u ;;
esac
Args 2 || break
Zeile="${vorne}sprintf_F($a2, %"%%$fmt%", $a1$reste"
print -r "//$zeile//F/" >> "$F"
;;
*) print -ru2 "Unbekannt: '$funam'"; exit 0 ;;
esac
break
done
print -r "$Zeile" >> "$F"
done
}
done
done
read "-?bish:$0: <Enter> "
[ $# -eq 0 ] && exit 0
SW=0
[ "$1" == -sw ] && SW=1 shift
DIR=.
[ $# -gt 1 ] && DIR="$1" shift
FILES="$*"
set Z:.1000
set Text:.100
set Leer:.100
set FILE:.100
set OFILE:.100
set HexC:010
R=000000000
G=000000000
B=000000000
PutText() {
local l:20.1 kl:21.1 kr:22.1
expr "$Text" :Text '"' += '"'
expr "$Text" :Text '<' += '<'
expr "$Text" :Text '>' += '>'
expr "$Text" :Text '&' += '&'
expr "$Text" :Text ' ' += "$l"
expr "$Text" :Text '{' += "$kl"
expr "$Text" :Text '}' += "$kr"
expr "$Text" :Text '\' += '\symbol{92}'
expr "$Text" :Text '''' += '\symbol{39}'
expr "$Text" :Text '`' += '\symbol{96}'
expr "$Text" :Text '"' += '\symbol{34}'
expr "$Text" :Text '%^' += '\symbol{94}'
expr "$Text" :Text '~' += '\symbol{126}'
expr "$Text" :Text '&' += '\&'
expr "$Text" :Text '#' += '\#'
expr "$Text" :Text '%$' += '\$'
expr "$Text" :Text '%%' += '\%'
expr "$Text" :Text '_' += '\_'
expr "$Text" :Text '<' += '\symbol{60}'
expr "$Text" :Text '>' += '\symbol{62}'
expr "$Text" :Text '-' += '\symbol{45}'
expr "$Text" :Text '%[' += '\symbol{91}'
expr "$Text" :Text ']' += '\symbol{93}'
expr "$Text" :Text ',' += '\symbol{44}'
expr "$Text" :Text "$kl" += '\{'
expr "$Text" :Text "$kr" += '\}'
expr "$Text" :Text "$l" += '\ '
ifset Text || return 1
catv Text
return 0
}
MkRgb() {
expr "$HexC" :R '^%(..%)....'
expr "$HexC" :G '^..%(..%)..'
expr "$HexC" :B '^....%(..%)'
let "R=16#$R" "G=16#$G" "B=16#$B"
let "R=(R*1000+127)/255" %
"G=(G*1000+127)/255" %
"B=(B*1000+127)/255"
[ ${#R} -eq 1 ] && R=0.00$R
[ ${#R} -eq 2 ] && R=0.0$R
[ ${#R} -eq 3 ] && R=0.$R
[ ${#R} -eq 4 ] && R=1.000
[ ${#G} -eq 1 ] && G=0.00$G
[ ${#G} -eq 2 ] && G=0.0$G
[ ${#G} -eq 3 ] && G=0.$G
[ ${#G} -eq 4 ] && G=1.000
[ ${#B} -eq 1 ] && B=0.00$B
[ ${#B} -eq 2 ] && B=0.0$B
[ ${#B} -eq 3 ] && B=0.$B
[ ${#B} -eq 4 ] && B=1.000
[ "$HexC" == 000000 ] && return 1
return 0
}
RAlez='%( %{1,}%)'
RAtxt='%([^<]%{1,}%)'
RAfcc='<font color="#%(......%)">'
RAbgc='<span style="background-color: #%(......%)">'
KZ='[%/*#(;"]%{1,2}'
Vim='""'
Leerz() {
local k:.10 rek=$1
shift
expr "$rek" :k '[BFb]' += '}' || k=
catv k /\verb: Text /:
while ifset rek
do
catv 1,rek =k:
expr "$rek" :rek '^.%(.*%)$'
case "$k" in
B) catv ".\colorbox[rgb]{$1,$2,$3}{"; shift 3 ;;
F) catv ".\textcolor[rgb]{$1,$2,$3}{"; shift 3 ;;
b) catv '.\textbf{' ;;
esac
done
return 0
}
Zeile() {
local a=. k=. rek=$1 sw=R
[ SW -eq 1 ] && sw=r
shift
while :
do
ifset Z || return 0
expr "$rek" :k '%(.%)$' || k=.
case "$k" in
B) expr "$Z" :Z '^</span>' = '' && k=$sw ;;
F) expr "$Z" :Z '^</font>' = '' && k=$sw ;;
f) expr "$Z" :Z '^</font>' = '' && k=r ;;
b) expr "$Z" :Z '^</b>' = '' && k=R ;;
esac
[ "$k" == r ] && { return 0; }
[ "$k" == R ] && { catv '.}'; return 0; }
expr "$Z" :Text "^$RAtxt" && {
PutText
expr "$Z" :Z "^$RAtxt" = ''
}
expr "$Z" :HexC "^$RAbgc" && {
expr "$Z" :Z "^$RAbgc" = ''
[ SW -eq 0 ] && { MkRgb; catv ".\colorbox[rgb]{$R,$G,$B}{"; }
Zeile ${rek}B $* $R $G $B
}
expr "$Z" :HexC "^$RAfcc" && {
expr "$Z" :Z "^$RAfcc" = ''; a=f
[ SW -eq 0 ] && MkRgb && a=F catv ".\textcolor[rgb]{$R,$G,$B}{"
Zeile ${rek}$a $* $R $G $B
}
expr "$Z" :: "^<b>" && {
expr "$Z" :Z "^<b>" = ''
catv ".\textbf{"
Zeile ${rek}b $*
}
done
return 0
}
for FILE in $FILES
do
< $FILE
while :
do
OFILE=
while readl Z
do expr "$Z" :OFILE "$KZ"'@+%(%w%{4,}%)@'"$KZ" &|
expr "$Z" :OFILE "$Vim"'@+%(%w%{4,}%)@'"$Vim" && break
done
ifset OFILE || break
print -u2 "%t$DIR/$OFILE.ctex"
> $DIR/$OFILE.ctex
catv '/\begin{flushleft}%n\begin{ttfamily}%n'
while readl Z
do
expr "$Z" :: "$KZ@-$OFILE@$KZ" &|
expr "$Z" :: "$Vim@-$OFILE@$Vim" && break
catv '/\ \ \ '
Zeile
catv /\\%n
done
catv '/\end{ttfamily}%n\end{flushleft}%n'
><
done
><
done
exit 0
[ $# -eq 0 ] && exit 0
DIR=.
[ $# -gt 1 ] && DIR="$1" shift
FILES="$*"
set Z:.500
set Text:.100
set Leer:.100
set FILE:.100
set OFILE:.100
set HexC:010
R=000000000
G=000000000
B=000000000
PutText() {
local l:20.1
expr "$Text" :Text '"' += '"'
expr "$Text" :Text '<' += '<'
expr "$Text" :Text '>' += '>'
expr "$Text" :Text '&' += '&'
expr "$Text" :Text ' ' += "$l"
expr "$Text" :Text '\' += '\textbackslash '
expr "$Text" :Text '''' += '\textquoteright '
expr "$Text" :Text '`' += '\textquoteleft '
expr "$Text" :Text '"' += '\textquotedblright '
expr "$Text" :Text '%^' += '\textasciicircum '
expr "$Text" :Text '~' += '\textasciitilde '
expr "$Text" :Text '&' += '\&'
expr "$Text" :Text '#' += '\#'
expr "$Text" :Text '%$' += '\$'
expr "$Text" :Text '%%' += '\%'
expr "$Text" :Text '_' += '\_'
expr "$Text" :Text '{' += '\{'
expr "$Text" :Text '}' += '\}'
expr "$Text" :Text "$l" += '\ '
ifset Text || return 1
catv Text
return 0
}
MkRgb() {
expr "$HexC" :R '^%(..%)....'
expr "$HexC" :G '^..%(..%)..'
expr "$HexC" :B '^....%(..%)'
let "R=16#$R" "G=16#$G" "B=16#$B"
let "R=(R*1000+127)/255" %
"G=(G*1000+127)/255" %
"B=(B*1000+127)/255"
[ ${#R} -eq 1 ] && R=0.00$R
[ ${#R} -eq 2 ] && R=0.0$R
[ ${#R} -eq 3 ] && R=0.$R
[ ${#R} -eq 4 ] && R=1.000
[ ${#G} -eq 1 ] && G=0.00$G
[ ${#G} -eq 2 ] && G=0.0$G
[ ${#G} -eq 3 ] && G=0.$G
[ ${#G} -eq 4 ] && G=1.000
[ ${#B} -eq 1 ] && B=0.00$B
[ ${#B} -eq 2 ] && B=0.0$B
[ ${#B} -eq 3 ] && B=0.$B
[ ${#B} -eq 4 ] && B=1.000
[ "$HexC" == 000000 ] && return 1
return 0
}
RAlez='%( %{1,}%)'
RAtxt='%([^<]%{1,}%)'
RAfcc='<font color="#%(......%)">'
RAbgc='<span style="background-color: #%(......%)">'
KZ='[%/*#(;"]%{2}'
Vim='""'
Leerz() {
local k:.10 rek=$1
shift
expr "$rek" :k '[BFb]' += '}' || k=
catv k /\verb: Text /:
while ifset rek
do
catv 1,rek =k:
expr "$rek" :rek '^.%(.*%)$'
case "$k" in
B) catv ".\colorbox[rgb]{$1,$2,$3}{"; shift 3 ;;
F) catv ".\textcolor[rgb]{$1,$2,$3}{"; shift 3 ;;
b) catv '.\textbf{' ;;
esac
done
return 0
}
Zeile() {
local a=. k=. rek=$1
shift
while :
do
ifset Z || return 0
expr "$rek" :k '%(.%)$' || k=.
case "$k" in
B) expr "$Z" :Z '^</span>' = '' && k=R ;;
F) expr "$Z" :Z '^</font>' = '' && k=R ;;
f) expr "$Z" :Z '^</font>' = '' && k=r ;;
b) expr "$Z" :Z '^</b>' = '' && k=R ;;
esac
[ "$k" == r ] && { return 0; }
[ "$k" == R ] && { catv '.}'; return 0; }
expr "$Z" :Text "^$RAtxt" && {
PutText
expr "$Z" :Z "^$RAtxt" = ''
}
expr "$Z" :HexC "^$RAbgc" && {
expr "$Z" :Z "^$RAbgc" = ''
MkRgb
catv ".\colorbox[rgb]{$R,$G,$B}{"
Zeile ${rek}B $* $R $G $B
}
expr "$Z" :HexC "^$RAfcc" && {
expr "$Z" :Z "^$RAfcc" = ''; a=f
MkRgb && a=F catv ".\textcolor[rgb]{$R,$G,$B}{"
Zeile ${rek}$a $* $R $G $B
}
expr "$Z" :: "^<b>" && {
expr "$Z" :Z "^<b>" = ''
catv ".\textbf{"
Zeile ${rek}b $*
}
done
return 0
}
for FILE in $FILES
do
< $FILE
while :
do
OFILE=
while readl Z
do expr "$Z" :OFILE "$KZ"'@+%(%w%{4,}%)@'"$KZ" &|
expr "$Z" :OFILE "$Vim"'@+%(%w%{4,}%)@'"$Vim" && break
done
ifset OFILE || break
print -u2 "%t$DIR/$OFILE.ctex"
> $DIR/$OFILE.ctex
catv '/\begin{flushleft}%n\begin{ttfamily}%n'
while readl Z
do
expr "$Z" :: "$KZ@-$OFILE@$KZ" &|
expr "$Z" :: "$Vim@-$OFILE@$Vim" && break
catv '/\ \ \ '
Zeile
catv /\\%n
done
catv '/\end{ttfamily}%n\end{flushleft}%n'
><
done
><
done
exit 0
grep -Xn -e '[%d{128}-%d{255}-[äöüßÄÖÜ]]' /u/bish/bish.c /u/bish/mod/*.[hc]
:
for b from 64 by -1 to 2 repeat
do
echo "%n#define SINGLE$b(A,B,F)" ' ( \'
a=-0001
while let '++a<=--b'
do
echo "%tA[$a]==B[$a]&&" ' \'
let 'a>=b' && break
echo "%tA[$b]==B[$b]&&" ' \'
done
echo '%t%t%t)'
done
set -f
cd /u/hp/2
for mode in add num dir del nowebhits webhits numnam
do
read "inp?$mode?[y]: "
[ "$inp" != y ] && continue
[ "$mode" == numnam ] && : > /u/hp/cnt_htm.lst
n=00000000
for file in %
index.htm %
de/index.htm %
produkte.htm %
recover.htm %
de/190.htm %
de/atxcool.htm %
de/bishbeisp.htm %
de/c.htm %
de/cc.htm %
de/cksum.htm %
de/cmd.htm %
de/fan.htm %
de/hinw.htm %
de/htm/ansi.htm %
de/htm/bishmnk.htm %
de/htm/istepbish.htm %
de/htm/rgb.htm %
de/kurz.htm %
de/lim/compilo.htm %
de/lim/lim.htm %
de/lizenz.htm %
de/mailcode.htm %
de/old/delsafe.htm %
de/old/forum.htm %
de/old/hpinfo.htm %
de/old/olinfo.htm %
de/old/pearl.htm %
de/overclk.htm %
de/pent.htm %
de/sco.htm %
de/syntax.htm %
de/win.htm %
bish/chprint.htm %
bish/proto.htm %
bish/segm.htm %
bish/stack.htm %
bish/var.htm
do
[ -s $file ] || continue
let ++n
echo $mode:$n: $file
case $mode in
add)
grep -qm 'cgi/icnt.pl?' $file && continue
cat $file | {
> $file
while readl zeile
do
print -r "$zeile"
expr "$zeile" =:: '^[ %t]*<body ' || continue
cat /u/hp/cnt_htm
done
><
}
;;
num)
cat $file | {
> $file
while readl zeile
do
expr "$zeile" :: 'cgi/icnt.pl?' ||
print -r "$zeile" && continue
expr "$zeile" :zeile %
'%(cgi/icnt.pl?[0-9]%{1,%}%.%)[1-9][0-9]*' %
"%%1$n"
print -r "$zeile"
done
><
}
;;
dir)
vors=' '
cat $file | {
> $file
while readl zeile
do
expr "$zeile" :: 'cgi/icnt.pl?' ||
print -r "$zeile" && continue
expr "$file" :: '^[^/]%{1,%}/[^/]%{1,%}$' && vors=../de/
expr "$file" :: '^de/[^/]%{1,%}$' && vors=
expr "$file" :: '^de/[^/]%{1,%}/[^/]%{1,%}$' && vors=../
expr "$file" :: '/' || vors=de/
expr "$zeile" :zeile %
'"[^"]*%(cgi/icnt.pl?[0-9][^"]%{1,%}"%)' + "%"$vors%%1"
print -r "$zeile"
done
><
}
;;
del)
z=0
cat $file | {
> $file
while readl zeile
do
let z==0 && expr "$zeile" =:: '<table ..*130..*35' &&
z=1 && continue
let z==1 && expr "$zeile" =:: '</table>' &&
z=2 && continue
let z==1 && continue
print -r "$zeile"
done
><
}
;;
nowebhits)
cat $file | {
> $file
while readl zeile
do
expr "$zeile" =:: %
'<img ..*Count.cgi..*df=27273.dat[^<>]*>' ||
print -r "$zeile" && continue
expr "$zeile" =:: %
'<!--<img ..*Count.cgi..*df=27273.dat[^<>]*>-->' &&
print -r "$zeile" && continue
expr "$zeile" =:zeile %
'%(<img ..*Count.cgi..*df=27273.dat[^<>]*>%)' '<!--%1-->'
print -r "$zeile"
done
><
}
;;
webhits)
cat $file | {
> $file
while readl zeile
do
expr "$zeile" =:zeile %
'<!--%(<img ..*Count.cgi..*df=27273.dat[^<>]*>%)-->' '%1'
print -r "$zeile"
done
><
}
;;
numnam)
print -r "$n: $file" >> /u/hp/cnt_htm.lst
;;
*) echo "*** $n: $file ***"; break 2 ;;
esac
done
done
set -f
html='<HTML><HEAD><TITLE></TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0; URL=~url~">
</HEAD><BODY TEXT="#000000" BGCOLOR="#CDAA7D">
<center><br><br><h1>Hui</h1></center></BODY></HTML>
'
echo cd de > /u/hp/ren
cd /u/hp/2/de
list -fR |
while readl Z
do
expr "$Z" :nam '%([^/]*%.htm%)$' || continue
expr "$Z" :dir '^%(.*/%)[^/]*$' || dir=
catv 3,nam =pre:
base -b pre +12 pre
conv -'d ' pre
pre="${pre}_"
Zg="$(- grep -m 'icnt.pl?0%.[1-9][0-9]*' $dir$nam )" ||
echo !grep $dir$nam
expr "$Zg" :Zg 'icnt.pl?%(0%.[1-9][0-9]*%)'
move $dir$nam $dir$pre$nam
echo rename $dir$nam $dir$pre$nam >> /u/hp/ren
url="cgi/get.pl?$Zg:../$dir$nam"
ifset dir && url="../$url"
expr "$html" :HTML '~url~' = "$url"
[ ! -e "$dir$nam" ] && catv HTML > $dir$nam
done
echo cd / >> /u/hp/ren
cd /u/hp/2
list -f |
while readl Z
do
expr "$Z" :nam '%([^/]*%.htm%)$' || continue
expr "$Z" :dir '^%(.*/%)[^/]*$' || dir=
catv 3,nam =pre:
base -b pre +12 pre
conv -'d ' pre
pre="${pre}_"
Zg="$(- grep -m 'icnt.pl?0%.[1-9][0-9]*' $dir$nam )" ||
echo !grep $dir$nam
expr "$Zg" :Zg 'icnt.pl?%(0%.[1-9][0-9]*%)'
move $dir$nam $dir$pre$nam
echo rename $dir$nam $dir$pre$nam >> /u/hp/ren
url="de/cgi/get.pl?$Zg:../../$dir$nam"
ifset dir && url="../$url"
expr "$html" :HTML '~url~' = "$url"
[ ! -e "$dir$nam" ] && catv HTML > $dir$nam
done
set -f
cd /u/hp/2
: > /u/hp/hlst
for F in `find . -type f -name '*.htm' -print`
do
< /u/hp/rlst
while readl Z
do
grep -qm -e '="[^"]*'$Z'"' $F && echo $F: $Z >> /u/hp/hlst
done
><
done
set Z:.100 N:010
grep -c '^%%l%%[a-z]' kap/*.tex | {
while readl Z
do
catv Z /%n
expr "$Z" :Z ':%(%d%{1,}%)$' || continue
let "N+=Z"
done
}
catv .::: N /%n
Chapters() {
local z=0 c:.30
CHAP=
< "$1"
while readl Z
do
case $z in
0) expr "$Z" :: '^\mainmatter' && z=1 ;;
1) expr "$Z" :: '^\backmatter' && break
expr "$Z" :c '^\include{%([^}]%{1,}%)}' || continue
expr "$c" :c '%([^/}]%{1,}%)$'
catv c /%n =:,,CHAP:
;;
esac
done
><
return 0
}
HTML() {
local z=0
HTMLa=
< "$1"
while readl Z
do
expr "$Z" :Z '<title>[^<>]*</title>' = "$Title"
expr "$Z" :: '^<body[ >]' && z=1
catv Z /%n =:,,HTMLa:
[ z -eq 1 ] && break
done
><
return 0
}
Code() {
local z=0 t=0 kz=.. ch:.20
[ $1 == text ] && z=2
< $3
while readl Z
do
case $z in
0)
expr "$Z" :ch '%(..%)@+%('"$4"'_[a-z0-9]%{2}%)@%1' || continue
z=1 t=1; catv 2,ch =kz:; catv 2,,ch =ch:
catv "/<a name=%"${ch}T%"></a>%n" =3
catv "/ <a href=%"#$ch%">$ch.$2</a><br>%n" =3
catv "/<br><br><a name=%"$ch%"></a><br>%n"
catv "/<a href=%"#${ch}T%">$ch.$2</a>%n<ul>%n"
catv '/<table bgcolor="#000000" width="80%" border="0" cellpadding="10"><tr><td bgcolor="#ffffff"><pre>%n'
;;
1)
expr "$Z" :: "$kz@-$ch@$kz" && {
catv '/</pre></td></tr></table></ul>%n'
z=0 continue
}
catv Z /%n
;;
2)
expr "$Z" :ch '%(..%)@+%('"$4"'_[a-z0-9]%{2}%)@%1' || continue
z=3 t=1; catv 2,ch =kz:; catv 2,,ch =ch:
catv "/$kz $ch.$2%n"
;;
3)
expr "$Z" :: "$kz@-$ch@$kz" && {
catv '/%n%n'
z=2 continue
}
catv Z /%n
;;
esac
done
><
[ $1 == html -a t -eq 1 ] && { catv '/<br>%n' =3; catv '/<br><br>%n'; }
[ $1 == text -a t -eq 1 ] && { catv '/%n%n%n'; }
return 0
}
HTMLb='</body>
</html>'
Title='<title>Kodeabschnitte in Farbe</title>'
HTML3='<br>
<h1>Moderne C-Programmierung - Kompendium und Referenz</h1>
<h2>Kodeabschnitte des Buches in Farbe</h2>
Hergestellt mit Editor <tt>gvim</tt> und Shell <tt>bish</tt><br>
<br><br><br>
'
TXT3='
Moderne C-Programmierung - Kompendium und Referenz
Kodeabschnitte des Buches als Plain-Text
Hergestellt mit Shell bish
'
set Z:.300
set CHAP:.500
set HTMLa:.400
set DE:.10
set LE:.10
set CH:.20
set CO:.20
set HT:.20
Chapters c.tex
HTML ctex_c.htm
for DE in html text
do
CO=code3.$DE
print -u2 "%t$CO"
>$CO
3>"/tmp/$CO"
for LE in c bish cpp pl s txt
do
[ $DE == html ] && HT=ctex_$LE.htm
[ $DE == text ] && HT=ctex_l.$LE
print -u2 "%t%t$HT"
for CH in $CHAP
do
print -u2 "%t%t%t$CH"
Code $DE $LE $HT $CH
done
done
><<
[ $DE == html ] && {
catv HTMLa HTML3 3 0 HTMLb <$CO 3<"/tmp/$CO" | cat >$CO
}
[ $DE == text ] && {
catv TXT3 0 <$CO | {
>$CO
while readl Z
do catv Z /%r%n; done
><
}
}
remove -s /tmp/$CO
done
exit 0
set -f
set +S
[ `ver n` -lt 305 ] && { echo "Shell-Version < 305!"; exit 0; }
[ `ver w` == full -o -t 0 -a -t 1 -a -t 2 ] || exit 0
Script="$0"
expr "$Script" :Script '^%.[/\]' ''
if [ `ver s` == unix ]
then
expr "$Script" :: '^[^/]' && Script="`-pwd`/$Script"
else
expr "$Script" :: '^\.' && pwd | catv 0,2,0 Script =Script:
expr "$Script" :: '^.:\.' || Script="`-pwd`\$Script"
conv -t/\F\ Script
fi
echo "Script ist: '$Script'"
echo Inhalts-Test...
[ -w "$Script" ] || {
print -u2 "Script hat Schreibschutz: '$Script'"; exit 1; }
inp=`grep -c '^#@F ......' "$Script"`
let "inp!=551" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
inp=`grep -c '^#@G [a-zA-Z0-9,äöüß]%{20%}$' "$Script"`
let "inp!=100" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
inp=`grep -c '^#@g [-0-9]%{10%}$' "$Script"`
let "inp!=1" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
RGB=000000
GWpos=0000000000
Gpos=0000000000
Dpos=0000000000
Pos=0000000000
NDsel="$(prints sf010-)"
Dsel="$(prints s150-)"
Gsel="$(prints s20-)"
Hex=$(prints sf070-)
CN="$(prints s210-)"
zeile="$(prints s300-)"
Such="$(prints s250-)"
Fsel="$(prints s150-)"
Zeile="$(prints s1250-)"
< $Script
while seek + 0 GWpos; readl Zeile
do expr "$Zeile" :: '^#@g ' && break; done
catv $((GWpos+=4)),10,0 =Gsel:
echo GruppenGWposition=$GWpos
echo Inhalts-Test G...
inp=000
seek $GWpos 0
while readl Zeile
do expr "$Zeile" :: '^#@G ' && { let ++inp; continue; }
let inp && break
done
seek + 0 Dpos
><
let "inp!=100" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
< $Script
seek $GWpos 0
while seek + 0 Gpos; readl Zeile
do expr "$Zeile" :: '^#@G ' && break; done
echo Gruppenposition=$Gpos
seek $Dpos 0
while seek + 0 Dpos; readl Zeile
do expr "$Zeile" :: '^#@D[0-9] ' && break; done
><
echo Dateienposition=$Dpos
let "!GWpos||!Gpos||!Dpos||GWpos>=Gpos||GWpos>=Dpos||Gpos>=Dpos" &&
{ echo "pos:Script-Inhalt ungültig!"; exit 1; }
Fmain() {
inp=$1
shift
case "$inp" in
NDGsel)
local g=00
NDsel=" 0"
expr "$Gsel" :: '[0-9]' || return
< $Script
seek $Dpos 0
while readl Zeile
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 3,1,Zeile =g:
expr "$Gsel" :: $g || continue
let ++NDsel
done
><
NDsel="$( prints s5- $NDsel )"
return 0
;;
Gw)
local g=00
Gsel=----------
for g from 0 by 1 to 9 repeat
do
expr "-$1" :: "$g" || continue
catv g =$g,1,Gsel
done
catv Gsel =$GWpos,10,0 <> $Script
return 0
;;
Gcopyg)
local g="$1" n=00
ifset g || return
expr "$g" :: '[^0-9]' && return
let "g>9" && return
< $Script
for n from 0 by 1 to 9 repeat
do
catv $((Gpos+g*260+n*26+4)),20,0 =$((n*20)),,CN
done
><
conv -t", " CN
return 0
;;
GcopyG)
local grp="$1" g=00 n=00
ifset grp || return
expr "$grp" :: '[^0-9]' && return
conv -t" ," CN
<> $Script
for g from 0 by 1 to 9 repeat
do
expr "$grp" :: $g || continue
for n from 0 by 1 to 9 repeat
do
catv $((n*20)),20,CN =$((Gpos+g*260+n*26+4)),,0
done
done
><
conv -t", " CN
return 0
;;
DCheck)
local n=000 pos
list -fR | {
seek + 0 pos
3< $Script
seek $Dpos 3
while readl -u3 Zeile
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 5,,Zeile =Zeile:
ifset Zeile || continue
seek $pos 0
grep -qFx -e "$Zeile" && continue
let ++n
print -r " $Zeile"
done
><
}
let n || return 0
echo "Es wurden $n Dateinamen gefunden, die im aktuellen"
echo "Verzeichnis nicht existieren."
echo "Dateieinträge entfernen? [J]: %c"
read inp
[ "$inp" != J ] && return 0
catv $Dpos,,0 < $Script | {
fstat +s $Dpos $Script
>> $Script
while readl Zeile Such
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 5,,Zeile =Zeile:
ifset Zeile || continue
list -fR | grep -qFx -e "$Zeile" || continue
catv Such /%n
done
><
}
return 0
;;
SetD)
local tmp=$1 von=____ bis=____ n=0000 g=00 grp
shift
while let $#
do
grp="$1"
expr "$grp" :: '[0-9]=[-0-9]' || continue
conv -t"= " grp
for 2 bis grp in $grp ; do :; done
expr "$grp" :: '[^-0-9]' && continue
expr "$grp" :: '-' && grp=-
conv -t"- " bis
for 2 von bis in $bis ; do :; done
ifset bis || bis=$von
expr "$von$bis" :: '[^0-9]' && continue
let "!von||!bis||von>bis" && continue
4< $tmp
catv $Dpos,,0 < $Script | {
fstat +s $Dpos $Script
seek + 0 Pos
while readl Such
do
expr "$Such" :: '^#@D[0-9] ' || continue
catv 3,1,Such =g:
catv 5,,Such =Such:
seek 0 4; n=0
while readl -u4 zeile
do
let "++n<von||n>bis" && continue
cmpv Such zeile && continue 2
done
catv "/#@D$g " Such /%n >> $Script
done
seek 0 4; n=0
while [ $grp != - ] && readl -u4 zeile
do
let "++n<von||n>bis" && continue
for g from 0 by 1 to 9 repeat
do
expr "$grp" :: "$g" || continue
catv "/#@D$g " zeile /%n >> $Script
done
done
}
><
shift
done
return 0
;;
GetGrp)
local grp=---------- g=0
< $Script
seek $Dpos 0
while readl zeile
do
expr "$zeile" :: '^#@D[0-9] ' || continue
catv 3,1,zeile =g:
catv 5,,zeile =zeile:
cmpv $1 zeile && catv g =$g,1,grp
done
><
$2=$grp
return 0
;;
Dateien)
local n=000 tmp
mktemp tmp
> $tmp
list -fR |
while readl Zeile Such
do
conv -L Such
expr "$Such" :: '.html%{0,1%}$' &&
catv Zeile /%n
done
><
3<&0
while :
do
n=0
< $tmp
while readl Zeile
do
let ++n
Fmain GetGrp Zeile inp
prints ss4s " $inp " $n ":$Zeile"
let "n%20==0" && {
echo "Auswahl:a[-b]=0123456789- ..."
echo "Weiter:<Enter> %c"
read -u3 inp
ifset inp && Fmain SetD $tmp $inp
}
done
><
echo "Auswahl:a[-b]=0123456789- ..."
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
ifset inp || continue
[ "$inp" == e ] && break
Fmain SetD $tmp $inp
done
><
remove $tmp
return 0
;;
ShowF)
local nf=-001 rgb=000000000000 nl=-001 sel nam
inp=""
3<&0
grep '^#@[Ff] ' $Script | Fconv | {
seek + 0 Pos
while :
do
nf=-1 nl=-1
seek $Pos 0
while read nam rgb
do
let ++nf
Zeile="$nam"; conv -U Zeile
ifset inp && [[ "$Zeile" != "$inp" ]] && continue
let ++nl
prints s5s-20s4s4s4 $nf: $nam $rgb
let "nl>0&&nl%20==0" && {
echo "Start:s Beenden:e Farbwahl:123 [456]..."
echo "Farbname:[*]xyz[*] Weiter:<Enter> %c"
read -u3 inp
conv -t"$(echo %t%c) " inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && { inp=; continue 2; }
expr "$inp" :: '[^ 0-9]' ||
expr "$inp" :: '[0-9]' && sel="$sel$inp " inp=
ifset inp && { conv -U inp; continue 2; }
}
done
echo "Start:<Enter> Beenden:e Farbwahl:123 [456]..."
echo "Farbname:[*]xyz[*] (EOF) %c"
read -u3 inp
conv -t"$(echo %t%c) " inp
[ "$inp" == e ] && break
conv -U inp
ifset inp || continue
expr "$inp" :: '[^ 0-9]' ||
expr "$inp" :: '[0-9]' && sel="$sel$inp " inp=
done
}
><
ifset sel || return 0
echo Farbnamen-Selektion...
nf=-1
grep '^#@[Ff] ' $Script | Fconv | {
while read nam rgb
do
let ++nf
expr " $sel " :: " $nf " && Fsel="$Fsel$nf:$nam "
done
}
return 0
;;
SetRGB)
local r=$1 g=$2 b=$3
r=$((16#, r&255)) g=$((16#, g&255)) b=$((16#, b&255))
let "${#r}==1" && r="0$r"
let "${#g}==1" && g="0$g"
let "${#b}==1" && b="0$b"
RGB="$r$g$b"
conv -u RGB
return 0
;;
GetFnam)
local nu=-001 rgb=000000000000 f="$1" nam
conv -Ud, f
while read nam rgb
do
let ++nu
expr "$1" :: '^[0-9]%{1,3%}$' && {
let "$1!=nu" && continue
Fmain SetRGB $rgb; echo $nam; return 0
}
inp=$nam; conv -U inp
[[ $inp != "$f" ]] && continue
Fmain SetRGB $rgb; echo $nam; return 0
done
return 1
;;
Help)
local n=00000 j=/%j z=...
3<&0
while :
do
echo ; prints sf-79
n=0 j=/%j z=
grep '^#@H' $Script |
while readl Zeile
do
catv "/ " 4,,Zeile $j
let "++n%20==0" &&
echo "${z}Start:s Beenden:e Weiter:<Enter> %c"
let "n>=20" && { j= z=%n
read -u3 inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && continue 2
}
done
prints sf-79
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
[ "$inp" == e ] && break
done
><
return 0
;;
*) print -u2 "!!! $inp $* ???" ;;
esac
return
}
Fconv() {
local l=0000 o=0000 n=-00001
while readl Zeile
do
print -nu2 "%t$((++n)) %r"
expr "$Zeile" :: '^#@f' && { catv 4,,Zeile /%n; continue; }
let "l=${#Zeile}, l<6||l&1" && {
print -u2 "l=$l:falscher Wert!"; exit 1; }
catv 4,,Zeile =Zeile:
l=${#Zeile}
while (( l>=16 ))
do
catv 0,2,Zeile /" " 2,2,Zeile /" " %
4,2,Zeile /" " 6,2,Zeile /" " %
8,2,Zeile /" " 10,2,Zeile /" " %
12,2,Zeile /" " 14,2,Zeile | base -31 +b
catv 16,,Zeile =Zeile:
(( l-=16 ))
done
while (( l>=8 ))
do
catv 0,2,Zeile /" " 2,2,Zeile /" " %
4,2,Zeile /" " 6,2,Zeile | base -31 +b
catv 8,,Zeile =Zeile:
(( l-=8 ))
done
(( o=-2, l+=2 ))
while (( o+=2, l-=2, l>0 ))
do
catv $o,2,Zeile | base -31 +b
done
catv /%n
done
print -u2
return 0
}
SetNH() {
local r=0
[ "$1" == '#@W' ] && { r=000; shift; }
let "$#&1" && { echo Ungerade ArgAnzahl; return 1; }
let "$#<2" && return 1
local n=$1 f="$(prints s20-)" pos=0000000000 fnam
echo "... %c"
grep '^#@[Ff] ' $Script | Fconv | {
seek + 0 pos
while let "$#>=2"
do
n=$1 f="$(prints s20-)"
fnam=$( Fmain GetFnam "$2" )
ifset fnam || { r=1; break; }
echo "+$RGB%c"
[ $r != 000 ] && catv fnam =f
[ $r != 000 ] && catv f =$((20*[n-1])),20,CN
catv RGB =$((6*[n-1])),6,Hex
shift 2
seek $pos 0
done
}
echo
return $r
}
Write() {
expr "$Gsel" :: '[0-9]' || return
let $NDsel || return
local g=00 n=0000 nn=0000
mktemp zeile
for g from 0 by 1 to 9 repeat
do
expr "$Gsel" :: $g || continue
echo Gruppe $g...
> $zeile
< $Script
seek $Dpos 0 ; n=0
while readl Zeile
do
expr "$Zeile" :: "^#@D$g " || continue
catv 5,,Zeile /%n ; let ++n ++nn
done
><<
let n || continue
echo $n Dateien
echo Farbgruppe setzen...
SetNH '#@W' $(
for n from 0 by 1 to 9 repeat
do
catv /"$((n+1)) " $((Gpos+g*260+n*26+4)),20,0 %
/%n < $Script
done
) || { print -u2 "Write: SetNH()==FALSE"; continue; }
echo G=$g: HTML schreiben...
WriteC $*
done
remove $zeile
let nn && read "-?<Enter> "
return 0
}
WriteC() {
[ $# -gt 0 ] || return
local bgc='[Bb][Gg][Cc][Oo][Ll][Oo][Rr]' body='[Bb][Oo][Dd][Yy]'
local s="$bgc" rgb=000000 hex
Such=""
while [ $# -gt 0 ]
do
let "hex=6*($1-1)"
catv $hex,6,Hex =hex:
case $1 in
1) Such="$Such $body $bgc $hex" ;;
2) Such="$Such [Tt][Aa][Bb][Ll][Ee] $bgc $hex" ;;
3) Such="$Such [Tt][Rr] $bgc $hex" ;;
4) Such="$Such [Tt][Dd] $bgc $hex" ;;
5) Such="$Such [Tt][Hh] $bgc $hex" ;;
6) Such="$Such $body [^VAva][Ll][Ii][Nn][Kk] $hex" ;;
7) Such="$Such $body [Vv][Ll][Ii][Nn][Kk] $hex" ;;
8) Such="$Such $body [Aa][Ll][Ii][Nn][Kk] $hex" ;;
9) Such="$Such $body [Tt][Ee][Xx][Tt] $hex" ;;
10) Such="$Such [Ff][Oo][Nn][Tt] [Cc][Oo][Ll][Oo][Rr] $hex" ;;
esac
shift
done
unset hex body
local wrn=00 datei
< $zeile
while readl datei
do
[ -s "$datei" ] || continue
print -rn "$datei" ...; inp=0
0<> "$datei"
while seek + 0 Pos; readl Zeile
do
let "${#Zeile}<19" && continue
wrn=0
for 3 s bgc rgb in $Such
do
[ $rgb == 010101 ] && continue
expr "$Zeile" :Zeile %
"%(<${s}[ %t][^<>]*${bgc}[ %t]*=[ %t]*%"#%)......%"" %
"%1$rgb%"" || continue
let "wrn|=512, ++inp"
done
let wrn && catv Zeile =$Pos,,0.
done
><
echo " $inp Schreibvorgänge"
done
><
return 0
}
echo Standardfarben setzen...
Fmain Gcopyg 1
echo Dateienabgleich...
Fmain DCheck
Fsel=" " NDsel=" 0"
echo
prints s:f-50 " bish-Script 'HTML-Color-Manager' "
prints s:f-50 " Copyright (c) Helmut Schellong "
echo
read "-?<Enter> "
while Fmain NDGsel ; echo "%r
Aktuelles Verzeichnis '$(-pwd)': cd verz%r
Farbnamen-Notizen : %"$Fsel%"%r
Farbenliste/Notizen : f [-]%r
Dateienauswahl $NDsel : d%r
Gruppenauswahl $Gsel : gw [0123456789]%r
Gruppen-Farbensatz kopieren < | > : g n | G n...%r
Farbziel auf Farbe setzen : {1-10}={fnam|fnum} [n=f]...%r
DokumentBG $(catv 0,20,CN) 1%r
TabellenBG $(catv 20,20,CN) 2%r
TabRowBG $(catv 40,20,CN) 3%r
TabColBG $(catv 60,20,CN) 4%r
TabHColBG $(catv 80,20,CN) 5%r
Link $(catv 100,20,CN) 6%r
BesuLink $(catv 120,20,CN) 7%r
AktiLink $(catv 140,20,CN) 8%r
Textfarbe $(catv 160,20,CN) 9%r
Fontfarbe $(catv 180,20,CN) 10%r
Link-/Text-/Font-Farben schreiben : L|T|F%r
Alle Farbziele schreiben : S%r
Hilfe : h%r
Beenden : E%r
%r
: %c"
do
read inp rest
case "$inp" in
cd) [ -d "$rest" ] || { echo %a%c; continue; }
cd "$rest"
echo Dateienabgleich...
Fmain DCheck ;;
d) Fmain Dateien ;;
f) ifset rest && [ "$rest" == - ] && Fsel=" "
ifset rest || Fmain ShowF ;;
gw) Fmain Gw "$rest" ;;
[Gg]) Fmain Gcopy$inp "$rest" ;;
[1-9]=?*|10=?*) conv -t"= " inp rest; SetNH $inp $rest ;;
L) Write 6 7 8 ;;
T) Write 9 ;;
F) Write 10 ;;
S) Write 1 2 3 4 5 6 7 8 9 10 ;;
h) Fmain Help ;;
E) break ;;
*) echo %a%c; continue ;;
esac
done
exit 0
Dateiliste "#@D ..." am Ende.
Crc16() {
local n=00 crc_=000${{1} byte=000000 j=00000000
let "crc_>16#ffff" && crc_=0007439
for byte in $( catv $3,$4,$2 | base -b +10 )
do
for n from 0 to 7 repeat
do
if let "crc_&16#8000 ^^ byte&1<<n"
then
let 'j=((crc_^2064)&2064)<<1' %
'crc_= (j|crc_<<1) & (j|~(2064<<1)) & 16#ffff | 1'
else
let 'j=((crc_^~2064)&2064)<<1' %
'crc_= (j|crc_<<1) & (j|~(2064<<1)) & 16#fffe'
fi
done
done
$1=$crc_
return 0
}
Cmd() {
local cmd="@3!$1$NL"
local len=${#cmd}
com -cot40od10o$len cmd
catv $len,cmd
return 0
}
Answ() {
local cmd="@3:$1$NL"
local len=${#cmd}
com -cot40od10o$len cmd
catv $len,cmd
return 0
}
IBDdata() {
local cks=000
[ $# -eq 1 ] && {
local dat=$1
local l=${#dat}
}
[ $# -eq 2 ] && {
local l=$2 dat=000$1
[ l -eq 4 ] && base -10 dat +l dat
[ l -eq 2 ] && base -10 dat +w dat
[ l -eq 1 ] && base -10 dat +b dat
}
let ++l
base -10 l +b l
catv /: l dat =Out:
catv 1,,Out | sum -b cks
let 'cks=~cks&255'
base -10 cks +b cks
catv cks =0:,1,Out:
com -cot40od10o${#Out} Out
return 0
}
ParaData() {
local dp=:
local id=$1 data="$2" l=0000 bl=0
[ O -eq 0 ] && O=1 catv /: =0,1,Obuf
if [ id -ne 0 ]
then
l=${#data}
base -10 id +l id
base -10 l +b bl
catv id bl data =$O,,Obuf
let "O+=4+1+l"
else
l=2
base -10 id +l id
base -10 l +b bl
catv id bl =$O,,Obuf
let "O+=4+1"
CRC=100000
Crc16 CRC Obuf 1 $((O-1))
base -10 CRC +w data
catv data =$O,,Obuf
let "O+=2"
catv $O,Obuf | base -b +10
com -cot90od10o$O Obuf
fi
return 0
}
set NL:10.1
set Ibuf:0.4000
set Obuf:0.1000
set Out:080
O=00000
CRC=100000
case "FreeBSD" in
FreeBSD) Sio='/dev/ttyd0' Tty='/dev/console';;
OpenUnix) Sio='/dev/term/00t' Tty='/dev/pts016';;
*) Sio='/dev/null' Tty='/dev/console';;
esac
com +L $Sio || { print -u2 "TTY-Device '$Sio'" "open failed"; exit 0; }
com -B38400
com -s 1
com -H 0
Cmd PING
local L_z=a L_tmo=30 L_w=1 L_bn=0
[ $# -gt 0 ] && L_z=$1
while let "$SECONDS<L_tmo"
do
sleep -m 20
com -p && {
com -it150id10i100 Ibuf
catv /++ $.,Ibuf /--%n
catv '/>>'
catv $.,Ibuf | base -b +10
catv '/<<%n'
[ L_w -eq 2 ] && Answ OK
let ++L_tmo
L_w=0
}
[ L_w -ne 0 ] && continue
sleep -m 50
case $L_z in
a) Cmd CFG_PARA
L_z=b
;;
b) Cmd RECV
L_z=c
;;
c) O=0
ParaData 200000 aaccbbdd
ParaData 0 "crc"
L_z=d
;;
d) Cmd STORE
L_z=z
;;
I) Cmd ID
L_z=Id
;;
Id) IBDdata 200511305 4
L_z=B L_bn=0
;;
B) [ L_bn -ge 32 ] && L_z=z continue
Cmd BIT
L_z=Bn
;;
Bn) IBDdata $L_bn 1
let ++L_bn
L_z=S
;;
S) Cmd SEND
L_z=B
L_w=2 continue
;;
z) continue ;;
esac
L_w=1
done
com -c
com -
exit 0
set -f
let 0`ver n`'<304' && {
echo "Dieses Script benötigt mindestens bish-Version 3.04 !"
ver; exit 1
}
T=/
[ `ver s` != unix ] && T=\
Line="`prints s800-`"
OutFile="`prints s30-`"
mkofname() {
local dir="$1" n=0 t=$T name of
conv -F\F/ dir
expr "$dir" :name '%([^/\]%{1,%}%)$' || return
expr "$dir" :dir '^%(.*%)'"$name"'$' || return
conv -F\F/ dir
expr "$name" :name '^%(%.*[^.]*%)' || return
ifset dir || t=''
of=$dir$t$name.$2
conv -F\F/ of
while [ -e "$of" ]
do
let "++n>9" && return 1
of=$dir$t$(catv 7,name)$n$(catv 8,,name).$2
conv -F\F/ of
done
$3=$of
return 0
}
Conv() {
case "$1" in
txt_htm)
local ci=000 C=cc o=0000 buf="`prints s32-`"
mkofname $2 htm OutFile || return
> $OutFile
< $2
echo '<html>%n<head>%n<title></title>%n</head>%n<body>%n<pre>'
while catv 24,0 =buf:
do
let "o>=512" && catv $o,Line && print -u2 .%c && o=0
expr "$buf" :: '[&<>"|äöüßÄÖÜ·§]' ||
catv buf =$o,,Line && let "o+=${#buf}" && continue
ci=-1
while catv $((++ci)),1,buf =C:
do
case "$C" in
[!&<>"%|äöüßÄÖÜ·§]) catv 1,C =$o,,Line ; let o+=1
continue ;;
ä) catv '/ä' =$o,,Line ; let o+=6 ; continue ;;
ß) catv '/ß' =$o,,Line ; let o+=7 ; continue ;;
ü) catv '/ü' =$o,,Line ; let o+=6 ; continue ;;
ö) catv '/ö' =$o,,Line ; let o+=6 ; continue ;;
Ä) catv '/Ä' =$o,,Line ; let o+=6 ; continue ;;
Ü) catv '/Ü' =$o,,Line ; let o+=6 ; continue ;;
Ö) catv '/Ö' =$o,,Line ; let o+=6 ; continue ;;
&) catv '/&' =$o,,Line ; let o+=5 ; continue ;;
<) catv '/<' =$o,,Line ; let o+=4 ; continue ;;
>) catv '/>' =$o,,Line ; let o+=4 ; continue ;;
") catv '/"' =$o,,Line ; let o+=6 ; continue ;;
%|) catv '/¦' =$o,,Line ; let o+=8 ; continue ;;
·) catv '/·' =$o,,Line ; let o+=8 ; continue ;;
§) catv '/§' =$o,,Line ; let o+=6 ; continue ;;
esac
done
done
><
let "o>0" && catv $o,Line && print -u2 ";%c"
echo '</pre>%n</body>%n</html>'
><
return 0
;;
htm_htl)
mkofname $2 htl OutFile || return
tr '>' '\10' < $2 > $OutFile
return 0
;;
ibm_iso)
mkofname $2 iso OutFile || return
tr %
'\20\21\124[\128-\157]\158\159[\160-\175][\176-\223][\224-\255]' %
\182\167\166\199\252\233\226\228\224\229\231\234\235\232\239%
\238\236\196\197\201\230\198\244\246\242\251\249\255\214\220%
\162\163\165\215\215\225\237\243\250\241\209\170\186\191\215%
'\172\189\188\161\171\187'%
'###||||++||++++++--|-+||++==|=*=-=-++++|*++#####'%
'\215\223[\215*4]'%
'\181[\215*6]\248[\215*3]\177[\215*4]\247\215\176\183\183\215'%
'\215\178*\160' < $2 > $OutFile
return 0
;;
iso_ibm)
mkofname $2 ibm OutFile || return
tr \127[\128-\159][\160-\255] %
'\177[ *32]\255\173\155\156\197\157\124\21\197C\166\174\170\196R\197'%
\248\241\253\197\197\230\20\249\197\197\167\175\172\171\197\168%
'[\197*4]\142\143\146\128\197\144[\197*7]\165[\197*4]\153[\197*5]'%
\154\197\197\225\133\160\131\197\132\134\145\135\138\130\136\137%
\141\161\140\139\197\164\149\162\147\197\148\246\237\151\163\150%
\129\197\197\152 < $2 > $OutFile
return 0
;;
dos_unix)
tr -d '\26' < $2 | {
: > $2
>> $2
while readl Line
do catv Line /%n; done
><
}
OutFile=$2
return 0
;;
unix_dos)
cat $2 | {
: > $2
>> $2
while readl Line
do catv Line /%r%n; done
><
}
OutFile=$2
return 0
;;
upp_low)
mkofname $2 lc OutFile || return
tr '[A-Z]ÄÖÜ' '[a-z]äöü' < $2 > $OutFile
return 0
;;
low_upp)
mkofname $2 uc OutFile || return
tr '[a-z]äöü' '[A-Z]ÄÖÜ' < $2 > $OutFile
return 0
;;
gethref)
OutFile=htmlref.acc
echo ":::$2:::" >> $OutFile
grep -i 'HREF="[^"]%{1,%}"' $2 |
while readl Line
do
expr "$Line" :Line '[Hh][Rr][Ee][Ff]="%([^"]%{1,%}%)"'
catv Line /%j >> $OutFile
done
return 0
;;
getmailto)
OutFile=mailto.acc
echo ":::$2:::" >> $OutFile
grep -i 'HREF="mailto:[^"]%{1,%}"' $2 |
while readl Line
do
expr "$Line" :Line '[Hh][Rr][Ee][Ff]="[^:]*:%([^"]%{1,%}%)"'
catv Line /%j >> $OutFile
done
return 0
;;
getsrc)
OutFile=source.acc
echo ":::$2:::" >> $OutFile
grep -i 'SRC="[^"]%{1,%}"' $2 |
while readl Line
do
expr "$Line" :Line '[Ss][Rr][Cc]="%([^"]%{1,%}%)"'
catv Line /%j >> $OutFile
done
return 0
;;
strings)
OutFile=binstr.acc
echo ":::$2:::" >> $OutFile
tr -cs '[a-z][A-Z][0-9]äöüßÄÖÜ_.-@/\\:' '[\10*]' < $2 |
grep '^[^%r%n]%{2,%}$' >> $OutFile
return 0
;;
*) exit 1 ;;
esac
return 0
}
Auswahl() {
local fsz="<DIR>" e="(EOF)" n=00000 a=aaaa lst cwd
5<&0
while :
do
n=0 a=$((36#aa-1)) e='' cwd=`pwd`
list -d | sort -d > ${T}conv_bish.tmp
list -f | sort -d >> ${T}conv_bish.tmp
cat ${T}conv_bish.tmp |
while [ -z "$e" ]
do
readl Line &| e="(EOF)" && { fsz="<DIR>"
[ ! -d "$Line" ] && fsz=`fsize "$Line"`
prints ss10s5s2s "|" $fsz $((36#,++n,++a)) "" "$Line"
}
let 'n%20==0' &| ifset e || continue
echo "$cwd:%n»$lst«"
read -u5 "Line?${n}${e}[.jnx]: "
ifset Line || continue
case "$Line" in
x) >< ; return ;;
j) break 2 ;;
.) continue 2 ;;
n) lst='' ; continue ;;
..) lst=''; cd ..; continue 2 ;;
esac
expr "$Line" :: '^[0-9a-z]%{2,3%}$' && {
let "fsz=36#$Line-36#aa+1"
fsz=`line -$fsz ${T}conv_bish.tmp` &&
[ -d "$fsz" ] && { lst=''; cd $fsz; continue 2; }
}
lst="$lst$Line "
done
done
><
expr "$lst" :: '[^ ]' || return 0
unset fsz e n cwd
local an=aaaa dnam lnam
a=$((36#aa-1))
< ${T}conv_bish.tmp
while readl Line
do
an=$((36#, ++a))
[ -s "$Line" ] || continue
for lnam in $lst
do
dnam=$an
expr "$lnam" :lnam '^:%(.*%)$' && dnam="$Line"
[[ "$dnam" == "$lnam" ]] &&
echo "$Line" && Conv $1 "$Line" || { ><; return; }
done
done
><
return 0
}
Helft_mir_doch() {
local n=000 inp=_____
while :
do
n=0
echo "| Mit diesem bish-Script können verschiedene Konversionen%r%
| und Filterfunktionen durchgeführt werden.%r%
| Ausprobieren kann man es gefahrlos mit einer%r%
| Filterfunktion, wie beispielsweise 'str'.%r%
| %r%
| Zur Auswahl der Quelldateien wird eine Verzeichnis=%r%
| liste erzeugt, bestehend aus Dateigröße oder '<DIR>',%r%
| Aliasnamen (jeweils beginnend mit 'aa')%r%
| und dem Dateinamen.%r%
| Nach Ausgabe jeder Seite können verschiedene Eingaben%r%
| gemacht werden:%r%
| Durch Eingabe eines einzelnen Alias, der zu einem%r%
| Verzeichnis gehört, wird das Verzeichnis gewechselt.%r%
| '..' führt in das darüberliegende Verzeichnis."
read "inp?$((++n)): "
ifset inp && return
echo "| Eingabe eines Punktes (.) listet das aktuelle%r%
| Verzeichnis neu.%r%
| Die Buchstaben 'jnx' bedeuten:%r%
| j: Auswahlliste bestätigen und Bearbeiten%r%
| n: Auswahlliste verwerfen (bei Verz.wechsel autom.!)%r%
| x: Abbrechen, zum Menü zurück%r%
| %r%
| Andere Eingaben werden in die Auswahlliste (»...«)%r%
| sammelnd aufgenommen.%r%
| Dabei können Aliases, und Dateinamen direkt durch%r%
| Voranstellen eines Doppelpunktes (:),%r%
| ausgewählt werden.%r%
| Desweiteren werden Unix-Wildcards (?*[!...])%r%
| verarbeitet - auch bei den Aliases.%r%
| Insbesondere können bei einer Eingabe mehrere%r%
| Auswahlen angegeben werden, durch Leerzeichen%r%
| getrennt."
read "inp?$((++n)): "
ifset inp && return
echo "| Die Filterfunktionen schreiben jeweils an das Ende%r%
| der Dateien htmlref.acc mailto.acc source.acc%r%
| und binstr.acc .%r%
| Dabei wird zu Anfang der Name der jeweiligen%r%
| Quelldatei (:::quelle:::) eingefügt.%r%
| %r%
| Die Umwandlungsfunktionen beziehen sich auf den%r%
| Namen der jeweiligen Quelldatei, um eine neue%r%
| Zieldatei zu erzeugen.%r%
| Die Erweiterung wird ausgewechselt oder aber es%r%
| wird eine angefügt.%r%
| Wenn das nicht reicht, wird ein Zeichen 1 bis 9%r%
| an den Nameteil angefügt oder aber dessen achtes%r%
| Zeichen wird durch das Digit ersetzt."
read "inp?$((++n)): "
ifset inp && return
echo "| Die Endungen lauten: htm htl iso ibm lc uc%r%
| %r%
| Die Umwandlungsfunktionen dx und xd%r%
| überschreiben die jeweilige Quelldatei!%r%
| %r%
| Dies wurde so gewählt, weil der Ursprungszustand%r%
| sehr wahrscheinlich wieder herstellbar ist.%r%
| Nur bei uneinheitlichen Zeilenvorschüben und%r%
| beim Zeichen ^Z geht das nicht."
read "inp?$((++n))(EOF): "
ifset inp && return
done
return
}
echo "%r
+======================================================+%r
| bish-Script 'conv.bish' |%r
| Copyright (c) 1998 Helmut Schellong |%r
| |%r
| Konversionen und Filter |%r
+======================================================+"
read "-?<Enter> "
while echo %
"%r
+---------------------------------------------+%r
|Verzeichnis : `prints s31- $(pwd)`|%r
|Ausgabedatei: `prints s31- $OutFile`|%r
+---------------------------------------------+%r
| Hilfe : h |%r
| Text (ibm) --> html-Datei : htm |%r
| html-Zeilenkürzer: > --> \n : htl |%r
| Text (ibm) --> Text (iso) : iso |%r
| Text (iso) --> Text (ibm) : ibm |%r
| Text (dos) --> Text (unix) : dx |%r
| Text (unix) --> Text (dos) : xd |%r
| Datei (ABC) --> Datei (abc) : lc |%r
| Datei (abc) --> Datei (ABC) : uc |%r
| Filter: HREF=%"...%" : url |%r
| Filter: HREF=%"mailto:...%" : adr |%r
| Filter: SRC=%"...%" : src |%r
| Filter: Strings aus Binär : str |%r
| Ausgabedatei editieren : ed |%r
| Interaktive Shell (Prompt) : sh |%r
| Beenden : E |%r
+---------------------------------------------+%r
: ___%b%b%b%c"
do
read Line
case "$Line" in
htm) Auswahl txt_htm ;;
htl) Auswahl htm_htl ;;
iso) Auswahl ibm_iso ;;
ibm) Auswahl iso_ibm ;;
dx) Auswahl dos_unix ;;
xd) Auswahl unix_dos ;;
lc) Auswahl upp_low ;;
uc) Auswahl low_upp ;;
url) Auswahl gethref ;;
adr) Auswahl getmailto ;;
src) Auswahl getsrc ;;
str) Auswahl strings ;;
ed) ifset OutFile || continue
[ -s "$OutFile" ] || continue
[ $T == \ ] && edit $OutFile
[ $T == / ] && vi $OutFile ;;
sh) [ -f ${T}conv_bish.tmp ] && remove ${T}conv_bish.tmp
echo "%nBeenden durch Eingabe von 'exit'.%n"
[ $T == \ ] && { DIR; command.com; }
[ $T == / ] && { l; bish -E; }
;;
E) break ;;
H|h) Helft_mir_doch ;;
*) ifset Line && echo %a%c
continue ;;
esac
done
[ -f ${T}conv_bish.tmp ] && remove ${T}conv_bish.tmp
Trans='
80 c7
81 fc
82 e9
83 e2
84 e4
85 e0
86 e5
87 e7
88 ea
89 eb
8a e8
8b ef
8c ee
8d ec
8e c4
8f c5
90 c9
e6 b5
91 e6
92 c6
93 f4
f6 f7
94 f6
95 f2
96 fb
97 f9
ff a0
98 ff
99 d6
9a dc
a2 f3
a3 fa
a5 d1
9b a2
9c a3
9d a5
e1 df
a0 e1
a1 ed
f1 b1
a4 f1
ac bc
aa ac
a6 aa
a7 ba
a8 bf
ab bd
ad a1
ae ab
af bb
f8 b0
fa b7
fd b2
'
local Z:.200 qq=.. zz=.. q=. z=.
while readl Z
do
for 2 qq zz in $Trans
do
base -16 qq +b q
base -16 zz +b z
expr "$Z" :Z "$q" += "$z"
done
catv Z /%n
done
:
list -Rf \u |
while readl path
do
conv -l path
expr "$path" :dir '^%(..*%)\[^\][^\]*%.[ch]$' || continue
[ ! -d "d:$dir" ] && mkdirs "d:$dir"
copy -v "$path" "d:$path"
done
[ -s /mnt/command.com ] || mount /dev/hd0d /mnt || exit
[ -d /scratch/NT ] || mount /dev/scratch /scratch || exit
D1=DOS D2=NT D3=C D4=TEMP D5=RECYCLED
mkdirs /mnt/DOS
mkdirs /mnt/NT
mkdirs /mnt/TEMP
mkdirs /mnt/RECYCLED
echo ---------------------------------------- >> cpdlog
< path.lst
3< path1.lst
while read a c s t n
do
read -u3 a1 c1 s1 t1 n1
expr "$n" :nu '^%([1-9]%{1,3%}%)/..*' || { echo $n; break; }
let "nu==3" && continue
expr "$n" :name $nu "/mnt/${D[nu]}"
expr "$n1" :nu '^%([1-9]%{1,3%}%)/..*' || { echo $n1; break; }
let "nu==3" && continue
expr "$n1" :name1 $nu "/scratch/${D[nu]}"
let "2#$a&16#10" && {
echo "md $name" >> cpdlog
echo "md $name"
mkdirs "$name" || { echo "!!!!!"; break; }
}
[ -e "$name1" ] || continue
[ -d "$name1" ] && continue
[ -e "$name" ] && continue
let s || continue
expr "$name1" :: '..*-$' && {
echo "dd ${s}_$((s/1024))_$((s%1024))_0x90 --> $name" >> cpdlog
echo "dd ${s}_$((s/1024))_$((s%1024))_0x90 --> $name"
let "s/(2*512)>0" &&
dd if=/dev/byte/hex/90 of="$name" bs=2b count=$((s/(2*512))) ||
{ echo !!!!!!!!!; break; }
let "s%(2*512)>0" &&
dd if=/dev/byte/hex/90 bs=1 count=$((s%(2*512))) %
conv=notrunc >> "$name" ||
{ echo !!!!!!!!!; break; }
continue
}
echo "cp $name1 --> $name" >> cpdlog
echo "cp $name1 --> $name"
cp "$name1" "$name" || { echo "!!!!!!!!!"; break; }
done
><<
set Z:.200 Zq:.200
f=0
cat "$1" | {
5<"$2"
>"$1"
while readl Z
do
expr "$Z" :: '_%d%d%d_no "' || { catv Z /%n; continue; }
f=0
while readl -u5 Zq
do
expr "$Zq" :: '_%d%d%d_no "' && f=1 break
done
[ f -eq 0 ] && print -u2 "$Zq" '!=no'
catv Zq /%n
done
><<
}
:
Set() {
local id=$1 pbn=$2 n=0000
prints vsf03 pbn $pbn
prints vsf08 id $id
cat "cfgbase.txt" | {
>"cfgbase.txt"
while readl Z
do
expr "$Z" :: '^.'"$id " && {
expr "$Z" :Z ' 000 ' = " $pbn " && let ++n
}
catv Z /%n
done
><
}
[ n -eq 1 ] && return 0
[ n -gt 1 ] && return $n
return 1
}
<"cb54.txt"
while read id - - - - - - - - - - - parbn -
do
expr "$id" :: '^%$' && break
expr "$id" :id '^[@a-z;,.]%(%d%{8}%)$' || continue
[ parbn -eq 0 ] && continue
Set $id $parbn || print -u2 $? : $id $parbn
done
><
LL=tr
set Z:.100 Z2:.100 T:.80 T2:.80 D:.50
set Src:.50 Dst:.50
Src=quelle
Dst=ziel
RA_D='D_%w%{1,}_%d%d%d_'
Fehlen() {
<"$Dst"
while readl Z
do
expr "$Z" :D ' %('"$RA_D$LL"'%) ' || continue
grep -qm1 " $D " "$Src" || echo "$D"
done
><
return 0
}
Kopieren() {
cat "$Dst" | {
>"$Dst"
while readl Z
do
expr "$Z" :D ' %('"$RA_D$LL"'%) "[^"]*"$' || { catv Z /%n; continue; }
Z2="$(-grep -m1 " $D "'"[^"]%{1,}"$' "$Src")" || { catv Z /%n; continue; }
expr "$Z2" :T '%("[^"]%{1,}"%)$' || { catv Z /%n; continue; }
expr "$Z" :Z '"[^"]*"$' = "$T" || print -u2 "%t!subst: $D"
catv Z /%n
print -u2 "$T"
done
><
}
return 0
}
UngleichEN() {
<"$Dst"
while readl Z
do
expr "$Z" :D ' %('"$RA_D"'en%) ' || continue
Z2="$(-grep -m1 " $D " "$Src")" || continue
expr "$Z" :T '%("[^"]%{1,}"%)$' || continue
expr "$Z2" :T2 '%("[^"]%{1,}"%)$' || continue
cmpv T T2 || echo "%tungleich_en: $D"
done
><
return 0
}
NullenTXT() {
cat "$Dst" | {
>"$Dst"
while readl Z
do
expr "$Z" :T " ${RA_D}en"' %("[^"]*"%)$' && {
catv Z /%n
continue
}
expr "$Z" :: " $RA_D"'[a-z][a-z] 0$' && {
expr "$Z" :Z ' 0$' = " $T" || print -u2 "%t!subst: $Z"
}
catv Z /%n
done
><
}
return 0
}
while echo "
%tQuelldatei : q $Src
%tZieldatei : z $Dst
%tKürzel : k $LL
%tFehlt in Q.: fe
%tKopieren QZ: cp
%tNullenTXT : nt
%tUngleich_EN: ne
%tEnde : E
%t : _%b%c"
do
read cmd arg
case "$cmd" in
q) Src="$arg";;
z) Dst="$arg";;
k) LL="$arg";;
fe) Fehlen;;
cp) Kopieren;;
nt) NullenTXT;;
ne) UngleichEN;;
E) break;;
*) echo "%a%c"; continue;;
esac
done
:
POL32r=$((16#EDB88320))
POL16r=$((16#8408))
for i from 0 to 255 repeat
do
r=$i
to 8 repeat
do
if let "r&1"
then
let "r=(r>>1)^POL16r"
else
let "r>>=1"
fi
done
prints vsf04 r $((16#, r))
conv -u r
echo "0x${r}u,%c"
let "(i+1)%8==0" && echo
done
echo
for i from 0 to 255 repeat
do
r=$i
to 8 repeat
do
if let "r&1"
then
let "r=(r>>1)^POL32r"
else
let "r>>=1"
fi
done
prints vsf08 r $((16#, r))
conv -u r
echo "0x${r}ul,%c"
let "(i+1)%4==0" && echo
done
echo
0</dev/tty
1>>/var/log/pop.bish
2>>/var/log/pop.bish
. /u/sh/bish/pop.bish -a l 140000.
><<<
VZ='JDOOLD HVW RPQLV GLYLVD LQ SDUWHV WUHV'
CZ='7 22 12 16 13 33 38 33 28 43 35 49 50 46 55 75
68 66 79 76 89 97 92 102 123 102 111 119 114 127'
DF='7 15 -10 4 -3 20 5 -5 -5 15 -8 14 1 -4 9 20
-7 -2 13 -3 13 8 -5 10 21 -21 9 8 -5 13'
buchst() {
local inp=.... c=. vz="$VZ" paar=.. paare:.200 Paare:.200
Paare=
while paare="$Paare" vz="$VZ"
conv -d.t' t' paare
conv -"$paare" vz
echo "$Paare%n$vz"
echo "%ntr-Paar oder E: %c"
do
read inp
case "$inp" in
E) break;;
[A-Za-z][A-Za-z])
catv 1,inp =c
expr "$Paare" :Paare " $c." += ''
Paare="$Paare $inp"
;;
*) continue;;
esac
done
return 0
}
diffs() {
local inp=.... opt=.... s=s1 bw=015 ar=000 d=000 c=000 sw=000 inc=000 l=000
local s1='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local s2=' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ'
sw=4 inc=4
while l=${{#s}}
echo "
%tArithm. Reihe: a
%tDifferenzen : d
%tStartwert : s $sw
%tInkrement : i $inc
%tBasiswert : b $bw
%tEnde : E
%t : _%b%c"
do
read inp opt
case "$inp" in
E) break;;
a) ar=$sw
for d in $CZ
do
c=$((d-ar+bw))
let "c>l-1" && let "c-=l-1"
let "c< 0" && let "c+=l"
let ar+=inc
catv c,1,$s
done
echo
;;
d) for d in $DF
do
c=$((bw+d))
let "c>25" && let "c-=25"
let "c< 0" && let "c+=26"
let c+=bw
base -10 c +b
done
echo
;;
s) sw="$opt";;
i) inc="$opt";;
b) bw="$opt";;
*) continue;;
esac
done
return 0
}
permut() {
local s="$1" sa="$1" o=00 l=00 c=.
let ++N
l=${#s}
for o from 0 to $((l-1)) repeat
do
catv o,1,s =N,1,C
[ ${#s} -le 1 ] && { catv $2,C /%n; break; }
catv o,1,s =c
sa="$s"
conv -D$c sa
permut "$sa" $2
done
let --N
return 0
}
set N=00 C:.26 L=00
while print -u2 "
%tBuchstaben : b
%tDifferenzen : d
%tPermutationen: p string
%tENDE : E
%t : _%b%c"
do
read cmd opt
case "$cmd" in
E) break;;
b) buchst;;
d) diffs;;
p) N=-1; permut "$opt" ${#opt};;
*) continue;;
esac
done
for F in db/[1-9]*/[1-9]*/i
do
echo $F
cat $F | {
> $F
while read id inh
do
[ id -ne 50 ] && { catv id '. ' inh /%r%n; continue; }
catv id '/ 0%r%n'
done
><
}
done
DIR=kap
[ -s /tmp/$DIR.tar -o -s /tmp/$DIR.tar.bz2 ] || {
print -u2 tar ...
tar cf /tmp/$DIR.tar $DIR || exit 1
print -u2 bzip2 ...
bzip2 -f /tmp/$DIR.tar || exit 1
exit 0
}
FILES=$DIR/?*.tex
CTEX=ctex_l
SW=' '
[ "$1" == sw ] && SW=-sw shift
[ $# -eq 2 ] && CMD=$1 LANG=$2 shift 2
[ $# -gt 0 ] && exit 2
C="del prep clear"
L="c cpp bish sh pl tex html vim txt masm asm s"
ifset CMD && expr "$C" :: "%<$CMD%>" || exit 3
ifset LANG && expr "$L" :: "%<$LANG%>" || exit 4
SetLangKz() {
local le=$1
expr "$le" :: '^[a-z]%{1,4}$' || return
case "$le" in
c|cpp|html|txt)
KZ='//' ;;
bish|sh|pl)
KZ='##' ;;
tex) KZ='%%' ;;
vim) KZ='""' ;;
s|asm|masm) KZ=';;' ;;
*) return 2 ;;
esac
LE="$le"
expr "$LES" :: "%%<$le%%>" || {
LES="$LES$le "
: 3>$CTEX.$LE
}
return 0
}
PutKode() {
let "OFFS<=0 || ${#KODE}<OFFS" && return 0
catv .$KZ@+ NAME ._ TN .@$KZ /%n $OFFS,KODE %
.$KZ@- NAME ._ TN .@$KZ /%n =3 3>> "$CTEX.$LE"
return 0
}
set KODE:.30000
set Z:.500
set INAME:.100
set LES:' '100
set FILE:.20
set NAME:.20
set LE:.20
set Le:.20
set N:020
set TN:020
set OFFS:020
z=0 o=0
Beg='\begin{verbatim}'
End='\end{verbatim}'
Inp='\input{..*%.ctex}'
Pv='%%v%%'
Pl='%%l%%'
LES=
N=$((36#a9))
for FILE in $FILES
do
expr "$FILE" :NAME '%([^/]%{1,}%)%.tex$' || continue
[ -s "$FILE" ] || continue
[ -z "$CMD" -o "$CMD" == clear ] &&
grep -qm "^${Pl}[a-z]" "$FILE" || continue
print -u2 "%t$FILE"
N=$((36#a9)) z=0
[ "$CMD" == del ] && z=D
[ "$CMD" == prep ] && z=P
[ "$CMD" == clear ] && z=C
cat $FILE | {
> $FILE
while readl Z
do
while :
do
case $z in
0) expr "$Z" :Le "^$Pl"'%(..*%)$' && z=1
;;
1) expr "$Z" :: "^$Pv$Beg" &|
expr "$Z" :: "^$Beg" || z=0 goend
SetLangKz "$Le" || z=0 goend
TN=$((36#, ++N)) OFFS=0
INAME="$DIR/${NAME}_$TN.ctex"
z=v continue ;;
v|V)
expr "$Z" :: "^$Pv$End" &|
expr "$Z" :: "^$End" && z=I
if expr "$Z" :: "^$Pv"
then o=3
else o=0 catv '.%v%'
fi
let "OFFS+${#Z}+1>=${#KODE}" && {
z=- print -u2 "OFFS=$OFFS"
}
[ $z == V ] && {
catv $o,,Z /%n =$OFFS,,KODE
let "OFFS+=${#Z}+1-o"
}
[ $z == v ] && z=V
;;
I) if expr "$Z" :: "$Inp"
then Z="\input{$INAME}"
else catv '.\input{' INAME '/}%n'
fi
PutKode
z=0 continue ;;
P|p)
expr "$Z" :: "^$Beg%$" && [ "$z" == P ] &&
catv '.%l%' LANG /%n
z=P expr "$Z" :: "^$Pl$LANG%$" && z=p
;;
D) expr "$Z" :: "^$Pl$LANG%$" && z=d ;;
d) expr "$Z" :: "$Inp" && z=D continue 2
if expr "$Z" :: "^$Pv"
then catv 3,,Z =Z:
else z=D
fi
;;
C) expr "$Z" :: "^$Pl$LANG%$" && continue 2
;;
esac
catv Z /%n
break
done
done
[ $z == I ] && { catv '.\input{' INAME '/}%n'; PutKode; }
><
}
done
ifset CMD && { print -u2 "$LES"; exit 0; }
for LE in $LES
do
[ -s $CTEX.$LE ] || continue
print -u2 " $CTEX.$LE -> ctex_$LE.htm"
gvim63 -n -f -iconic +'set nonu' +TOhtml +"w! ctex_$LE.htm" %
+'q!' +'q!' $CTEX.$LE
done
for LE in $LES
do
[ -s "ctex_$LE.htm" ] || continue
print -u2 " $DIR, ctex_$LE.htm"
bish ./chtm2tex.bish $SW "$DIR" "ctex_$LE.htm"
done
exit 0
154
prints s4s4s16 $(( 355)) '' $((2#, 355))
355 101100011
prints s4s4s16 $(( 355%256)) '' $((2#, 355%256))
99 1100011
prints s4s4s16 $((-355)) '' $((2#,-355))
-355 1111111010011101
prints s4s4s16 $((-355%256)) '' $((2#,-355%256))
-99 1111111110011101
187
echo $((36#aa)) $((36#ab)) $((36#zz))
370 371 1295
echo $((10*36+10*1)) $((10*36+11*1)) $((35*36+35*1))
370 371 1295
for 3 U V W in Wort...
do
echo $U $V $W
done
for N from $a by $i to $z repeat
do
echo $N
done
z=10
a="n to $z repeat"
for $a ; do echo $n; done
a=b
b=c
c=ccc
echo %t${{{a}}} ${{{a}
ccc ccc
kdo1 &| kdo2 &| kdo3 && kommando
kdo1 &| kdo2 &| kdo3 || kommando
set BUF:0.100000000
echo %t${#BUF}
100000000
catv '.%%' U V 5,10,W$e 220,4 /%n =35000,,BUF:
echo %t${#BUF}
35844
cat $Datei | {
> $Datei
while readl Zeile
do
catv Zeile /%n
done
><
}
catv HTMLa HTML3 3 0 HTMLb <$CO 3</tmp/$CO | cat >$CO
(( arithmetik
arithmetik ))
echo $(( arithmetik ))
let "arithmetik" "arithmetik" ...
(( a>c ? U : V = 26 ))
Funktion() {
local a=. b:.40 argc=$# args=$*
static sa
return 0
}
expr "$N" :n '^%(.%)%(.*%)$' '%1%L%2'
expr "$n" :n ' %([a-z]%)' + ' %U%1'
echo $SECONDS
sleep 4
sleep -m 350
continue [ebenen]
break [ebenen]
goend [ebenen]
to 10000 repeat
do
version=$V
conv -d.d' ' version
expr "$V" =:version 'Productversion:%(%d*%)'
done
Sle16() {
local n=00 sle_=000000 word=000000
for word in $( catv $3,$4,$2 | base -w +10 )
do
for n from 0 to 15 repeat
do
if let "{{sle_&16#8000}^{[word&(1<<n)]<<(15-n)}}&16#ffff"
then
(( sle_= ((((sle_^2064)&2064)<<1)|(sle_<<1))
&((((sle_^2064)&2064)<<1)|~(2064<<1)),
sle_&=16#ffff, sle_|=1
))
else
(( sle_= ((((sle_^~2064)&2064)<<1)|(sle_<<1))
&((((sle_^~2064)&2064)<<1)|~(2064<<1)),
sle_&=~1, sle_&=16#ffff
))
fi
done
done
$1=$sle_
return 0
}
[ $# -ne 0 ] && files="$*"
[ $# -eq 0 ] && files=?*.[chCH] %
files="$files cbase.txt mbase.txt"
read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
expr "$old" :old '\s' += ' '
expr "$new" :new '\s' += ' '
for file in $files
do
expr "$file" =:: 'sl%d%{2,%}%.h$' && continue
grep -qm -e "%<$old%>" "$file" || continue
cat "$file" | {
3> "$file"
while readl Z
do
expr "$Z" :Z "%<$old%>" + "$new"
print -ru3 "$Z"
done
><
}
done
exit 0
start=0 inc=1 muster='@' width=2 fill=' '
neq=1
[ -t 0 ] &| expr "$1" :: '[^0-9-]' && {
print -u2 ninc.bish: usage: start inc.neq muster %
width fillchar
exit 0
}
[ $# -gt 0 ] && {
[ -n "$1" ] && start="$1"
[ -n "$2" ] && inc="$2"
[ -n "$3" ] && muster="$3"
width="$4"
fill="$5"
}
ifset fill && fill="f$fill"
expr "$width" :width '^-' = '' && sign=-
expr "$inc" :neq '%d%.%(%d%{1,}%)'
expr "$inc" :inc '^%(%d%{1,}%)'
neqd=$neq
cat | {
while readl Z
do
prints "vs$sign$fill"$width subst "$start"
expr "$Z" :Z "$muster" = "$subst" && {
let "--neqd==0" && let "start+=inc" "neqd=neq"
}
catv Z /%j
done
}
exit 0
[ -n "$4" ] && : >$4
>d__2
4>d__3
print -u4 '%n%n%nconst struct cdata_t '"$1"'data[]= {'
<$2
while seek + 0 sk
read id dd typ bytelen darst nbit bitpos %
dflt1 min1 max1 dflt2 min2 max2 %
sgrpn flags einheit name %
Tinfo Tgrp Tsgrp Tbit Text text
do
expr "$id" :: '^%$' && break
expr "$id" :: '^}$' && {
[ von -ge bis ] && inc=0 continue
seek $skvb 0; let 'von+=inc'; continue
}
expr "$id" :: '^{#$' && {
von=$dd bis=$typ inc=$bytelen inc2=$darst
ifset inc2 || inc2=1
seek + 0 skvb; continue
}
prints su4sbsbsbsbsbsbsbsbsbs ' { ' %
done
[ $# -eq 0 ] && exit 0
Zeile() {
local a:17.1 b:19.1 comment:.200
local n:.100
if expr "$Z" :comment '[^\]%(%%.*%)$'
then expr "$Z" :Z '%([^\]%)%%.*$' '%1'
else comment=
fi
expr "$N" :n '^%(.%)%(.*%)$' '%1%L%2'
expr "$n" :n ' %([a-z]%)' + ' %U%1'
expr "$Z" :Z "%<$N%>" + "$a&$b"
expr "$Z" :Z "\index{$a$N$b" += "\index{$N"
expr "$Z" :Z "\textsc{$a$N$b" += "\textsc{$N"
expr "$Z" :Z "\verb%(.%)$a$N$b" + "\verb%1$N"
expr "$Z" :Z "\label{%([^}]*%)$a$N$b" + "\label{%1$N"
expr "$Z" :Z "\pageref{%([^}]*%)$a$N$b" + "\pageref{%1$N"
expr "$Z" :Z "\ref{%([^}]*%)$a$N$b" + "\ref{%1$N"
expr "$Z" :Z "\textbf{%([^}]*%)$a$N$b" + "\textbf{%1$N"
expr "$Z" :Z "$a$N$b" += "\textsc{$n}"
ifset comment && catv comment =:,,Z:
return 0
}
UseNot() {
ifset Z || { catv /%n; return 0; }
expr "$Z" :: '^[ %t]%{0,}%%' &|
expr "$Z" :: '\[a-z]*section[{[]' &|
expr "$Z" :: '\[a-z]*section%*[{[]' &|
expr "$Z" :: '\chapter[{[]' && {
catv Z /%n; return 0
}
return 1
}
set Z:.300
set Zcmp:.300
set F:.50
set N:.50
V=v
for F in kap/*.tex
do
[ -s "$F" ] || continue
[ $# -eq 1 ] && grep -qm "%<$1%>" "$F" || continue
cat "$F" | {
> "$F"
while readl Z Zcmp
do
if [ $V == V ]
then
expr "$Z" :: '\end{verbatim}' && V=v
catv Z /%n; continue
else
UseNot && continue
expr "$Z" :: '\begin{verbatim}' || goend
V=V catv Z /%n; continue
fi
for N in "$@"
do
[ ${#N} -ge 2 ] || continue
expr "$Z" :: "%<$N%>" || continue
Zeile
done
cmpv Z Zcmp || print -u2 "$F:$Zcmp%n$F:$Z%n"
catv Z /%n
done
><
}
done
exit 0
DIR=kap
[ -s /tmp/$DIR.tar -o -s /tmp/$DIR.tar.bz2 ] || {
print -u2 tar ...
tar cf /tmp/$DIR.tar $DIR || exit 1
print -u2 bzip2 ...
bzip2 -f /tmp/$DIR.tar || exit 1
}
FILES=$DIR/?*.tex
CTEX=ctex_l
[ $# -eq 2 ] && CMD=$1 LANG=$2 shift 2
[ $# -gt 0 ] && exit 2
C="del prep clear"
L="c cpp bish sh perl tex vim html"
ifset CMD && expr "$C" :: "%<$CMD%>" || exit 3
ifset LANG && expr "$L" :: "%<$LANG%>" || exit 4
SetLangKz() {
local le=$1
expr "$le" :: '^[a-z]%{1,4}$' || return
case "$le" in
c|cpp|html) KZ='//' ;;
bish|sh|perl) KZ='##' ;;
tex) KZ='%%' ;;
vim) KZ='""' ;;
*) return 2 ;;
esac
LE="$le"
expr "$LES" :: "%%<$le%%>" || {
LES="$LES$le "
: 3>$CTEX.$LE
}
return 0
}
PutKode() {
let "OFFS<=0 || ${#KODE}<OFFS" && return 0
catv .$KZ@+ NAME ._ TN .@$KZ /%n $OFFS,KODE %
.$KZ@- NAME ._ TN .@$KZ /%n =3 3>> "$CTEX.$LE"
return 0
}
set KODE:.30000
set Z:.500
set INAME:.100
set LES:' '100
set FILE:.20
set NAME:.20
set LE:.20
set Le:.20
set N:020
set TN:020
set OFFS:020
z=0 o=0
Beg='\begin{verbatim}'
End='\end{verbatim}'
Inp='\input{..*%.ctex}'
Pv='%%v%%'
Pl='%%l%%'
LES=
for FILE in $FILES
do
expr "$FILE" :NAME '%([^/]%{1,}%)%.tex$' || continue
[ -s "$FILE" ] || continue
[ -z "$CMD" -o "$CMD" == clear ] &&
grep -qm "^${Pl}[a-z]" "$FILE" || continue
print -u2 "%t$FILE"
N=$((36#a9)) z=0
[ "$CMD" == del ] && z=D
[ "$CMD" == prep ] && z=P
[ "$CMD" == clear ] && z=C
cat $FILE | {
> $FILE
while readl Z
do
while :
do
case $z in
0) expr "$Z" :Le "^$Pl"'%(..*%)$' && z=1
;;
1) expr "$Z" :: "^$Pv$Beg" &|
expr "$Z" :: "^$Beg" || z=0 goend
SetLangKz "$Le" || z=0 goend
TN=$((36#, ++N)) OFFS=0
INAME="$DIR/${NAME}_$TN.ctex"
z=v continue ;;
v|V)
expr "$Z" :: "^$Pv$End" &|
expr "$Z" :: "^$End" && z=I
if expr "$Z" :: "^$Pv"
then o=3
else o=0 catv '.%v%'
fi
let "OFFS+${#Z}+1>=${#KODE}" && {
z=- print -u2 "OFFS=$OFFS"
}
[ $z == V ] && {
catv $o,,Z /%n =$OFFS,,KODE
let "OFFS+=${#Z}+1-o"
}
[ $z == v ] && z=V
;;
I) if expr "$Z" :: "$Inp"
then Z="\input{$INAME}"
else catv '.\input{' INAME '/}%n'
fi
PutKode
z=0 continue ;;
P|p)
expr "$Z" :: "^$Beg%$" && [ "$z" == P ] &&
catv '.%l%' LANG /%n
z=P expr "$Z" :: "^$Pl$LANG%$" && z=p
;;
D) expr "$Z" :: "^$Pl$LANG%$" && z=d ;;
d) expr "$Z" :: "$Inp" && z=D continue 2
if expr "$Z" :: "^$Pv"
then catv 3,,Z =Z:
else z=D
fi
;;
C) expr "$Z" :: "^$Pl$LANG%$" && continue 2
;;
esac
catv Z /%n
break
done
done
[ $z == I ] && { catv '.\input{' INAME '/}%n'; PutKode; }
><
}
done
ifset CMD && exit 0
for LE in $LES
do
[ -s $CTEX.$LE ] || continue
print -u2 " $CTEX.$LE -> ctex_$LE.htm"
gvim -n -f +'set nonu' +TOhtml +"w! ctex_$LE.htm" %
+'q!' +'q!' $CTEX.$LE
done
for LE in $LES
do
[ -s "ctex_$LE.htm" ] || continue
print -u2 " $DIR, ctex_$LE.htm"
bish ./chtm2tex.bish "$DIR" "ctex_$LE.htm"
done
exit 0
[ $# -eq 0 ] && exit 0
DIR=.
[ $# -gt 1 ] && DIR="$1" shift
FILES="$*"
set Z:.500
set Text:.100
set Leer:.100
set FILE:.100
set OFILE:.100
set HexC:010
R=000000000
G=000000000
B=000000000
PutText() {
local l:20.1
expr "$Text" :Text '"' += '"'
expr "$Text" :Text '<' += '<'
expr "$Text" :Text '>' += '>'
expr "$Text" :Text '&' += '&'
expr "$Text" :Text ' ' += "$l"
expr "$Text" :Text '\' += '\textbackslash '
expr "$Text" :Text '''' += '\textquoteright '
expr "$Text" :Text '`' += '\textquoteleft '
expr "$Text" :Text '"' += '\textquotedblright '
expr "$Text" :Text '%^' += '\textasciicircum '
expr "$Text" :Text '~' += '\textasciitilde '
expr "$Text" :Text '&' += '\&'
expr "$Text" :Text '#' += '\#'
expr "$Text" :Text '%$' += '\$'
expr "$Text" :Text '%%' += '\%'
expr "$Text" :Text '_' += '\_'
expr "$Text" :Text '{' += '\{'
expr "$Text" :Text '}' += '\}'
expr "$Text" :Text '%('"$l"'%{1,}%)' + '\verb:%1:'
expr "$Text" :Text "$l" += ' '
ifset Text || return 1
catv Text
return 0
}
MkRgb() {
expr "$HexC" :R '^%(..%)....'
expr "$HexC" :G '^..%(..%)..'
expr "$HexC" :B '^....%(..%)'
let "R=16#$R" "G=16#$G" "B=16#$B"
let "R=(R*1000+127)/255" %
"G=(G*1000+127)/255" %
"B=(B*1000+127)/255"
[ ${#R} -eq 1 ] && R=0.00$R
[ ${#R} -eq 2 ] && R=0.0$R
[ ${#R} -eq 3 ] && R=0.$R
[ ${#R} -eq 4 ] && R=1.000
[ ${#G} -eq 1 ] && G=0.00$G
[ ${#G} -eq 2 ] && G=0.0$G
[ ${#G} -eq 3 ] && G=0.$G
[ ${#G} -eq 4 ] && G=1.000
[ ${#B} -eq 1 ] && B=0.00$B
[ ${#B} -eq 2 ] && B=0.0$B
[ ${#B} -eq 3 ] && B=0.$B
[ ${#B} -eq 4 ] && B=1.000
return 0
}
RAlez='%( %{1,}%)'
RAtxt='%([^< ]%{1,}%)'
RAfcc='<font color="#%(......%)">'
RAbgc='<span style="background-color: #%(......%)">'
KZ='[%/*#(;"]%{2}'
Leerz() {
local k:.10 rek=$1
shift
expr "$rek" :k '.' += '}' || k=
catv k /\verb: Text /:
while ifset rek
do
catv 1,rek =k:
expr "$rek" :rek '^.%(.*%)$'
case "$k" in
B) catv ".\colorbox[rgb]{$1,$2,$3}{"; shift 3 ;;
f) catv ".\textcolor[rgb]{$1,$2,$3}{"; shift 3 ;;
b) catv '.\textbf{' ;;
esac
done
return 0
}
Zeile() {
local k=. rek=$1
shift
while :
do
ifset Z || return 0
expr "$rek" :k '%(.%)$' || k=.
case "$k" in
B) expr "$Z" :Z '^</span>' = '' && k=R ;;
f) expr "$Z" :Z '^</font>' = '' && k=R ;;
b) expr "$Z" :Z '^</b>' = '' && k=R ;;
esac
[ "$k" == R ] && { catv '.}'; return 0; }
expr "$Z" :Text "^$RAlez" && {
Leerz $rek $*
expr "$Z" :Z "^$RAlez" = ''
}
expr "$Z" :Text "^$RAtxt" && {
PutText
expr "$Z" :Z "^$RAtxt" = ''
}
expr "$Z" :HexC "^$RAbgc" && {
expr "$Z" :Z "^$RAbgc" = ''
MkRgb
catv ".\colorbox[rgb]{$R,$G,$B}{"
Zeile ${rek}B $* $R $G $B
}
expr "$Z" :HexC "^$RAfcc" && {
expr "$Z" :Z "^$RAfcc" = ''
MkRgb
catv ".\textcolor[rgb]{$R,$G,$B}{"
Zeile ${rek}f $* $R $G $B
}
expr "$Z" :: "^<b>" && {
expr "$Z" :Z "^<b>" = ''
catv ".\textbf{"
Zeile ${rek}b $*
}
done
return 0
}
for FILE in $FILES
do
< $FILE
while :
do
OFILE=
while readl Z
do expr "$Z" :OFILE "$KZ"'@+%(%w%{4,}%)@'"$KZ" && break
done
ifset OFILE || break
print -u2 "%t$DIR/$OFILE.ctex"
> $DIR/$OFILE.ctex
catv '/\begin{flushleft}%n\begin{ttfamily}%n'
while readl Z
do
expr "$Z" :: "$KZ@-$OFILE@$KZ" && break
catv "/\verb: :"
Zeile
catv /\\%n
done
catv '/\end{ttfamily}%n\end{flushleft}%n'
><
done
><
done
exit 0
ifdef CVARS_BISH && return
CVARS_BISH=
Doctype='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
'
Meta='<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel=STYLESHEET type="text/css" href="/htm/main.css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="expires" content="0">
<meta name="Author" content="Helmut Schellong">
<meta name="Rights" content="Sentelor GmbH, Hetten/Herford">
<meta name="Copyright" content="(c) Helmut Schellong, Bad Salzuflen [bish]">
<meta name="Generator" content="bish Script-Interpreter v3.40 CGI">
<link rel=STYLESHEET type="text/css" href="/htm/main.css">
'
Fmueehtm=../tmp/muee.htm
Fmustatus=../tmp/mustatus
Fokayfail=../tmp/okayfail
Feebase=../dat/eebase.txt
Feelf=../htm/eelf.htm
Fsigjs=../js/sig.js
Fsigajs=../js/siga.js
Fsigabmjs=../js/sigabm.js
Fgrpajs=../js/grpa.js
Fgrpaejs=../js/grpae.js
Fsigatxt=../dat/siga.txt
Fsigabmtxt=../dat/sigabm.txt
Fmuee=../dat/muee.bin
Fmueehv=../dat/mueehv.bin
Fmueebm=../dat/mueebm.bin
Fmueebin=../tmp/muee.bin
Fmueemuc=../tmp/mucfg.muc
Fheadmuc=../dat/head.muc
Ddb=../db
Fali=alias.txt
Fstation=$Ddb/station.txt
Fconntest=$Ddb/conntest.txt
Fmucupld=../tmp/upld.muc
Finfobase=../dat/newbase.txt
Fadmlog=$Ddb/log
MC64='aGbdHfgklmjhpqoe~#KVS]u&vwxyPzDB}C{F(AUEsrIi*Jn)L^MNtQO!RTcWY[XZ'
REip='%d%{1,3}%.%d%{1,3}%.%d%{1,3}%.%d%{1,3}'
RN='
'
CR=''
NL='
'
TAB=' '
ESC='^['
CA='^A'
Tconv='116 239 246 116 245 252 116 223 176'
TblTitle1=' '
TblTitle2='-'
TblTitle3='Main measurement values'
TblTitle4='Alarm data'
TblTitle5='PSS devices'
TblTitle6='UNV devices'
TblTitle7='UNB BM1 MM FAN'
TblTitle8='Measurement values'
TblTitle9='Events/History'
case $(extern uname) in
FreeBSD) OsTyp=FreeBSD ps_cmd='/bin/ps -wu -U wms';;
OpenUnix) OsTyp=OpenUnix ps_cmd='/bin/ps -f -u wms';;
OpenUNIX) OsTyp=OpenUnix ps_cmd='/bin/ps -f -u wms';;
*) OsTyp=Unix ps_cmd='/bin/ps -ef';;
esac
Convert() {
local danam:.30 tanam:.30 dnam:.20 tnam:.20 tnam0:.20
local id=000000 text:.100
local nl=0 ddd=000 ll=..
< $1
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *%d%{1,5}, *"' || {
catv Z /%n
continue
}
expr "$Z" :id ' D_%w%{1,}_%d%d%d_%l%l *%(%d%{1,5}%), *"'
expr "$Z" :ddd ' D_%w%{1,}_%(%d%d%d%)_%l%l *%d%{1,5}, *"'
expr "$Z" :ll ' D_%w%{1,}_%d%d%d_%(%l%l%) *%d%{1,5}, *"'
expr "$Z" :text '^[^"]%{1,} %(".*"%)[ %t]*$'
expr "$danam" :dnam '^%(D_%w%{1,}%)_%d%d%d_%l%l$'
[ nl -eq 0 ] && echo "#define ${dnam}_${ddd}_id $id"
echo "#define $danam $text"
let "++nl>=3" && nl=0
done
><
return 0
}
Convert $1
n=000
3<&0
list -Rpf /home2/I |
while readl if
do
expr "$if" :dir 'I' = D
[ -d "$dir" ] && continue
gf=$( gfile $if )
echo $if : $gf
let "++n>10" && n=0 read -u3 inp
expr "$gf" :: 'tar archive' && {
mkdirs $dir
cd $dir
tar xAnf $if
continue
}
expr "$gf" :: 'x86 boot sector' && {
mkdirs $dir
ln $if /home2/MTOOLS || exit
mcopy -/mp i: $dir
remove /home2/MTOOLS
continue
}
done
d() {
local x=$1 y=$2
echo $x $y
let "x >= y" && {
d $((x-y)) $y
r=$?
echo $r
return $((1+r))
}
return 0
}
d 10 2
echo $?
for d in 8x12 12x18
do
> $d/dat
for n in 0 1 2 3 4 5 6 7 8 9 l s
do
[ -s $d/$n.gif ] || continue
catv "/d${d}_$n=%""
catv 47,,0 =Z: < $d/$n.gif
catv / =-1:,,Z:
base -b Z +16
echo '"'
done
><
done
D=/home/DB
mkdirs $D
NA=0000
AI='
10 20 21 22 30 40 50 60 70 80 90
100 110 120 130 140 150 160 170 180 190
200 210 220 230 240 250 260 270 280 290
300 310
'
MC64='aGbdHfgklmjhpqoe~#KVS]u&vwxyPzDB}C{F(AUEsrIi*Jn)L^MNtQO!RTcWY[XZ'
MAILCODEAUTOR=H.Schellong,BadSalzuflen
MAILCODEPROGRAM=Freeware_nur_für_nichtgewerbliche_Verwendung
export MAILCODEAUTOR MAILCODEPROGRAM
: > $D/alias.txt
: > $D/station.txt
for g to 40 repeat
do
echo "$g Gruppe $g" >> $D/alias.txt
mkdirs $D/$g
: > $D/$g/alias.txt
for a to $((100-2*g)) repeat
do
echo "$a System $a" >> $D/$g/alias.txt
mkdirs $D/$g/$a
: > $D/$g/$a/i
RAND=$RANDOM
for ai in $AI
do
case $ai in
10) inh="Gruppe $g" ;;
20) inh="System $a" ;;
21) inh="Standort ${g}_$a" ;;
22) inh="Station ${g}_$a"
echo "$g $a $inh" >> $D/station.txt ;;
30) inh=$g${a}54321 ;;
50) inh=5 ;;
60) catv /0p RAND | mailcode -en -c "$MC64" | catv 0 =inh: ;;
70) inh=KRB$g ;;
100) prints vssf06ssf03ssf03 inh 02 $RAND - $g . $a ;;
*) inh= ;;
esac
catv ai '/ ' inh /%r%n >> $D/$g/$a/i
done
let "++NA>=3500" && break 2
done
done
chown -R www $D
chgrp -R www $D
exit 0
a="$1" l="$2"
let "b=a/512, r=a%512"
let "c=b/l+(((b%l)*512+r)/l)/512, r=(((b%l)*512+r)/l)%512, b=c"
echo "/=: b=$b r=$r a/l=$((a/l)) abr=$((b*512+r))"
let "b=a/512, r=a%512"
echo "*=: b=$b r=$r"
let "b=b*l+(r*l)/512, r=(r*l)%512"
echo "*=: b=$b r=$r a*l=$((a*l)) abr=$((b*512+r))"
CDIR=/dos/cie/mc/c
DIRSPD="$CDIR/mu2b256 $CDIR/mu2b262 $CDIR/u3b145 $CDIR/u3b149 $CDIR/u3b150"
DIRSP="mu2000 upc3"
for DIRPD in $DIRSPD
do
[ -d "$DIRPD" ] || continue
for DIRP in $DIRSP
do
DIRP="$DIRPD/$DIRP"
[ -d "$DIRP" ] || continue
DIR="$DIRP/lst"
[ -d "$DIR" ] || continue
cd "$DIR" ; echo $DIR
rm -v *.lst
DIR="$DIRP/obj"
[ -d "$DIR" ] || continue
cd "$DIR" ; echo $DIR
rm -v *
done
done
TMPS=get_size.tmp
T=/ UNIX=ja BSZ=1024 NUL=/dev/null; alias remove=rm
[ `ver o` = dos ] && { T=\; unset UNIX; DOS=ja; BSZ=512; NUL=NUL
alias remove=DEL; }
trap 'echo %nUSER-INTERRUPT%n ; exit 0' 2
stop() { read "rest? <Enter> "; }
frage() {
while echo "%n$1 [jne!]: %c"
do
read rest
case "$rest" in
[jJ]) return 0 ;;
[nN]) return 1 ;;
[eE]) exit 0 ;;
!) read "rest?"`pwd`":> "; system "$rest"; continue ;;
*) continue ;;
esac
done
return 2
}
echo "%e[2J%n demo-Skript für bish-Shell. H.Schellong%n"
getlines() {
[ $# -gt 1 ] && { static sl=1 cnt=$1 dat=$2; return 0; }
line -$sl-$((sl+cnt-1)) "$dat" || return 1
((sl=sl+cnt))
return 0
}
demo_getdir() {
[ ! -d "$1" -o "$1" = demonstration ] && {
[ "$1" != demonstration ] && echo " Ungültiges Verzeichnis: '$1'"
read "dir? Demo-Verzeichnis eingeben: " rest
demo_getdir "$dir"
}
}
demo() {
echo "
Diese Demo-Aktion wird an einem von Ihnen
anzugebenden Verzeichnis durchgeführt.
Es wird die Summe der $BSZ-Byte-Einheiten festgestellt,
die von allen Dateien und allen Verzeichnissen
belegt werden.
(Auf Disketten beträgt die Cluster-Größe $BSZ Byte.)
"
stop
dir=demonstration
demo_getdir $dir
echo " Demo-Verzeichnis: '$dir'%n"
echo " Jetzt ggf. Disketten-Schreibschutz entfernen!"
stop
local dblks=00000 fblks=00000 fsz=00000000000 rblks=00000
local verz einträge=0000 fblk=00000 dblk=00000 datei
local size=00000000000 rb=00000000000 prz=0000
ifdef DOS && verzchnsse="$dir `DIR $dir /s/b/a:d`"
ifdef UNIX && verzchnsse="`find $dir -type d -print`"
for verz in $verzchnsse
do
echo %r% Bearbeite $verz ...
ifdef DOS && DIR $verz /b/a:-d > $TMPS
ifdef UNIX && ls -p $verz > $TMPS
ifdef DOS && einträge=`DIR $verz /b/a | wc -l`
ifdef UNIX && einträge=`ls $verz | wc -l`
((einträge=einträge+2))
fblk=$fblks dblk=$dblks
getlines 20 $TMPS
while dateien="`getlines`"
do
for datei in $dateien
do
ifdef UNIX && expr $datei : '/$' > $NUL && continue
size=`fsize $verz$T$datei` ((fsz=fsz+size))
(( fblks= fblks + size/BSZ + (rb=((size%BSZ)+BSZ-1)/BSZ) ))
((rblks=rblks+rb))
done
done
(( size= einträge<<5 ; fsz=fsz+size ;
dblks= dblks + size/BSZ + (rb=((size%BSZ)+BSZ-1)/BSZ) ))
((rblks=rblks+rb))
echo "%r " $((fblks-fblk)) %tDateiblöcke
echo " " $((dblks-dblk)) %tVerzeichnisblöcke
done
[ -e $TMPS ] && remove $TMPS
echo "%r%n Verzeichnis '$dir' wird auf DOS-Diskette belegen:%n"
echo " $fblks%tDateiblöcke%n $dblks%tVerzeichnisblöcke"
((fblks=fblks+dblks))
[ $fsz -lt $BSZ ] && fsz=$BSZ
(( prz=(fblks*100)/(fsz/BSZ) - 100 ; rb=fblks-(fsz/BSZ) ))
echo " $fblks %tBlöcke insgesamt (mit je $BSZ Byte)"
echo " Komprimiert etwa $(( (fblks*35)/100 )) bis $(( (fblks*70)
/100 )) Blöcke"
echo " Eine 3½%"-1440K-Diskette hat $(([(80*2*18-33)*512]/BSZ)) Blöcke"
echo "%n $rblks Blöcke mit weniger als $BSZ Byte;"
echo " die Erhöhung durch die Blockbildung beträgt $prz%%%%%c"
echo " oder $rb Blöcke."
stop
unset verzchnsse
}
echo " Die folgende Frage kann mit j, n, e (ja,nein,Ende)
und ! für Kommando-Eingabe beantwortet werden.
"
frage " Demo-Aktion starten?" && demo
echo % --- ENDE demo.bish ---
local n=0000 s=0000 d=0000 b=00000000
local e=...... p=...... k=00000000
local nk=00000 ok=00000
for n from 0 to 100 repeat
do
for s from 0 to 4 repeat
do
let "d=n+s*51"
b=$((2#,d)) e='. & ' p='' ok=0 nk=0
[ s -eq 4 ] && e='/ \\%n'
[ -z "$p" -a d -lt 10 ] && p='\ \ '
[ -z "$p" -a d -lt 100 ] && p='\ '
let "nk=8-${#b}"
let "nk<0" && { let "ok=-nk"; nk=0; }
catv p d '. ' nk,k ok,,b "$e"
done
[ n -ge 50 ] && break
done
T=\
[ ! -d doc ] && { echo Vermisse Verzeichnis .${T}doc; exit; }
LST=doc\??*.mn[ki]
expr "$LST" :: '\??%*%.mn' && {
echo Keine DOKU-Dateien im Verzeichnis .\doc vorhanden!; exit; }
conv -L LST
KLST=""
for LK in $LST
do
LK=`expr $LK : '^doc\%(..*%)%.mn'`
KLST="$KLST$LK "
done
unset LST
KNAM=kommando_name
[ $# -ge 1 -a -n "$1" ] && KNAM=$1
[ $KNAM = kommando_name ] && KNAM=" "
until test $KNAM &&
test -s doc$T$KNAM.mni -o -s doc$T$KNAM.mnk
do
echo " $KLST%n"
read KNAM"? Kommando-Name: " rest
done
if test -s doc$T$KNAM.mni -a -s doc$T$KNAM.mnk
then
until [ "$KI" = k -o "$KI" = i ]
do
read KI"? $KNAM.mnk oder $KNAM.mni? [ki]: "
done
KNAME=$KNAM.mnk
[ "$KI" = i ] && KNAME=$KNAM.mni
else
[ -s doc$T$KNAM.mnk ] && KNAME=$KNAM.mnk
[ -s doc$T$KNAM.mni ] && KNAME=$KNAM.mni
fi
KNAME=doc$T$KNAME
for ZN by 22 repeat
do
line -$ZN-$((ZN+22)) $KNAME || break
read rest"?<<<<<<<<<Enter> "
done
echo %n% --- ENDE doku.bish ---
set -f
getbytes() {
catv $1,3 =$2: && let `catv ,`==$1
return
}
prn() {
prints sf08s12s12s12ss $1 $2 $3 $4 " " "$5" >> $6
return 0
}
getvals() {
local __n=____________ __e=___
__e=`catv 0,1,$1 | base -b +10`
let "__e==0" && return 1
let "__e==16#e5" && { $2="" ; return 0; }
catv 0,8,$1 | tr '\0\5' '\1\229' | catv =__n:
expr "$__n" :__n '^%([^ ]%{1,%}%)' || __n=''
catv 8,3,$1 | tr '\0' '\1' | catv =__e:
expr "$__e" :__e '^%([^ ]%{1,%}%)' || __e=''
ifset __e && __n="$__n.$__e"
$2="$__n"
$3=$( catv 11,1,$1 | base -b +10 )
$4=$( catv 22,4,$1 | base -l +10 )
$5=$( catv 26,2,$1 | base -w +10 )
$6=$( catv 28,4,$1 | base -l +10 )
return 0
}
readdir() {
local name=____________ attr=___ pos=___________
local timdat=___________ cluster=___________ size=___________
let "name=$2*512"
seek $name $3
while getbytes 32 buf
do
getvals buf g_n g_a g_t g_c g_s || return 0
name="$g_n" attr=$g_a timdat=$g_t cluster=$g_c size=$g_s
ifset name || continue
let "attr&16#08" && continue
[ "$name" == . -o "$name" == .. ] && continue
echo "%r%c"; print -rn "$1/$name "
prints sf08s12s12s12ss $((2#, attr)) $cluster $size $timdat %
" " "$1/$name" >> path.lst
let "attr&16#10" && {
seek + $3 pos
readdir "$1/$name" $((Start+[cluster-2]*64)) $3
seek $pos $3
}
done
return
}
makepaths() {
[ -s dirs.lst ] || return
local rdir=000 cl dotcl dotdotcl
: > path.lst
3< $1
< dirs.lst
rdir=0
while read cl dotcl dotdotcl
do
let "dotdotcl==0" &&
echo "$((++rdir))%t$cl" &&
readdir $rdir $((Start+[cl-2]*64)) 3
done
><<
return 0
}
dirscan() {
local cl=0000000002 dcl=0000000000 ddcl=0000000000
let "cl=cl"
: > dirs.lst
3< $1
seek $((Start*512)) 3
while :
do
echo "%r$cl %c"
getbytes 512 buf || break
getvals buf g_n g_a g_t g_c g_s &&
let "g_s==0&&g_a&16#10" && [ "$g_n" == . ] &&
dcl="$g_c" &&
catv 32,32,buf =buf &&
getvals buf g_n g_a g_t g_c g_s &&
let "g_s==0&&g_a&16#10" && [ "$g_n" == .. ] &&
let "dcl==cl" && ddcl="$g_c" &&
echo "$cl%t$dcl%t$ddcl" &&
echo "$cl%t$dcl%t$ddcl" >> dirs.lst
seek +$((++cl, 64*512-512)) 3
done
><
return 0
}
paths1cl() {
[ -s path.lst ] || return
local at=00000000 cl=00000000 sz=0000000000 td=0000000000 n
local at1=00000000 cl1=00000000 sz1=0000000000 td1=0000000000 n1
local big=0
: > path1.lst
: > bigf.lst
< path.lst
while read at cl sz td n
do
big=1
let "sz1>64*512&&cl>cl1&&(sz1+64*512-1)/(64*512)==cl-cl1" &&
prn $at1 $cl1 $sz1 $td1 "$n1+" path1.lst && big=0
let "big!=0&&sz1>64*512" &&
prn $at1 $cl1 $sz1 $td1 "$n1" bigf.lst &&
prn $at1 $cl1 $((64*512)) $td1 "$n1-" path1.lst
let "sz<=64*512" &&
prn $at $cl $sz $td "$n" path1.lst
at1=$at cl1=$cl sz1=$sz td1=$td n1="$n"
done
let "big!=0&&sz1>64*512" &&
prn $at1 $cl1 $sz1 $td1 "$n1" bigf.lst &&
prn $at1 $cl1 $((64*512)) $td1 "$n1-" path1.lst
><
return 0
}
copyx() {
[ -s path1.lst ] || return
local at=00000000 cl=00000000 sz=0000000000 td=0000000000 n
: > log
3< $1
< path1.lst
mkdirs /scratch/DOS /scratch/NT /scratch/TEMP /scratch/RECYCLED
while read at cl sz td n
do
expr "$n" :n '^1/%(..*%)' && n="/scratch/DOS/$n"
expr "$n" :n '^2/%(..*%)' && n="/scratch/NT/$n"
expr "$n" :n '^3/%(..*%)' && n="/scratch/C/$n" && continue
expr "$n" :n '^4/%(..*%)' && n="/scratch/TEMP/$n"
expr "$n" :n '^5/%(..*%)' && n="/scratch/RECYCLED/$n"
let "2#$at&16#10" && echo "DIR $n"
let "2#$at&16#10" && { mkdirs "$n" || break; continue; }
let "cl<2||sz<=0||sz>30000000" &|
expr "$n" :: '/NT/GWS.*' &|
expr "$n" :: '/NT/[A-Z0-9]%{1,%}%.[A-Z0-9]%{1,%}[+-]*$' &|
expr "$n" :: '/NT/NETSCAPE' &|
expr "$n" :: '/NT/T_ONLINE' &|
expr "$n" :: '/NT/ZDBENCH' &&
echo "cl=$cl sz=$sz $n" >> log && continue
echo $(({Start+[cl-2]*64}*512)) $sz '>' "$n"
catv $(({Start+[cl-2]*64}*512)),$sz,3 > "$n" || break
done
><<
return 0
}
Start=$((1+2*250+[512*32]/512))
echo "dirscan? [y]: %c"
read buf
[ "$buf" == y ] && { dirscan /dev/rhd0d; exit; }
echo "makepaths? [y]: %c"
read buf
[ "$buf" == y ] && makepaths /dev/rhd0d
echo "paths1cl? [y]: %c"
read buf
[ "$buf" == y ] && paths1cl
echo "copyx? [y]: %c"
read buf
[ "$buf" == y ] && copyx /dev/rhd0d
if [ "$1" == rdip ]
then
HTM1='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>OPEN</title>
<meta name="Author" content="Helmut Schellong">
<meta name="GENERATOR" content="bish Script-Interpreter v3.40">
<META HTTP-EQUIV="expires" CONTENT="0">
<META HTTP-EQUIV="refresh" CONTENT="30">
</head>
<body text="#000000" bgcolor="#CDAA7D" link="#000000" vlink="#000000" alink="#ffffff">
<br>
'
HTM2='<center>
<h1><a href="http://999.888.777.666:80/" target="_blank">HTTP-BSD [FreeBSD4.5]</a></h1>
<br>
<h1><a href="http://999.888.777.666:8180/" target="_blank">HTTP-UX [OpenUnix8]</a></h1>
<br>
<h1><a href="http://999.888.777.666:8080/TEL.HTM" target="_blank">HTTP-beck</a></h1>
<h1><a href="ftp://999.888.777.666:8021/" target="_blank">FTP-beck</a></h1>
<h1><a href="telnet://999.888.777.666:8023" target="_blank">TELNET-beck</a></h1>
</center>
<ul>
<pre>
'
HTM3='</pre></ul></body></html>
'
Ftp="open schellong.com
user u8888888 rrrrrrrr
binary
put /tmp/wanhtm /cie/server.html
quit
"
catv Ftp > /tmp/wanftp
Ip=000000000000000
ip=000000000000000
tm=-500
st=01
while sleep $st
catv 0 =ip: < /tmp/wanip
[ "$ip" != x ]
do
ifset ip || continue
st=10
let "$SECONDS-tm>300" && {
tm=$SECONDS
ping www.t-online.de > /dev/null
}
cmpv ip Ip && continue
Ip=$ip
expr "$HTM2" :Hbuf '999.888.777.666' += "$ip"
> /tmp/wanhtm
catv HTM1 Hbuf
[ -s /tmp/wanipa ] && cat /tmp/wanipa
catv HTM3
><
ftp -n < /tmp/wanftp
done
exit 0
fi
if [ "$1" == rdtm ]
then
Ip=++++++++++++++++++++
Ip0=++++++++++++++++++++
ip=000000000000000
ipne=000000000000000
size=0000000000
size0=0000000000
neq=0000
tne=0000
nstart=0000
offs=000000
while fstat -sv size /tmp/wanout
[ size -lt 3500 ]
do
[ size -gt offs ] && catv $offs,$((size-offs)),0 < /tmp/wanout
offs=$size
let "++nstart>100" && exit 0
sleep -m 400
done
ipne=0 nstart=0
while :
do
[ $ipne != 0 ] && let "$SECONDS-tne>=15||nstart==0" && {
Ip0=$ipne
echo $ipne%c > /tmp/wanip
echo $ipne >> /tmp/wanipa
ipne=0 nstart=1
}
fstat -sv size /tmp/wanout
[ size -gt offs ] && catv $offs,$((size-offs)),0 < /tmp/wanout
offs=$size
[ size -eq size0 ] && {
let "++neq>2" && exit 0
sleep 4
continue
}
neq=0 size0=0 offs=0
tr '\27' '\10' < /tmp/wanout > /tmp/wanz
: > /tmp/wanout
ip=
< /tmp/wanz
while readl Z
do
expr "$Z" :: '^%[11;[234][0-9]H[0-9. ]%{1,}' || continue
expr "$Z" :col '^....%(..%)H' || continue
let "col<24||col>41" && continue
let "col-=24"
expr "$Z" :ip 'H%([0-9. ]%{1,}%)'
catv ip =$col,,Ip
done
><
ifset ip || continue
expr "$Ip" :ip %
'%([0-9]%{1,3}%.[0-9]%{1,3}%.[0-9]%{1,3}%.[0-9]%{1,3}%)+*$' || continue
cmpv ip Ip0 && continue
ipne=$ip tne=$SECONDS
done
fi
: > /tmp/wanout
: > /tmp/wanip
dsl.bish rdip &
dsl.bish rdtm &
Pid=$!
telnet dsl >> /tmp/wanout
echo x%c > /tmp/wanip
wait
exit 0
set -f
N=-001
while readl Z
do
expr "$Z" :txt ' %(%w%{1,}%) *: *%d' || continue
let ++N; prints vsf03 N $N
prints s-25s-27ss14 '//' '"' '<' '"'
prints sssss '#define D_fehler_' $N '_en ' "%"$txt" '"'
done
:
FLST='mu2000/*.[ch] upc3/*.[ch] share/*.[ch] lib/*.[ch]'
set ge:.1000 ee:.1000
ge= ee=
catv 0 =PATT
for sm in $PATT
do
ge="$ge -e \<$sm\>"
done
ee=$PATT
expr "$ee" :ee '[ %t%r%n]%{1,}' += '\|'
FILES=$(extern grep -l $ge $FLST)
$echo $FILES%n$ee
$exit
for F in $FILES
do
gvim -f -n "+/$ee" "$F"
done
:
MakeGenMsg() {
local cmd=000 rest=00000 v=.. n=0
local systyp=000 sysidx=000 msgtyp=000
local subsys=000 subidx=000 functn=000
local datobj=000 datele=000 msgidx=000
local id=0000000000 d0=000 d1=000 d2=000
while
d0=$((16#, (datobj&31)<<3|functn&7))
d1=$((16#, datele<<2|datobj>>5))
d2=$((16#, msgidx))
id=$((16#, systyp<<24|sysidx<<16|msgtyp<<14|subsys<<10|subidx<<2|functn>>3))
conv -u id d0 d1 d2
for 2 v n in id 8 d0 2 d1 2 d2 2
do
prints vsf0$n $v ${{v}}
done
echo "
%tID + Data[3]: $id $d0 $d1 $d2
%t systyp : 1 value [$systyp]
%t sysidx : 2 value [$sysidx]
%t msgtyp : 3 value [$msgtyp]
%t subsys : 4 value [$subsys]
%t subidx : 5 value [$subidx]
%t functn : 6 value [$functn]
%t datobj : 7 value [$datobj]
%t datele : 8 value [$datele]
%t msgidx : 9 value [$msgidx]
%tReturn : R
%tExit : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
1) systyp=$rest;;
2) sysidx=$rest;;
3) msgtyp=$rest;;
4) subsys=$rest;;
5) subidx=$rest;;
6) functn=$rest;;
7) datobj=$rest;;
8) datele=$rest;;
9) msgidx=$rest;;
R) break;;
E) exit 0;;
*) echo "%a%c"; continue;;
esac
done
return 0
}
SplitGenMsg() {
local cmd=000 rest=00000000 v=.. n=0
local systyp=000 sysidx=000 msgtyp=000
local subsys=000 subidx=000 functn=000
local datobj=000 datele=000 msgidx=000
local id=0000000000 d0=000 d1=000 d2=000
while
let "systyp=16#$id>>24&8#37" "sysidx=16#$id>>16&8#377" %
"msgtyp=16#$id>>14&8#3" "subsys=16#$id>>10&8#17" %
"subidx=16#$id>> 2&8#377" "functn=(16#$id&8#3)<<3|16#$d0&8#7" %
"datobj=(16#$d0>>3&8#37)|(16#$d1&8#3)<<5" %
"datele= 16#$d1>>2&8#77" "msgidx= 16#$d2"
conv -u id d0 d1 d2
for 2 v n in id 8 d0 2 d1 2 d2 2
do
prints vsf0$n $v ${{v}}
done
echo "
%t systyp=$systyp sysidx=$sysidx msgtyp=$msgtyp
%t subsys=$subsys subidx=$subidx functn=$functn
%t datobj=$datobj datele=$datele msgidx=$msgidx
%tInput ID : id value [$id] (hex)
%tInput data0: d0 value [$d0] (hex)
%tInput data1: d1 value [$d1] (hex)
%tInput data2: d2 value [$d2] (hex)
%tReturn : R
%tExit : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
id) id=$rest;;
d0) d0=$rest;;
d1) d1=$rest;;
d2) d2=$rest;;
R) break;;
E) exit 0;;
*) echo "%a%c"; continue;;
esac
done
return 0
}
MakeCanID() {
local cmd=000 rest=00000
local systyp=000 sysidx=000 msgtyp=000
local variant=000 data0=000 data9=000
local id=0000000000
while
id=$((16#, systyp<<24|sysidx<<16|msgtyp<<14|variant<<10|data0<<2|data9))
conv -u id
prints vsf08 id $id
echo "
%tID : $id
%t systyp : 1 value [$systyp]
%t sysidx : 2 value [$sysidx]
%t msgtyp : 3 value [$msgtyp]
%t variant: 4 value [$variant]
%t data0 : 5 value [$data0]
%t data9 : 6 value [$data9]
%tReturn : R
%tExit : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
1) systyp=$rest;;
2) sysidx=$rest;;
3) msgtyp=$rest;;
4) variant=$rest;;
5) data0=$rest;;
6) data9=$rest;;
R) break;;
E) exit 0;;
*) echo "%a%c"; continue;;
esac
done
return 0
}
SplitCanID() {
local cmd=000 rest=00000000
local systyp=000 sysidx=000 msgtyp=000
local variant=000 data0=000 data9=000
local id=0000000000
while
let "systyp=16#$id>>24&8#37" "sysidx=16#$id>>16&8#377" %
"msgtyp=16#$id>>14&8#3" "variant=16#$id>>10&8#17" %
"data0=16#$id>>2&8#377" "data9=16#$id&8#3"
conv -u id
prints vsf08 id $id
echo "
%t systyp=$systyp sysidx=$sysidx msgtyp=$msgtyp
%t variant=$variant data0=$data0 data9=$data9
%tInput ID: id value [$id] (hex)
%tReturn : R
%tExit : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
id) id=$rest;;
R) break;;
E) exit 0;;
*) echo "%a%c"; continue;;
esac
done
return 0
}
local cmd=... rest=...
while echo "
%tMakeGenMsg : mg
%tSplitGenMsg: sg
%tMakeCanID : mc
%tSplitCanID : sc
%tExit : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
mg) MakeGenMsg;;
sg) SplitGenMsg;;
mc) MakeCanID;;
sc) SplitCanID;;
E) break;;
*) echo "%a%c"; continue;;
esac
done
let 0`ver n`'<242' && {
echo "Dieses Script benötigt mindestens bish-Version 2.42 !"
ver; exit 1
}
[ `ver w` == shw ] && read "-?<Enter> "
T=/
[ `ver s` == dos ] && T=\
Ln=NNN Lc=0000 Nc=0000
inp="`prints s80-`"
mail="$inp"
name="$inp"
Lnam="$inp"
Lnorm() {
[[ $Ln == J* ]] || return
[ -s "$1" ] || return
grep -imq '^ *<DT><H3' "$1" || return
local h3nam lnot
Des=''
[[ $Ln == ?J* ]] && lnot=j
cat "$1" | {
> "$1"
while readl zeile
do
ifset Des && {
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' && {
expr "$zeile" :mail '^%(..*>%)[^<>]*</[Aa]>%r*$'
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
expr "$zeile" :inp '>[^<>]*%(</[Aa]>%r*%)$'
catv mail h3nam /. name inp /%j
continue
}
expr "$zeile" :: '^ *<[Dd][Ll]><[Pp]>' &&
catv /%j zeile =:,,Des && continue
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' &&
ifset lnot &| catv Des /%j zeile /%j && Des=''
continue
}
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' && Des="$zeile" &&
expr "$zeile" :h3nam '>%([^<>]*%)</[Hh]3>%r*$'
ifset Des || catv zeile /%j
done
><
}
unset Des
return 0
}
GetAN() {
local l=${#W} c=0000 o=0000 sc=n an
while let "o<l"
do
expr "`catv $o,,W`" :an '^%([^"(,<]*%)' || an=''
c=${#an} sc=e
let "o+=c, o<l" && catv $o,1,W =sc
let c && expr "$an" :: '[^ %t]%{1,%}' && {
[ "x$sc" != 'x<' ] && expr "$an" :an '%([^<> %t]%{1,%}%)' &&
print -r "a $an"
[ "x$sc" == 'x<' ] &&
expr "$an" :an '^[ %t]*%(.*[^ %t]%)[ %t]*$' &&
conv -"t ?" an && print -r "n $an"
}
an=''
case "$sc" in
e) continue ;;
,) echo "e ," ; let --o ;;
<) expr "`catv $o,,W`" :an '^<%([^>]*%)' ;;
() expr "`catv $o,,W`" :an '^(%([^)]*%)' ;;
") expr "`catv $o,,W`" :an '^"%([^"]*%)' ;;
esac
let "o+=${#an}+2"
ifset an || continue
[ "x$sc" == 'x<' ] && print -r "a $an" && continue
conv -"t ?" an && print -r "n $an"
done
let l && echo "e :"
return 0
}
ABook() {
case "$1" in
tol_htm)
while :
do
echo "%nGeben Sie das Verzeichnis der T-Online-Software an,"
echo "in der Regel c:${T}t_online oder c:${T}decoder"
read "inp? : "
ifset inp || return
conv -t/${T}F$T inp
[ -d "$inp" ] && break
echo "%t$inp ist kein Verzeichnis!"
done
expr "$inp" :: '[?*[]' && {
echo "$inp": Bitte keine Zeichen "?*["; return; }
Ziel=addrimp.htm
addr=____________
[ -d "$inp${T}email" ] && addr=addrbook.lst inp="$inp${T}email"
[ -d "$inp${T}email20" ] && addr=adressen.dat inp="$inp${T}email20"
[ "$addr" != addrbook.lst -a "$addr" != adressen.dat ] && {
echo Kein eMail-Verzeichnis gefunden!; return; }
: $inp${T}*${T}$addr
[ "$]" -eq 0 ] && echo Keine Adressendatei gefunden! && return
echo '<!DOCTYPE NETSCAPE-Addressbook-file-1>' > $Ziel
echo '<TITLE>Adreßbuch</TITLE>' >> $Ziel
echo '<H1>Adreßbuch</H1>%n%n<DL><p>' >> $Ziel
for inp in $inp${T}*${T}$addr
do
[ -s "$inp" ] || continue
grep -q '^[^=%t]*[=%t][^=%t%r%n]%{2,%}$' $inp || continue
< "$inp"
while [ $addr == adressen.dat ] && readl zeile
do
conv -l zeile
expr "$zeile" :: '^%[adressen]$' && break
done
while readl zeile
do
expr "$zeile" :: '^%[' && break
expr "$zeile" :: '^[^=%t]*[=%t][^=%t]%{3,%}$' || continue
expr "$zeile" :name '^%([^=%t]*%)[=%t]' || name=''
expr "$zeile" :mail '[=%t]%([^=%t]*%)$' || continue
print -r "<DT><A HREF=%"mailto:$mail%">$name</A>" >> $Ziel
done
><
[ $addr != adressen.dat ] && continue
< "$inp"
while readl zeile
do
conv -l zeile
expr "$zeile" :: '^%[verteiler]$' && break
done
while readl zeile
do
expr "$zeile" :: '^%[' && break
expr "$zeile" :: '^[^=,]%{1,%}=[^=]%{1,%}$' || continue
expr "$zeile" :name '^%([^=]*%)='
print -r "<DT><H3 FOLDED>$name</H3>" >> $Ziel
echo "<DL><p>" >> $Ziel
conv -"t ?t, " zeile
for name in `expr "$zeile" : '=%([^=]*%)$'`
do
conv -"t? " name
zeile="`grep -m "^$name"'=[^=%r%n]%{2,%}$' $inp`" ||
continue
expr "$zeile" :mail '=%([^=%r%n]*%)$' || continue
print -r "<DT><A HREF=%"mailto:$mail%">$name</A>" %
>> $Ziel
done
echo "</DL><p>" >> $Ziel
done
><
done
echo '</DL><p>' >> $Ziel
return 0
;;
ldi_htm)
local gon=0 s=`prints sf040-`
Ziel=address.htm
[ -e address.htm ] && Ziel=ldi_adr.htm
: ?*.ldi
[ "$]" -eq 0 ] && echo "Quell-Datei '*.ldi' fehlt!" && return
echo '<!DOCTYPE NETSCAPE-Addressbook-file-1>' > $Ziel
echo '<TITLE>Adreßbuch</TITLE>' >> $Ziel
echo '<H1>Adreßbuch</H1>%n%n<DL><p>' >> $Ziel
W=`prints sf080-`
Des=`prints sf0200-`
Lc=0 Nc=0
for addr in ?*.ldi
do
grep -q '^dn: *cn=' $addr || continue
Des='' s='' gon=0
< $addr
while readl zeile
do
[ -z "$zeile" ] && { >> $Ziel
conv -"t<{t>}t&+" name nick Des
[ $gon == 1 ] && {
ifset name || name=L$((++Lc))
print -r "<DT><H3 FOLDED$nick>$name</H3>" &&
echo "<DL><p>%n</DL><p>"
}
[ $gon == 2 ] && echo "</DL><p>"
[ $gon == 0 ] && {
ifset name || name=N$((++Nc))
print -r "<DT><A HREF=%"mailto:$mail%"$nick>$name</A>"
ifset Des && catv /"<DD>" Des /%j
}
><
Des='' s='' gon=0
continue
}
if expr "$zeile" :: '^[a-zA-Z0-9]%{1,%}:%{1,2%}'
then
expr "$zeile" :s '^%([a-zA-Z0-9]%{1,%}%):%{1,2%}'
conv -l s
expr "$zeile" :W ': %(.*%)$'
[ "`expr "$zeile" : '^[^:]*%(::*%) '`" == :: ] &&
print -ru2 "base64-kodiert!: '$W'"
else
expr "$zeile" :W '^ %(.*%)$'
fi
case "$s" in
dn) name='' mail='' nick=''
expr " $W" :name '[, ]cn=%([^,]%{1,%}%)'
expr " $W" :mail '[, ]mail=%([^, ]%{1,%}%)' ;;
cn) ifset name || name="$W" ;;
mail) ifset mail || mail="$W" ;;
?*nickname) nick=" NICKNAME=%"$W%"" ;;
description) ifset Des && catv '/<BR>%j' W =:,,Des
ifset Des || catv W =:,,Des ;;
objectclass) expr "$W" :: 'group[Oo]f[Nn]ames' && gon=1 ;;
member)
conv -"t<{t>}t&+" name nick
[ $gon != 2 ] && gon=2 && {
ifset name || name=L$((++Lc))
Lnam="$name"
print -r "<DT><H3 FOLDED$nick>$name</H3>" >> $Ziel
echo "<DL><p>" >> $Ziel
}
name= mail=
expr " $W" :name '[, ]cn=%([^,]%{1,%}%)'
expr " $W" :mail '[, ]mail=%([^, ]%{1,%}%)'
ifset name || name="${Lnam}.N$((++Nc))"
conv -"t<{t>}t&+" name
print -r "<DT><A HREF=%"mailto:$mail%">$name</A>" >> $Ziel
;;
esac
done
><
done
unset Des W
echo '</DL><p>' >> $Ziel
return 0
;;
htm_tol)
local quelle=address.htm
[ -s $quelle ] || {
echo "Quell-Datei '.${T}$quelle' fehlt!"; return; }
grep -q '<!DOCTYPE NETSCAPE-Addressbook-file-1>' $quelle || {
echo "'.${T}$quelle': Dateiinhalt fehlerhaft!"; return; }
while :
do
echo "%nGeben Sie das Verzeichnis der T-Online-Software an,"
echo "in der Regel c:${T}t_online"
read "inp? : "
ifset inp || return
conv -t/${T}F$T inp
[ -d "$inp" ] && break
echo "%t$inp ist kein Verzeichnis!"
done
expr "$inp" :: '[?*[]' && {
echo "$inp": Bitte keine Zeichen "?*["; return; }
[ -d "$inp${T}email20" ] || {
echo Kein eMail-Verzeichnis gefunden!; return; }
inp=$inp${T}email20
: $inp${T}*${T}adressen.dat
[ "$]" -eq 0 ] && echo Keine Adressendatei gefunden! && return
for Ziel in $inp${T}*${T}adressen.dat
do echo $Ziel ; done
echo
for Ziel in $inp${T}*${T}adressen.dat
do
echo $Ziel
read "inp?verwenden?[jn]: "
[ "$inp" == j -o "$inp" == J ] && break
Ziel=N
done
[ "$Ziel" == N ] && return
expr "$Ziel" :name '^%(..*%)'$T'[^'$T']*$'
cat $Ziel > $name${T}addr_bish.dat
echo "Kopiere $Ziel --> $name${T}addr_bish.dat"
local h3=000 hm=000 hi=000
< $quelle
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' &&
let ++h3 "hm= h3>hm ? h3 : hm"
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' && let --h3
done
><
Lc=0 Nc=0
: > aaaa_bish.tmp ; : > vvvv_bish.tmp
for hi from 0 to $hm repeat
do
< $quelle ; h3=0
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' && {
let ++h3==hi && { hm=''
expr "$zeile" :inp '>%([^<>]*%)</[Hh]3>%r*$'
ifset inp || inp=L$((++Lc)) ; Lnam="$inp"
catv inp /= >> vvvv_bish.tmp; }
}
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' && {
expr "$zeile" :mail '"mailto:%([^:"]*%)"'
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
let "hi==0&&h3==0" && {
ifset name || name=N$((++Nc))
catv name /= mail /%j >> aaaa_bish.tmp
}
let "hi>0&&h3==hi" && {
ifset name || name="${Lnam}.N$((++Nc))"
catv /$hm name >> vvvv_bish.tmp ; hm=,
grep -q "^$name=" aaaa_bish.tmp ||
catv name /= mail /%j >> aaaa_bish.tmp
}
}
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' &&
let --h3 "hi>0&&h3+1==hi" && echo >> vvvv_bish.tmp
done
><
done
: > zzzz_bish.tmp
[ -s aaaa_bish.tmp ] && {
grep -iq '^%[adressen]' $Ziel ||
echo '[ADRESSEN]' > zzzz_bish.tmp && {
cat $Ziel >> zzzz_bish.tmp
cat zzzz_bish.tmp > $Ziel ; }
expr "`grep -inm '^%[adressen]' $Ziel`" :hi '^%([^:]*%)'
line -1-$hi $Ziel > zzzz_bish.tmp
cat aaaa_bish.tmp >> zzzz_bish.tmp
line -$((hi+1))- $Ziel >> zzzz_bish.tmp
cat zzzz_bish.tmp > $Ziel
}
[ -s vvvv_bish.tmp ] && {
grep -iq '^%[verteiler]' $Ziel ||
echo '%n[VERTEILER]' >> $Ziel
expr "`grep -inm '^%[verteiler]' $Ziel`" :hi '^%([^:]*%)'
line -1-$hi $Ziel > zzzz_bish.tmp
cat vvvv_bish.tmp >> zzzz_bish.tmp
line -$((hi+1))- $Ziel >> zzzz_bish.tmp
cat zzzz_bish.tmp > $Ziel
}
[ $T == \ ] && { DEL aaaa_bish.tmp ; DEL vvvv_bish.tmp
DEL zzzz_bish.tmp ; }
[ $T == / ] && rm aaaa_bish.tmp vvvv_bish.tmp zzzz_bish.tmp
return 0
;;
htm_agent)
local quelle=address.htm
Ziel=agentimp.dat
[ -s $quelle ] || {
echo "Quell-Datei '.${T}$quelle' fehlt!"; return; }
grep -q '<!DOCTYPE NETSCAPE-Addressbook-file-1>' $quelle || {
echo "'.${T}$quelle': Dateiinhalt fehlerhaft!"; return; }
Des="`prints s1000-`"
local h3=000 hm=000 hi=000
< $quelle
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' &&
let ++h3 "hm= h3>hm ? h3 : hm"
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' && let --h3
done
><
Lc=0 Nc=0
:>$Ziel
for hi from 0 to $hm repeat
do
< $quelle ; h3=0 Des=''
while readl zeile
do
ifset zeile || continue
expr "$zeile" :: '^ *<' || {
let hi==0 && ifset Des &&
expr "$zeile" : '^%([^<%r]*%)' | catv "/ ^ " 0 =:,,Des
continue
}
let hi==0 && ifset Des && {
catv "/Comments: " 68,Des /%j >> $Ziel
inp=68
while catv $inp,76,Des =name:
do let "inp+=76"; catv "/ " name /%j >> $Ziel; done
Des=''
}
let hi==0 && expr "$zeile" :: '^ *<[Dd][Dd]>' && Des='' &&
expr "$zeile" : '<[Dd][Dd]>%([^<%r]*%)' | catv =:,,Des
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' && {
let ++h3==hi && { hm=''
expr "$zeile" :inp '>%([^<>]*%)</[Hh]3>%r*$'
ifset inp || inp=L$((++Lc)) ; Lnam="$inp"
catv "/Name: " inp "/%jAddresses: " >> $Ziel; }
}
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' && {
expr "$zeile" :mail '"mailto:%([^:"]*%)"'
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
let "hi==0&&h3==0" && {
ifset name || name=N$((++Nc))
catv "/Name: " name "/%jAddresses: " mail /%j >> $Ziel
}
let "hi>0&&h3==hi" && {
ifset name || name="${Lnam}.N$((++Nc))"
conv -'t({t)}t"`' name
catv "/$hm" mail "/ (" name "/)%j" >> $Ziel
hm=" "
}
}
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' &&
let --h3 "hi>0&&h3+1==hi"
done
><
done
unset hm hi h3 Des
local flg=000000 b
cat $Ziel | {
: > $Ziel
>> $Ziel
while readl zeile
do
expr "$zeile" :b '^%([a-zA-Z][^: ]*%):' || b=unknown
case "$b" in
Name) let "flg&&!(flg&2)" && catv "/Addresses: %j"
let "flg&&!(flg&4)" && catv "/Comments: %j"
let flg && catv "/Field-Text: %j%j"
flg=1 ;;
Addresses) let "flg|=2" ;;
Comments) let "flg|=4" ;;
esac
catv zeile /%j
done
let "flg&&!(flg&2)" && catv "/Addresses: %j"
let "flg&&!(flg&4)" && catv "/Comments: %j"
let flg && catv "/Field-Text: %j%j"
><
}
return 0
;;
htm_ldi)
local quelle=address.htm
Ziel=addr_imp.ldi
[ -s $quelle ] || {
echo "Quell-Datei '.${T}$quelle' fehlt!"; return; }
grep -q '<!DOCTYPE NETSCAPE-Addressbook-file-1>' $quelle || {
echo "'.${T}$quelle': Dateiinhalt fehlerhaft!"; return; }
Des="`prints s1000-`"
local h3=000 hm=000 hi=000 end
< $quelle
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' &&
let ++h3 "hm= h3>hm ? h3 : hm"
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' && let --h3
done
><
Lc=0 Nc=0
:>$Ziel
for hi from 0 to $hm repeat
do
< $quelle ; h3=0 Des='' end=''
while readl zeile
do
ifset zeile || continue
expr "$zeile" :: '^ *<' || {
let hi==0 && ifset Des &&
expr "$zeile" : '^%([^<%r]*%)' | catv "/ " 0 =:,,Des
continue
}
let hi==0 && ifset Des && {
catv "/description: " 65,Des /%j >> $Ziel
inp=65
while catv $inp,76,Des =name:
do let "inp+=76"; catv "/ " name /%j >> $Ziel; done
Des=''
}
let hi==0 && expr "$zeile" :: '^ *<[Dd][Dd]>' && Des='' &&
expr "$zeile" : '<[Dd][Dd]>%([^<%r]*%)' | catv =:,,Des
ifset end && ifset Des || echo >> $Ziel && end=''
expr "$zeile" :: '^ *<[Dd][Tt]><[Hh]3' && {
let ++h3==hi && { hm=''
expr "$zeile" :inp '>%([^<>]*%)</[Hh]3>%r*$'
ifset inp || inp=L$((++Lc)) ; Lnam="$inp"
catv "/dn: cn=" inp "/%jcn: " inp /%j >> $Ziel
catv "/objectclass: top%jobjectclass: groupOfNames%j" %
>> $Ziel
}
}
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' && {
expr "$zeile" :mail '"mailto:%([^:"]*%)"'
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
let "hi==0&&h3==0" && { end=1
ifset name || name=N$((++Nc))
catv "/dn: cn=" name "/,mail=" mail /%j >> $Ziel
catv "/cn: " name /%j >> $Ziel
catv "/objectclass: top%jobjectclass: person%j" >> $Ziel
catv "/mail: " mail /%j >> $Ziel
expr "$zeile" :name 'NICKNAME="%([^"]%{1,76%}%)"' &&
catv "/xmozillanickname: " name /%j >> $Ziel
}
let "hi>0&&h3==hi" && {
ifset name || name="${Lnam}.N$((++Nc))"
catv "/member: cn=" name "/,mail=" mail /%j >> $Ziel
}
}
expr "$zeile" :: '^ *</[Dd][Ll]><[Pp]>' &&
let --h3 "hi>0&&h3+1==hi" && echo >> $Ziel
done
><
done
unset Des
return 0
;;
agent_htm)
local na=0000 an=xx s=`prints sf040-`
local offs=0000000000 nc0=0000
Ziel=address.htm
[ -e $Ziel ] && Ziel=agentadr.htm
: agentexp*
[ "$]" -eq 0 ] && echo "Quell-Datei 'agentexp*' fehlt!" && return
W=`prints sf080-`
Des=`prints sf0200-`
Lc=0 Nc=0
3> $Ziel
print -u3 '<!DOCTYPE NETSCAPE-Addressbook-file-1>'
print -u3 '<TITLE>Adreßbuch</TITLE>'
print -u3 '<H1>Adreßbuch</H1>%n%n<DL><p>'
for addr in agentexp*
do
grep -qi '^Name: ' $addr || continue
Des='' s='' na=0 offs=0
< $addr
while readl zeile
do
ifset zeile || {
conv -"t<{t>}t&+" name Des
let "na&16&&na&1" && print -u3 "</DL><p>"
let "!(na&16)&&na&1" && {
Nc=$nc0 ; ifset name || name=N$((++Nc))
catv '/<DT><A HREF="mailto:' mail %
'/">' name '/</A>%j' =$offs,,3:
}
ifset Des && let "!(na&16)&&na&8" &&
catv /"<DD>" Des /%j =3
Des='' s='' na=0 offs=0
continue
}
if expr "$zeile" :: '^[a-zA-Z0-9-]%{1,%}:%{1,2%}'
then
expr "$zeile" :s '^%([a-zA-Z0-9-]%{1,%}%):%{1,2%}'
conv -l s
expr "$zeile" :W ': %(.*%)$'
[ "`expr "$zeile" : '^[^:]*%(::*%) '`" == :: ] &&
print -ru2 "base64-kodiert!: '$W'"
else
expr "$zeile" :W '^ %(.*%)$' || W=''
fi
case "$s" in
field-text) : ;;
name) name="$W" mail='' ;;
comments) ifset Des && catv '/<BR>%j' W =:,,Des
ifset Des || catv W =:,,Des ;;
addresses)
set -f
for 2 an nick in `GetAN`
do
[ "$an" != e -a $na -eq 0 ] && {
let "na|=1" ; offs=`seek + 3`
conv -"t<{t>}t&+" name ; inp='' ; Lnam="$name"
ifset Lnam || Lnam=L$((++Lc))
catv "/<DT><H3 FOLDED>" Lnam "/</H3>%j<DL><p>%j" =3
}
case "$an" in
a) mail="$nick"; let "na|=2" ;;
n) conv -"t? " nick; inp="$nick" name="$nick"
let "na|=4" ;;
e) let "na&6" || continue
let "na&2" || print -u2 "eMail-Adresse fehlt!" &&
mail="name@unknown_host.de"
nc0=$Nc
ifset inp || inp="${Lnam}.N$((++Nc))"
conv -"t<{t>}t&+" inp
catv '/<DT><A HREF="mailto:' mail %
'/">' inp '/</A>%j' =3
let 'na|= na&8 ? 16 : 8, na&=~6'; inp='' ;;
esac
done
set +f
;;
esac
done
><
done
print -u3 '</DL><p>'
><
unset Des W
return 0
;;
pme_htm)
Ziel=address.htm
[ -e $Ziel ] && Ziel=postmadr.htm
: postmexp*
[ "$]" -eq 0 ] && echo "Quell-Datei 'postmexp*' fehlt!" && return
echo '<!DOCTYPE NETSCAPE-Addressbook-file-1>' > $Ziel
echo '<TITLE>Adreßbuch</TITLE>' >> $Ziel
echo '<H1>Adreßbuch</H1>%n%n<DL><p>' >> $Ziel
for inp in postmexp*
do
[ -s "$inp" ] || continue
< "$inp"
while readl zeile
do
ifset zeile || continue
expr "$zeile" :: '[a-zA-Z]%{3,%}' || continue
mail= name=
expr "$zeile" :mail '<%([^<>]%{3,%}%)>' &&
expr "$zeile" :name '^%([^<>]%{1,%}[^<> ]%) *<'
ifset mail ||
expr "$zeile" :name '(%([^()]%{1,%}%))' &&
expr "$zeile" :mail '^%([^()]%{3,%}[^() ]%) *('
ifset mail ||
expr "$zeile" :mail '^%([^ ]%{3,%}%) *' || continue
print -r "<DT><A HREF=%"mailto:$mail%">$name</A>" >> $Ziel
done
><
done
echo '</DL><p>' >> $Ziel
return 0
;;
htm_pme)
local quelle=address.htm
Ziel=postmimp.dat
[ -s $quelle ] ||
echo "Quell-Datei '$quelle' fehlt!" && return
grep -q '<!DOCTYPE NETSCAPE-Addressbook-file-1>' $quelle || {
echo "'.${T}$quelle': Dateiinhalt fehlerhaft!"; return; }
< $quelle
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' || continue
expr "$zeile" :mail '"mailto:%([^:"]*%)"' || continue
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
expr "$name" :: '[^ %t]' &&
print -r "$name <$mail>" >> $Ziel && continue
print -r "$mail" >> $Ziel
done
><
return 0
;;
htm_tab)
[[ -s "$2" && $Ln == ??J ]] || return
< "$2"
> ntaba.txt
while readl zeile
do
expr "$zeile" :: '^ *<[Dd][Tt]><[Aa]' && {
expr "$zeile" :mail '"mailto:%([^:"]*%)"'
expr "$zeile" :name '>%([^<>]*%)</[Aa]>%r*$'
catv name /%t mail /%j
}
done
><<
return 0
;;
*) print -ru2 "'$1' existiert nicht!"; exit 1 ;;
esac
return 0
}
Einstellungen() {
local o=00 i="$1"
conv -u i
for o from 0 to ${#i} repeat
do
case "$(catv $o,1,i)" in
J) catv /J =$o,,Ln
let o==1 && catv /J =0,,Ln ;;
N) catv /N =$o,,Ln ;;
esac
done
return 0
}
Helft_mir_doch() {
local n=000
while :
do
n=0
echo %
"| th:%r
| Die Inhalte jeweils aller Adressenlisten (T-Online)%r
| (addrbook.lst oder adressen.dat) werden in eine address.htm%r
| umgewandelt, zum Import mit Navigator 3+4.%r
| lh:%r
| Eine oder mehrere mit Navigator 4 exportierte *.ldi wird/werden%r
| in eine address.htm oder ldi_adr.htm umgewandelt, die%r
| weiterverwendet werden kann.%r
| (Nav4 verwendet eine binäre Datenbank 'abook.nab'.)%r
| hl:%r
| Eine address.htm (Nav3) wird in eine addr_imp.ldi%r
| umgewandelt, für Mailer, die LDIF importieren können.%r
| ht:%r
| Eine address.htm wird in eine adressen.dat (T-Online)%r
| exportierend eingefügt. (Vorher: adressen.dat --> addr_bish.dat)%r
| ha:%r
| Eine address.htm wird in eine agentimp.dat umgewandelt,%r
| die von ForteAgent importiert werden kann.%r
| ah:%r
| Eine oder mehrere mit ForteAgent exportierte agentexp*%r
| werden in eine address.htm oder agentadr.htm umgewandelt."
read "inp?$((++n)): "
ifset inp && return
echo %
"| hp:%r
| Eine address.htm wird in eine postmimp.dat umgewandelt,%r
| die von PostMe importiert werden kann.%r
| ph:%r
| Eine oder mehrere mit PostMe exportierte postmexp*%r
| werden in eine address.htm oder postmadr.htm umgewandelt."
read "inp?$((++n)): "
ifset inp && return
echo %
"| jxx:%r
| Bei einer erzeugten .htm wechseln Listeneinträge auf die%r
| Normalebene, damit sie garantiert berücksichtigt werden.%r
| xjx:%r
| Entfernt leere Listen. (bedingt jxx)%r
| xxj:%r
| Erzeugt zusätzlich Datei ntaba.txt mit 'name<TAB>adresse'.%r
| %r
| cd arg: Arg '-' führt ins vorherige Verzeichnis zurück.%r
| %r
| Die Formate der verschiedenen Mailer-Adreßbücher sind%r
| sehr verschieden, ebenso die Begriffsanzahlen.%r
| Übereinstimmung gibt es nur bei Name und MailAdresse.%r
| Man verliert also bei Umwandlungen meistens Informationen%r
| und kann dann durch Rückumwandlung den Ursprung nicht wieder%r
| unterschiedsfrei herstellen!%r
|%r
| Dieses Script kann nicht BELIEBIG lange Zeilen und Einträge%r
| verarbeiten.%r
| Im vierstelligen Bereich kann man an Obergrenzen stoßen.%r
| Bei defekten Quell-Dateien ist die Fehlertoleranz%r
| relativ gering."
read "inp?$((++n))(EOF): "
ifset inp && return
done
return
}
echo "%r
|-----------------------------------------------------|%r
| bish-Script 'emailadr.bish' |%r
| Copyright (c) 1998 Helmut Schellong |%r
| |%r
| Konversionen eMail-Adressenlisten |%r
|_____________________________________________________|"
while echo %
"%r
|----------------------------------------------------|%r
| Zieldatei: `prints s39- "$Ziel"` |%r
|----------------------------------------------------|%r
| Hilfe : h |%r
| T-Online x.x --> Netscape-.htm : th |%r
| Netscape-.ldi --> Netscape-.htm : lh |%r
| Netscape-.htm --> Netscape-.ldi : hl |%r
| Netscape-.htm --> T-Online 2.2x : ht |%r
| Netscape-.htm --> Forte Agent : ha |%r
| Forte Agent --> Netscape-.htm : ah |%r
| Netscape-.htm --> PostMe : hp |%r
| PostMe --> Netscape-.htm : ph |%r
| Einstellungen »$Ln« : j/n.. |%r
| (Ziel)datei editieren : ed [...] |%r
| Verzeichnis wechseln : cd ... |%r
| Shell aufrufen (Prompt) : sh |%r
| Beenden : E |%r
|____________________________________________________|%r
: __%b%b%c"
do
read inp arg
case "$inp" in
th) ABook tol_htm ; Lnorm "$Ziel" ; ABook htm_tab "$Ziel" ;;
lh) ABook ldi_htm ; Lnorm "$Ziel" ; ABook htm_tab "$Ziel" ;;
hl) ABook htm_ldi ;;
ht) ABook htm_tol ;;
ha) ABook htm_agent ;;
ah) ABook agent_htm ; Lnorm "$Ziel" ; ABook htm_tab "$Ziel" ;;
hp) ABook htm_pme ;;
ph) ABook pme_htm ; Lnorm "$Ziel" ; ABook htm_tab "$Ziel" ;;
cd) [ "$arg" != - ] && [ -d "$arg" ] || echo %a%c && continue
pwd ; cd "$arg" ; pwd ;;
ed) ifset arg || arg="$Ziel"
[ -s "$arg" ] || echo "'$arg' ungültig!" && continue
[ $T == \ ] && edit "$arg"
[ $T == / ] && vi "$arg" ;;
sh) echo "%nBeenden durch Eingabe von 'exit'.%n"
[ $T == \ ] && command.com
[ $T == / ] && bish -E
;;
H|h) Helft_mir_doch ;;
E) break ;;
[jJnN]*) Einstellungen "$inp" ;;
*) ifset inp && echo %a%c
continue ;;
esac
[ -f "$Ziel" -a ! -s "$Ziel" ] && Ziel="(zero)"
done
T=/
[ `ver s` == dos ] && T=\
nset="`prints s160-`"
tmpfiles() {
local dir=$1 vnam=_______________ e=000 tmp
shift
for vnam in $*
do
for e from 100 to 199 repeat
do
tmp=${dir}bishs_tmp.$e
[ -e $tmp ] || { :>$tmp; $vnam=$tmp; continue 2; }
done
return 1
done
return 0
}
boxes() {
local cnt=00 box=' '
local boxd=' '
nset=''
for 2 box boxd in eingang.dat 1/1/eingang.idx %
ausgang.dat 1/2/ausgang.idx %
ablage.dat 1/4/ablage.idx %
abfall.dat 1/8/abfall.idx %
inbox 2/1/inbox.snm %
unsent 2/2/unsent.snm %
sent 2/4/sent.snm %
trash 2/8/trash.snm %
inbox 4/1/inbox.snm %
outbox 4/2/outbox.snm %
sent 4/4/sent.snm %
trash 4/8/trash.snm %
Inbox 8/1/.Inbox.summary %
Outbox 8/2/.Outbox.summary %
Sent 8/4/.Sent.summary %
Trash 8/8/.Trash.summary
do
[ $2 == z -a -f "$1$T$box" ] &&
nset="$nset$box/$boxd " && let ++cnt
[ $2 == q -a -s "$1$T$box" ] &&
grep -qmi '^From - [^ %t%r%n]' "$1$T$box" &&
grep -qmi '^From:[ %t] *[^ %t%r%n]' "$1$T$box" &&
grep -qmi '^Date:[ %t] *[^ %t%r%n]' "$1$T$box" &&
grep -qmi '^Subject:[ %t] *[^ %t%r%n]' "$1$T$box" &&
nset="$nset$box/$boxd " && let ++cnt
done
return $cnt
}
copybox() {
local flg=000000 n=000000 r=1 t %
from='^[Ff][Rr][Oo][Mm] - [a-zA-Z 0-9:]%{18,24%}$' %
msg='^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:[ %t] *[^ %t]%{5,80%}'
n=0
< $1
while readl zeile
do
expr "$zeile" :: "$from" && {
let "flg&1" && cat $mail >> $2 && r=0 && let ++n
print -r "$zeile" > $mail ; let "flg=1" ; continue
}
t=''; let flg || continue
ifset zeile || let "flg&2" || {
t=`sum -b < $mail`.`sum -w < $mail`.`sum -l < $mail`
zeile="Message-Id: <$t@emailbox.bish>"; t="`echo`"
}
expr "$zeile" :: "$msg" && {
let "flg|=2"
echo %r%c ; prints s5ss-66- $n " " "$zeile"
grep -mq "$zeile" $mid && { flg=0; continue; }
}
print -r "$zeile$t" >> $mail
done
><
let "flg&1" && cat $mail >> $2 && { r=0; let ++n; }
let "flg&1" && echo %r%c && prints s5- $n
echo
return $r
}
[ $# -eq 1 ] && {
echo "
---------------------------------------------------------------
bish-Script 'emailbox.bish'
Copyright (c) Helmut Schellong
---------------------------------------------------------------
Dieses bish-Shell-Script fügt die Inhalte der eMail-Ordner
eines Quell-Verzeichnisses passenden Ordnern in einem
Ziel-Verzeichnis automatisch hinzu.
Die beiden Verzeichnisse können auch als Argumente zu diesem
Script angegeben werden.
Folgende Verzeichnis-Verlängerungen werden probiert:
%"%" email20${T}[0-9]??* mail nsmail
netscape${T}mail comm${T}users${T}*${T}mail
Es muß also nicht immer ein langer Pfad angegeben werden,
und bei mehreren (?*[) wird abgefragt.
Fehlende 'Message-Id: <...>' werden automatisch erzeugt
und eingefügt, damit doppelte Mails vermieden werden.
Ziel-Index-Dateien werden gelöscht, weil sie ja nicht mehr
zu den Ordnern passen. Sie werden vom Mailer neu erzeugt.
Erweiterungsmöglichkeiten dieses Script-Textes sind erkennbar.
---------------------------------------------------------------
"
exit
}
while [ $# -eq 0 ]
do
echo "Quell- und Ziel-Verzeichnis [Q Z|<Enter>]: %c"
read qdir zdir qz
ifset qdir || exit
ifset qz && continue
ifset qdir zdir && break
done
[ $# -ge 2 ] && qdir="$1" zdir="$2"
ifset qdir zdir || echo "Quelle='$qdir' Ziel='$zdir' !" && exit 2
expr " $qdir$zdir" :: '[*?[]' &&
echo "Bitte keine Zeichen '*?[' verwenden!" && exit 2
conv -t/${T}F$T qdir zdir
[ $T == \ ] && conv -u qdir zdir
[ ! -d "$qdir" ] && echo "'$qdir' kein Verzeichnis!" && exit 2
[ ! -d "$zdir" ] && echo "'$zdir' kein Verzeichnis!" && exit 2
[ "$qdir" == "$zdir" ] && echo "'$qdir' == '$zdir' !" && exit 2
for 2 qz dir in q $qdir z $zdir
do
for sub in '' "${T}email20${T}[0-9]??*" ${T}mail ${T}nsmail %
${T}netscape${T}mail %
"${T}comm${T}users${T}*${T}mail"
do
na=`echo $dir$sub | wc -w`
let na==1 && tmp=$dir$sub && expr "$tmp" :: '[?*[]' && continue
let "na>1" && { for tmp in $dir$sub; do echo $tmp; done ;echo; }
for sub in $dir$sub
do
[ ! -d $sub ] && continue
let "na>1" && {
echo $sub; read "tmp? verwenden?[jn]: "
[ "$tmp" != j ] && continue
}
boxes $sub $qz || { ${qz}nam="$nset"; ${qz}dir=$sub; break 2; }
done
done
ifset ${qz}nam || echo "Keine Mail-Ordner: '$dir'" && exit 2
done
[ "$qdir" == "$zdir" ] && echo "'$qdir' == '$zdir' !" && exit 2
unset qz na tmp dir sub nset
echo "$qdir --> $zdir ?[jn]: %c"
read qn
[ "$qn" != j ] && exit
tmpfiles .$T mid mail
local box=____________ typ=___ idx=____________________
local qflg=0000000000 delcmd=DEL
[ $T == / ] && delcmd=rm
for qn in $qnam
do
conv -t"/ " qn
for 4 qbox qtyp qtyp idx in $qn ; do :; done
let "qflg&qtyp" && continue
let "qflg|=qtyp"
for zn in $znam
do
conv -t"/ " zn
for 4 box typ typ idx in $zn ; do :; done
let "qtyp&typ" || continue
grep -is '^Message-Id:[ %t] *[^ %t%r%n]' $zdir$T$box > $mid
echo "$qdir$T$qbox --> $zdir$T$box"
copybox $qdir$T$qbox $zdir$T$box &&
[ -f $zdir$T$idx ] && $delcmd $zdir$T$idx
done
done
$delcmd $mid; $delcmd $mail
p=/scratch/VALUE
n1=32
while let "n1<67"
do
let "n2=n1+1"
while let "n2<=67"
do
cmp -s $p/350$n1 $p/350$n2 &&
echo $p/350$n1 $p/350$n2
let ++n2
done
let ++n1
done
OFILE=abs_file.eti
STR="Pestalozzi-Straße 72%r"
ORT="32108 Bad Salzuflen%r"
TEL="Tel/Fax (05222) 84540%r"
stop() { read "rest? <Enter> "; }
he_sc() {
NAM="Helmut Schellong%r"
}
h_sc() {
NAM="H. Schellong%r"
}
sc() {
NAM="Schellong%r"
}
ga_sc() {
NAM="gggggggg Schellong%r"
}
vorberechnung() {
global
VER=0 HOR=0 NUM=0 LBX=0
STARTX=6 STARTY=-17 ETIVER=13 ETIHOR=5
RXA=$((381+24)) RYA=$((212+0)) RXB=$((381-20)) RYB=$((212-20))
array LBY 28 47 45 45
(( LBYSUM= LBY1+LBY2+LBY3+LBY4 ))
echo "%eE%e%1Bin;" >| $OFILE
echo "sc0,1980,0,2724,0;" >> $OFILE
echo "sd1,341,2,1,4,10,5,0,6,0,7,4148ssDT|,1sp1wu0pw0.2lo5;" >> $OFILE
echo "rf1,2,2,1,0,0,0;" >> $OFILE
echo "PUpa0,0pr$STARTX,$STARTY;ft11,1;" >> $OFILE
}
set_text() {
TEXTA="$LBY1;sd4,9.0,5,4,6,3lb$TEL|
pr0,$LBY2;sd4,11.25,6,3es.1lb$ORT|
pr0,$LBY3;lb$STR|
pr0,$LBY4;lb$NAM|;"
}
make_outp() {
vorberechnung
set_text
for VER from 0 to $(( ETIVER-1 )) repeat
do
[ $VER -gt 0 ] && echo "pr-$((RXA*(ETIHOR-1) )),$RYA;" >> $OFILE
for HOR from 0 to $((ETIHOR-1)) repeat
do
[ $HOR -gt 0 ] && echo "pr$RXA,0;" >> $OFILE
((LBX=RXB/2))
echo "pr$LBX,$TEXTA" >> $OFILE
echo "pr-$LBX,-$LBYSUM;" >> $OFILE
echo "%r $VER : $HOR %c"
done
done
echo '%e%%0A%eE' >> $OFILE
}
show() {
echo "$NAM%n$STR%n$ORT%n$TEL"
gewaehlt=1
stop
}
while echo "%n
%tHelmut Schellong : 1
%tH. Schellong : 2
%tSchellong : 3
%tgggggggg Schellong : 4
%tDrucken : d
%tDrucken (Test) : D
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
1) he_sc; show ;;
2) h_sc; show ;;
3) sc; show ;;
4) ga_sc; show ;;
d|D)
ifset gewaehlt || { echo Erst Auswahl treffen!%a; continue; }
make_outp
[ $kdo = d ] && cat $OFILE >> $DRUCKER
: ;;
e) [ -f "$OFILE" ] && rm $OFILE; exit 0;;
*) echo %a%c ;;
esac
done
OFILE=ofile_.eti
ABS="Helmut Schellong * Pestalozzi-Straße 72 * 32108 Bad Salzuflen%r"
LN=1 CR="`echo %r%c`" NL="`echo`"
stop() { read "rest? <Enter> "; }
ksk() {
ANR="Kreissparkasse Halle/Wf.%r"
ABT=" %r"
STR="Eickhof 1%r"
ORT="33803 Steinhagen%r"
return 0
}
hs() {
ANR="Helmut Schellong%r"
ABT="Software%r"
STR="Pestalozzi-Straße 72%r"
ORT="32108 Bad Salzuflen%r"
ABS=" %r"
return 0
}
henrich() {
ANR="Walter HHHHHHH%r"
ABT=" %r"
STR="Dorotheenstraße 88%r"
ORT="33615 Bielefeld%r"
return 0
}
vorberechnung() {
DWN=80 LBX=120
STARTX=0 STARTY=0 ETIVER=8 ETIHOR=2
RXA=1000 RYA=360 RXB=680 RYB=500
echo "%eE%e%1Bin;" >| $OFILE
echo "sc0,1980,$DWN,$((2710+DWN)),0;" >> $OFILE
echo "sd1,341,2,1,4,10,5,0,6,3,7,4148ssDT|,1sp1wu0pw0.0lo2;" >> $OFILE
echo "rf1,2,2,1,0,0,0;" >> $OFILE
echo "PUpa0,0pr$STARTX,$STARTY;ft11,1;" >> $OFILE
}
get_zeilen() {
static cnt
local zeile al=0
[ -z "$cnt" ] && cnt=0
((cnt=cnt+1))
[ $cnt -le 2 -o $cnt -ge 15 ] && {
ANR="-%r"; ABT="-%r"; STR="-%r"; ORT="-%r"
[ $cnt -eq 16 ] && cnt=0 ; return 0; }
while zeile="`line -$LN $ADRFILE`"
do
((LN=LN+1 ; al=al+1))
conv "-d${CR}d$NL" zeile
[ -z "$zeile" ] && {
[ $al -lt 4 -o $al -gt 5 ] && {
echo "Adressendatei fehlerhaft!(45)%a"; return 2; }
[ $al -eq 4 ] && { ORT="$STR"; STR="$ABT"; ABT=" %r"; }
return 0
}
case $al in
1) ANR="$zeile%r";;
2) ABT="$zeile%r";;
3) STR="$zeile%r";;
4) ORT="$zeile%r";;
*) echo "Adressendatei fehlerhaft!(*)%a"; return 2;;
esac
done
LN=1 cnt=0
}
etikett() {
$GETZEILEN || { GETZEILEN=ksk; ksk; }
global
array LBY 50 90 70 50 55
[ "$ABT" = " %r" -o -z "$ABT" ] && array LBY 50 110 50 50 55
(( LBYSUM= LBY1+LBY2+LBY3+LBY4+LBY5 ))
set_text
echo "$ABS%n$ANR%n$ABT%n$STR%n$ORT"
return 0
}
set_text() {
TEXTA="$LBY1;sd4,14.5,6,3lb$ORT|
pr0,$LBY2;sd4,12.75,6,3lb$STR|
pr0,$LBY3;sd4,12.75,6,0lb$ABT|
pr0,$LBY4;sd4,13.25,6,3lb$ANR|
pr0,$LBY5;sd4,6.75,6,0lb$ABS|;"
}
make_outp() {
vorberechnung
for VER from 0 to $(( ETIVER-1 )) repeat
do
[ $VER -gt 0 ] && echo "pr-$((RXA*(ETIHOR-1) )),$RYA;" >> $OFILE
for HOR from 0 to $((ETIHOR-1)) repeat
do
[ $HOR -gt 0 ] && echo "pr$RXA,0;" >> $OFILE
etikett
echo "pr$LBX,$TEXTA" >> $OFILE
echo "pr-$LBX,-$LBYSUM;" >> $OFILE
done
done
echo '%e%%0A%eE' >> $OFILE
}
while echo "%n
Adressendatei '$ADRFILE'($LN)
%tksk : 1
%tHelmut Schellong : 2
%tHHHHHHH : 3
%tAdressendatei : [.[.]]/pfad
%tDrucken : d
%tDrucken(Test) : D
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
1) GETZEILEN=ksk; LN=1; unset ADRFILE; gewahlt=1 ;;
2) GETZEILEN=hs; LN=1; unset ADRFILE; gewahlt=1 ;;
3) GETZEILEN=henrich; LN=1; unset ADRFILE; gewahlt=1 ;;
..[/\]?*|.[/\]?*|[/\]?*)
LN=1; unset gewahlt ADRFILE
[ ! -f $kdo ] && { echo Datei $kdo nichtexistent!%a%c
continue; }
GETZEILEN=get_zeilen; ADRFILE=$kdo; gewahlt=1 ;;
[dD])
ifset gewahlt || { echo Erst Auswahl treffen!%a; continue; }
make_outp
[ $kdo = d ] && cat $OFILE >> $DRUCKER
[ $LN -gt 1 ] && echo Neues Blatt einlegen.
[ $LN -eq 1 ] && unset gewahlt ADRFILE
: ;;
e) [ -f "$OFILE" ] && rm $OFILE; exit 0;;
*) echo %a%c ;;
esac
done
OFILE=ofile_.eti
FLEN=/u/bish/cmd/flen_.eti
[ -e $FLEN ] || echo 104 > $FLEN
ETISZ=70x52
NUMBEZ=FLEN
NUMMER=`cat $FLEN`
VERS=3.05 MONAT=""
COPYRIGHT="Copyright (C) 1995-1999%r"
ANSCHR="Helmut Schellong ù Pestalozzi-Straße 72 ù 32108 Bad Salzuflen%r"
TEL="Tel/Fax (05222) 84540 ù post@schellong.de%r"
stop() { read "rest? <Enter> "; }
plus_docsys() {
KANTE="bish + docsys V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish + docsys%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="Shell-Programm und Kommando-Programmiersprache%r"
BESCHR2="Dokumentationssystem%r"
SYSCPU="f~Ar DOS ù òi386sx%r"
}
plus_doc() {
KANTE="bish V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="BISH32%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="Shell-Programm und Kommando-Programmiersprache%r"
BESCHR2="Dokumentation, Zubeh~Tr%r"
SYSCPU="f~Ar DOS-Console%r"
}
commands() {
KANTE="bish - commands V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish - commands%r"
VERSION="Version _.__ ù Diskette 1/1%r"
BESCHR1="Zusatz-Programm(e) f~Ar bish%r"
BESCHR2="*.exe,*.com%r"
SYSCPU="f~Ar DOS ù òi386sx%r"
}
bish_docsys() {
KANTE="bish - docsys V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish - docsys%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="bish-Dokumentationsystem%r"
BESCHR2="Manuals, Kommandos%r"
SYSCPU="f~Ar DOS ù òi386sx%r"
}
bish_doc() {
KANTE="bish - doc V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish - doc%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="bish-Dokumentation, einfach%r"
BESCHR2=" %r"
SYSCPU="f~Ar DOS%r"
}
bish_wdoc() {
KANTE="bish - wdoc V2.0/$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish - wdoc%r"
VERSION="Version 2.0/$VERS$MONAT ù Diskette 1/1%r"
BESCHR1="Dokumentationspr~Dsentator f~Ar Windows%r"
BESCHR2=" %r"
SYSCPU="f~Ar Windows 3.1%r"
}
bish_shw() {
KANTE="bish + wdoc V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish + wdoc%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="Shell-Programm und Kommando-Programmiersprache%r"
BESCHR2="Dokumentationspr~Dsentator f~Ar Windows 3.1%r"
SYSCPU="SHAREWARE, f~Ar DOS ù òi386sx%r"
}
bish_info() {
KANTE="bish - info V$VERS 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="bish - info%r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="Informationen, Dokumentation,%r"
BESCHR2="Dokumentationspr~Dsentator f~Ar Windows 3.1%r"
SYSCPU="Freeware, f~Ar DOS ù òi386sx%r"
}
korr() {
KANTE="KORREKTUR: 1v1%r"
[ $ETISZ = 70x52 ] && KANTE=" %r"
TITEL="KORREKTUR: %r"
VERSION="Version $VERS$MONAT ù Diskette 1/1%r"
BESCHR1="F~Ar Reg.Nr. FLEN...%r"
BESCHR2=" %r"
SYSCPU="f~Ar DOS ù òi386sx%r"
}
vorberechnung() {
VER=0 HOR=0 NUM=0 LBX=0
global
[ $ETISZ = 70x52 ] && { DWN=0 UP=54
STARTX=190 STARTY=0 ETIVER=5 ETIHOR=2
RXA=929 RYA=518 RXB=680 RYB=500 RXB2=$RXB RYB2=80
array LBY 30 25 25 45 45 40 40 60 60 90
}
[ $ETISZ = 70x70 ] && { DWN=80 UP=0
STARTX=180 STARTY=0 ETIVER=4 ETIHOR=2
RXA=930 RYA=720 RXB=680 RYB=680 RXB2=$RXB RYB2=30
array LBY 30 25 25 100 65 40 40 60 60 100
}
local
(( LBYSUM= LBY1+LBY2+LBY3+LBY4+LBY5+LBY6+LBY7+LBY8+LBY9+LBY10 ))
(( RYA2 = LBYSUM - RYB2 / 2 ))
echo "%eE%e%1Bin;" >| $OFILE
echo "sc0,1980,$DWN,$((2710+DWN)),0;" >> $OFILE
echo "sd1,341,2,1,4,10,5,4,6,0,7,4148ssDT|,1sp1wu0pw0.0lo5;" >> $OFILE
echo "rf1,10,8,1,%c" >> $OFILE
echo "1,1,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,1,1,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "1,1,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,1,1,0,0,0,%c" >> $OFILE
echo "0,0,0,0,0,0,0,0,0,0;" >> $OFILE
echo "PUpa0,$UP;pr$STARTX,$STARTY;ft11,1;" >> $OFILE
}
set_text() {
TEXTA="$LBY1;sd4,6.5,6,0lb$TEL|
pr0,$LBY2;lb$ANSCHR|
pr0,$LBY3;lb$COPYRIGHT|
pr0,$LBY4;sd4,8lb$NUMBEZ"
TEXTB="%r|pr0,$LBY5;sd4,9,6,3lb$SYSCPU|
pr0,$LBY6;sd4,10,6,0lb$BESCHR2|
pr0,$LBY7;sd4,10lb$BESCHR1|
pr0,$LBY8;sd4,11.75,6,3lb$VERSION|
pr0,$LBY9;sd4,18lb$TITEL|
pr0,$LBY10;sd4,9lb$KANTE|;"
}
make_outp() {
vorberechnung
set_text
for VER from 0 to $(( ETIVER-1 )) repeat
do
[ $VER -gt 0 ] && echo "pr-$((RXA*(ETIHOR-1) )),$RYA;" >> $OFILE
for HOR from 0 to $((ETIHOR-1)) repeat
do
[ $HOR -gt 0 ] && echo "pr$RXA,0;" >> $OFILE
echo "er$RXB,$RYB;" >> $OFILE
echo "pr0,$RYA2;rr$RXB2,$RYB2;pr0,-$RYA2;" >> $OFILE
((LBX=RXB/2))
echo "pr$LBX,$TEXTA$NUMMER$TEXTB" >> $OFILE
((NUMMER=NUMMER+3))
echo "pr-$LBX,-$LBYSUM;" >> $OFILE
done
done
echo '%e%%0A%eE' >> $OFILE
}
show() {
echo "$KANTE%n$TITEL%n$VERSION%n$BESCHR1%n$BESCHR2%n$SYSCPU"
echo "$NUMBEZ$NUMMER%n$COPYRIGHT%n$ANSCHR%n$TEL"
gew~Dhlt=1
stop
}
while echo "%n
Etikett $ETISZ, Version '$VERS', $NUMBEZ$NUMMER
%tGr~Táe 70x52/70x70 : g
%tVersion : v...
%tbish+docsys : 1
%tbish+ : 2
%tbish-commands : 3
%tbish-docsys : 4
%tbish-doc : 5
%tbish-wdoc : 6
%tbish-shw : 7
%tbish-info : 8
%tkorrektur : 9
%tDrucken : d
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
g) [ $ETISZ = 70x70 ] && etisz=70x52
[ $ETISZ = 70x52 ] && etisz=70x70
ETISZ=$etisz; unset gew~Dhlt; continue ;;
v?*) VERS=`expr $kdo : '^.%(..*%)'`; continue ;;
1) plus_docsys; show; continue ;;
2) plus_doc; show; continue ;;
3) commands; show; continue ;;
4) bish_docsys; show; continue ;;
5) bish_doc; show; continue ;;
6) bish_wdoc; show; continue ;;
7) bish_shw; show; continue ;;
8) bish_info; show; continue ;;
9) korr; show; continue ;;
d)
ifset gew~Dhlt || { echo Erst Auswahl treffen!%a; continue; }
NUMMER=`cat $FLEN`
make_outp
echo $NUMMER >| $FLEN
cat $OFILE >> $DRUCKER
continue ;;
e) [ -f "$OFILE" ] && rm $OFILE; exit 0;;
*) echo %a%c; continue ;;
esac
done
set Z:.300 Stxt:.200
set Fi:.300 Fo:.300
GetStxt() {
local z:.300 tid=00000 f=0 l=000000
z="$(-grep -m ' { '"$1"', %d%{4}, %d }' ./share/var.c)"
expr "$z" :tid ' { %d%{4}, %(%d%{4}%), %d }' || { print -u2 tid; exit 3; }
z="$(-grep -nm ' D_%w%{1,}_%d%d%d_id '"$tid" ./base/txtbase.h)"
expr "$z" :l '^%(%d%{1,5}%):' || { print -u2 "line:"; exit 4; }
z="$(-line -$((l+1)) ./base/txtbase.h)"
expr "$z" :Stxt ' "%([^"]%{1,50}%)"' || { print -u2 "Stxt"; exit 5; }
return 0
}
Fi=$1 Fo=$1
expr "$Fi" :Fo '%.[^.]%{1,}$' '@&' || { print -u2 Fo; exit 10; }
print -u2 "$Fi"
print -u2 "$Fo"
local evid=00000 cnt=00000
0<"$Fi"
3>"$Fo"
while readl Z
do
catv Z /%n =3
expr "$Z" :: '<h%d>Eventlist</h%d>' && break
done
while readl Z
do
catv Z /%n =3
expr "$Z" :: '</tr>' && break
done
while readl Z
do
catv Z /%n =3
expr "$Z" :: ' <td[> ].%{1,}</td>$' || continue
readl Z
catv Z /%n =3
readl Z
catv Z /%n =3
readl Z
catv Z /%n =3
readl Z
catv Z /%n =3
expr "$Z" :evid ' <td>%(%d%{4}%) ' || { print -u2 evid; exit 1; }
print -u2 $((++cnt))"%t$evid"
readl Z
catv Z /%n =3
readl Z
GetStxt "$evid"
catv '.<td>' Stxt '.  </td>' /%n =3
done
><<
:
set Z:.300
N=00000000
while readl Z
do
to 19 repeat
do
expr Z cxv:: 'movabsq %$2305886989678804992, %%rdx # imm = 0x2000280000000000'
done
expr Z cxv:: 'movabsq %$2305886989678804992, %%rdx # imm = 0x2000280000000000' || continue
let ++N
done
echo $N
CONT='Connected.
INSTANCE_NAME : SID1.domain.com
-- ===================================================================
-- check privileges for grantee ... USERNAME : SCHEMA1
-- ===================================================================
Status : privileges o.k.!
-- ===================================================================
-- check privileges for grantee ... USERNAME : SCHEMA2
-- ===================================================================
Status : privileges o.k.!
-- ===================================================================
-- check privileges for grantee ... USERNAME : SCHEMA3
-- ===================================================================
Status : privileges o.k.!
-- ===================================================================
-- check privileges for grantee ... USERNAME : SCHEMA4
-- ===================================================================
Status : privileges o.k.!
-- ===================================================================
-- check jobs ...
-- ===================================================================
Status : jobs o.k.!
-- ===================================================================
-- check tablespace quotas ...
-- ===================================================================
Status : quotas o.k.!
'
catv CONT | {
while readl Z
do
ifset INN || { expr "$Z" :INN '^INSTANCE_NAME *: *%(%w%{1,}%)'; continue; }
expr "$Z" :: '^-- ====' && continue
expr "$Z" :C '^-- *%(.*%w%) *%.%.%.' && expr "$Z" :U '%(USERNAME.*%)$' || U=
expr "$Z" :: '^Status' &&
catv /INSTANCE_NAME: INN '. ' C '. ' U /%n Z /%n%n
done
}
set Z:.200 tmp:.200
local a:132.1 o:148.1 u:129.1 A:142.1 O:153.1 U:154.1
list -fR /u | {
while read Z
do
expr Z cbv:: '437%.bish$' && continue
expr Z cbv:: '%.bish$' || continue
grep -qm "[$a$o$u$A$O$U]" "$Z" || continue
print -r "$Z"
expr "$Z" :tmp '%.bish$' = '437.bish'
move -v "$Z" "$tmp"
iconv -f CP437 -t ISO8859-1 "$tmp" > "$Z"
done
}
:
CvNum() {
local num:020 m=.
while [ $# -gt 0 ]
do
num="${{1}}"
expr "$num" :: '^%d%{1,20}$' && {
let "num-=num%512"; $1=$num
shift; continue
}
expr "$num" :m '^%d%{1,12}%([bmgBMG]%)$' || {
print -u2 "$num"; exit 2
}
expr "$num" :num '^%(%d%{1,}%)'
case "$m" in
[bB]) let "num*=512";;
[mM]) let "num*=1024*1024";;
[gG]) let "num*=1024*1024*1024";;
esac
$1=$num
shift
done
return 0
}
Ck55aa() {
local o:010 ns=$2 magic2:0.2
local magic:010 jmp3:0.4 jmp:010 prn:.100
local oem:.8 fsn:.8 lbl:.11
for o from 510 by 512 to $(([ns-1]*512+510)) repeat
do
catv o,2,$1 =magic2 || break
base -w magic2 +10 magic
let "magic!=16#aa55" && continue
catv $((o-510)),4,$1 =jmp3
base -l jmp3 +10 jmp
let "jmp&=16#00ffffff"
catv $((o-510+3)),8,$1 =oem
catv $((o-510+82)),8,$1 =fsn
catv $((o-510+71)),11,$1 =lbl
expr "$oem" :: '^[A-Za-z_][A-Za-z_0-9. ]%{7}$' || oem=""
expr "$fsn" :: '^[A-Za-z_][A-Za-z_0-9. ]%{7}$' || fsn=""
expr "$lbl" :: '^[A-Za-z_0-9. ]%{11}$' || lbl="jmp=$((16#,jmp))"
[ Ef -eq 0 ] && { Ef=1
prints vs13bs10bs7bs4bs4bs8bs8bs prn Byte Sektor MB GB MB/s oem fs label
[ Or -gt 0 ] && Or=0 echo
echo "$prn"
echo "$prn" >> $Of
}
prints vs13bs10bs7bs4bs4bs8bs8bs prn %
$((O+o-510)) %
$(([O+o-510]/512)) %
$(([O+o-510]/[1024*1024])) %
$(([O+o-510]/[1024*1024*1024])) %
$Speed "$oem" "$fsn" "$lbl"
SecP=$Seconds
[ Or -gt 0 ] && Or=0 echo
echo "$prn"
echo "$prn" >> $Of
done
return 0
}
ReadHD() {
local nsect:010 len:010 s:010
3<$If
while catv O,$LEN,3 =BUF
do
catv ,.; len=$.;
let "nsect=len/512"
Ck55aa BUF $nsect
let "O+=LEN" "len<LEN" && break
let "O-Offs>=Count" && break
s=$SECONDS Seconds=$s
let "s-Sec>=5" && {
let "Speed=(O-Os)/(s-Sec)" "Speed/=1024*1024"
Os=$O Sec=$s
}
let "s-SecP>=10" && {
echo "%r$((O/[1024*1024])) MB $Speed MB/s%c"
SecP=$s Or=1
}
done
><
return 0
}
If=/dev/ad0
Of=/tmp/find55aa.txt
LEN=$((16*63*512))
set BUF:0.$LEN Seconds:010 Sec:010 SecP:010
set O:020 Offs:020 Count:913 Os:020 Speed:010
Ef=0 Or=0
[ $# -ne 0 -a $# -ne 2 ] && exit 1
[ $# -eq 2 ] && Offs=$1 Count=$2 CvNum Offs Count
echo Offset=$Offs Count=$Count >> $Of
echo Offset=$Offs Count=$Count
echo
O="$Offs" Sec=$SECONDS Speed=0
ReadHD
set Z:.200 Ze:.200
list -fR /u | {
while read Z
do
expr Z cbv:: '/[^./]%{1,}$' || continue
catv 50,0 =Ze: < "$Z"
expr "$Ze" :Ze '^%([a-zA-Z_0-9/.]%{4,}%)' || continue
expr Ze v:: '/bish$' || continue
print -r "$Z"
done
}
:
set Z:.200 Ze:.200
list -fR /u | {
while read Z
do
expr Z cbv:: '%.bish$' || continue
catv 50,0 =Ze: < "$Z"
if expr "$Ze" :Ze '^%([a-zA-Z_0-9/.]%{4,}%)'
then
expr Ze v:: '/bish$' && continue
fi
print -r "$Z"
done
}
:
set -f
set Z:.300
Adr=000000
sk=00000000
nelem=0000
pad=0000
padf=0000
waspad=0
Adr=1700
cat "$1" | {
>"$1"
while seek + 0 sk
readl Z
seek $sk 0
read id dd adr grp idlink sort parbn %
typ bytelen darst nbit bitpos %
access dflt min max flags einheit name %
Tinfo Tgrp Tsgrp Tbit Text text
do
expr "$Z" :: '^:..*' && {
let "Adr+=200" "Adr+=1000-Adr%1000"
catv Z /%n
continue
}
expr "$Z" :: '^[@a-z][0-9]%{3,16}' && {
nelem=1
expr "$flags" :nelem 'A%([0-9]%{1,}%)'
expr "$flags" :nelem 'S%([0-9]%{1,}%)'
if [ $typ == s ]
then
if [ nelem -eq 1 ]
then
let "pad=80-bytelen"
else
if let "nelem*bytelen<=40"
then let "pad=100-nelem*bytelen"
else let "pad=nelem*bytelen" "pad+=200-(pad*2)%200"
fi
fi
else
if [ nelem -eq 1 ]
then
let "pad=50-bytelen"
else
if let "nelem*bytelen<=40"
then let "pad=100-nelem*bytelen"
else let "pad=nelem*bytelen" "pad+=100-(pad*2)%100"
fi
fi
fi
if expr "$flags" :padf 'p%([0-9]%{1,}%)'
then
pad=$padf waspad=1
else
waspad=0
fi
prints vsf06 Adr $Adr
expr "$Z" :Z ' %d%{6} ' = " $Adr "
let "Adr+=nelem*bytelen+pad"
}
catv Z /%n
done
><
}
echo $Adr
FIO="base/cfgdata.c base/cfgbase.txt"
set ZI:.300 ZO:.300 IDLST:.16000
set -f
Check() {
local r=0 ni=00000 no=00000 end=..........
for 2 FI FO in $FIO
do
end=`grep -nm '^%$$' $FO` && expr "$end" :end '^%(%d%{1,}%):'
ni=`grep -c '^# *define %{1,3}D[0-9]%{10}grp ' $FI`
line -1-$end $FO | no=`grep -c '^@0%{8} '`
echo $ni $no : $end
let 'ni!=no' && let ++r
done
return $r
}
CtoTXT() {
local r=0 ni=00000 no=00000
for 2 FI FO in $FIO
do
IDLST=$( grep '^# *define %{1,3}D[0-9]%{10}grp ' $FI | cut -d' ' -f2 )
cat $FO | {
>$FO
for ZI in $IDLST
do
let ++ni
expr "$ZI" :ZI '^D%d%d%(%d%{8}%)' || print -u2 "»$ZI«"
while readl ZO
do
expr "$ZO" :ZO '^@0%{8} ' = "@$ZI " || { catv ZO /%n; continue; }
let ++no; catv ZO /%n; continue 2
done
print -u2 ENDE: $ZI
break
done
while readl ZO
do catv ZO /%n; done
><
}
echo $ni $no
done
return 0
}
Check || exit 1
CtoTXT
:
[ $# -le 0 ] && { echo "*base.txt ... angeben!"; exit; }
FIO="$*"
echo "$FIO"
set FBASE:.50 LNK:010 RIDLNK:32.5000
FIDLNK=/tmp/__idlnk__
Ostep=500 Gstep=500000
OBJ=00000000 GRP=00000000 ADR=000000
Changed=0000
NGE=0000
set -f
SetNGE() {
local z:.500 sk:010
seek + 0 sk
NGE=0
while readl z
do
expr "$z" :: '^%$' && break
expr "$z" :: '^:..' && break
expr "$z" :: '^[@x]%d%{8} ' && let ++NGE
done
seek $sk 0
return 0
}
create_write_id() {
local fbase:.30 z:.500 flg:.20 id:010 mul:010
local grp:08 ido:010
fbase="$FBASE"
OBJ=0 GRP=500000 ADR=0 Changed=0000
cat $fbase | {
>$fbase
while readl z
do
expr "$z" :: '^%$' && { catv z /%n; break; }
expr "$z" :: '^:..' && {
OBJ=4000; let "GRP+=Gstep"; SetNGE
let "mul=(100000-35000)/((NGE+8)*500)" "mul<1" && mul=1
[ mul -gt 8 ] && mul=8
print -u2 %t$NGE%t$((Ostep*mul))
}
prints vsf03 grp $((GRP/100000))
prints vsf08 id $((GRP+OBJ))
expr "$z" :ido '^[@x]%(%d%{8}%) ' && {
grep -qm "$ido" "$FIDLNK" && addoldnew $ido $id
}
expr "$z" :z '^%([@x]%)%d%{8} ' "%1$id " && {
let ++Changed "OBJ+=Ostep*mul"
expr "$z" :z '^%(.%{18} %)%d%d%d ' "%1$grp " ||
print -u2 "grp=$grp: $z"
}
catv z /%n
done
while readl z
do catv z /%n; done
><
}
echo Changed=$Changed
return 0
}
mkidlinks() {
local z:.300 mod:010
<"$FBASE"
>"$FIDLNK"
while readl z
do
expr "$z" :: '^[@x]%d' || continue
expr "$z" :z ' %(%d%{8}%) ' || continue
[ "$z" == 00000000 ] && continue
let "mod=z%500" "z-=mod"
prints vsf08 z $z
catv z "/ " mod /%n
done
><<
return 0
}
addoldnew() {
local id:030 ido=$1 idn=$2 oi:08 ni:08 lnk:08 mod:03
for 2 lnk mod in $( grep "$ido" "$FIDLNK" )
do
let "oi=ido+mod" "ni=idn+mod"
prints vsf08ssf08 id $oi " " $ni
catv id /%n =ADR,,RIDLNK
let "ADR+=${#id}+1"
done
return 0
}
getnewlink() {
local lnk=$1 ido:010 idn:010
for 2 ido idn in $RIDLNK
do
cmpv lnk ido && { LNK=$idn; return 0; }
done
return 1
}
write_idlinks() {
local fbase="$FBASE" z:.300 lnk:010
cat $fbase | {
>$fbase
while readl z
do
expr "$z" :: '^[@x]%d%{8} ' && {
expr "$z" :lnk ' %(%d%{8}%) '
[ "$lnk" != 00000000 ] && {
getnewlink $lnk && {
expr "$z" :z '^%(.%{22} %)%d%{8}' "%1$LNK"
}
}
}
catv z /%n
done
><
}
return 0
}
for FBASE in $FIO
do
mkidlinks
create_write_id
write_idlinks
set RIDLNK:32.5000
done
remove -s $FIDLNK
:
[ $# -le 0 ] && { echo "*base.txt ... angeben!"; exit; }
FIO="$*"
echo "$FIO"
Ostep=500 Gstep=500000
OBJ=00000000 GRP=00000000
Changed=0000
NGE=0000
set -f
SetNGE() {
local z:.500
seek + 0 sk
NGE=0
while readl z
do
expr "$z" :: '^%$' && break
expr "$z" :: '^:..' && break
expr "$z" :: '^[@x]%d%{8} ' && let ++NGE
done
seek $sk 0
return 0
}
create_write_id() {
local fbase:.30 z:.500 flg:.20 id:010 mul:010
for fbase in $FIO
do
OBJ=0 GRP=0 Changed=0000
cat $fbase | {
>$fbase
while readl z
do
expr "$z" :: '^%$' && { catv z /%n; break; }
expr "$z" :: '^:..' && {
OBJ=4000; let "GRP+=Gstep"; SetNGE
let "mul=(100000-35000)/((NGE+8)*500)" "mul<1" && mul=1
[ mul -gt 8 ] && mul=8
print -u2 %t$NGE%t$((Ostep*mul))
}
prints vsf08 id $((GRP+OBJ))
expr "$z" :z '^%([@x]%)%d%{8} ' "%1$id " && {
let ++Changed "OBJ+=Ostep*mul"
}
catv z /%n
done
while readl z
do catv z /%n; done
><
}
echo Changed=$Changed
done
return 0
}
create_write_id
:
ANAM='id dd adr grp idlink sort parbn typ bytelen darst+ nbit bitpos
access+ dflt min max+
flags einheit name+ Tinfo Tgrp Tsgrp Tbit Text+ text
'
set Z:.200
set feld:.50
[ -t 0 ] && exit 0
Print() {
seek + 0 sk
while readl Z
do
expr "$Z" :: '^@[0-9]' && break
done
: $Z
nf=$,
print -u2 "Felder=$nf"
n=000
for n to $nf repeat
do
set l$n:08
done
seek $sk 0
while readl Z
do
ifset Z || continue
expr "$Z" :: '^[@a-z;.,][0-9]' || continue
: $Z
[ $, -ne nf ] && { print -u2 "$, != $nf"; return 1; }
n=0
for feld in $Z
do
let ++n; let "${#feld}>l$n" && let "l$n=${#feld}"
done
done
for n to $nf repeat
do
catv l$n '/ ' =2
done
print -u2
w=00000
seek $sk 0
while readl Z
do
ifset Z || { catv /%n; continue; }
expr "$Z" :: '^[@a-z;.,][0-9]' || { catv Z /%n; continue; }
n=0
for feld in $Z
do
let ++n
[ n -ge nf ] && { catv feld /%n; continue; }
w=l$n; w=${{w}}; let ++w
[ n -eq 10 -o n -eq 13 -o n -eq 16 -o n -eq 19 -o n -eq 24 ] && let ++w
prints s-$w- $feld
done
done
return 0
}
cat | Print
:
Select() {
local tim0:012 tim:012 file:.100
systime tim0
catv '/user root pfaubeem' /%n
catv '/verbose%nbinary%nhash%ncd /usr/home/cie%nls%n'
while readl file
do
fstat -mv tim $file
let "tim0-tim<=1*3600" && catv '/put ' file /%n
done
catv '/quit%n'
return 0
}
list -Rpf wms wms0 | Select | ftp -n vbm
CDIR=/dos/cie/mc/c
DIRSPD="$CDIR $CDIR/mu2b256 $CDIR/mu2b262 $CDIR/u3b145 $CDIR/u3b149 $CDIR/u3b150"
DIRSP="mu2000 upc3"
for DIRPD in $DIRSPD
do
[ -d "$DIRPD" ] || continue
for DIRP in $DIRSP
do
DIRP="$DIRPD/$DIRP"
[ -d "$DIRP" ] || continue
ABS="$DIRP/abs"
[ -d "$ABS" ] || continue
cd "$ABS"; ls -l
ftp schellong.com
done
done
cut -f2 -d' ' $1 | sort |
while readl s
do cmpv s S || prints s6s "$n" " $S" && n=0 S="$s"; let ++n
done
prints s6s "$n" " $S"
exit
:>sml
cut -f2 -d' ' $1 | tr ' ' '@' |
while readl sm
do grep -Fsq "$sm" sml || echo "$sm" >> sml; done
for sm in $( cat sml )
do
conv -"t@ " sm
prints s6s3s $( grep -cF "$sm" $1 ) '' "$sm"
done
ifdef FUNCTIONS_BISH && return 0
FUNCTIONS_BISH=
set -f
MAILCODEAUTOR=H.Schellong,BadSalzuflen
MAILCODEPROGRAM=Freeware_nur_für_nichtgewerbliche_Verwendung
export MAILCODEAUTOR MAILCODEPROGRAM
WrLog() {
local sz=0000000000 logsz=$SysLogSz log="$3" z
ifset log || log=$Fadmlog logsz=$AdmLogSz
[ logsz -le 0 ] && return 0
[ logsz -lt 300 ] && logsz=300
Lock loglock
>> $log
echo "User=$REMOTE_USER: %c"
extern date -u +'%A, %e.%b.%Y %X'
echo "$1%n$2%n"
><
< $log
fstat -svh sz 0
let "sz<=logsz" && { ><; Lock loglock del; return 0; }
seek $((sz-logsz)) 0
while readl z && ifset z; do done
catv +0,,0 =0,,3: 3<> $log
><
Lock loglock del
return 0
}
PutErrHtm() {
WrLog "$1" "VBM ERROR"
[ "$1" != nohdr ] && echo 'Content-type: text/html%n'
[ "$1" == nohdr ] && shift
echo '<html><head><title></title></head><body bgcolor="#ff0000">'
echo '<font color="#ffff00"><br><br><br><br><h1 align="CENTER">'
print -r "VBM ERROR: $1"
echo '</h1></font><br><br><center><form><b>
<input class="butt" type="button" value="Back" onClick="window.back();">
</b></form></center></body></html>'
exit 0
return 0
}
Lock() {
local n=0000 lockf=../tmp/$1
[ "$2" == del ] && { [ -e $lockf ] && remove $lockf; return 0; }
while [ -e $lockf ]
do
sleep -m 25
let "++n>=100" && { remove $lockf; WrLog "Lock wait time" "$lockf removed!"; }
done
: > $lockf
return 0
}
CheckIP() {
[ $# -ne 1 -a $# -ne 4 ] && return 1
[ $# -eq 1 ] && {
local ip="$1" n
expr "$ip" :: "^$REip%$" || return 1
conv -'t. ' ip
for n in $ip
do let "n>255" && return 1; done
return 0
}
local n
expr "$1.$2.$3.$4" :: "^$REip%$" || return 1
for n in $1 $2 $3 $4
do let "n>255" && return 1; done
return 0
}
CkTelnu() {
expr "$1" :: '[^0-9WPT,]' && return 1
expr "$1" :: '[0-9]'
return
}
GetIval() {
[ -d "$3" -a -s "$3/i" -a -n ""$1 ] || return
local v:.200
v="$(-grep -m "^$2 " $3/i)" || return
expr "$v" :$1 "^$2 "'%(.*%)$' || return
return 0
}
FormConv() {
local h=0000 z=00
conv -'t+ ' $1
while expr "${{1}" :h '%%%([a-fA-F0-9]%{2%}%)'
do
base -16 h +b z
expr "${{1}" :$1 '%%'$h += "$z"
done
return 0
}
GetIds() {
local id=000 flg=000 g=g a=a o=o p=p f=f c=c t=t i=i s=s
< $Finfobase
while read - id - - flg - - && [ -n "$g$a$o$p$f$c$t$i$s" ]
do
case "$flg" in
g) Gid=$id g= ;;
a) Aid=$id a= ;;
o) Oid=$id o= ;;
p) Pid=$id p= ;;
f) Fid=$id f= ;;
c) Cid=$id c= ;;
t) Tid=$id t= ;;
i) Iid=$id i= ;;
s) Sid=$id s= ;;
esac
done
><
return 0
}
Uvars() {
[ -s uvars.bish ] || return
local nam=$1 o=0000 n=0000 nl:10.1 ibuf
Lock lockuv
catv 1000,0 =ibuf: < uvars.bish
local buf:.250 obuf
while let "o+=n"; conv "-o${o}O$nl" ibuf
do
let "n=$.-o+1"
catv $o,$n,ibuf =buf:
expr "$buf" :: "^$nam=" || { catv buf =:,,obuf:; continue; }
catv nam "/='" $nam "/'%n" =:,,obuf:
done
catv obuf > uvars.bish
Lock lockuv del
return 0
}
ANAM='id dd typ bytelen darst nbit bitpos
dflt1 min1 max1
parbn flags einheit name Tinfo Tgrp Tsgrp Tbit Text text
'
F=cfgbase.txt
RA='^[1-9][0-9]*$'
an=0000000
n=n
[ $# -lt 3 ] && { echo "file[.=$F] RA argnum [args]"; exit 0; }
F_="$1"
RA="$2"
an="$3"
ifset F_ RA an || exit 0
shift 3
args="$*"
[ "$F_" != . ] && F="$F_"
tty=tty
[ ! -t 0 -o "$F" == - ] && tty=
base=00 base=
[ "$F" == cfgbase.txt -o "$F" == mesbase.txt ] && base=1
Print() {
ifset tty && <$F
cat | {
while read a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 %
a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 %
a21 a22 a23 a24 a25
do
ifset base || [ "$a1" == '#@BASE' ] && base=2
ifset base && [ "$a1" == '$' ] && break
a=a$an
ifset base && expr "$a1" :: '^@[^:]' || continue
expr "${{a}}" :: "$RA" || continue
expr "${{a}}" :: '[^0-9]' && n=
for aa in $an $args
do
catv /%t a$aa
done
echo
done
}
ifset tty && ><
return 0
}
Print
:
Host1='ftp.freebsd.org'
Host2='ftp.de.freebsd.org'
Host3='ftp-archive.freebsd.org'
Host="$Host1"
Path1='/pub/FreeBSD/ports/amd64/packages-9.2-release/All'
Path2='/pub/FreeBSD/ports/i386/packages-stable/All'
Path3='/pub/FreeBSD-Archive/old-releases/amd64/7.1-RELEASE/packages/All'
Path="$Path1"
vdp=y
set Pkg:.50
Pkg=''
[ $# -eq 1 ] && Pkg="$1"
MkFtpInp() {
local pkg:.50 tbz:.50 d:.30
echo open "$Host"
echo user anonymous pass 'schellong@t-online.de'
echo binary
echo cd "$Path"
pkg_info -r "$1" | {
while read d pkg
do
[ "$d" == "Dependency:" ] || continue
tbz="$pkg.tbz"
[ -d "/var/db/pkg/$pkg" -a "$vdp" = y ] && {
print -u2 "Vorhanden: /var/db/pkg/$pkg"; continue
}
[ -s "$tbz" ] && { print -u2 "Vorhanden: $tbz"; continue; }
echo get "$tbz"
done
}
echo quit
return 0
}
Get() {
MkFtpInp "$1" | ftp -nv
return 0
}
while echo "%n$Host1%n$Host2%n$Host3%n$Path1%n$Path2%n$Path3%n
%tHost : H $Host
%tPath : P $Path
%tpackage : p $Pkg
%t/var/db/pkg [$vdp]: y|n
%tGet : G
%tBeenden : E
%t : _%b%c"
do
read cmd rest
case "$cmd" in
H) Host="$rest";;
P) Path="$rest";;
p) [ -s $rest ] || continue
Pkg=$rest;;
y|n) vdp=$cmd;;
G) Get "$Pkg";;
E) break;;
*) echo %a%c; continue;;
esac
done
exit 0
RE='icnt%.cgi?0%.%(%d%d%)%.'
Icnt() {
for F in $(find . -follow -type f -name '*.htm' -print)
do
[ -s "$F" ] || continue
grep -qm "$RE" "$F" || continue
Z=$(grep -m "$RE" "$F")
expr "$Z" :N "$RE" || continue
echo $N $F
done
}
Icnt | sortl -f1n
GetMax() {
local max=000000000000000 v=000000000000
maxn=$1
while shift; expr "$1" :v '%([0-9]%{1,}%)'
do
let "v>max" && max=$v
done
$maxn=$max
return 0
}
AddP() {
local n=00 v=000000000000000 gn=$1 max=$2
shift 2
for v in $*
do
expr "$v" :v '%([0-9]%{1,}%)'
let "++n"; let "P$n+=(gn*v*1000)/max"
done
return 0
}
Prnt() {
[ "$1" == 0 ] && return
local n=00
GetMax Max $P1 $P2 $P3 $P4 $P5 $P6
for n to 6 repeat
do
let "P$n=(P$n*100)/Max"
done
prints ss6s6s6s6s6s6 "$1: " $P1 $P2 $P3 $P4 $P5 $P6
return 0
}
Ifs0="$IFS"
Ifs=",
"
gb0=0
P1=00000
for 8 txt gew bs1 bs2 bs3 bs4 bs5 bs6 in $( IFS="$Ifs" cat $1 ) $( IFS="$Ifs0" )
do
expr "$gew" :gb '^%([a-z]%)' || exit 1
expr "$gew" :gn '^.%([0-9]%{1,}%)' || exit 1
cmpv gb gb0 || { Prnt $gb0; gb0=$gb P1=00000 P2=00000 P3=00000 P4=00000 P5=00000 P6=00000; }
GetMax Max $bs1 $bs2 $bs3 $bs4 $bs5 $bs6
AddP $gn $Max $bs1 $bs2 $bs3 $bs4 $bs5 $bs6
done
Prnt $gb0
> tgif.gif
catv /GIF89a%120%0%18%0%%$((16#80))%0%0 =1
catv /%0%0%0%255%255%255 =1
catv /%%$((16#21))%%$((16#fe)) =1
catv /%19CGI@HelmutSchellong%0 =1
: > gdat
for n from 0 to 9 repeat
do
catv /%%$((16#2c))%%$((n*12+0))%0%0%0%12%0%18%0%0 =1
3< $n.gif
catv 48,1,3 | base -b +10 | catv =s:
let "s+=3"
catv 47,$s,3 =1
catv /"d1218_$n=%"" >> gdat
catv 47,$s,3 | base -b +16 >> gdat
echo '"' >> gdat
><
done
catv '/;' =1
><
[ $# -lt 1 ] && exit
file=$1
: > ho
a=0
catv 5000,,0 < $file | base -b +16 |
while readl zeile
do
for 2 val val2 in $zeile
do
prints s5s4s3 $a: $val $val2 >> ho
let ++a
done
done
set -f
set +S
[ $# -lt 1 ] && { echo "h2t.bish [-4] datei"; exit; }
Subs='< < > > & & " " @
¦ | § Paragraph ­ . · .
ä ä ö ö ü ü ß ß
Ä Ä Ö Ö Ü Ü'
if [ "$1" == -4 ]
then
shift
Subs='< < > > & & " " @
¦ | § ^U ­ ú · ù
ä ~D ö ~T ü ~A ß á
Ä ~N Ö ~Y Ü ~Z'
fi
[ $# -lt 1 -o ! -s "$1" ] && { echo "h2t.bish [-4] datei"; exit; }
catv /%j =zv:
< "$1"
while readl zeile
do
while expr "$zeile" :zeile '<[Bb][Rr]>%(.%)' "$zv%1"
do :; done
expr "$zeile" :zeile '<[^>]%{1,%}>' + ''
for 2 alt neu in $Subs
do
conv -t"@ " neu
expr "$zeile" :zeile "$alt" += "$neu"
done
catv zeile /%j
done
><
m() {
[ $1 -eq 1 ] && { echo $2 $3; return; }
local nm1
let "nm1=$1-1"
m $nm1 $2 $4 $3
m 1 $2 $3 $4
m $nm1 $4 $3 $2
}
local f=$1 t=$2 n=$3
if [ $# -eq 3 ] &&
[ n -ge 1 -a f -le 3 -a f -ge 1 -a t -le 3 -a t -ge 1 -a f -ne t ]
then
m $n $f $t $((6-f-t))
else
echo Usage: /bin/sh hanoi.sh from to num
fi
set -f
set +S
[ `ver n` -lt 305 ] && { echo "Shell-Version < 305!"; exit 0; }
[ `ver w` == full -o -t 0 -a -t 1 -a -t 2 ] || exit 0
Script="$0"
expr "$Script" :Script '^%.[/\]' ''
if [ `ver s` == unix ]
then
expr "$Script" :: '^[^/]' && Script="`-pwd`/$Script"
else
expr "$Script" :: '^\.' && pwd | catv 0,2,0 Script =Script:
expr "$Script" :: '^.:\.' || Script="`-pwd`\$Script"
conv -t/\F\ Script
fi
echo "Script ist: '$Script'"
echo Inhalts-Test...
[ ! -s "$Script" -o ! -w "$Script" %
-o ! -r "$Script" -o -x "$Script" ] && {
echo "Ungültige Script-Datei: '$Script'"; exit 1; }
inp=`grep -c '^#@F ......' "$Script"`
let "inp!=551" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
inp=`grep -c '^#@G [a-zA-Z0-9,äöüß]%{20%}$' "$Script"`
let "inp!=100" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
inp=`grep -c '^#@g [-0-9]%{10%}$' "$Script"`
let "inp!=1" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
RGB=000000
GWpos=0000000000
Gpos=0000000000
Dpos=0000000000
Pos=0000000000
NDsel="$(prints sf010-)"
Dsel="$(prints s150-)"
Gsel="$(prints s20-)"
Hex=$(prints sf070-)
CN="$(prints s210-)"
zeile="$(prints s300-)"
Such="$(prints s250-)"
Fsel="$(prints s150-)"
Zeile="$(prints s1250-)"
< $Script
while seek + 0 GWpos; readl Zeile
do expr "$Zeile" :: '^#@g ' && break; done
catv $((GWpos+=4)),10,0 =Gsel:
echo GruppenGWposition=$GWpos
echo Inhalts-Test G...
inp=000
seek $GWpos 0
while readl Zeile
do expr "$Zeile" :: '^#@G ' && { let ++inp; continue; }
let inp && break
done
seek + 0 Dpos
><
let "inp!=100" && { echo "$inp:Script-Inhalt ungültig!"; exit 1; }
< $Script
seek $GWpos 0
while seek + 0 Gpos; readl Zeile
do expr "$Zeile" :: '^#@G ' && break; done
echo Gruppenposition=$Gpos
seek $Dpos 0
while seek + 0 Dpos; readl Zeile
do expr "$Zeile" :: '^#@D[0-9] ' && break; done
><
echo Dateienposition=$Dpos
let "!GWpos||!Gpos||!Dpos||GWpos>=Gpos||GWpos>=Dpos||Gpos>=Dpos" &&
{ echo "pos:Script-Inhalt ungültig!"; exit 1; }
Fmain() {
inp=$1
shift
case "$inp" in
NDGsel)
local g=00
NDsel=" 0"
expr "$Gsel" :: '[0-9]' || return
< $Script
seek $Dpos 0
while readl Zeile
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 3,1,Zeile =g:
expr "$Gsel" :: $g || continue
let ++NDsel
done
><
NDsel="$( prints s5- $NDsel )"
return 0
;;
Gw)
local g=00
Gsel=----------
for g from 0 by 1 to 9 repeat
do
expr "-$1" :: "$g" || continue
catv g =$g,1,Gsel
done
catv Gsel =$GWpos,10,0 <> $Script
return 0
;;
Gcopyg)
local g="$1" n=00
ifset g || return
expr "$g" :: '[^0-9]' && return
let "g>9" && return
< $Script
for n from 0 by 1 to 9 repeat
do
catv $((Gpos+g*260+n*26+4)),20,0 =$((n*20)),,CN
done
><
conv -t", " CN
return 0
;;
GcopyG)
local grp="$1" g=00 n=00
ifset grp || return
expr "$grp" :: '[^0-9]' && return
conv -t" ," CN
<> $Script
for g from 0 by 1 to 9 repeat
do
expr "$grp" :: $g || continue
for n from 0 by 1 to 9 repeat
do
catv $((n*20)),20,CN =$((Gpos+g*260+n*26+4)),,0
done
done
><
conv -t", " CN
return 0
;;
DCheck)
local n=000 pos
list -fR | {
seek + 0 pos
3< $Script
seek $Dpos 3
while readl -u3 Zeile
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 5,,Zeile =Zeile:
ifset Zeile || continue
seek $pos 0
grep -qFx -e "$Zeile" && continue
let ++n
print -r " $Zeile"
done
><
}
let n || return 0
echo "Es wurden $n Dateinamen gefunden, die im aktuellen"
echo "Verzeichnis nicht existieren."
echo "Dateieinträge entfernen? [J]: %c"
read inp
[ "$inp" != J ] && return 0
catv $Dpos,,0 < $Script | {
fstat +s $Dpos $Script
>> $Script
while readl Zeile Such
do
expr "$Zeile" :: '^#@D[0-9] ' || continue
catv 5,,Zeile =Zeile:
ifset Zeile || continue
list -fR | grep -qFx -e "$Zeile" || continue
catv Such /%n
done
><
}
return 0
;;
SetD)
local tmp=$1 von=____ bis=____ n=0000 g=00 grp
shift
while let $#
do
grp="$1"
expr "$grp" :: '[0-9]=[-0-9]' || continue
conv -t"= " grp
for 2 bis grp in $grp ; do :; done
expr "$grp" :: '[^-0-9]' && continue
expr "$grp" :: '-' && grp=-
conv -t"- " bis
for 2 von bis in $bis ; do :; done
ifset bis || bis=$von
expr "$von$bis" :: '[^0-9]' && continue
let "!von||!bis||von>bis" && continue
4< $tmp
catv $Dpos,,0 < $Script | {
fstat +s $Dpos $Script
seek + 0 Pos
while readl Such
do
expr "$Such" :: '^#@D[0-9] ' || continue
catv 3,1,Such =g:
catv 5,,Such =Such:
seek 0 4; n=0
while readl -u4 zeile
do
let "++n<von||n>bis" && continue
cmpv Such zeile && continue 2
done
catv "/#@D$g " Such /%n >> $Script
done
seek 0 4; n=0
while [ $grp != - ] && readl -u4 zeile
do
let "++n<von||n>bis" && continue
for g from 0 by 1 to 9 repeat
do
expr "$grp" :: "$g" || continue
catv "/#@D$g " zeile /%n >> $Script
done
done
}
><
shift
done
return 0
;;
GetGrp)
local grp=---------- g=0
< $Script
seek $Dpos 0
while readl zeile
do
expr "$zeile" :: '^#@D[0-9] ' || continue
catv 3,1,zeile =g:
catv 5,,zeile =zeile:
cmpv $1 zeile && catv g =$g,1,grp
done
><
$2=$grp
return 0
;;
Dateien)
local n=000 tmp
mktemp tmp
> $tmp
list -fR |
while readl Zeile Such
do
conv -L Such
expr "$Such" :: '.html%{0,1%}$' &&
catv Zeile /%n
done
><
3<&0
while :
do
n=0
< $tmp
while readl Zeile
do
let ++n
Fmain GetGrp Zeile inp
prints ss4s " $inp " $n ":$Zeile"
let "n%20==0" && {
echo "Auswahl:a[-b]=0123456789- ..."
echo "Weiter:<Enter> %c"
read -u3 inp
ifset inp && Fmain SetD $tmp $inp
}
done
><
echo "Auswahl:a[-b]=0123456789- ..."
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
ifset inp || continue
[ "$inp" == e ] && break
Fmain SetD $tmp $inp
done
><
remove $tmp
return 0
;;
ShowF)
local nf=-001 rgb=000000000000 nl=-001 sel nam
inp=""
3<&0
grep '^#@[Ff] ' $Script | Fconv | {
seek + 0 Pos
while :
do
nf=-1 nl=-1
seek $Pos 0
while read nam rgb
do
let ++nf
Zeile="$nam"; conv -U Zeile
ifset inp && [[ "$Zeile" != "$inp" ]] && continue
let ++nl
prints s5s-20s4s4s4 $nf: $nam $rgb
let "nl>0&&nl%20==0" && {
echo "Start:s Beenden:e Farbwahl:123 [456]..."
echo "Farbname:[*]xyz[*] Weiter:<Enter> %c"
read -u3 inp
conv -t"$(echo %t%c) " inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && { inp=; continue 2; }
expr "$inp" :: '[^ 0-9]' ||
expr "$inp" :: '[0-9]' && sel="$sel$inp " inp=
ifset inp && { conv -U inp; continue 2; }
}
done
echo "Start:<Enter> Beenden:e Farbwahl:123 [456]..."
echo "Farbname:[*]xyz[*] (EOF) %c"
read -u3 inp
conv -t"$(echo %t%c) " inp
[ "$inp" == e ] && break
conv -U inp
ifset inp || continue
expr "$inp" :: '[^ 0-9]' ||
expr "$inp" :: '[0-9]' && sel="$sel$inp " inp=
done
}
><
ifset sel || return 0
echo Farbnamen-Selektion...
nf=-1
grep '^#@[Ff] ' $Script | Fconv | {
while read nam rgb
do
let ++nf
expr " $sel " :: " $nf " && Fsel="$Fsel$nf:$nam "
done
}
return 0
;;
SetRGB)
local r=$1 g=$2 b=$3
r=$((16#, r&255)) g=$((16#, g&255)) b=$((16#, b&255))
let "${#r}==1" && r="0$r"
let "${#g}==1" && g="0$g"
let "${#b}==1" && b="0$b"
RGB="$r$g$b"
conv -u RGB
return 0
;;
GetFnam)
local nu=-001 rgb=000000000000 f="$1" nam
conv -Ud, f
while read nam rgb
do
let ++nu
expr "$1" :: '^[0-9]%{1,3%}$' && {
let "$1!=nu" && continue
Fmain SetRGB $rgb; echo $nam; return 0
}
inp=$nam; conv -U inp
[[ $inp != "$f" ]] && continue
Fmain SetRGB $rgb; echo $nam; return 0
done
return 1
;;
Help)
local n=00000 j=/%j
3<&0
while :
do
echo ; prints sf-72
n=0 j=/%j
grep '^#@H ' $Script |
while readl Zeile
do
catv /%t 4,,Zeile $j
let "++n==20" &&
echo "Start:s Beenden:e Weiter:<Enter> %c"
let "n>=20" && { j=
read -u3 inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && continue 2
}
done
prints sf-72
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
[ "$inp" == e ] && break
done
><
return 0
;;
*) print -u2 "!!! $inp $* ???" ;;
esac
return
}
Fconv() {
local l=0000 o=0000 n=-00001
while readl Zeile
do
print -nu2 "%t$((++n)) %r"
expr "$Zeile" :: '^#@f' && { catv 4,,Zeile /%n; continue; }
let "l=${#Zeile}, l<6||l&1" && {
print -u2 "l=$l:falscher Wert!"; exit 1; }
catv 4,,Zeile =Zeile:
l=${#Zeile}
while (( l>=16 ))
do
catv 0,2,Zeile /" " 2,2,Zeile /" " %
4,2,Zeile /" " 6,2,Zeile /" " %
8,2,Zeile /" " 10,2,Zeile /" " %
12,2,Zeile /" " 14,2,Zeile | base -31 +b
catv 16,,Zeile =Zeile:
(( l-=16 ))
done
while (( l>=8 ))
do
catv 0,2,Zeile /" " 2,2,Zeile /" " %
4,2,Zeile /" " 6,2,Zeile | base -31 +b
catv 8,,Zeile =Zeile:
(( l-=8 ))
done
(( o=-2, l+=2 ))
while (( o+=2, l-=2, l>0 ))
do
catv $o,2,Zeile | base -31 +b
done
catv /%n
done
print -u2
return 0
}
SetNH() {
local r=0
[ "$1" == '#@W' ] && { r=000; shift; }
let "$#&1" && { echo Ungerade ArgAnzahl; return 1; }
let "$#<2" && return 1
local n=$1 f="$(prints s20-)" pos=0000000000 fnam
echo "... %c"
grep '^#@[Ff] ' $Script | Fconv | {
seek + 0 pos
while let "$#>=2"
do
n=$1 f="$(prints s20-)"
fnam=$( Fmain GetFnam "$2" )
ifset fnam || { r=1; break; }
echo "+$RGB%c"
[ $r != 000 ] && catv fnam =f
[ $r != 000 ] && catv f =$((20*[n-1])),20,CN
catv RGB =$((6*[n-1])),6,Hex
shift 2
seek $pos 0
done
}
echo
return $r
}
Write() {
expr "$Gsel" :: '[0-9]' || return
let $NDsel || return
local g=00 n=0000 nn=0000
mktemp zeile
for g from 0 by 1 to 9 repeat
do
expr "$Gsel" :: $g || continue
echo Gruppe $g...
> $zeile
< $Script
seek $Dpos 0 ; n=0
while readl Zeile
do
expr "$Zeile" :: "^#@D$g " || continue
catv 5,,Zeile /%n ; let ++n ++nn
done
><<
let n || continue
echo $n Dateien
echo Farbgruppe setzen...
SetNH '#@W' $(
for n from 0 by 1 to 9 repeat
do
catv /"$((n+1)) " $((Gpos+g*260+n*26+4)),20,0 %
/%n < $Script
done
) || { print -u2 "Write: SetNH()==FALSE"; continue; }
echo G=$g: HTML schreiben...
WriteC $*
done
remove $zeile
let nn && read "-?<Enter> "
return 0
}
WriteC() {
[ $# -gt 0 ] || return
local bgc='BGCOLOR' body='BODY'
local s="$bgc" rgb=000000 hex
Such=""
while [ $# -gt 0 ]
do
let "hex=6*($1-1)"
catv $hex,6,Hex =hex:
case $1 in
1) Such="$Such BODY BGCOLOR $hex" ;;
2) Such="$Such TABLE BGCOLOR $hex" ;;
3) Such="$Such TR BGCOLOR $hex" ;;
4) Such="$Such TD BGCOLOR $hex" ;;
5) Such="$Such TH BGCOLOR $hex" ;;
6) Such="$Such BODY [^A-Za-z]LINK $hex" ;;
7) Such="$Such BODY VLINK $hex" ;;
8) Such="$Such BODY ALINK $hex" ;;
9) Such="$Such BODY TEXT $hex" ;;
10) Such="$Such FONT COLOR $hex" ;;
esac
shift
done
unset hex body
local wrn=00 datei
< $zeile
while readl datei
do
[ -s "$datei" ] || continue
print -rn "$datei" ...; inp=0
0<> "$datei"
while seek + 0 Pos; readl Zeile
do
let "${#Zeile}<19" && continue
wrn=0
for 3 s bgc rgb in $Such
do
[ $rgb == 010101 ] && continue
expr "$Zeile" =:Zeile %
"%(<${s}[ %t][^>]*${bgc}[ %t]*=[ %t]*%"#%)......%"" %
"%1$rgb%"" || continue
let "wrn|=512, ++inp"
done
let wrn && catv Zeile =$Pos,,0.
done
><
echo " $inp Schreibvorgänge"
done
><
return 0
}
echo Standardfarben setzen...
Fmain Gcopyg 1
echo Dateienabgleich...
Fmain DCheck
Fsel=" " NDsel=" 0"
echo
prints s:f-50 " bish-Script 'HTML-Farben' "
prints s:f-50 " Copyright (c) Helmut Schellong "
echo
read "-?<Enter> "
while Fmain NDGsel ; echo "%r
Farbnamen-Notizen : %"$Fsel%"%r
Farbenliste/Notizen : f [-]%r
Dateienauswahl $NDsel : d%r
Gruppenauswahl $Gsel : gw [0123456789]%r
Gruppen-Farbensatz kopieren < | > : g n | G n...%r
Farbziel auf Farbe setzen : {1-10}={fnam|fnum} [n=f]...%r
DokumentBG $(catv 0,20,CN) 1%r
TabellenBG $(catv 20,20,CN) 2%r
TabRowBG $(catv 40,20,CN) 3%r
TabColBG $(catv 60,20,CN) 4%r
TabHColBG $(catv 80,20,CN) 5%r
Link $(catv 100,20,CN) 6%r
BesuLink $(catv 120,20,CN) 7%r
AktiLink $(catv 140,20,CN) 8%r
Textfarbe $(catv 160,20,CN) 9%r
Fontfarbe $(catv 180,20,CN) 10%r
Link-/Text-/Font-Farben schreiben : L|T|F%r
Alle Farbziele schreiben : S%r
Hilfe : h%r
Beenden : E%r
%r
: %c"
do
read inp rest
case "$inp" in
d) Fmain Dateien ;;
f) ifset rest && [ "$rest" == - ] && Fsel=" "
ifset rest || Fmain ShowF ;;
gw) Fmain Gw "$rest" ;;
[Gg]) Fmain Gcopy$inp "$rest" ;;
[1-9]=?*|10=?*) conv -t"= " inp rest; SetNH $inp $rest ;;
L) Write 6 7 8 ;;
T) Write 9 ;;
F) Write 10 ;;
S) Write 1 2 3 4 5 6 7 8 9 10 ;;
h) Fmain Help ;;
E) break ;;
*) echo %a%c; continue ;;
esac
done
exit 0
Dateiliste "#@D ..." am Ende.
set -f
DOS='' MT=tr
[ `ver s` == dos ] && DOS=dos
idtosys() {
local sys
case "$1" in
0) sys="--" ;;
1) sys="FAT12" ;;
2|3|ff) sys="XENIX '$1'" ;;
4) sys="FAT16" ;;
5) sys="DOS Extended" ;;
6) sys="FAT16B" ;;
7) sys="NTFS/HPFS" ;;
8|9) sys="AIX '$1'" ;;
a|fe) sys="IBM '$1'" ;;
b) sys="FAT32" ;;
c) sys="FAT32X (LBA)" ;;
e) sys="FAT16X (VFAT) LBA" ;;
f) sys="FAT16X (VFAT) LBA, Sekundär" ;;
11) sys="Hidden FAT12" ;;
12) sys="Compaq Diagnose" ;;
14) sys="Hidden FAT16" ;;
16) sys="Hidden FAT16B" ;;
17) sys="Hidden NTFS/HPFS" ;;
1b) sys="Hidden FAT32" ;;
1c) sys="Hidden FAT32X (LBA)" ;;
1e) sys="Hidden FAT16X (LBA)" ;;
3c) sys="Partition Magic" ;;
50|51|53|54) sys="Ontrack '$1'" ;;
55) sys="EZ-Drive" ;;
63) sys="UNIX" ;;
64|65|66) sys="Netware '$1'" ;;
82|83|85) sys="Linux '$1'" ;;
86|87) sys="NTFS (HPFS) '$1'" ;;
a5|b7|b8|a6|a9) sys="BSD '$1'" ;;
c0|c1|c4|c5|c6|cb|cc|ce) sys="DRDOS '$1'" ;;
e2) sys="DOS (rdonly) (by xfdisk)" ;;
eb) sys="BeOS BFS (BSF1)" ;;
23) sys="Reserviert '$1'" ;;
*) sys="Unbekannt '$1'" ;;
esac
echo "$sys%c"
return 0
}
convert() {
local fd=$1 id=_____________________ typ=__ len=___
shift
for 3 id typ len in $*
do
echo $id
[[ $typ == "[bwl]" ]] && {
catv $len,$fd | base -$typ +10; continue; }
[ $typ == n ] && {
catv $len,$fd | tr '[\6-\31] ' '[\254*26]\250'
echo; continue; }
[ $typ == s ] && {
catv $len,$fd | tr '[\0-\31] ' '[\254*32]\250'
echo; continue; }
[ $typ == - ] && seek +$len $fd
done
return 0
}
partbl() {
local nam=________ pn=00 v0=00000
local fnam=___________________________ v=00000000000
dd if=$1 of=d${2}s0.dat bs=1b count=1 || return
3< d${2}s0.dat
seek 446 3
to 4 repeat
do
let ++pn
for 2 nam v in `convert 3 bi b 1 sh b 1 ss b 1 sc b 1 %
si b 1 eh b 1 es b 1 ec b 1 S l 4 nS l 4`
do
case "$nam" in
bi) fnam="Aktiv/Passiv" ;;
sh) fnam="Start-Kopf" ;;
ss) ((v0=[v&~63]<<2, v&=63)) ; fnam="Start-SpurSektor" ;;
sc) ((v|=v0)) ; fnam="Start-Zylinder" ;;
si) fnam="System" ;;
eh) fnam="Ende-Kopf" ;;
es) ((v0=[v&~63]<<2, v&=63)) ; fnam="Ende-SpurSektor" ;;
ec) ((v|=v0)) ; fnam="Ende-Zylinder" ;;
S) fnam="Start-PlattenSektor" ;;
nS) fnam="Sektoren-Anzahl" ;;
*) continue ;;
esac
prints sss2s12s "d$2 " "p$pn " $nam $v " $fnam" %
>> partbl.txt
done
done
v=`catv 2,3 | base -w +16`
fnam="Magic-Nummer"
prints sss2s8sf04s "d$2 " "- " mc "" $v " $fnam" >> partbl.txt
><
return 0
}
showfdisk() {
local d=__ p=__ id=__ si=0000 v0=00000000000 v
prints ss "Platte Part. Aktiv Start[$MT] Ende[$MT] Größe[$MT]" %
" System-Identifikation"
< partbl.txt
while read d p id v -
do
case $id in
bi) catv 1,1,d =d: ; catv 1,1,p =p:
PR="$d $p"
let v && PR="$PR *"
let v || PR="$PR -" ;;
si) si=$((16#, v)) ;;
S) [ $MT == MB ] && PR="$PR $((v/[1024*2]))"; v0=$v
[ $MT == tr ] && PR="$PR $((v/63))"; v0=$v ;;
nS) [ $MT == MB ] &&
PR="$PR $(([v0+v-1]/[1024*2])) $((v/[1024*2]))"
[ $MT == tr ] &&
PR="$PR $(([v0+v-1]/63)) $((v/63))"
prints s3s6s7s11s10s11s $PR " $( idtosys $si )" ;;
esac
done
><
return 0
}
PR=________________________
local d=-1
: > partbl.txt
while let "++d<4"
do
ifset DOS || partbl /dev/ad${d} $d
ifset DOS && partbl hd${d}:c1023h16s63 $d
done
echo %n%n%n%n%n%n%n%n%n
showfdisk
##pragma pack(1)
#struct part {uchar bootid; //0x00;0x80;0x81,...
# uchar beghead, begsect, begcyl;
# uchar systid;
# uchar endhead, endsect, endcyl;
# ulong relsect, numsect;
# // begcyl |=(begsect&~63)<<2; begsect&=63;
# // endcyl |= ...
#};
#struct FAT {uchar jmp[3], oem[8];
# // eb+oo+nop
# ushort bps;
# uchar spcl;
# ushort res_boot_s;
# uchar nfat;
# ushort nroot, small_nsect;
# uchar media_id;
# ushort spfat, spt, heads;
# ulong hidds, big_nsect;
# // hidds: bei bootbaren dessen platten-offset
# uchar phys_drive_id; // 36
# uchar reserv;
# uchar dos4;
# ushort media_no[2];
# uchar label[11], fatstr[8];
# /* 62 bootcode (jmp+z.B.60==62)
# 412 ERRstring\0
# 486 IO SYS
# 497 MSDOS SYS
# 508 00 00 55 aa
# 512 */
#};
#struct FAT32{uchar jmp[3], oem[8];
# // eb+oo+nop
# ushort bps;
# uchar spcl;
# ushort res_boot_s;
# uchar nfat;
# ushort nroot, small_n_sect;
# uchar media_id;
# ushort spfat, spt, heads;
# ulong hidds, big_nsect;
# // hidds: bei bootbaren dessen platten-offset
# ulong big_fat_s; //36
# ushort ext_flgs, fs_version;
# ulong root_cluster; //(short+unknown-short?)
# ushort info_s_loc, backup_boot_s_loc;
# uchar fill[12]; // 52
# uchar phys_drive_id; // 64
# uchar reserv;
# uchar dos4;
# ushort media_no[2];
# uchar label[11], fatstr[8];
# /* 90 bootcode
# 412 ERRstring\0 ?
# 486 IO SYS ?
# 497 MSDOS SYS ?
# 508 00 00 55 aa
# 512 */
#struct info_sector {
# ulong signatur;
# ulong free_clusters;
# ulong last_alloc_cluster;
# 484 ulong sign2; Buchst_case gewechselt
# ulong free_clusters;
# ulong last_alloc_cluster;
#};
#};
#struct dosd {uchar name[8], ext[3],
# attr[1], fill[10];
# // xxADVSHR
# ushort time, date,
# // h:5,m:6,s:5; Y:7,M:4,D:5;
# // 0-23,0-59,s*=2; Y+=1980,1-12,1-31;
# clust; //0,1;>=2
# ulong size;
#};
#In FAT:
#0000: Cluster unbenutzt
#fff7: hat bad Sektor, wenn nicht in chain
#fff8-ffff: Ketten-Ende
#
#dos_ext, id=5:
#Weitere Partitionstabellen in der Ext-Partition:
#Hat 1 oder 2 Part.einträge je 16 Byte ab offs=446.
#rest= 00 00 ..
#Ersterer zeigt relativ (!) zu sich auf einen Fs-Bootblock, der keine
#io.sys-Anknüpfung hat und die weiteren Daten enthält.
#Ggf. zweiter (ID=5) zeigt auf weiteren ext-id=5-Block, der ...
#Der Eintrag mit ID=5 nach dem MBR hat als size natürlich
#die Größe der ganzen Ext-Partition mit allen logischen Laufwerken.
#Auf die Fs-Bootblocks kann auch direkt gezeigt werden, von der
#Partitionstabelle nach dem MBR aus.
#
#FAT32:
#Hat mehrere Bootsektoren, Offsets + Anzahl eingetragen.
#Auch Info-Block.
#Stelle Cluster 2 ist für root-Verz. reserviert: 0x{0-f}fffffff
#Datenaddr=0 nach root, nach dem ersten root-Teil.
#
#VFAT, lange Namen:
#'A-Z',[2],[2],[2],[2],[2],0x000f,0x??(prüfbyte),[2],
#[2],[2],[2],[2],[2],0x0000,[2],[2]==0(end-short);
#0x01,[2],[2],...dito
#...
#Normaler 8.3-Eintrag
#0x000f(attr==VSHR) und 0x0000(cluster) immer so.
#0x01,0x02,...erst ab 'B'.
#shorts nach end-short==0 == 0xffff
#'A-Z'-Eintrag ist der Namensrest! - Reihenfolge von hinten!
#6+7==13 short-Zeichen pro 32Byte, einschließlich end-short==0.
#Prüfbyte abgeleitet von 8.3-Name.
#
#Masterboot 0-375=376
#Nach mbr (16 Byte):
#70H(1)
#19650(2)n_cyl
#16(1)n_heads
#0(2)wr_reduce_cyl
#65535(2)precomp_cyl
#0(1)ecc
#8(2)controller
#0(2)
#19649(2)land
#63(1)sectors
#offs 440:
#52,75,30,a7
### hpm.bish #############################################
#!/u/bin/bish
set -f
set +S
[ `ver n` -lt 305 ] && { echo "Shell-Version < 305!"; exit 0; }
Script="$0"
echo "Script: '$Script'"
[ -w "$Script" ] || {
print -u2 "Script hat Schreibschutz: '$Script'"; exit 1; }
Tz=000000
Onl=$Tz
local Fpos=000000000000
Fsel=$Fpos
Hsel=$Fpos
Rtotal=$Fpos
Ltotal=$Fpos
Rfiles=$Fpos
Lfiles=$Fpos
UpSz=$Fpos UpN=$Fpos AddSz=$Fpos
DwnSz=$Fpos DwnN=$Fpos SubSz=$Fpos
inp="$( prints s260-)"
FtpCmd="$( prints s150-)"
Host="$( prints s150-)"
File="$( prints s260-)"
Dir="$( prints s260-)"
Zeile="$( prints s300-)"
Rtotal=- Rfiles=- Ltotal=- Lfiles=-
Fsel=0
UpSz=0 UpN=0 AddSz=0
DwnSz=0 DwnN=0 SubSz=0
echo Prüfung Script-Inhalt...
< $Script
inp=0
while seek + 0 Fpos; readl Zeile
do expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && inp=1 && break; done
><
echo "Konfigurations-Position=$Fpos"
let inp==0 && {
print -u2 "Schreibe
echo "%n%n%
#@ftp 1%
#@ftp0 ftp home-up.t-online.de%
#@ftp1 ftp -n < {}%
#@ftp2 ftp -n -s:{}%
#@ftp3 /usr/bin/ftp -nvd < {}%
#@cmd0 %
#@cmd1 /bin/sh /etc/mstppp start%
#@cmd2 /bin/sh /etc/mstppp stop%
#@cmd9 bish /u/sh/bish/hpsums.bish >/dev/null%
#@edit edit%
#@lign xyz.txt%
#@rign XyZ%
#@rfil -%
#@rtot -%
#@tz -1%
#@ddir %
#@hdir $(-pwd)%n" >> $Script
< $Script
while seek + 0 Fpos; readl Zeile
do expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && break; done
><
echo "Konfigurations-Position=$Fpos"
}
< $Script
seek $Fpos 0
while readl Zeile
do
ifset Zeile || continue
expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && continue
expr "$Zeile" :: '^[ %t]*#' && continue
expr "$Zeile" :: '[^ %t%z]' || continue
><; print -u2 "Script-Inhalt fehlerhaft!: '$Zeile'"; exit 1
done
><
[ `ver w` == full ] && {
trap 'for inp in FtpInp RemFiles LocFiles
do ifset $inp && [ -f "${{inp}" ] &&
remove "${{inp}" && $inp=""
done
' 0 1 2
}
mktemp FtpInp
mktemp RemFiles
mktemp LocFiles
echo "TempFiles: $FtpInp, $RemFiles, $LocFiles"
expr "$FtpInp" :: '[ %t%r%n%z%%]' && {
print -ru2 "Verzeichnisteil wird nicht akzeptiert!: '$FtpInp'"
exit 1
}
Fmain() {
case "$1" in $(shift)
DatTim)
local mon=000 Mon='JanFebMärAprMaiJunJulAugSepOktNovDez' dt
systime -t dt
catv 4,2,dt =mon:
catv 6,2,dt /. $(([mon-1]*3)),3,Mon /. 0,4,dt "/, " %
8,2,dt /: 10,,dt
return 0
;;
Edit)
local edo='+/^#@[a-zA-Z]' edf=$Script ed=/usr/bin/vi
if Fmain Get edit '[^ %t]' File
then catv File /%n | read ed -
else [ `ver s` == unix ] && ed=vi
[ `ver s` != unix ] && ed=edit
fi
whence -pe "$ed" && return 1
expr "$ed" :: 'vim%{0,1%}$' || edo=
[ `ver s` != unix ] && expr "$ed" =:: 'vim$' || edo=
ifset File || File="$ed"
[ "$1" != i ] && {
echo "%n Nur am Dateiende die speziellen Zeilen ändern!%
%r Beschreibungen sind dort vorhanden."
read "-?<Enter> "
}
[ "$1" == i ] && { edo=
edf=hpm_tmpf.inf
[ -f $edf ] || return
}
echo "'$File $edo $edf'..."
eval "$File $edo $edf"
return 0
;;
Online)
[ "$Onl" == j ] && return
read "Onl?Sind Sie Online?[j]: "
[ "$Onl" != j ] && Onl=0 && return 1
return 0
;;
ExecFtp)
expr "$Host" :Host ';' += '%n'
cat $FtpInp | {
4> $FtpInp
print -u4 "open $Host%nbinary"
[ $# -eq 0 ] && catv 0 =4
[ $# -gt 0 ] && print -u4 "$1"
print -u4 "quit"
><
}
expr "$Host" :Host '%%n' + ';'
print -u2 FTP-Übertragung:
print -ru2 "'$FtpCmd'..."
eval "$FtpCmd"
return 0
;;
GetFtpCmd)
local fsel=$Fsel
[ $# -gt 0 ] && fsel="$1"
expr "$fsel" :: '^[0-9]$' || return 1
Fmain Get "ftp$fsel" '[^ %t]' FtpCmd ||
print -u2 "Kein ftp-Kommando #$fsel!" && return 1
expr "$FtpCmd" :FtpCmd '{}' "$FtpInp" ||
print -u2 "Kommandodatei '{}' fehlt!" && return 1
Fsel=$fsel
return 0
;;
GetTz)
Fmain Get tz '[-0-9]' Tz ||
echo "#@tz -1" >> $Script && Tz=-1
tz $Tz
Tz="$(prints s4- $Tz)"
return 0
;;
Get)
local l=${#1} a="$1" b="$2"
$3=''
< $Script
seek $Fpos 0
while readl Zeile
do
expr "$Zeile" :: "^#@$a $b" || continue
catv $((l+3)),,Zeile =$3:
>< ; return 0
done
><
return 1
;;
Set)
local a="$1" f=0
catv $Fpos,,0 < $Script | {
fstat +s $Fpos $Script
while readl Zeile
do
expr "$Zeile" :: "^#@$a " ||
catv Zeile /%j >> $Script && continue
catv "/#@" a ". $2" /%j >> $Script
f=1
done
}
[ $f == 0 ] && catv "/#@" a ". $2" /%j >> $Script
return 0
;;
SetTz)
expr "$1" :: '^-%{0,1%}[0-9]%{1,3%}$' || return
Tz=$1
tz $Tz
Fmain Set tz $Tz
Tz="$(prints s4- $Tz)"
return 0
;;
SetFsel)
local f
expr "$1" :f '^f%([1-9]%)$' || return
grep -q "^#@ftp$f [^ %t]" $Script || return
Fsel=$f
Fmain Set ftp $Fsel
Fmain GetFtpCmd
return 0
;;
SetHsel)
local h
expr "$1" :h '^h%([1-9]%)$' || return
grep -q "^#@host$h [^ %t]" $Script || return
Hsel=$h
Fmain Set host $Hsel
Fmain Get "host$h" '[^ %t]' Host
expr "$Host" :Host ' *;;* *' + ';'
return 0
;;
SetHDir)
[ "${#1}" -gt 0 -a $# -gt 0 ] || return
local verz
fullname -v verz "$1"
[ -d "$verz" ] ||
print -ru2 "Verzeichnis existiert nicht: '$1'" && return
Fmain Set hdir "$verz"
cd "$verz"
LocList
return 0
;;
SetDDir)
[ $# -gt 0 ] || return
inp="$1"
ifset inp && fullname -v inp "$inp"
ifset inp && [ -d "$1" ] || {
print -ru2 "Verzeichnis existiert nicht: '$1'"
while echo "<Enter> oder Neues Download-Verzeichnis: %c"
do
readl inp
ifset inp || return 0
expr "$inp" :: '[ %t]' && echo Zu blank && continue
fullname -v inp "$inp"
[ -d "$inp" ] || mkdirs -v "$inp" || continue
[ -d "$inp" ] || continue
print -r "$inp"
break
done
}
Fmain Set ddir "$inp"
return 0
;;
CkDDir)
Fmain Get ddir '[^ %t]' inp ||
Fmain Perr $1 "Kein Download-Verzeichnis eingetragen." &&
return 1
[ -d "$inp" ] ||
Fmain Perr $1 "Download-Verzeichnis ungültig: '$inp'" &&
return 1
return 0
;;
CkHDir)
Fmain Get hdir '[^ %t]' inp ||
Fmain Perr $1 "Kein Homepage-Verzeichnis eingetragen." &&
return 1
[ -d "$inp" ] ||
Fmain Perr $1 "Homepage-Verzeichnis ungültig: '$inp'" &&
return 1
return 0
;;
Perr)
local s
[ $# -gt 1 ] && s=s && shift
print -ru2 "*** $1 ***"
ifset s && read "-?<Enter> "
return 0
;;
Help)
local n=00000 j=/%j z=...
3<&0
while :
do
echo ; prints sf-79
n=0 j=/%j z=
grep '^#%%H' $Script |
while readl Zeile
do
catv "/ " 4,,Zeile $j
let "++n%20==0" &&
echo "${z}Start:s Beenden:e Weiter:<Enter> %c"
let "n>=20" && { j= z=%n
read -u3 inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && continue 2
}
done
prints sf-79
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
[ "$inp" == e ] && break
done
><
return 0
;;
*) return 1 ;;
esac
return 0
}
RemList() {
local isz=1 size=000000000000 mon=mmm day=ddd yt=00000 jahr
Fmain Online || return
echo Remote Dateienliste...
Rtotal=0 Rfiles=0 Dir=
systime jahr; inp=$jahr; ctime jahr - - - - - $jahr
3> $RemFiles
Fmain ExecFtp 'dir "-lRA ."' |
while readl Zeile
do
expr "$Zeile" :Zeile '%r%{1,%}$' ''
echo %r%c; prints s-78- "$Zeile"
ifset Zeile || isz= || continue
ifset isz || {
expr "$Zeile" :Dir '^%(.%{1,%}%):$' || isz=1 || continue
expr "$Dir" :Dir '^%.%{0,1%}/' ''
catv /"0 0 ?" Dir //%j =3
}
isz=1
expr "$Zeile" :: "^-[-a-zA-Z]%{9%} " || continue
expr "$Zeile" :File '^.%{10%} *[^ ]%{1,%} *%(..*%)$'
expr "$File" :File '^ *[^ ]%{1,%} *[^ ]%{1,%} *%(..*%)$'
expr "$File" :File %
' [a-zA-Z]%{3%} *[0-9]%{1,2%} *[:0-9]%{4,5%} %(..*%)$' %
|| continue
expr "$File" :: '^%.%{1,2%}$' && continue
ifset Dir && File="$Dir/$File"
catv Zeile /%n | read - - - - size mon day yt -
conv -l mon
expr " jan feb mar apr may jun jul aug sep oct nov dec" %
:mon "[ a-z]* $mon" || { echo "Monat: '$mon'?!"; exit 1; }
let "mon/=4"
if expr "$yt" :yt ':' ' '
then inp="$inp@$yt"
ctime yt $((jahr-1)) $mon $day $yt .59
let "inp-yt>182*24*3600" && {
expr "$inp" :yt '@%(..*%)$'
ctime yt $jahr $mon $day $yt .59
}
expr "$inp" :inp '%([0-9]%{1,%}%)'
else ctime yt $yt $mon $day 12 0 .0
fi
let ++Rfiles Rtotal+=size
< $Script
seek $Fpos 0
grep -qFxm "#@rign $File" && { >< ; continue; }
><
catv size /" " yt "/ *" File "/*" /%j =3
done
><
echo
let "Rtotal=(Rtotal+1023)/1024"
Fmain Set rfil $Rfiles
Fmain Set rtot $Rtotal
[ "$1" == + ] && {
echo quote MDTM path ... ; yt=0
< $RemFiles
3> $FtpInp
print -u3 "verbose"
while readl Zeile
do
expr "$Zeile" :File ' %*%([^*][^*]*%)%*' || continue
catv "/quote MDTM " File /%j =3
prints s10- $((++yt)) ; echo "%r%c"
done
><<
echo "%nexec ftp-Client ..." ; yt=0
: > hpm_tmpf.rem
Fmain ExecFtp |
while readl Zeile
do
expr "$Zeile" :File %
'^2[0-9]%{2%}[ %t]%{1,%}%([0-9]%{12%}%)%([0-9]%{2%}%).*$' %
'%1.%2' || continue
ctime $File >> hpm_tmpf.rem
prints s10- $((++yt)) ; echo "%r%c"
done
echo "%nAustausch Sekunden-Zahlen ..." ; yt=0 Dir=0
cat $RemFiles | {
4> $RemFiles
3< hpm_tmpf.rem
while readl Zeile
do
expr "$Zeile" :size ' %([0-9]%{1,10%}%) %*[^*]%{1,%}%*' || {
print -ru4 "$Zeile" ; continue
}
readl -u3 File || break
let "File>=size" && let "Dir+=File-size"
let "File<size" && let "Dir+=size-File"
expr "$Zeile" :Zeile ' [0-9]%{1,10%} ' = " $File "
print -ru4 "$Zeile"
prints s10- $((++yt)) ; echo "%r%c"
done
><<
}
let yt==0 && yt=1
echo "%nMittlere Sekunden-Korrektur pro Datei: $((Dir/yt))"
read "-?<Enter> "
}
cat $RemFiles > hpm_tmpf.rem
return 0
}
LocList() {
echo Lokale Dateienliste...
local size=000000000000 sec=000000000000 ign=00 ic
Ltotal=0 Lfiles=0
[ `ver s` != unix ] && ic=i
3> $LocFiles
list -fR |
while readl File
do
expr "$File" =:: 'bish_tmpf%.[0-9]%{1,3%}$' && continue
expr "$File" =:: 'hpm_tmpf%....$' && continue
fstat -smv size sec "$File"
[ `ver s` != unix ] && conv -t'\/' File
< $Script
seek $Fpos 0 ; ign=' '
grep -qFxm$ic "#@lign $File" && ign=' i'
><
catv size /" " sec "/$ign*" File "/*" /%j =3
[ "$ign" == ' i' ] && continue
let ++Lfiles "Ltotal+=size"
done
><
let "Ltotal=(Ltotal+1023)/1024"
cat $LocFiles > hpm_tmpf.loc
return 0
}
RInfo() {
local ic=' ' lsiz=000000000000
local rsiz=$lsiz rsec=$(prints sf0100-) lsec=$(prints sf0100-)
expr "$1" :: 't' && expr "$1" :: 'T' && return 1
Fmain CkHDir . || return
LocList || return
RemList $2 || return
[ ! -s $RemFiles -a ! -s $LocFiles ] && return
UpSz=0 UpN=0 AddSz=0 DwnN=0 DwnSz=0 SubSz=0
[ `ver s` != unix ] && ic=i
echo Infodaten herstellen...
: > hpm_tmpf.inf
< $LocFiles
while readl Zeile
do
expr "$Zeile" :File ' %*%(..*%)%*$' || continue
expr "$Zeile" :lsiz '^%([0-9]%{1,%}%)' || continue
expr "$Zeile" :lsec '^[0-9]%{1,%} *%([0-9]%{1,%}%)' || continue
Dir="$(- grep -Fm$ic " *$File*" $RemFiles )" || {
catv "/+new " Zeile /%j >> hpm_tmpf.inf
let UpSz+=lsiz ++UpN "AddSz+=lsiz"
continue
}
expr "$Dir" :rsiz '^%([0-9]%{1,%}%)' || continue
expr "$Dir" :rsec '^[0-9]%{1,%} *%([0-9]%{1,%}%)' || continue
expr "$1" :: 't' && let "lsec>rsec" && {
[ `ver s` != unix ] && conv '-t/\' File
fstat +m $((rsec-300)) "$File"
}
let "rsec>lsec+16*3600" && {
catv "/<rem_newer:size=$((rsiz-lsiz)),time=$((rsec-lsec)) " %
Dir /%j >> hpm_tmpf.inf
let DwnSz+=rsiz ++DwnN
}
let "lsiz==rsiz&&lsec<=rsec+60" && continue
let "lsiz!=rsiz&&lsec>rsec+60" && {
catv "/:size=$((lsiz-rsiz)),time=$((lsec-rsec)) " Zeile /%j %
>> hpm_tmpf.inf
let UpSz+=lsiz ++UpN "AddSz+=lsiz-rsiz"
continue
}
let "lsiz!=rsiz" && {
catv "/.size=$((lsiz-rsiz)) " Zeile /%j >> hpm_tmpf.inf
let UpSz+=lsiz ++UpN "AddSz+=lsiz-rsiz"
continue
}
let "lsec>rsec+60" && {
catv "/>time=$((lsec-rsec)) " Zeile /%j >> hpm_tmpf.inf
let UpSz+=lsiz ++UpN "AddSz+=lsiz-rsiz"
}
done
><
< $RemFiles
while readl Zeile
do
expr "$Zeile" :rsiz '^%([0-9]%{1,%}%)' || continue
expr "$Zeile" :File '%*%(..*%)%*$' || continue
grep -qFm$ic "*$File*" $LocFiles || {
catv "/-remote_only " Zeile /%j >> hpm_tmpf.inf
let DwnSz+=rsiz ++DwnN "SubSz+=rsiz"
}
done
><
< $RemFiles
while readl Zeile
do
expr "$Zeile" :rsiz '^%([0-9]%{1,%}%)' || continue
expr "$Zeile" :File '%*%(..*%)%*$' || continue
grep -qFm$ic "*$File*" $LocFiles || continue
grep -qFm$ic " i*$File*" $LocFiles && {
catv "/-lign " Zeile /%j >> hpm_tmpf.inf
let DwnSz+=rsiz ++DwnN "SubSz+=rsiz"
}
expr "$1" :: 'T' || continue
expr "$Zeile" :rsec '^[0-9]%{1,%} *%([0-9]%{1,%}%)' || continue
[ `ver s` != unix ] && conv '-t/\' File
fstat +m $((rsec-300)) "$File"
done
><
cat hpm_tmpf.inf | {
seek + 0 lsiz
: > hpm_tmpf.inf
for ic in + '>' '%.' : '<' -
do
seek $lsiz 0
grep -e "^$ic" >> hpm_tmpf.inf
done
}
cat hpm_tmpf.inf | {
: > hpm_tmpf.inf
while readl Zeile
do
expr "$Zeile" :lsec ' %([0-9]%{1,%}%) *%*' && {
ctime lsec $lsec
expr "$Zeile" :Zeile ' [0-9]%{1,%}%( *%*%)' " $lsec%1"
}
catv Zeile /%j >> hpm_tmpf.inf
done
}
let "UpSz=(UpSz+1023)/1024"
let "DwnSz=(DwnSz+1023)/1024"
let "AddSz=(AddSz+1023)/1024"
let "SubSz=(SubSz+1023)/1024"
expr "$1" :: '[Rlu]' || return 0
ic=' '
[ `ver s` != unix ] && ic=i
if expr "$1" :: 'R'
then
print "hash%nbell%nverbose" > $FtpInp
lsiz=0
< $RemFiles
while readl Zeile
do
expr "$Zeile" :Zeile '%*%(..*%)%*$' || continue
expr "$Zeile" :File '%([^/]%{1,%}%)$' || continue
rsiz=0
3< $LocFiles
while readl -u3 Dir
do
expr "$Dir" :Dir '%*%(..*%)%*$' || continue
expr "$Dir" :lsec '%([^/]%{1,%}%)$' || continue
cmpv -$ic File lsec || continue
let "++rsiz>1" && { >< ; continue 2; }
inp="$Dir"
done
><
let "rsiz!=1" && continue
cmpv -$ic Zeile inp && continue
expr "$inp" :: '/' && {
Dir="$inp"
while conv -T'/*' Dir; let "$.>=0"
do
catv $.,inp =File:
grep -qFm$ic " ?$File/" $RemFiles && continue
grep -qFxm "mkdir $File" $FtpInp && continue
print -r "mkdir $File" >> $FtpInp ; let ++lsiz
done
}
File="$Zeile" Dir="$inp" inp=
while expr "$Dir" :lsec '%([^/]%{1,%}%)$' &&
expr "$File" :rsec '%([^/]%{1,%}%)$' &&
cmpv -$ic lsec rsec
do
expr "$Dir" :Dir '^%(.*/%)[^/]%{1,%}$' || Dir=
expr "$File" :File '^%(.*/%)[^/]%{1,%}$' || File=
lsec="$rsec"
expr "$Dir" :Dir '/$' '' && lsec="/$lsec"
expr "$File" :File '/$' '' && rsec="/$rsec"
inp="$lsec$inp"
done
inp="$Dir$inp"
print -r "rename $Zeile $inp" >> $FtpInp ; let ++lsiz
done
><
cat $FtpInp > hpm_tmpf.ftp
echo $lsiz ftp-rename-Kommandos...
read "lsiz?ftp-Client starten?[j]: "
[ "$lsiz" != j ] && return
Fmain ExecFtp
read "-?hpm.bish:<Enter> "
return 0
fi
expr "$1" :: '[lu]' || return 0
print "hash%nbell%nverbose" > $FtpInp
inp=0
< $RemFiles
while readl Zeile
do
expr "$1" :: 'd' ||
expr "$Zeile" :Zeile '%*%(..*%)%*$' || continue
expr "$1" :: 'd' &&
expr "$Zeile" :Zeile '?%(..*%)/$' || continue
expr "$Zeile" :File '%([^/]%{1,%}%)$' || continue
expr "$Zeile" :Dir '^%(.*/%)[^/]%{1,%}$' || Dir=
expr "$1" :: 'l' && conv -l File
expr "$1" :: 'u' && expr "$1" :: '[x1]' || conv -u File
expr "$1" :: 'u1' && expr "$1" :: 'x' ||
expr "$File" :File '^[a-z]' '%U&'
expr "$1" :: 'xu1' && expr "$File" :: '[^.]%.[^.]%{1,%}$' &&
expr "$File" :File '%([a-z]%)%(.*%.[^.]%{1,%}%)$' '%U%1%E%2'
expr "$1" :: 'xu1' && expr "$File" :: '[^.]%.[^.]%{1,%}$' ||
expr "$File" :File '[a-z]' '%U&'
[ "$Zeile" == "$Dir$File" ] && continue
print -r "rename $Zeile $Dir$File" >> $FtpInp
let ++inp
done
><
cat $FtpInp > hpm_tmpf.ftp
echo $inp ftp-rename-Kommandos...
read "inp?ftp-Client starten?[j]: "
[ "$inp" != j ] && return
Fmain ExecFtp
read "-?hpm.bish:<Enter> "
return 0
}
UpLoad() {
local st=00000000000 dt=00000000000 ic=' ' mkdf
Fmain CkHDir . || return
[ -s hpm_tmpf.inf -a -f hpm_tmpf.rem ] || Onl=0 ||
Fmain Perr . "Info-Datei hpm_tmpf.{inf|rem} fehlt!" && return
systime st; fstat -mv dt hpm_tmpf.inf
let "st>dt+2*3600" && Onl=0 &&
Fmain Perr . "RemInfo erneuern!" && return
[ `ver s` != unix ] && ic=i
echo UpLoad...
mktemp mkdf
3> $FtpInp
print -u3 "hash%nbell%nverbose"
dt=0
< hpm_tmpf.inf
while readl Zeile
do
expr "$Zeile" :: '^[:.>+].' || continue
catv 1,Zeile =st:
expr "$Zeile" :File ' %*%(..*%)%*$' || File=
[ `ver s` != unix ] && conv -t'/\' File
[ -r "$File" -a -f "$File" ] || Onl=up ||
Fmain Perr . "Datei nicht lesbar: '$File'" && break
[ `ver s` != unix ] && conv -t'\/' File
expr "$File" :: '[^-a-zA-Z0-9_.+/=]' && Onl=up &&
Fmain Perr . "Dateinamenzeichen: '$File'" && break
[ "$st" == + ] && expr "$File" :: '/' && {
Dir="$File"
while conv -T'/*' Dir; let "$.>=0"
do
catv $.,File =Zeile:
grep -qFm$ic " ?$Zeile/" hpm_tmpf.rem && continue
grep -qFxm "mkdir $Zeile" $mkdf && continue
print -r "mkdir $Zeile" >> $mkdf
print -ru3 "mkdir $Zeile"; let ++dt
done
}
Dir="$File"
[ `ver s` != unix ] && conv -t'/\' File
print -ru3 "put $File $Dir"; let ++dt
done
><<
[ -f $mkdf ] && remove $mkdf
[ $dt -eq 0 -o "$Onl" == up ] && Onl=0 && return
cat $FtpInp > hpm_tmpf.ftp
Fmain Online || return
echo $dt ftp-Dateikommandos...
read "inp?ftp-Client starten?[j]: "
[ "$inp" != j ] && return
Fmain ExecFtp
read "-?hpm.bish:<Enter> "
return 0
}
DownLoad() {
local st=00000000000 dt=00000000000 fst=__
local ddir=$st$st$st$st
local rdir=$ddir$ddir
ddir= rdir=
Fmain CkHDir . || return
expr "$1" :: D && { Fmain CkDDir . || return ; ddir="$inp"; }
expr "$1" :: V && [ -s hpm_tmpf.inf ] || echo LV > hpm_tmpf.inf
[ -s hpm_tmpf.inf -a -f hpm_tmpf.rem ] || Onl=0 ||
Fmain Perr . "Info-Datei hpm_tmpf.{inf|rem} fehlt!" && return 1
expr "$1" :: V || grep -qm '^[-<].' hpm_tmpf.inf || return
[ "$1" == L ] && grep -qm '^-.' hpm_tmpf.inf || return
systime st; fstat -mv dt hpm_tmpf.inf
let "st>dt+2*3600" && Onl=0 &&
Fmain Perr . "RemInfo erneuern!" && return
echo Download/Löschen...
expr "$1" :: L && mktemp rdir
3> $FtpInp
print -u3 "hash%nbell%nverbose"
dt=0
expr "$1" :: D && print -ru3 "lcd $ddir" && let ++dt
< hpm_tmpf.inf
while readl Zeile
do
expr "$1" :: V && continue
expr "$Zeile" :: '^[-<].' || continue
catv 1,Zeile =fst:
expr "$Zeile" :File ' %*%(..*%)%*$' || continue
Dir="$ddir" st=
expr "$File" :Zeile '^%(.*[^/]%)/[^/]%{1,%}$' &&
Dir="$Dir/$Zeile" st=1
expr "$1" :: D && {
inp="$File"
[ `ver s` != unix ] && conv -t'/\' inp
print -ru3 "get $File $inp"; let ++dt
}
[ "$fst" != - ] && continue
expr "$1" :: L && {
print -ru3 "delete $File"; let ++dt
ifset st Zeile && grep -qFxm -e "*$Zeile" $rdir ||
print -r "*$Zeile" >> $rdir
}
done
Dir="$(-pwd)"
expr "$1" :: D && print -ru3 "lcd $Dir" && let ++dt
><<
expr "$1" :: V && {
< hpm_tmpf.rem
while readl Zeile
do
expr "$Zeile" :Zeile ' ?%(..*%)/$' || continue
grep -qFm -e "*$Zeile/" hpm_tmpf.rem && continue
print -r "rmdir $Zeile" >> $rdir; let ++dt
done
><
[ -s "$rdir" ] && sort -r -d $rdir | cat >> $FtpInp
grep -qm '^LV' hpm_tmpf.inf && : > hpm_tmpf.inf
}
if [ -s "$rdir" ] && expr "$1" :: L && [ "$1" != LV ]
then
sort -r -d $rdir | cat > $rdir
< $rdir
while readl Zeile
do
grep -F "$Zeile/" hpm_tmpf.rem |
while readl File
do
expr "$File" :File ' %*%(..*%)%*$' || continue
Dir="$(-grep -Fm -e "*$File*" hpm_tmpf.inf)" || continue 2
expr "$Dir" :: '^-' && continue
continue 2
done
catv "/rmdir " 1,,Zeile /%j >> $FtpInp; let ++dt
done
><
fi
[ -f "$rdir" ] && remove $rdir
[ $dt -eq 0 -o "$Onl" == up ] && Onl=0 && return
cat $FtpInp > hpm_tmpf.ftp
Fmain Online || return
echo $dt ftp-Dateikommandos...
read "inp?ftp-Client starten?[j]: "
[ "$inp" != j ] && return
< hpm_tmpf.inf
while ifset ddir && readl Zeile
do
expr "$Zeile" :: '^-.' || continue
expr "$Zeile" :File ' %*%(..*%)%*$' || continue
expr "$File" :File '^%(.*[^/]%)/[^/][^/]*$' || continue
File="$ddir/$File"; conv '-F/' File
[ `ver s` != unix ] && conv -t'/\' File
mkdirs -v "$File"
done
><
ddir="$(-pwd)"
Fmain ExecFtp
cd "$ddir"
read "-?hpm.bish:<Enter> "
return 0
}
echo Einträge lesen/setzen...
Fmain Get rfil . Rfiles || Rfiles=-
Fmain Get rtot . Rtotal || Rtotal=-
Fmain Get ftp '[0-9]' Fsel || Fsel=1 || Fmain Set ftp 1
catv 1,Fsel =Fsel:
Fmain Get ftp1 '[^ %t]' FtpCmd || FtpCmd='ftp -n < {}' ||
Fmain Set ftp1 "$FtpCmd"
Fmain Get host '[0-9]' Hsel || Hsel=1 || Fmain Set host 1
catv 1,Hsel =Hsel:
Fmain Get host$Hsel '[^ %t]' Host ||
Host='home-up.t-online.de;user anonymous .' ||
Fmain Set host1 "$Host"
expr "$Host" :Host ' *;;* *' + ';'
Fmain Get tz '[-0-9]' Tz || Tz=-1 || Fmain Set tz -1
Fmain CkDDir
Fmain CkHDir && cd "$inp" && LocList
Fmain GetTz
Fmain GetFtpCmd
Fmain Get cmd0 . inp && { echo "Ausführung Kommando 0:"
print -r "'$inp'..."
eval "$inp"; }
echo
prints s:f-50 " bish-Script 'Homepage-Manager' "
prints s:f-50 " Copyright (c) 1999 Helmut Schellong "
echo
read "-?<Enter> "
while echo "%r
%tDatum+Uhrzeit : $( Fmain DatTim )%r
%thost + login $Hsel: $Host%r
%tftp-Kommando $Fsel: $FtpCmd%r
%tKommando 1: $(Fmain Get cmd1 . inp; print -rn "$inp")%r
%tKommando 2: $(Fmain Get cmd2 . inp; print -rn "$inp")%r
%tKommando 3: $(Fmain Get cmd3 . inp; print -rn "$inp")%r
%tLocal Info : $Lfiles= ${Ltotal} KB < $DwnN= ${DwnSz} KB, -:${SubSz} KB%r
%tRemote Info : $Rfiles= ${Rtotal} KB > $UpN= ${UpSz} KB, +:${AddSz} KB%r
%tDL-Verzeichnis: $(Fmain Get ddir . inp; print -rn "$inp")%r
%tHP-Verzeichnis: $(Fmain Get hdir . inp; print -rn "$inp")%r
%r
%tAuswahl Zeitzone $Tz : z [-]stunden%r
%tAuswahl ftp | host : f{1-9} | h{1-9}%r
%tAuswahl Verzeichnisse : v|vh|vd [Pfad]%r
%tKommando ausführen : 1|2|...|9%r
%tInfo-Daten remote:local: I[+] [R] [t|T] [d][l][u|u1|xu1]%r
%tUpload : U%r
%tDownload|Löschen : D|L|DL|LV%r
%tEditor: script|info : ed [s|i]%r
%tHilfe : h%r
%tBeenden : E%r
%r
%t : %c"
do
read inp Zeile
case "$inp" in
z) Fmain SetTz $Zeile ;;
f[1-9]) Fmain SetFsel $inp ;;
h[1-9]) Fmain SetHsel $inp ;;
v|vh) Fmain SetHDir "$Zeile" ;;
vd) Fmain SetDDir "$Zeile" ;;
[1-9])
Fmain Get "cmd$inp" . Zeile && {
print -r "'$Zeile'..."
let "inp>=1&&inp<=3" && inp=j
[ "$inp" != j ] && read "inp?Ausführen?[j]: "
[ "$inp" != j ] && goend
eval "$Zeile"
}
;;
I+) RInfo "$Zeile" + ; continue ;;
I) RInfo "$Zeile"; continue ;;
U) UpLoad; continue ;;
D|L|DL|LV) DownLoad $inp; continue ;;
ed) Fmain Edit $Zeile ||
Fmain Perr . "Edit(): Programm- oder Dateifehlschlag."
;;
h) Fmain Help ;;
E) break ;;
*) echo %a%c; continue ;;
esac
Onl=0
done
for inp in FtpInp RemFiles LocFiles
do ifset $inp && [ -f "${{inp}" ] && remove "${{inp}" && $inp=''
done
exit 0
ziel=txt/01GETchecksum.txt
[ -d de/txt ] && ziel=de/$ziel
echo "Prüfsummen- und Zeitstempel-Liste:" > $ziel
date >> $ziel
echo %n >> $ziel
for wc in exe zip Z gz bin drv bish
do
list -fR |
while readl file
do
expr "$file" :: "%.$wc%$" || continue
expr "$file" :: "cgi/" && continue
expr "$file" :: "tmp/" && continue
[ -s "$file" ] || continue
echo "$file"
expr "$file" :fil '%([^/]%{1,%}%)$'
expr "$fil" :fil '01GET' = ''
prints s16s17s17s3s `sum -b < "$file"`"(sum)" %
`crc "$file"`"(crc)" %
`fsize "$file"`"(size)" %
"" "$fil" >> $ziel
done
done
echo %n >> $ziel
List() {
list -fR |
while readl zeile
do
expr "$zeile" :: 'cgi/' && continue
expr "$zeile" :: 'tmp/' && continue
echo $(fstat -m $zeile) $zeile
done
return 0
}
List | sortl -r -fn1 |
while read - zeile
do
ifset zeile || continue
[ -s "$zeile" ] || continue
for wc in exe zip Z gz bin drv bish htm txt
do
expr "$zeile" :: "%.$wc%$" && { file="$zeile"; break; }
file=''
done
ifset file || continue
ls -ltgo "$file" | read - - - mon tag uhr -
expr "$file" :fil '%([^/]%{1,%}%)$'
expr "$fil" :fil '01GET' = ''
prints s3s4s6s3s $tag $mon $uhr "" "$fil" >> $ziel
done
echo %n >> $ziel
T=/
[ `ver s` == dos ] && T=\
set -f
err() {
local h
[ "$1" == '-h' ] && h=1 && shift
print -ru2 "hpup.bish: $1"
ifset h && print -u2 "bish hpup.bish local_dir [+/-h] [-e]" %
'[ [-f] kdo xxx${file} yyy ${file} zzz ]'
read "-?<Enter> "
exit 1
}
[ $# -lt 1 ] && err -h "Mindestens HP-Verzeichnis angeben!"
[ -d "$1" ] || err -h "Ist kein Verzeichnis: '$1'"
cd "$1"
[ -s server.lsl ] || err -h "Fehlt: 'server.lsl'"
shift
Sec1970() {
[ $# -eq 6 ] || return
local cjsj=0 nsj=000 cj=0000 T=$1 M=$2 J=$3
Sec=0000000000 h=$4 m=$5 s=$6
(( MA[1]=0, MA[2]=31, MA[3]=MA[2]+28, MA[4]=MA[3]+31,
MA[5]=MA[4]+30, MA[6]=MA[5]+31, MA[7]=MA[6]+30,
MA[8]=MA[7]+31, MA[9]=MA[8]+31, MA[10]=MA[9]+30,
MA[11]=MA[10]+31, MA[12]=MA[11]+30, MA[13]=MA[12]+31 ))
let "J< 70" && let J+=2000
let "J<100" && let J+=1900
let "J<1970" && err "Zu kleines Jahr vom Server: '$J'"
for cj from 1970 to "$J" repeat
do
cjsj=0
(( !(cj%4) && (cj%100) || !(cj%400) )) && let "cjsj=1, ++nsj"
done
(( Sec = 3600*24 * ( 365 * (J - 1970) + nsj - cjsj ),
Sec += 3600*24 * ( MA[M] + T - 1 ) + h * 3600 + m * 60 + s,
cjsj && M >= 3 )) && let "Sec+=3600*24"
set -A MA ; unset h m s
return 0
}
[ $T == / ] && Jahr=`date +%Y` || err "Fehlschlag: date"
[ $T == \ ] && {
:>>hpupshow.tmp
DIR hpupshow.tmp | grep -im '^hpupshow' | read - - - Jahr -
[ ! -s hpupshow.tmp ] && DEL hpupshow.tmp
expr "$Jahr" :Jahr '%([0-9]%{2,4%}%)$' ||
err "Datumsfunktion fehlgeschlagen: '$Jahr'"
let "Jahr< 80" && let Jahr+=2000
let "Jahr<100" && let Jahr+=1900
}
let "Jahr<1970" && err "Zu kleines aktuelles Jahr: '$Jahr'"
Add=0000000000
local sz mo ta st mi ja
:>server.ssn
grep '^-[r-][w-][x-][r-][w-][x-][r-][w-][x-]' server.lsl |
while read - - - - sz mo ta uj nam
do
ifset nam || continue
conv -l mo
case "$mo" in
jan) mo=1 ;; feb) mo=2 ;; mar) mo=3 ;; apr) mo=4 ;;
may) mo=5 ;; jun) mo=6 ;; jul) mo=7 ;; aug) mo=8 ;;
sep) mo=9 ;; oct) mo=10 ;; nov) mo=11 ;; dec) mo=12 ;;
*) err "Monat=='$mo'!?" ;;
esac
st=00 mi=00 ja=$Jahr
expr "$uj" :st '^%([0-9]%{1,2%}%):[0-9]%{1,2%}$' || ja=$uj
expr "$uj" :mi '^[0-9]%{1,2%}:%([0-9]%{1,2%}%)$' || ja=$uj
expr "$ja" :: '^[1-9][0-9][0-9][0-9]$' || err "Jahr: '$ja'"
expr "$sz$ta" :: '[^0-9]' && err "GrößeTag: '$sz'$ta'"
let "ta<1||ta>31||st<0||st>23||mi<0||mi>59" &&
err "TagStundeMinute: '$ta'$st'$mi'"
Sec1970 $ta $mo $ja $st $mi 0
print -r "$sz $Sec $nam" >> server.ssn
let "Add+=sz"
done
[ -s server.ssn ] || err "Kein Inhalt: server.ssn"
unset sz mo ta st mi ja uj
echo KByte auf dem Server: $((Add/1024))
read "-?<Enter>"
local lcmd=ls
[ $T == \ ] && lcmd="DIR /b"
:>local.ssn
$lcmd | while readl nam
do
ifset nam || continue
[ -f "$nam" ] || continue
[ "$nam" == local.ssn -o "$nam" == LOCAL.SSN -o %
"$nam" == server.ssn -o "$nam" == SERVER.SSN -o %
"$nam" == server.upn -o "$nam" == SERVER.UPN -o %
"$nam" == server.upf -o "$nam" == SERVER.UPF -o %
"$nam" == server.nur -o "$nam" == SERVER.NUR -o %
"$nam" == server.lsl -o "$nam" == SERVER.LSL ] && continue
print -r `fsize $nam` `mtime $nam` "$nam" >> local.ssn
done
[ -s local.ssn ] || err "Kein Inhalt: local.ssn"
unset lcmd
Add=0000000
while let "$#>0"
do
case "$1" in
[-+][0-9]*) let "Add=$1*3600" ;;
-e) Ed=1 ;;
-f) Fe=1 ;;
*) Cmd="$*"; break ;;
esac
shift
done
[ $T == \ ] && {
local lsec ssec erw
>server.upn
3>server.upf
<local.ssn
while read - lsec nam
do
expr "$nam" :erw '%.%([^.]*%)$' || erw=''
ifset erw && expr "$nam" :nam '^%(.[^~''.]*%)'
grep -mi " $nam"'$' server.ssn | read - ssec -
ifset ssec || print -ru3 "$nam" && continue
let "lsec>ssec+Add" && print -r "$nam"
done
><<<
unset lsec ssec erw
>server.nur
<server.ssn
while read - - nam
do
grep -qmi " $nam"'$' local.ssn || print -r "$nam"
done
><<
}
[ $T == / ] && {
local lsec ssec
>server.upn
3>server.upf
<local.ssn
while read - lsec nam
do
grep -m " $nam"'$' server.ssn | read - ssec -
ifset ssec || print -ru3 "$nam" && continue
let "lsec>ssec+Add" && print -r "$nam"
done
><<<
unset lsec ssec
>server.nur
<server.ssn
while read - - nam
do
grep -qm " $nam"'$' local.ssn || print -r "$nam"
done
><<
}
ifset Ed && [ $T == / ] && Ed=vi
ifset Ed && [ $T == \ ] && Ed=edit
ifset Ed && {
> hpupshow.tmp
echo ":: server.upn ::"
cat -s server.upn
echo ":: server.upf ::"
cat -s server.upf
echo ":: server.nur ::"
cat -s server.nur
><
$Ed hpupshow.tmp
[ $T == / ] && rm hpupshow.tmp
[ $T == \ ] && DEL hpupshow.tmp
}
ifset Cmd && {
zeile="$Cmd"
read "nam?'$Cmd' ausführen?[jn]: "
[ "$nam" != j ] && exit
expr "$Cmd" :nam '%${%([a-zA-Z][a-zA-Z0-9]*%)}' || nam=''
ifset nam && {
ifdef $nam && err "'$nam': anderen Namen wählen!"
<server.upn
while readl zeile
do
$nam="$zeile"
eval "print -ru2 +n+ $Cmd"
eval "$Cmd"
done
><
ifset Fe && {
<server.upf
while readl zeile
do
$nam="$zeile"
eval "print -ru2 +f+ $Cmd"
eval "$Cmd"
done
><
}
}
ifset nam || { eval "print -ru2 +++ $Cmd"; eval "$Cmd"; }
read "-?<Enter>"
}
T=/
[ `ver s` == dos ] && T=\
set -f
err() {
local h
[ "$1" == '-h' ] && h=1 && shift
print -ru2 "hpup.bish: $1"
ifset h && print -u2 "bish hpup.bish local_dir [+/-h] [-e]" %
'[ [-f] kdo xxx${file} yyy ${file} zzz ]'
read "-?<Enter> "
exit 1
}
[ $# -lt 1 ] && err -h "Mindestens HP-Verzeichnis angeben!"
[ -d "$1" ] || err -h "Ist kein Verzeichnis: '$1'"
cd "$1"
[ -s server.lsl ] || err -h "Fehlt: 'server.lsl'"
shift
Sec1970() {
[ $# -eq 6 ] || return
local cjsj=0 nsj=000 cj=0000 T=$1 M=$2 J=$3
Sec=0000000000 h=$4 m=$5 s=$6
(( MA[1]=0, MA[2]=31, MA[3]=MA[2]+28, MA[4]=MA[3]+31,
MA[5]=MA[4]+30, MA[6]=MA[5]+31, MA[7]=MA[6]+30,
MA[8]=MA[7]+31, MA[9]=MA[8]+31, MA[10]=MA[9]+30,
MA[11]=MA[10]+31, MA[12]=MA[11]+30, MA[13]=MA[12]+31 ))
let "J< 70" && let J+=2000
let "J<100" && let J+=1900
let "J<1970" && err "Zu kleines Jahr vom Server: '$J'"
for cj from 1970 to "$J" repeat
do
cjsj=0
(( !(cj%4) && (cj%100) || !(cj%400) )) && let "cjsj=1, ++nsj"
done
(( Sec = 3600*24 * ( 365 * (J - 1970) + nsj - cjsj ),
Sec += 3600*24 * ( MA[M] + T - 1 ) + h * 3600 + m * 60 + s,
cjsj && M >= 3 )) && let "Sec+=3600*24"
set -A MA ; unset h m s
return 0
}
[ $T == / ] && Jahr=`date +%Y` || err "Fehlschlag: date"
[ $T == \ ] && {
:>>hpupshow.tmp
DIR hpupshow.tmp | grep -im '^hpupshow' | read - - - Jahr -
[ ! -s hpupshow.tmp ] && DEL hpupshow.tmp
expr "$Jahr" :Jahr '%([0-9]%{2,4%}%)$' ||
err "Datumsfunktion fehlgeschlagen: '$Jahr'"
let "Jahr< 80" && let Jahr+=2000
let "Jahr<100" && let Jahr+=1900
}
let "Jahr<1970" && err "Zu kleines aktuelles Jahr: '$Jahr'"
Add=0000000000
local sz mo ta st mi ja
:>server.ssn
grep '^-[r-][w-][x-][r-][w-][x-][r-][w-][x-]' server.lsl |
while read - - - - sz mo ta uj nam
do
ifset nam || continue
conv -l mo
case "$mo" in
jan) mo=1 ;; feb) mo=2 ;; mar) mo=3 ;; apr) mo=4 ;;
may) mo=5 ;; jun) mo=6 ;; jul) mo=7 ;; aug) mo=8 ;;
sep) mo=9 ;; oct) mo=10 ;; nov) mo=11 ;; dec) mo=12 ;;
*) err "Monat=='$mo'!?" ;;
esac
st=00 mi=00 ja=$Jahr
expr "$uj" :st '^%([0-9]%{1,2%}%):[0-9]%{1,2%}$' || ja=$uj
expr "$uj" :mi '^[0-9]%{1,2%}:%([0-9]%{1,2%}%)$' || ja=$uj
expr "$ja" :: '^[1-9][0-9][0-9][0-9]$' || err "Jahr: '$ja'"
expr "$sz$ta" :: '[^0-9]' && err "GrößeTag: '$sz'$ta'"
let "ta<1||ta>31||st<0||st>23||mi<0||mi>59" &&
err "TagStundeMinute: '$ta'$st'$mi'"
Sec1970 $ta $mo $ja $st $mi 0
print -r "$sz $Sec $nam" >> server.ssn
let "Add+=sz"
done
[ -s server.ssn ] || err "Kein Inhalt: server.ssn"
unset sz mo ta st mi ja uj
echo KByte auf dem Server: $((Add/1024))
read "-?<Enter>"
local lcmd=ls
[ $T == \ ] && lcmd="DIR /b"
:>local.ssn
$lcmd | while readl nam
do
ifset nam || continue
[ -f "$nam" ] || continue
[ "$nam" == local.ssn -o "$nam" == LOCAL.SSN -o %
"$nam" == server.ssn -o "$nam" == SERVER.SSN -o %
"$nam" == server.upn -o "$nam" == SERVER.UPN -o %
"$nam" == server.upf -o "$nam" == SERVER.UPF -o %
"$nam" == server.nur -o "$nam" == SERVER.NUR -o %
"$nam" == server.lsl -o "$nam" == SERVER.LSL ] && continue
print -r `fsize $nam` `mtime $nam` "$nam" >> local.ssn
done
[ -s local.ssn ] || err "Kein Inhalt: local.ssn"
unset lcmd
Add=0000000
while let "$#>0"
do
case "$1" in
[-+][0-9]*) let "Add=$1*3600" ;;
-e) Ed=1 ;;
-f) Fe=1 ;;
*) Cmd="$*"; break ;;
esac
shift
done
local io=' ' lsec ssec
[ $T == \ ] && io=i
>server.upn
3>server.upf
<local.ssn
while read - lsec nam
do
grep -m$io " $nam"'$' server.ssn | read - ssec -
ifset ssec || print -ru3 "$nam" && continue
let "lsec>ssec+Add" && print -r "$nam"
done
><<<
unset lsec ssec
>server.nur
<server.ssn
while read - - nam
do
grep -qm$io " $nam"'$' local.ssn || print -r "$nam"
done
><<
unset io
ifset Ed && [ $T == / ] && Ed=vi
ifset Ed && [ $T == \ ] && Ed=edit
ifset Ed && {
> hpupshow.tmp
echo ":: server.upn ::"
cat -s server.upn
echo ":: server.upf ::"
cat -s server.upf
echo ":: server.nur ::"
cat -s server.nur
><
$Ed hpupshow.tmp
[ $T == / ] && rm hpupshow.tmp
[ $T == \ ] && DEL hpupshow.tmp
}
ifset Cmd && {
zeile="$Cmd"
read "nam?'$Cmd' ausführen?[jn]: "
[ "$nam" != j ] && exit
expr "$Cmd" :nam '%${%([a-zA-Z][a-zA-Z0-9]*%)}' || nam=''
ifset nam && {
ifdef $nam && err "'$nam': anderen Namen wählen!"
<server.upn
while readl zeile
do
$nam="$zeile"
eval "print -ru2 +n+ $Cmd"
eval "$Cmd"
done
><
ifset Fe && {
<server.upf
while readl zeile
do
$nam="$zeile"
eval "print -ru2 +f+ $Cmd"
eval "$Cmd"
done
><
}
}
ifset nam || { eval "print -ru2 +++ $Cmd"; eval "$Cmd"; }
read "-?<Enter>"
}
set -f
set +S
[ $# -lt 1 ] && { echo "h2t.bish [-4] datei"; exit; }
Subs='< < > > & & " " @
¦ | § Paragraph ­ . · .
ä ä ö ö ü ü ß ß
Ä Ä Ö Ö Ü Ü'
if [ "$1" == -4 ]
then
shift
Subs='< < > > & & " " @
¦ | § ^U ­ ú · ù
ä ~D ö ~T ü ~A ß á
Ä ~N Ö ~Y Ü ~Z'
fi
[ $# -lt 1 -o ! -s "$1" ] && { echo "h2t.bish [-4] datei"; exit; }
catv /%j =zv:
< "$1"
while readl zeile
do
while expr "$zeile" :zeile '<[Bb][Rr]>%(.%)' "$zv%1"
do :; done
expr "$zeile" :zeile '<[^>]%{1,%}>' + ''
for 2 alt neu in $Subs
do
conv -t"@ " neu
expr "$zeile" :zeile "$alt" += "$neu"
done
catv zeile /%j
done
><
[ $# -lt 4 ] && echo Args-ERR && exit 1
h=$1
t=$2
s=$3
nh=252
while let "++nh<=256"
do
let "sec=h*63+t*nh*63+s-1"
echo nhead=$nh sec=$sec file="$4"
echo nhead=$nh sec=$sec file="$4" >> hts.log
let "sec<0" && exit 2
dd if=/dev/rhd00 of=ts bs=1b iseek=$sec count=2 conv=bmode ||
echo dd-ERR && exit 4
cmpf ts "$4"
done
[ -t 0 ] && exit 1
set -f
local a=00000000000 a0=00000000000 i=00 th=00
local out=_________________ s
readl zeile0 || exit 0
array 0 16 h $zeile0
expr "$h0" :: '[^0-9]' && exit 1
a0=$h0
echo "$h1 $h2 $h3 $h4 $h5 $h6 $h7 $h8 $h9 $h10 $h11 $h12" %
"$h13 $h14 $h15 $h16" | base -16 +b | catv =out:
[ $# -gt 0 -a -n "$1" ] && { 1<> "$1"; trap '><' 0 ; }
[ -t 1 ] || seek $a0 1
while readl zeile
do
expr "$zeile" :a '^ *%([0-9]%{1,%}%)' || {
ifset s && exit 2; s=1; continue; }
let "a<=a0" && exit 2
let "h0=a-a0, h0>16" && h0=16
i=0
for th in `catv -$h0:,,zeile0 | base`
do
let ++i ; h0=h$i
let "16#$th==16#${{h0}" && continue
let "th=16#$th, th!=46" && {
echo $th | base -10 +b | catv =$((i-1)),1,out
let "th==9||th==249||th==250" &&
catv /. =$((i-1)),1,out
}
done
catv out
let "a-a0>16" && ifset s || [ -t 1 ] || seek $a 1
ifset s && { s=''; let i=a-a0
let "i&15||i<32" && exit 2
while let "i-=16, i>0"; do catv out; done
}
zeile0="$zeile"
array 0 16 h $zeile0
a0=$h0
echo "$h1 $h2 $h3 $h4 $h5 $h6 $h7 $h8 $h9 $h10 $h11 $h12" %
"$h13 $h14 $h15 $h16" | base -16 +b | catv =out:
done
[ $# -gt 0 -a -n "$1" ] && ><
CDall() {
read "-? CD einlegen "
mount_cd9660 /dev/acd0a /cdrom || return
[ -d /cdrom/packages/All ] || return
list /cdrom/packages/All > all/$1
umount /cdrom
ls -l all
return 0
}
RdDep() {
local t:.50 z:.50 nam:.50
: > dep/1
cd inst
for t in $( list )
do
pkg_info -r $t |
while readl z
do
ifset z || continue
expr "$z" :nam '^[ %t]%{1,}%([^ %t]%{1,}%)' || continue
print -r $nam >> ../dep/1
done
[ -s ../dep/1 ] && sortl ../dep/1 | uniq > ../dep/1
done
ls -l ../dep
cd -
return 0
}
GetDep() {
local m=0 cd:.20 dep:.50 fdep:.1000
catv 0 =fdep: < dep/1
for cd in $( list all )
do
for dep in $fdep
do
grep -qm "^$dep.tgz" all/$cd || continue
[ m -eq 0 ] && {
read "-? CD $cd einlegen "
mount_cd9660 /dev/acd0a /cdrom || break
m=1
[ -d /cdrom/packages/All ] || break
}
cp /cdrom/packages/All/$dep.tgz idep &&
expr "$fdep" :fdep "$dep" = ''
done
[ m -eq 1 ] && m=0 umount /cdrom || break
done
echo dep_rest:$fdep:
return 0
}
ShowDep2() {
local d:.50
cd idep
for d in $( list )
do
read "-? $d: "
pkg_info -r $d
done
cd -
return 0
}
mkdirs all dep inst idep
while echo "%n
%tCD-All einlesen : cd bez
%tRead dependencies : dep
%tGet depen. pkg : get
%tShow dependencies2 : dep2
%tBeenden : E
%t : %c"
do
read ausw p
case "$ausw" in
cd) CDall "$p";;
dep) RdDep;;
get) GetDep;;
dep2) ShowDep2;;
E) break ;;
*) continue;;
esac
done
exit 0
Dir=/home2/I
l $Dir
dir=x
nam=x0
while :
do
expr "$nam" :num '%(%d%{1,}%)$' && {
let "++num"
expr "$nam" :nam '%d%{1,}$' = "$num"
}
read "d?$Dir/$dir $nam [.|[dir] [nam]]: " n
ifset n || [ "$d" == . ] && break
ifset d n && dir="$d" nam="$n" d= n=
ifset d && nam="$d" d=
[ -d "$Dir/$dir" ] || mkdirs "$Dir/$dir"
echo $Dir/$dir/$nam
dd if=/dev/rfd0135ds18 of=$Dir/$dir/$nam bs=18k || echo $?
done
cd /u/bish/tst || exit
$1 -p Tspeed2
$1 -p s70.bish 1111111111 >/dev/null
cd mu
$1 -p texts.bish
$1 -p tpa.bish
$1 -p cfg.bish
num=0
cat "$1" | {
> "$1"
while readl zeile
do
let "num<100" && num=0$num
let "num< 10" && num=0$num
let "num== 0" && num=000
expr "$zeile" :zeile '^/%*[0-9]%{3%}' = "/*$num" && let ++num
print -r "$zeile"
done
><
}
num=0 nv=0 nv0=0
cat "$1" | {
> "$1"
while readl zeile
do
[ ${#num} -eq 1 ] && num=0$num
expr "$zeile" :nv ' %([0-9]%{1,2%}%)00 ' && let "nv!=nv0" && num=00 nv0=$nv
expr "$zeile" :zeile ' %([0-9]%{1,2%}%)00 ' " %%1$num " && let ++num
print -r "$zeile"
done
><
}
num=0
cat "$1" | {
> "$1"
while readl zeile
do
let "num<100" && num=" $num"
let "num< 10" && num=" $num"
let "num== 0" && num=" 0"
expr "$zeile" :zeile ' [0-9]%{1,3%} ' = " $num " && let ++num
print -r "$zeile"
done
><
}
DEL=0
[ "$1" == del ] && DEL=1
Findex=indwd.txt
[ ! -s "$Findex" -a DEL -eq 0 ] && exit 1
Zeile() {
local a:17.1 b:19.1 comment:.200
if { expr "$Z" :: '\verb%>'; inv; } && expr "$Z" :comment '[^\]%(%%.*%)$'
then expr "$Z" :Z '%([^\]%)%%.*$' '%1'
else comment=
fi
expr "$Z" :Z '%([ \]*%)$' "\index{$_ind}%1"
Z="$Z$comment"
return 0
}
CkZeile() {
local ww=0 wd="$1" exp:.50
expr "$wd" :: '^%w' || let "ww|=1"
expr "$wd" :: '%w$' || let "ww|=2"
case $ww in
0) exp="%<$wd%>" ;;
1) exp="$wd%>" ;;
2) exp="%<$wd" ;;
3) exp="$wd" ;;
esac
expr "$Z" :: "$exp" || return 1
return 0
}
UseNot() {
ifset Z || { catv /%n; return 0; }
[ Vscan -eq 1 ] && expr "$Z" :: '^%%v%%' && return 1
expr "$Z" :: '^[ %t]%{0,}%%' &|
expr "$Z" :: '\[a-z]%{0,9}section[{[]' &|
expr "$Z" :: '\[a-z]%{0,9}section%*[{[]' &|
expr "$Z" :: '^\begin{tabular}' &|
expr "$Z" :: '^\begin{itemize}' &|
expr "$Z" :: '^\begin{list}' &|
expr "$Z" :: '^\begin{math}' &|
expr "$Z" :: '^\label{' &|
expr "$Z" :: '\pageref{' &|
expr "$Z" :: '\chapter[{[]' && {
catv Z /%n; return 0
}
return 1
}
SelectWords() {
local ww=0 word:.50 wd:.50 exp:.50
SWD=
for word in $IND $WD
do
wd="$word"
expr "$wd" :wd '%%s' += ' '
ww=0
expr "$wd" :: '^%w' || let "ww|=1"
expr "$wd" :: '%w$' || let "ww|=2"
case $ww in
0) exp="%<$wd%>" ;;
1) exp="$wd%>" ;;
2) exp="%<$wd" ;;
3) exp="$wd" ;;
esac
grep -qm -e "$exp" "$1" || continue
SWD="$SWD$word "
done
ifset SWD || return 1
return 0
}
set Z:.300
set F:.50
set N:.50
set IND:.50
set ind:.50
set _ind:.50
set WD:.500
set SWD:.500
V=v
Vscan=0
Files() {
for F in $*
do
[ -s "$F" ] || continue
SelectWords "$F" || continue
print -u2 "%t%t$F"
V=v
cat "$F" | {
> "$F"
while readl Z
do
case $V in
v)
UseNot && continue
expr "$Z" :: '^\begin{verbatim}' &|
expr "$Z" :: '^%%v%%\begin{verbatim}' || goend
V=V; [ Vscan -eq 1 ] && V=s
catv Z /%n; continue ;;
V)
expr "$Z" :: '^\end{verbatim}' &|
expr "$Z" :: '^%%v%%\end{verbatim}' && V=v
catv Z /%n; continue ;;
S|s)
expr "$Z" :: "%<$ind%>" && V=S
expr "$Z" :: '^\end{verbatim}' &|
expr "$Z" :: '^%%v%%\end{verbatim}' && {
if [ $V == S ]; then V=i; else V=v; fi
}
catv Z /%n; continue ;;
i)
if expr "$Z" :: '\input{'
then catv Z /%n; catv "/\index{$_ind}%n"
else catv "/\index{$_ind}%n"; catv Z /%n
fi
V=v continue ;;
esac
for N in $SWD
do
[ Vscan -eq 1 ] && break
expr "$N" :N '%%s' += ' '
CkZeile "$N" || continue
Zeile; break
done
catv Z /%n
done
><
}
done
return 0
}
DELindex() {
for F in $*
do
[ -s "$F" ] || continue
grep -qm '\index{' "$F" || continue
print -u2 "%t$F"
V=v
cat "$F" | {
> "$F"
while readl Z
do
if [ $V == V ]
then
expr "$Z" :: '^\end{verbatim}' &|
expr "$Z" :: '^%%v%%\end{verbatim}' && V=v
catv Z /%n; continue
else
UseNot && continue
expr "$Z" :: '^\begin{verbatim}' &|
expr "$Z" :: '^%%v%%\begin{verbatim}' || goend
V=V; catv Z /%n; continue
fi
expr "$Z" :: '^\index{[^}]%{1,}}' && continue
expr "$Z" :Z '\index{[^}]%{1,}}' += ''
catv Z /%n
done
><
}
done
return 0
}
[ DEL -eq 1 ] && { DELindex kap/*.tex mod/vorwort.tex; exit 0; }
4< "$Findex"
while read -u4 IND WD
do
ifset IND || continue
expr "$IND" :: '^#' && continue
[ "$IND" == '%v%' -a -z "$WD" ] && continue
Vscan=0
[ "$IND" == '%v%' ] && { Vscan=1
expr "$WD" :IND '^%([^ ]%{1,}%)'
expr "$WD" :WD '^[^ ]%{1,}' = ''
}
ind="$IND"
expr "$ind" :ind '%%s' += ' '
_ind="$ind"
expr "$_ind" :_ind '_' += '\_'
[ Vscan -eq 1 ] && _ind=".code: $_ind"
print -u2 "%t$_ind"
Files kap/*.tex mod/vorwort.tex
done
><
exit 0
ifdef FUNCTIONS_BISH || . ./functions.bish
ifdef CVARS_BISH || . ./cvars.bish
CopyCmuee() {
local ee=$Fmueehv
[ MUspsw -eq 0 ] && ee=$Fmuee
[ MUspsw -eq 2 ] && ee=$Fmueebm
cat $ee > $Fmueebin
ee=0
[ -s $Fmueemuc ] && fstat -sv ee $Fmueemuc
let "ee==5000+2048" && {
base -W +w < $Fmueebin | catv 2048,0 =5000,2048,3 3<> $Fmueemuc
return 0
}
prints vs48 Hbuf
> $Fmueemuc
cat $Fheadmuc
to $((100-15)) repeat
do
catv 48,Hbuf /%r%n
done
base -W +w < $Fmueebin
><
return 0
}
MkMUee() {
local b=10 offs=00000 adr=00000 typ=.. blen=00 dst=..
local df1=........................................
local df2=....................
local dfbm=....................
catv 5,BasePos =offs:
prints sF2552048- > $1
3<> $1
< $2
seek $offs 0
while read adr typ blen dst - df1 - - df2 - - dfbm - - - -
do
expr "$adr" :: '^@%d' || { expr "$adr" :: '^%$' || continue; break; }
conv -D@ adr
let "blen<<=1, adr=$adr, adr<<=1"
b=10
case $dst in
x) b=16 ;;
b) b=2 ;;
esac
[ $3 -eq 1 -a $df2 != '"' ] && df1="$df2"
[ $3 -eq 2 -a $dfbm != '"' ] && df1="$dfbm"
case $typ in
w) base -$b df1 +w Hbuf ;;
L) base -$b df1 +L Hbuf ;;
S) conv '-t` ' df1
[ $dst == 0 ] && prints vs-F000$blen df1 "$df1"
[ $dst == m -a ${#df1} -lt blen ] && prints vs-$blen df1 "$df1"
base -w df1 +W Hbuf ;;
esac
catv $blen,Hbuf =$adr,,3
done
><<
return 0
}
prints vs70 EEmin
prints vs40 EEmax
EEdflt=00000000
InputLen=000
ifdef Hbuf || prints vs2048 Hbuf
local L_offs=000000 L_n=000 L_c=.... L_src=000000 L_x=....................
if [ -s $Feebase -a '(' %
-z "$BasePos" -o %
! -s $Feelf -o %
! -s $Fsigajs -o %
! -s $Fsigabmjs ')' ]
then
L_n=0
< $Feebase
while seek + 0 L_offs; readl Hbuf
do
expr "$Hbuf" :L_c '^:%(.%)' || continue
[ "$L_c" == '!' ] && let "L_src=L_offs+1"
let "++L_offs"
prints vs-6 L_offs $L_offs
catv L_offs =$L_n,6,BasePos
let "L_n+=6"
done
[ L_src -ne 0 ] && {
L_c=' '
seek $L_src 0
readl Hbuf
> $Fsigajs
catv '/var SigSrc= Array(%n'
while readl Hbuf
do
expr "$Hbuf" :: '^@' || break
expr "$Hbuf" :: '^@%d%{3} %{1,}L %{1,}2 ' || continue
expr "$Hbuf" :Hbuf '%([^ %t]%{1,}%)$' || continue
conv '-t` ' Hbuf
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><
cat $Fsigajs > $Fsigabmjs
}
><
Uvars BasePos
{
L_c=' '
>> $Fsigajs
catv '/var Sig= Array(%n'
< $Fsigatxt
while readl Hbuf
do
ifset Hbuf || continue
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><<
L_c=' '
>> $Fsigabmjs
catv '/var Sig= Array(%n'
< $Fsigabmtxt
while readl Hbuf
do
ifset Hbuf || continue
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><<
}
else
:
fi
[ -s $Feebase -a ! -s $Feelf ] && {
L_n=0
> $Feelf
catv Doctype '/<html><head><title>VBM EE-Rubriken</title>%n' Meta
echo '<base target="EErf">%n</head>%n<body class="main" text="#ffd700"><b>'
< $Feebase
for L_offs in $BasePos
do
seek $L_offs 0
readl Hbuf
let "++L_n"
catv '.<a class="elf" href="/cgi/muee.cgi?' L_n '.">' Hbuf '.</a><br><br>' /%n
done
echo '</b></body></html>'
><<
}
for 2 L_c L_x in 1 $Fmueehv 2 $Fmueebm 0 $Fmuee
do
[ -s $L_x ] && continue
MkMUee $Fmueebin $Feebase $L_c
cat $Fmueebin > $L_x
done
CopyCmuee
< ipok
while readl ip
do
r=`ip $ip`
echo $r $ip
done
><
< iperr
while readl ip
do
r=`ip "$ip"`
echo $r $ip
done
><
set -f
let `ver n`'+0<243' && {
echo "Dieses Script benötigt mindestens bish-Version 2.43 !"
ver; exit 1
}
[ `ver w` == shw ] && read "-?<Enter>: "
local Ls="DIR /b/l/a:-d/o:en"
VER | grep -iq caldera && Ls="xdir -d /b/x"
VER | grep -iq dr.dos && Ls="xdir -d /b/x"
N=000000
Init=0 Enum=000 Max=000 Flags=Avn Byte=0000000000000 Space=0000.0
Line="`prints s150-`"
Titel="`prints s50-`"
expr `pwd` :isDir '^%([a-zA-Z]:%)' || isDir=''
isDir="$isDir\istep.dir"
TmpDir=.
ifset -E TEMP && { TmpDir="$TEMP"; conv -F\ TmpDir
[ ! -d "$TmpDir" ] && TmpDir=.
}
[ "$TmpDir" == . ] && { print "%r
%r
___________________________________________________________%r
| Sie sollten idealerweise die Umgebungsvariable TEMP |%r
| auf ein gültiges Verzeichnis einer RamDisk setzen. |%r
| Siehe 'Hilfe' im Menü. |%r
-----------------------------------------------------------"
}
err() {
local el=e
[ $# -ge 2 -a "$1" == -l ] && el=l
[ $# -ge 2 ] && shift
[ $el == e ] && print -ru2 "istep.bish: --- $1 ---"
[ -f $isDir\istep.log ] || return 0
[ $el == e ] && print -r "--- $1 ---" >> $isDir\istep.log
[ $el == l ] && print -r "+ $1" >> $isDir\istep.log
return 0
}
vor00() {
let "${{#1}==2" && $1=0${{1}
let "${{#1}==1" && $1=00${{1}
let "${{#1}==0" && $1=000
}
Funktion()) {
case "$1" in
tmpfiles)
local dir=$2 vnam=_______________ e=000 tmp
shift 2
for vnam in $*
do
for e from 200 to 299 repeat
do
tmp=$dir\bish_tmpf.$e
[ -e $tmp ] || { :>$tmp; $vnam=$tmp
err -l "tmpfiles(): $vnam=$tmp"; continue 2; }
done
err "Zuviel temporäre Dateien."
for vnam in $*
do
[ -f ${{vnam} ] && DEL ${{vnam}
done
exit 1
done
return 0
;;
homedir)
if [ ! -e $isDir ]
then
echo "Verzeichnis '$isDir' existiert nicht."
echo "Soll es erzeugt werden? [jn]: %c"
read Line
[ "$Line" == j ] || return
MD $isDir
[ ! -d $isDir ] && exit 1
Funktion mkini || return
echo "%n%t!!! Besichtigen Sie die erzeugte ini-Datei !!!"
return 1
else
[ ! -d $isDir ] &&
err "$isDir existiert, ist aber kein Verzeichnis!" &&
exit 1
[ -s $isDir\istep.ini ] || {
err "'$isDir\istep.ini' fehlt!"
Funktion mkini || return
echo "%n%t!!! Besichtigen Sie die erzeugte ini-Datei !!!"
return 1
}
fi
[ "$2" == lesen -o "$2" == edit -o $Init -gt 0 ] && return
[ -s $isDir\istep.log ] && {
cat $isDir\istep.log >> $isDir\istep.gol
catv /%j >> $isDir\istep.gol
}
echo > $isDir\istep.log
DIR $isDir\istep.log | grep -i 'istep *log' | read - - - Line
catv /">>> $Line <<<%j" > $isDir\istep.log
Init=1
return 0
;;
mkini)
> $isDir\istep.ini
echo "[ScanDirs]"
echo "c: d: e: f: g: h: i: j: k: l: m: n:"
echo "o: p: q: r: s: t: u: v: w: x: y: z:"
echo "; Existierende RamDisk-L:, CDROM-L:, etc., weglöschen!"
echo "; Es können beliebige, reine Dir-Pfade gesetzt werden."
echo "%n[SaveFiles]"
echo "c:\autoexec.bat c:\config.sys"
echo "c:\windows\*.ini c:\windows\*.grp c:\windows\*.dll"
echo "c:\windows\*.dat c:\windows\system\*.dll"
echo "; Reine Verzeichnispfade werden rekursiv durchsucht!"
echo "%n[EditCommand]"
echo "edit"
echo "; Nur ein(!) Kommando, auch mit Optionen."
echo "%n[LineComparator]"
echo "lnot.exe"
echo "%n[ScanDirsNFR]"
echo "; Nicht bei dieser Script-Version."
echo "%n[ScanDirsNotNFR]"
echo "; Nicht bei dieser Script-Version."
echo "%n[SaveFilesNFR]"
echo "; Nicht bei dieser Script-Version."
echo "%n[SaveFilesNotNFR]"
echo "; Nicht bei dieser Script-Version."
echo "%n[FilterExpressions]"
echo ";\istep%.dir bish_tmpf%.[0-9]%{3%}"
echo "; Nicht bei dieser Script-Version."
echo "%n[PackCommand]"
echo "; Nicht bei dieser Script-Version."
echo "%n[CkSumCommand]"
echo "; Nicht bei dieser Script-Version."
><
[ -s $isDir\istep.ini ] ||
err "'$isDir\istep.ini' fehlgeschlagen!" && exit 1
err -l "$1(): $isDir\istep.ini"
return 0
;;
rdpar)
[ -f $2 ] || return 0
err -l "$1(): $2 $3"
< $2
while readl Line
do
conv -l Line
expr "$Line" :: "^%[$3]" && break
done
while readl Line
do
ifset Line || continue
expr "$Line" :: '[!-~]' || continue
expr "$Line" :: '^[ %t]*;' && continue
expr "$Line" :: '^%[[a-zA-Z]%{1,%}]' && break
print -r "$Line"
done
><
return 0
;;
mkscanlst)
local ziel=$isDir\scanlist.$2 file
err -l "$1(): $2"
[ -s $ziel ] && :>$ziel
for file in `Funktion rdpar $isDir\istep.ini scandirs`
do
conv -t/\F\ file
{ expr "$file" :: '^[a-zA-Z]:'; inv; } &|
expr "$file" :: '^..[^\]' &&
err "Fehlerhaft: '$file'" && { :>$ziel ; break; }
[ ! -d "$file" ] && continue
print -r "$file" >> $ziel
done
[ ! -s $ziel ] && { err "Keine g~Altigen [ScanDirs]!"
[ -f $ziel ] && DEL $ziel
return 1
}
return 0
;;
mksavelst)
local ziel=$isDir\savelist.$2 file
err -l "$1(): $2"
[ -s $ziel ] && :>$ziel
for file in `Funktion rdpar $isDir\istep.ini savefiles`
do
conv -t/\F\ file
{ expr "$file" :: '^[a-zA-Z]:'; inv; } &|
expr "$file" :: '^..$' &| expr "$file" :: '^..[^\]' &&
err "Fehlerhaft: '$file'" && { :>$ziel ; break; }
Funktion savels "$file" >> $ziel || { :>$ziel ; break; }
done
[ ! -s $ziel ] && { err "Keine g~Altigen [SaveFiles]!"
[ -f $ziel ] && DEL $ziel
return 1
}
return 0
;;
mkdir)
local nam=$2 l=' ' dir mdir
expr "$nam" :l '^%([\/]%)'
expr "$nam" :l '^%([a-zA-Z]:%)' && {
[ ! -d $l ] && err "Kann '$l' nicht erzeugen!" && return 1
l=''
}
conv -"t\ t/ " nam
for dir in $l$nam
do
ifset mdir && mdir="$mdir\$dir"
ifset mdir || mdir=$dir
[ -d "$mdir" ] && continue
[ -e "$mdir" ] &&
err "'$mdir' existiert als Nicht-Verzeichnis!" && return 1
MD $mdir
[ -d $mdir ] || err "'MD $mdir' fehlgeschlagen!" && return 1
done
return 0
;;
cpmvback)
local ali=$isDir\alias.$3 qdir=$isDir\save_dir.$3
local alinam=_____ zdir
err -l "$1(): $3 $2 $4"
Funktion cktab 2 0 $ali || return 1
grep "^[$4]%." $ali |
while read alinam Line
do
ifset alinam Line || {
err "Inhaltslos: '$alinam' '$Line'"; continue; }
expr "$alinam" :: '^[SNC]%.[a-z]%{3%}$' || {
err "Fehlerhaft: '$alinam' $Line"; continue; }
[ ! -w $Line -a -f $Line ] && {
err "Schreibschutz: $alinam --> $Line"; continue; }
[ ! -f $Line -a -e $Line ] && {
err "Keine Datei: $Line"; continue; }
expr "$Line" :zdir '^%(.*%)\[^\][^\]*$' || {
err "Fehlerhafter Pfad: $Line"; continue; }
ifset zdir || zdir=\
[ -d $zdir ] || Funktion mkdir $zdir || continue
[ `$2 $qdir\$alinam $Line > NUL |2 wc -c` -gt 0 ] &&
err "'$2 $qdir\$alinam --> $Line' fehlgeschlagen!"
done
return 0
;;
rddat)
local file=$isDir\istep.dat n=000 f=___
Enum=000 Max=000 Flags=Avn
[ -s $file ] || return 0
err -l "$1(): ..."
< $file
while read n f Line
do
{ ifset n f Line; inv; } &|
expr "$n" :: '[^0-9]' &| let 'n<1||n>999' &|
{ expr "$f" :: 'A' && let Enum; } &|
expr "$f" :: '[^Avn]' &| expr "$f" :: '.A' &|
expr "$f" :: 'n.' &| let "${#f}>3||${#Line}>48" &&
err "Inhalt ist defekt: '$file'" && { >< ; exit 1; }
let "n>Max" && Max=$n
expr "$f" :: 'A' && { Enum=$n; Flags="$f"; Titel="$Line"; }
done
><
vor00 Enum
err -l "$1(): $Enum $Flags '$Titel'"
return 0
;;
wrdat)
local datf=$isDir\istep.dat n0=$2 f0=$3 n=000 f
n0=$((n0))
err -l "$1(): $2 $3 '$4'"
[ -f $datf ] && attrib -r $datf >NUL
[ -f $datf ] || :>$datf
Funktion tmpfiles $TmpDir tmpdat
< $datf
while read n f Line
do
expr "$f" :f '^A%(.*%)$' && [ "$f0" == n ] && f=A${f}n
expr "$f0" :: '[AD]' && let "n==n0" && f=A$f
expr "$f0" :: 'D' && let "n>n0" && continue
prints s4s7s4s $n $f "" "$Line" >> $tmpdat
done
><
[ "$f0" == v ] && prints s4s7s4s $n0 Av "" "$4" >> $tmpdat
cat $tmpdat > $datf
DEL $tmpdat; unset tmpdat
[ -f $datf ] && attrib +r $datf >NUL
return 0
;;
cktab)
local wpz=$2 sub=$3 w=000000 z=000000 c=000000
[ -s "$4" ] || return 0
err -l "$1(): Teste Tabellen-Datei: $4"
[ $# -gt 4 ] && N="$IFS" IFS="$IFS$5"
wc $4 | read z w c
[ $# -gt 4 ] && IFS="$N"
let 'w-=sub,z-=sub,
w<0||z<0 || !w&&c&&!sub||w%wpz||w/z!=wpz||w%z' &&
err "Inhalt ist defekt: $4" && return 1
return 0
;;
free)
local df=$isDir\istep.ini m=$((1024*1024)) byte
[ -f $isDir\istep.ini ] || df=''
DIR $df | grep -L '[0-9]' | catv =byte:
expr "$byte" :byte '%([0-9][0-9.,]*%)' || byte=0
conv -d.d, byte
Space=$((byte/m)).$(({[byte%m]*10}/m))
Byte=$byte
err -l "$1(): $Space $Byte"
return 0
;;
space)
[ -s "$2" ] || return 0
local sum=0000000000 cs=$((32*1024)) sz
< $2
while readl Line
do
expr "$Line" :: '[!-~]' || continue
[ -s $Line ] || continue
sz=`fsize $Line`
let 'sum += [sz&~(cs-1)] + !![sz&(cs-1)]*cs'
done
><
let 'sum>=Byte' &&
err "$1(): Speichermangel: $sum >= $Byte" && return 1
err -l "$1(): $sum < $Byte"
return 0
;;
savels)
local file="$2" dir
err -l "$1(): $2"
if expr "$file" :: '[*?]'
then
expr "$file" :dir '^%([^*?]*\%)[^\]%{1,%}$' ||
err "Fehlerhaft: '$file'" && return 1
conv -F\ dir
$Ls "$file" |
while readl Line
do expr "$Line" :Line '^[a-zA-Z]:%(..*%)$'
print -r "$dir\$Line"
done
else
[ -d "$file" ] && $Ls /s "$file"
[ -f "$file" ] && print -r "$file"
fi
return 0
;;
mklist)
local ziel=$3 quelle=$isDir\scanlist.$2 n=000000
[ -s $quelle ] ||
err "Keine oder leere Scan-Liste." && return 1
[ -f $ziel ] && attrib -r $ziel >NUL
[ -s $ziel ] && :>$ziel
err -l "$1(): $2 $3"
< $quelle
while readl Line
do
ifset Line || continue
[ ! -d "$Line" ] &&
err "Kein Verzeichnis: $Line" && continue
echo "%tListe: Filter: ~@-þ,bish_tmpf,istep.dir -- '$Line'"
3>> $ziel
$Ls /s "$Line" |
while readl Line
do
expr "$Line" :: '[~@-þ %t%r%z]' &&
err "Unerlaubte Zeichen: '$Line'" && continue
expr "$Line" :: 'bish_tmpf%.[0-9]%{1,3%}' &|
expr "$Line" :: '\istep%.dir' && continue
echo "%r%tmklist($((++n)))%c"
prints su39s11s2s `fsize $Line` `mtime $Line` "" $Line
done
><
echo
done
><
[ -f $ziel ] && expr "$ziel" :: 'liste%.' && attrib +r $ziel >NUL
return 0
;;
mkdiff)
local neu=$3 ziel=$isDir\diffs.$2
local size=0000000000 time=0000000000 ncziel=_______
err -l "$1(): $alt $3 $ziel"
Funktion cktab 3 0 $neu || return 1
Funktion cktab 3 0 $alt || return 1
Funktion tmpfiles $TmpDir new changed deleted alt
cat $isDir\liste.$2 > $alt
N=0
< $neu
while readl Line
do
echo "%r%tmkdiff[neu]($((++N)))%c"
grep -Fmq -e "$Line" $alt || catv Line /%j >> $deleted
done
><
echo
N=0
echo '[New]' > $new
echo '[Changed]' > $changed
< $deleted
while read size time Line
do
echo "%r%tmkdiff[n+a]($((++N)))%c"
ncziel=new
aline="`grep -Fm -e "$Line" $alt`" && ncziel=changed
prints s9s11s2s $size $time "" $Line >> ${{ncziel}
ifset aline && catv '/;' 1,,aline >> $changed
done
><
echo
N=0
echo '[Deleted]' > $deleted
< $alt
while read size time Line
do
echo "%r%tmkdiff[alt]($((++N)))%c"
grep -Fmq -e "$Line" $neu ||
prints s9s11s2s $size $time "" $Line >> $deleted
done
><
echo
[ -f $ziel ] && attrib -r $ziel >NUL
cat $new $changed $deleted > $ziel
DEL $new; DEL $changed; DEL $deleted; DEL $alt
unset new changed deleted aline alt
[ -s $ziel ] || err "Fehlschlag: $ziel" && return 1
Funktion cktab 3 3 $ziel ';' || return 1
attrib +r $ziel >NUL
return 0
;;
mkdiffE)
local neu=$3 ziel=$isDir\diffs.$2
local size=0000000000 time=0000000000 ncziel=_______
err -l "$1(): $alt $3 $ziel"
Funktion cktab 3 0 $neu || return 1
Funktion cktab 3 0 $alt || return 1
Funktion tmpfiles $TmpDir new changed deleted alt anp
cat $isDir\liste.$2 > $alt
echo "%r%t$isDir\lnot.exe ..."
echo "%r%tmkdiffE[neu]( )%b%b%b%b%b%b%b%b%b%b%b%c"
$isDir\lnot.exe -v $neu $alt $deleted
[ $? -lt 4 ] || return
echo; N=0
echo '[New]' > $new
echo '[Changed]' > $changed
< $deleted
while read size time Line
do
echo "%r%tmkdiffE[n+a]($((++N)))%c"
ncziel=new
aline="`grep -Fm -e "$Line" $alt`" && ncziel=changed
prints s9s11s2s $size $time "" $Line >> ${{ncziel}
ifset aline && catv '/;' 1,,aline >> $changed
done
><
echo; N=0
unset aline
echo '[Deleted]' > $deleted
[ -f $ziel ] && attrib -r $ziel >NUL
cat $new $changed > $ziel
:>$new ; :>$changed
< $neu
while read - - Line
do echo "%r%tmkdiffE[neup]($((++N)))%c"
catv Line /%j >> $new
done
><
echo; N=0
< $alt
while read - - Line
do echo "%r%tmkdiffE[altp]($((++N)))%c"
catv Line /%j >> $changed
done
><
echo; N=0
echo "%r%t$isDir\lnot.exe ..."
echo "%r%tmkdiffE[alt]( )%b%b%b%b%b%b%b%b%b%b%b%c"
$isDir\lnot.exe -v $changed $new $anp
[ $? -lt 4 ] || return
echo; N=0
< $anp
while readl Line
do
echo "%r%tmkdiffE[anp]($((++N)))%c"
grep -Fm -e "$Line" $alt >> $deleted ||
err "Seltsamerweise fehlt '$Line' in '$alt'." && return 1
done
><
echo
cat $deleted >> $ziel
DEL $new; DEL $changed; DEL $deleted; DEL $alt; DEL $anp
unset new changed deleted alt anp
[ -s $ziel ] || err "Fehlschlag: $ziel" && return 1
Funktion cktab 3 3 $ziel ';' || return 1
attrib +r $ziel >NUL
return 0
;;
dosave)
local quelle=$isDir\savelist.$2 zdir=$isDir\save_dir.$2
local ali=$isDir\alias.$2 anu=$((36#aaa-1)) ziel
[ -s $quelle ] || return 0
[ -d $zdir ] || MD $zdir
[ -d $zdir ] || exit 1
[ -f $ali ] && attrib -r $ali >NUL
[ -s $ali ] && :>$ali
err -l "$1(): $2"
N=0
< $quelle
while readl Line
do
ifset Line || continue
expr "$Line" :: '[~@-þ %t%r%z]' &&
err "Unerlaubte Zeichen: '$Line'" && continue
echo "%r%tdosave($((++N)))%c"
ziel=$zdir\S.$((36#, ++anu))
COPY $Line $ziel > NUL
[ -f $ziel ] || err "'COPY $Line $ziel' fehlgeschlagen!"
[ -f $ziel ] && catv /S.$((36#, anu))%t Line /%j >> $ali
done
><
echo
Funktion cktab 2 0 $ali || return 1
[ -f $ali ] && attrib +r $ali >NUL
return 0
;;
dodiffs)
local ali=$isDir\alias.$2 alinam path
err -l "$1(): $2"
[ -s $isDir\diffs.$2 ] ||
err "Fehlt oder leer: 'diffs.$2'" && return 1
[ -f $ali ] || :>$ali
Funktion cktab 2 0 $ali || return 1
Funktion cktab 3 0 $isDir\liste.$2 || return 1
Funktion cktab 3 3 $isDir\diffs.$2 ';' || return 1
Funktion tmpfiles $TmpDir chdel alinew
N=0
for alinam in changed deleted
do
Funktion rdpar $isDir\diffs.$2 $alinam |
while read - - path
do catv path /%j >> $chdel
echo "%r%tdodiffs[$alinam]($((++N)))%c"
done
echo;N=0
done
[ -f $isDir\savemiss.$2 ] && DEL $isDir\savemiss.$2
< $chdel
while read path
do
echo "%r%tdodiffs[chdel]($((++N)))%c"
grep -Fmsq -e "$path" $ali ||
grep -Fms -e "$path" $isDir\liste.$2 %
>> $isDir\savemiss.$2 ||
err "'$path' nicht vorhanden in liste.$2!" &&
catv /000%t000%t path /%j >> $isDir\savemiss.$2
done
><
echo;N=0
< $ali
while read alinam path
do
echo "%r%tdodiffs[alias]($((++N)))%c"
grep -Fmq -e "$path" $chdel && {
catv alinam /%t path /%j >> $alinew ; continue; }
DEL $isDir\save_dir.$2\$alinam
done
><
echo
[ -f $ali ] && attrib -r $ali >NUL
cat $alinew > $ali
[ -f $ali ] && attrib +r $ali >NUL
DEL $chdel; DEL $alinew
unset chdel alinew
Funktion cktab 2 0 $ali || return 1
return 0
;;
laden)
local ali=$isDir\alias.$2 anu=$((36#aaa-1))
local zdir=$isDir\save_dir.$2 bvp=X ziel par
[ -d $zdir ] || MD $zdir
[ -d $zdir ] || exit 1
err -l "$1(): $2"
Funktion cktab 2 0 $ali || return 1
Funktion cktab 3 3 $isDir\diffs.$2 ';' || return 1
[ -f $ali ] && attrib -r $ali >NUL
N=0
for 2 bvp par in N new C changed
do
Funktion rdpar $isDir\diffs.$2 $par |
while read - - path
do
echo "%rladen[$bvp]($((++N)))%c"
expr "$path" :: '[!-~]' || continue
[ -f $path ] || { err "Fehlt beim Laden: '$path'"
continue; }
ziel=$zdir\$bvp.$((36#, ++anu))
MOVE $path $ziel > NUL
[ -f $ziel ] || err "'MOVE $path $ziel' fehlgeschlagen!"
[ -f $ziel ] &&
catv /$bvp.$((36#, anu))%t path /%j >> $ali
done
echo
done
unset path
[ -f $ali ] && attrib +r $ali >NUL
Funktion cpmvback COPY $2 S || return
return 0
;;
delete)
local zdir=$isDir\save_dir.$2 par=_______ ddir
err -l "$1(): $2"
Funktion cktab 3 3 $isDir\diffs.$2 ';' || return 1
N=0
for par in new changed
do
Funktion rdpar $isDir\diffs.$2 $par |
while read - - path
do
echo "%rdelete[$par]($((++N)))%c"
ifset path || continue
expr "$path" :ddir '^%(.*%)\[^\][^\]*$' || {
err "Fehlerhafter Pfad: $path"; continue; }
[ -f "$path" ] || continue
[ -w $path ] || { err "Schreibschutz: $path"
continue; }
DEL $path
[ -f $path ] && { err "'DEL $path' fehlgeschlagen!"
continue; }
ifset ddir && [ -d "$ddir" ] &&
expr "$ddir" :: '^[a-zA-Z]:$' || RD $ddir 2> NUL
done
echo
done
unset path
[ -s $isDir\diffs.$2 ] && Funktion cpmvback COPY $2 S || return
[ -d $zdir ] && { DEL "$zdir\S.*" 2> NUL
DEL "$zdir\N.*" 2> NUL
DEL "$zdir\C.*" 2> NUL; }
for par in scanlist savelist liste diffs alias
do
ddir=$isDir\$par.$2
[ -f $ddir ] || continue
[ -w $ddir ] || attrib -r $ddir >NUL
echo "%rdelete[DEL]($((++N)))%c"
DEL $ddir
[ -f $ddir ] && err "'DEL $ddir' fehlgeschlagen!"
done
echo
return 0
;;
install)
local ali=$isDir\alias.$2
err -l "$1(): $2"
Funktion cpmvback MOVE $2 NC || return
[ -f $ali ] && attrib -r $ali >NUL
grep '^S%....' $ali | cat > $ali
[ -f $ali ] && attrib +r $ali >NUL
Funktion cktab 2 0 $ali || return 1
return 0
;;
mklnot)
local r=0
err -l "$1(): ..."
Funktion lnotcode
ifdef -f lnotcode || err "lnotcode() nicht existent!" && return 1
fprint lnotcode | Funktion decode || r=1
unset -f lnotcode
return $r
;;
decode)
local a=000 b=000 c=000 d=000 ziel=$isDir\lnot.exe
A=000 B=000 C=000 N=0
err -l "$1(): ..."
3> $ziel
tr -d '[\0- ]=' | tr '[?-~]' '[\0-\63]' | base -b +10 |
while readl Line
do
ifset Line || continue
echo "%r%tdecode($((++N)))%c"
for 4 a b c d in $Line
do
(( A=(a<<2)|(b>>4), B=[(b<<4)&255]|(c>>2),
C=[(c<<6)&255]|d ))
ifset d && catv A /%n B /%n C /%n =3 && continue
ifset c && catv A /%n B /%n =3 && continue
ifset b && catv A /%n =3
done
done
><
echo
unset A B C
base -10 +b < $ziel | cat > $ziel
err -l "$1(): crc==527276123? ..."
[ ! -s $ziel ] &| let `crc $ziel`"!=527276123" &&
err "Erzeugung '$ziel' fehlgeschlagen!" && return 1
return 0
;;
lnotcode)
lnotcode())) {
RTgw?PC??O?_??s?~~~w?W??????????N_????C?}t@i[_??????????????????????????
???????????@????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
??????????????????????????????????Ay[OCmaPY}?jOorQEJJ_G?apwk?GzYgxG?b?YO
?Gc]b?AHJi_?yGO@gWo?bk?roGnWa~ax~v~{{izbWSKeM?Tt|gBL_N^XaOyI?Jc@?LNb_{KG
_}NwaPyM?GrYI}iJNl_?_^{??fKFno?AaRzW?GFFZ_`qI?K}u_@qGjCCs}|FM}|qEWK}u???
\?]BNlg??FSMno?OM}|v@wn|yoNhA_IJvoNYaPy_?Gc]h?A`c??juGz?lChVrQD^s}^yblIJ
x~kroAyM@jwAnqgGmUwGI{~{{yiBNfoFDFXF_ByQ??LqOF[F_ByR?@xqLz_@UJkA?Ks`[ais
Xwk]^?^LGVG_lCaz?OBLGVGVOIMg?CaMoJPHrQDqAj_@UJk??Ks`[oNhaOEs?KsYaPYU?GcM
e??IoFOKmC??bkAz[??ep_[@K}smb_Y}?jw]AJ{iAMbO?N{ua?B~LgW?~rYC?M_C?dBgUo_m
b_Y}?dXVnagGnqgGyNC?VtzBTd[mb_Y}?bN?a~AxJo?e?_Q?t?@Ewn[lV?tsAZcX?Jgn?M_I
?T|]ownklCqIP_JLGZcM?JhG?McB?Pyw?BVLGWc]\?AK@fW?m?OtrQEHFf_?b?Xy?J_DL[s`
aPx{?GoE^_Aw@bVLGWc]_?AK@gG?m??dbKiMujib?[s`F{K]m??dpPXs?Ks`Fpyw@AVDDf_?
rQC^Fj_DH[SU^?BLGP{]m?WdpPY??Ks`F{Mw??EJtwn]M||sEQY?N~|sBaYIRoCqzRnG[oQJ
oWnR_{KEy}KztvOZa|ge_B{?HkWF~oXs@qZ~VoGFy{Oe~t[A@}m|ozO?a|]Jvbn^\@[e_B~~
\?oeME[@[_Weae[@a|MBooZjxRnV\@mJuaY?No?ep_^~@fOFHn|^?_^jpqZ~ToGFy{BBlCAz
?_BLG[MxF_AyT_?mb`y}?mbi~z_B?DBgAo[???C?TWnkTd]JR_QJ{Onu\AyB^_W?\Ojj?SY?
N?@t}mk]p_O?bTWEyoxEPwgDa?Q?NO@t|WNA?gnYar{J~vVka{WjoT|]V[LTa}qBz@@UTwl}
@Gtu~bNHXglE@eYzA_???EWrseZv{wBAKG_SReYJP_XeK|He|~LeaSWEXgL}@_@tt]kFa_QJ
uW_@OSYJpgtU~bnA\m}Ju[W@?Gn@VtzHotUJzN|u@n|u@M_F?GNC@GnOV[LTa}q@zAY?Td]J
\_PepsZ{?????K\E|_C?psZo??@M_sWE?mlLatzga_]s?Atl?GnW_~kK\qNPwqz~hySGp_Wl
A?FjFkWEJ?_@yp^E@akG?]kOp_WiA?FjAUXi?Mbm@GNC@N|EyGl]yG?~?FUwRgLE@_GJ|fwZ
atwEao]HPmaJVma?Nqtt@Z_@?MkAK{?JoFVP_~wA^?UB~_L}AUXi?Mak@GNC@E_@_Gl]@n{v
y?_M_{OCaSZyA{@|BWl]@n{vY_Fga_QBp?Pg?WAJV_Z~\oJgxOuBp?QHPn_JoFsV~vZyyA{J
_{OAatwE~v[AY_FgVOQBp?QB~_LtMuXg?gM??Wl]@n|v@MaoBWNC@gdE|_n?^Qz~\njg}_iB
p?J~\nbg{OiBp?IJV_Z~\oPi?]_^@GNC@MkKXe_@??A?yL{N_{OCY_Fga_UBp?GJoFODm?C?
yoGroD@i?m`u@WNC?_n?\?Uw?_Bj?bN?U_nOaTZipcZbAguEuj}HPmbhNoML`li~atZgI|?@
TnQHPmYHPmaHPmQJPnO@PmRhtOIJVmYI@w`EwroI\?Nho?IJPmWjPmaHPmoJoFwH_F~~BVSB
~szk_vzk?FSByXgA_BwkA?@sXg?}JO_?\OYB^nW@\DfFPmw@?GlEyaS@??n?\Ov~PmyJPmgd
?_?JoFO|m_g?yoaJucJE`|o?AGNyGFrrXn|E~EYJPnpeSEbe?M`{~WNC@gnOa|jE`}W?AEgS
@\o?SN|uzm`ECWNC@eg?Xeg?~vZwyICC_{OGpsZm??BEPlkIbWZY^wdEwMdP?WuEuf}JTm?j
s?DU{gdEvgdEwGdEvGlE{_DEvMfe?Gl]vggFaCZZN?hs?}fP?GlUvalUwGnAA{@}@w@~~ott
?SgzTmps?}en?GluyGl}wGnIF_^rhghC~rJcHghL~rJlI{CJoFOByW{?gAsGl??JoFTG_Bwj
A?@sO^|uzN|uyN|u|ma]CGNC@blEzFSRY_HgH_F~\nZgapABp?W|?_@sEgL}|_Dt@Z_h?]kE
atwEas[CSEgByCKA_{OCgAgGl??JoFSByS[@~sZmasZmNOG?^A]w?_AHPmwHPnA?NasG?FSH
gAkGl??JoFSDm?C?yoGro?n?\?NhDOEJPlx?aSZ_~sZ]~szq_vzq?FwByPF~bWZY^rlEwFSM
atwE~v[AY_Rgu?EBp?QJPmAHPlyL`lh~aSZ_asZ]MsZ[[paJVlyI@wl]wG_F~sZ_~sZ]asZ]
MsZ[[maL`lh~atZ_I|Aw?C?jodB~\mB~\nbgUouBp?YHPnGJoFwByWj}_vzq?FsMatwE~v[A
Y_Jg[_EBp?Q?^lkI\@Q?^lkY\?yJV_Z~\oHi@]`W?WNC@GL}z_@tWgLM{?E_JOas??n?\RU_
Ioas??n?\Qr~\mr~\mb~\nZgT_}Bp?WzPmptCugAYAW@~vZuyCKN_{OENOG?\?Uw?OBj?bN?
A{@sEgL}|_Dt@Z_h?]kEatwEas[CSEgByN??_{OCasZeOGdEyN|Exn|M|GL}|?@}?}ca~WuE
uj{zPm`tBWl]@n{vY_Rgp?ABp?QJPmaHPmYL`li~aSZgasZeMsZc[paJVmYI@wl]yG_F~sZg
~sZeasZeMsZc[maL`li~atZgI|Aw?C?jodB~\mb~\njgPoqBp?YHPnOJoFwByXr{_vzs?FsL
atwE~r\i?m`^?GNC@G@}wohsCw@}wphsBWl]@n{vY_VgP_ABp?R~\njg?O]Bp?J~\nbg}?YB
p?IB^nW@\?f~\nZgyOYBp?IJPn@^VkfB?KOBqoNJ?{kBjoNJ?{kBqoNJ?zWBqoNJ?zsBTWnk
_}pOTglu@GlE@jgg?Onu\OMyK?EB~_Dt?zhQ?WN}?fSBmfS@_~wB\OMyd?EB~_Pt?zin?WN}
@VSBmlC@Y_@g}?DOA{@s@Zbu?]kAK{@OSgtEkDBgineBp?pObSYoSEgAyKKL_{OEA~XtBUgh
YNo?Y_Jgk_uBp?YJp_SC?DBg]?ABp?H]q[LTa}qBNno@GFSDm?C?ypMJFno@s]MJP_QH`qwG
~oZ{?RN?V[NBTWnkTgluA?nu\PzjBn{M~?EJFno@s]N~dqwG_rz{?O@ty}bL|~{U~_FgTnbg
tn]B^_W?\PKJ|fSG~pW??n{U?_J~\_Rgxn\XVdvA@_@Ta}oroD@O~vWCyIZ~V[LTa}qw?O@O
K{@O~vWCyHR~V[KroDAw?O@OK{@OyGV~oz_@?D@OK{@OyFf~otUJzDYJ\_OJ|foT_~xW^_M}
ToAHL__AagOI?haJ{MkL||yB~b@~y[[EA?J~~wcud?Aw~~|]V[GA?DUJzDYJ\_PUyJr~a{X]
V[GA?DUJzJ_?PGl]@Ks`caU??DvBTWnkatwCs]M@hvwF~~usOghEAgl]@GlMAGlU@ks`[_Jj
@TBg^n}XV[LTa}qJV_RPw~]F^_[A?FOEm?S?SMkQlB}JV_QJR_aJT_ZLGVGAyoPOyDB~V[My
@O?zDfoF[qmJulFbpw\}@o??a|ip@LNbpg]??n}JolN_@VoAa|jRwweFa_HAMpX{@vJTgG?A
eDBgV^|XA{@t@gCe^_J~~Z_??dBv@fwA??Hs@Z_@?MkAK{@OK{@OmFoASMbOAWNCAIAO?h`O
yAf~UOn?\OY@HgwA~~uw??HO|oYM?_?A\?Uw?_Bj?bN?SBN?SJaK?dBgf?eBp?bBTWnkasWC
a|Q@y_?AM{Hr@yM[?BN?yofF@hO?A?Aw~~|\otUJzGlE@GlU@_KEf?ABs_AJq?nQ\PA@oO?A
[_gzrFKE`oY[?MkHpoYS??_?mN~~V[LTa}r~\_RghN|XV[LTa}qJP_QXSdBgl~|XUTvBTWnk
atWGlCQIP_YJV_QJR_jLGVGK_vwE?FSCa{Jj@mkCSM_\~dvBTd]J|Gl[@gNj@FGMMpxe?fOD
yCG?yoNg?o@^VkKxFeOA\AMJ\oJu@?Ds@gcuX_JjGBkuX?HsBWn]yDO?as[AguWAyouJvbN?
guOAguWAgu_AS}_T~tnB~o{zFeOA\@aJ\oIJ@I_@\O{B@wcCar{B}wdt?gn]yoNgK_AJNoNz
aoUg?VO@ooCFa~[B{Gd[?gn^av{EM||sBgc}Y?IJ\oQH\OQH^?ZBpoXg?_??owkuY?GJ|fOO
avoEaToEaTsCaV{EaV[Cowc]Y?IHVoQHVoZBTd]J|GlC@_n?\DGD@O@qLaV}~rsG?FKBm?_?
_rxc?_@sFwk]Y?GJuvOLa|Kx@vKYat{EM|ht|]`e?Mk`yGg?yprgF?BjDrN?ypMJ{GNEABcv
[}fgY~~~@wnB@OO?VtzBSBN?SDBgT^xZUqS@?FOHK|HQSM`F~dlZUD?rutLOyBr}Utk|~~|s
DGnWaPxc?gc]X_HWOGcF_{KCa{NBUrN?ot?rutLOy@V}Utk|~~|sDgnWgUWAaS[AaPxe?d`?
aO]BooQJo{LWK{BBIO]J{oKva~wB}CAH@Gd[?gdt?gNE@GnEownkSt@PSM_T~tmJu?n?\@{]
@~qJ}Glu~gkK_{WCTgNh@\Fh{yUHPnzgHNxZatz}_{OEownA_{GGM|DvLWnPMpxe?fSNaO^~
@oNBStBgYntZU}k]a~kB}Gd\?anOIP]J|oNqaVoAOgcTa{mJv}_v~gnX_{KCotXVTWnkatwG
asWIA{@sLonZ\AuByoQJBseJsGNA@WNa~gNyAFKBm__?M{hqBF[D_{KCyobg`~~j?}`N~wnB
yotOyEV}yoXRyHB|K{@ZVT|]oo??boXm?g{E[?IN@fGAJgo]SOyHLfOAaRxu?nqM@h??ng??
KmOejCAKpW^Ucwkua_@EPjc@?G?}c_?B[`EM@go?a~yp^rJ?{izb[gBp^tAJoONBOAV}~wn{
I~`qWGnf@`{U@tDH{yOqoIiMvW^q`|eJownOO}_\?F[J[cO{BVOPy@G?\~S{GFOGN?ts@BoH
\]OqoMn_A{@s@sIiAk@t?SMEwBJ?}]KTjCckGfON@AG{VFSF_Boa\OIkQOnuo}eW{tcBqayM
FdCMaPxi?cKBuwnsa}ojyvJea}UHJeoAwoyH\_ABpOGuj?j?wNhs{BN?aSW?Jgw]SOyJLfOA
arxu?n{u[_J~Lf?AgUgAgwO?gUoAgwW?~qXm?dUJzGlMAJPBacWEatWCrQDq?xFj@DBg\Nh\
otUJzGlU@BkU^?\qAZ_E?DBgV~jjBwnYs]NF`vwF??@Qy?K?UTvBTWnklByJV_RLGVGKs]NF
`vwF???roMkCSM_o}dvBTWnkTd]J^_OJ~vSDyEw?yuWx^Oxs@Zb~~}l]_rs?^AfvPOGG?FSI
a{[D@O?xPOhtPk[D??AJpoSD?BdDAfSwasSGaSSIyrBjJglD@_KDOGnoIRTOasSGaSSISGhD
@H`OyFwD_{OEM{XsB^\D?_?A\OYBROGOyx{roD|]V[LTa}qBz?HUT{\E~_??arx{@zx{?mkQ
|sOA?o@sADZgWn|X~sZ}_{WOa{\NA{@txwlE~d|]a}T\otUJzDXVavWC_ro?^OiJT?WBDCIJ
}mkJaoQXK{GjognOa~bvP?H??FSkasoI_ro?^PvjASeJuW?~AfS@PwnAQ_n?\^BjCGnXOW?~
AfS@PwnAQ_n?\^AJpt|]V[GA?DUJzDXVavWCavwITmb^~dcJoFODmN~~ys]B~oDtCGK{?FwJ
Tm`{~xchP_WXT_a@X?H^~k[C??AJP?aHP?hV~vWG~vWEacOCeDBgJNeBp?aB}n|tAbv~~vSD
mN~~yoGroD|]V[LTa}qBz?`UavWCm?C?SBN?K|HOSghC@H`OyNbw_{OGaTZ}aSZ{_~j~\O_|
~~|t?}eC?GK{?FtsacOCeLF_a|bv`vwF??`sTz_A?D?roBNQSDIIP?QWSMaz}GNCAGdU}gdE
}GNy~vSDN^~~\D?roDB~\nz~\nqIP?QWSMaV}GNCAGNy~vSLN^~~\Oay~~}w~~~jIglE}glU
}GdE~gdU~DZgf^yX?SZ{CTZ}yolUyHB}eQdE~@dU~glU~glE~DyJxTvBTWnkaswClBqJT_ZL
GVGAyoPOyMJvV[GC?DUJzGl]@AnHI|IsOKs`V[GA?DUJzGNk@DXVavWEavwG|{W?oFSGgOOA
HOB?A~?roDB~\_RgEntXUWdE~n^E??Ds]AK}@_IJpye??VSFm?C?SMaI|wL}~n|tGwK}A?GA
\?j~L__AyFZvy]s?|{]??FOCK{Bj?z_@?GdE~mkK|{W?@FOvmD??SMn[|{Zo?FOX~vWCK{@O
yC~~a~_JoFsByZS?T}bl~DfjCn|u@N|u~m_u~wnwA{@|ZMe[?DZ~\_RgfO@XUWnwA{@{UbN?
SD^grN`XUWdE~Ie??FO]_[w?GN^E?G@sFaV~??s_?DAw?O@OT}ah}GNC@mkI|{W??fOCT}b}
~n\E~_C?\@jvp_?@\@Rvpn??\?yw?O@OSN|u@M_p~GNC@_n~^A~vp_?B\?Uw?@Bj?bN?a|Y@
wn~wA|@Q|sZ}?O@s@BN?yoMw??DYA|AJv|FbaX\}@wnFVtyJxTvBTWnk_}oAk?EJR_ZvoOG?
\Oio?n^@@?@t?j??atWCk^?aR_WIoZO|rQDqEgdE~glE@aV~m?s?_Gl]~lFbaW\}@wlE~mkC
SM_v|gndV[LTa}qBz?PUTwlE@BkE^?\qAj_E?DBgE~ZhhoAJP_`?NOG?[_uJV_RPw~]F^_[?
?fODK{Bhb?B~\_b~\_Z~\_Rg\nYBp?YHPnx?NOG?[_uJV_RPw~]F^_[?OFSDasZ}yuIJRnyJ
\_W]@wn}a|z{jBoY\As{BVODimJsypra{?XRm?C?SGtE~TB~\_RgI~YBp?XZ@~qIPnuiM~lt
?mmXyq@Rm?C?SN^XE{@OS^|u@Mb^|WNCAGl]@LFb_W|}@o?AUqnzdt|]a}T\o}ct~tUJzDYJ
\_QJR_WzLfoF[_Uw@_BjKwnP_]G?oGnAM{DtHGFy?K@sFgn]s]MJbvwFa|zPwwn@H^{~A{IH
`vwFa{Cd?KBj@z_@?DBgFNT]V[LTa}pUTwlu@Gl}AbdsBfSK_vwG?f{E_^~~^vWEmN~~yYW?
_rxy?_@tBgF}b?HtAK[E]_G@?MkR_rxw?_@tBGF}^?Ht@k[E]?G@?GK{?FOPm?C?SBN?K|HO
SdZggNmBp?bvP?GC?FOF~vOGyHFuUWLc?nNFP?W??GnE@OS?aSOGaSOI_vwG?fO}A~|uMk[E
~_FjDgL}@_@tED^gK^\XaSWEA{@t?}dt~wLK?_Rj?}dk~wlE@gdCAgdCAGd{@gL}A?Dt@GLK
?__roD|]V[LTa}q@zG_?Td]J^_QJ\_WzNfoF[_iw@_@OyBFsy]C?asWGOBsA?FKDK{BhsoAJ
v|Fb|w\}@o?G\@Ew?_@OK{?rsd@QT}`a|GNCAGn^s]Nv`vwF?C@tBn|uADXVyI_?_{OEyXo?
a|~PwwEf^_^~~Wdu}glEAGdE~mlL~sz}atzy~sZya_]GPns{AfSCp_OLPghE~W_CPguE]N}J
tanO_^i??FofI~@USD^gUoABp?YJsBnE\@IB}n|t@Zb~~}k|asWGIsZ}yrELlfb~_vz}?FUh
bWXw~qnoa{WJoFW`TguE]N|OT}__?GNC@gnOM{XsBgNy~vRDasWG?{GjpmkBasWGVtyJxTvB
TWnkatwCs]Nv`vwF?O@s@j_D?DBjFzP?atwCaswGatWErQDqBtAJV_RPwwEN^_[?CDbj@DBg
B~L\o}e|~dXVnoO?nfoAypBvP?GB?FODTmbF}DdN_{WOA~|tzD|]oo??????????Oe|qZEDm
XA@BIqk_JQ@BZv@x[edfYFO_KRcxKQ@AZvHkWUxcGCdm\Eom?CxtZEo_[E|hZfPd[a@`[vLh
XuxlXUxsBOhCYVXhXES_XVHqZvGLAcDaZe|qZUDkGF@qZu\qWUs_\ETqZUdmWVPhZuwLA_??
????????????????????????????????????????????????Z_`mA????????????????Epm
ZvOmXV`dGA@uKQwoGA@CRtKpLao_PfHdXV\`[eSkGB?qJc|j\AwpMRcwA_??g??AGA?_GA?_
GA?_GA?_GA?_G?????????????????????@kZe|sGA@ZJVDu]Ut\GA@cWVPdYRC_XEDsXUcq
GDlyYUTkXEDsXUd\A_?LA_@r\EPn\VO?ZExn\Bg_PeTgZETqYEDe\ES_OVHf\UtdZfPkYVLs
XQwI?EpmZvOyGCP`\EThdEXeZeTmGEXdYEpfXVLbYEp`XuTmMa??ZExn\Bg_PeTgZETqGEHd
YUs_PEDsXUdkXVLdZbg_?EpmZvOyGCXdYEpd[a@aXUc_OVTrXuDaXRg_?EpmZvOyGDhdYUpd
IEwhGFhtGEp`Ze[_YUw_PEDsXUcyG?@kZe|sMa@TZfXnZEpr\GPmXEdfXQ@@WfLbYEptwVhd
YUpdMa??Ho?fA_????@kAUoHZ?c?ON~~????CoGA@?SEA?_GD@SDCowU@PCAFackIA_gIA_h
JA_gI?SDIP[VB_wMB_wMB_wMB_wMB_{kGoGkBqggIA_REpoA?_SN?`[gI`KiB_wMB_wMBaKM
FA_VGqSRI?????????????????????????????????????cA?????????????FoA???I?_C?
??????????AK?_???_GA????????????f?G??CKA?o???????????IoA??@A?_O?????????
??A{?_??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
?????????????????????D???U?AW?H_@I?Ag???????????????????????????????????
????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
???????????????????????Ahog????OSow=
))}
return 0
;;
*) print -r "Funktion(): '$1' ist ungültig!"; exit 1 ;;
esac
return 0
)}
Main() {
[ "$1" != help -a "$1" != getname ] && {
let "!Init" && Funktion homedir $1 || return
[ -d $isDir -a ! -s $isDir\lnot.exe ] &&
echo "Erzeuge $isDir\lnot.exe ..." &&
Funktion mklnot || return
}
case "$1" in
vor)
let "Enum<Max" && {
echo "Sie müssen auf Zustand '$Max' gehen"
echo "oder auf '$Enum' herablöschen, bevor eine neue"
echo "Registrierung erfolgen kann."
return
}
expr "$Flags" :: 'n' || {
echo "Sie müssen 'Nach Installation' durchführen"
echo "oder den unvollständigen Schritt '$Enum' löschen,"
echo "bevor eine neue Registrierung erfolgen kann."
return
}
let "Enum>=999" && { err "Limit '999' erreicht!"; return; }
while :
do
echo "%nGeben Sie einen Titel für diese Installation ein:"
echo "%t%t%t: %c"
readl Line
ifset Line || return 0
let "${#Line}<=48" &&
expr "$Line" :: '[a-zA-Z]%{3,%}' && break
echo "Zu lang oder anders fehlerhaft!"
done
Titel="$Line"
let ++Enum
vor00 Enum
echo "Erzeugung Scan-Liste ..."
Funktion mkscanlst $Enum || return
echo "Erzeugung Save-Liste ..."
Funktion mksavelst $Enum || return
echo "Prüfung freier Platz für Save-Dateien ..."
Funktion space $isDir\savelist.$Enum || return
echo "Erzeugung Datei-Liste ..."
Funktion mklist $Enum $isDir\liste.$Enum || return
echo "Kopieren der Save-Dateien ..."
Funktion dosave $Enum || return
echo "Schreiben der Daten-Datei ..."
Funktion wrdat $Enum v "$Titel" || return
Funktion rddat || return
return 0
;;
nach)
let "Enum<Max" && {
echo "Sie müssen auf Zustand '$Max' gehen"
echo "oder auf '$Enum' herablöschen, bevor eine neue"
echo "Registrierung erfolgen kann."
return
}
expr "$Flags" :: 'n' && {
echo "'Nach Installation' wurde bereits durchgeführt."
return
}
local lnot=0
Funktion tmpfiles $TmpDir tmplst
echo "Erzeugung Datei-Liste ..."
Funktion mklist $Enum $tmplst || return
echo "Erzeugung Differenzen-Datei ..."
Funktion rdpar $isDir\istep.ini linecomparator |
grep -iq 'lnot' && lnot=1
[ -s $isDir\lnot.exe ] || lnot=0
let lnot || Funktion mkdiff $Enum $tmplst || return
let lnot && Funktion mkdiffE $Enum $tmplst || return
[ -f $tmplst ] && DEL $tmplst
unset tmplst
echo "Maßnahmen aufgrund von Differenzen ..."
Funktion dodiffs $Enum || return
echo "Schreiben der Daten-Datei ..."
Funktion wrdat $Enum n "" || return
Funktion rddat || return
return 0
;;
zdown)
let "Enum<=0" && { echo "Zustand 0 !"; return; }
expr "$Flags" :: 'n' || {
echo "Vorgang 'Nach Installation' fehlt."
return
}
local enu=000 n=000
while :
do
echo "%nWählen Sie einen Zustand kleiner als '$Enum':"
echo "%t%t%t: %c"
read Line
ifset Line || return 0
expr "$Line" :: '[^0-9]' ||
let "Line<Enum&&Line>=0" && break
echo "Nummer '$Line' ist fehlerhaft!"
done
enu=$Line
local r=0
while let "Enum>enu&&!r"
do
Funktion laden $Enum ; r=$?
echo "Schreiben der Daten-Datei ..."
let --Enum
Funktion wrdat $Enum A "" || return
Funktion rddat || return
done
return 0
;;
zup)
let "Enum>=Max" && { echo "Höchste Stufe liegt vor!"; return; }
expr "$Flags" :: 'n' || {
echo "Vorgang 'Nach Installation' fehlt."
return
}
local enu=000 r=0
while :
do
echo "%nWählen Sie einen Zustand größer als '$Enum':"
echo "%t%t%t: %c"
read Line
ifset Line || return 0
expr "$Line" :: '[^0-9]' ||
let "Line>Enum&&Line<=Max" && break
echo "Nummer '$Line' ist fehlerhaft!"
done
enu=$Line
while let "Enum<enu&&!r"
do
let ++Enum
vor00 Enum
Funktion install $Enum ; r=$?
echo "Schreiben der Daten-Datei ..."
Funktion wrdat $Enum A "" || return
Funktion rddat || return
done
return 0
;;
zdowndel)
let "Enum<=0" && { echo "Zustand 0 !"; return; }
expr "$Flags" :: 'n' || {
echo "Vorgang 'Nach Installation' fehlt."
return
}
local enu=000
while :
do
echo "%nWählen Sie einen Zustand kleiner/gleich '$Enum':"
echo "%t%t%t: %c"
read Line
ifset Line || return 0
expr "$Line" :: '[^0-9]' ||
let "Line<=Enum&&Line>=0&&Line<Max" && break
echo "Nummer '$Line' ist fehlerhaft,"
echo "oder kein höherer Zustand vorhanden!"
done
enu=$Line
local r=0
Enum=$Max
vor00 Enum
while let "Enum>enu&&!r"
do
Funktion delete $Enum ; r=$?
echo "Schreiben der Daten-Datei ..."
let --Enum
Funktion wrdat $Enum D "" || return
Funktion rddat || return
done
return 0
;;
lesen)
local z=000000 n=00 inp=_____ path
while :
do
Main getname Line || break
path=$Line
while :
do
n=0 z=0
< $path
while readl Line
do
print -r "³ $Line"
let '++z, ++n>=20' && n=0 && read "inp?$z: " t<CON &&
ifset inp && { >< ; continue 3; }
done
><
read "inp?$z(EOF): " && ifset inp && continue 2
done
done
return 0
;;
edit)
local edit=`Funktion rdpar $isDir\istep.ini editcommand`
let "${#edit}>72" &| expr "$edit" :: '[^a-zA-Z0-9_ /:.+-]' &&
err "Editor '$edit' ist suspekt." && return 1
local ecmd=`expr "$edit" : '^%([^/ ]*%)'`
whence -ep "$ecmd" &| [ $? -ne 10 ] &&
err "Editor '$ecmd' nicht gefunden." && return 1
while :
do
Main getname Line || break
$edit $Line
done
return 0
;;
getname)
local n=00 nsoll=00 file path
Line="istep.ini istep.dat istep.log istep.gol
scanlist.$Enum savelist.$Enum liste.$Enum
diffs.$Enum alias.$Enum savemiss.$Enum"
while :
do
n=0
for file in $Line
do
path=$isDir\$file
[ -s $path ] || continue
prints s23s4s $((++n)) "" $file
done
read "nsoll?<Enter> oder Nummer: "
ifset nsoll || return
expr "$nsoll" :: '[^0-9]' && continue
n=0
for file in $Line
do
path=$isDir\$file
[ -s $path ] || continue
let '++n==nsoll' && $2=$path && return 0
done
done
return 0
;;
help)
local n=00 inp
while :
do
n=0
echo %
"³ Dieses bish-Script ist ein Multistufen De-/Re-Installierer,%r
³ mit dem Sie maximal 999 Installations-Stufen registrieren können.%r
³ Nach Registrierungen kann jede beliebige Stufe in der Kette%r
³ wieder hergestellt werden - und zwar absolut vollständig.%r
³ %r
³ Zur Registrierung einer Stufe müssen die Menü-Punkte%r
³ VOR und NACH der Installation ausgewählt werden.%r
³ Dadurch werden Datei-Listen mit Pfad, Zeitstempel und Größe%r
³ erzeugt, die bei NACH verglichen werden, um eine Differenz%r
³ herausarbeiten zu können.%r
³ Es werden alle Unterschiede auf allen Laufwerken (Dateisystemen)%r
³ jeweils zwischen zwei Zeitpunkten festgestellt.%r
³ Es spielt keine Rolle, was man zwischen VOR und NACH an den%r
³ Dateisystemen verändert. Es werden einfach alle Unterschiede%r
³ festgestellt."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Zu Anfang werden ein Verzeichnis '\istep.dir' und eine%r
³ ini-Datei 'istep.ini' hergestellt.%r
³ In der .ini kann genau festgelegt werden, welche Laufwerke%r
³ und/oder Verzeichnisse gelistet werden sollen%r
³ und welche Dateien und/oder Verzeichnis-Inhalte beim Schritt%r
³ VOR (zunächst) gerettet werden sollen.%r
³ %r
³ Die ini-Datei enthält zu Anfang die Laufwerke c: bis z: .%r
³ Sicherlich muß man das reduzieren.%r
³ Und zwar sollte man alle existierenden Laufwerke, die nicht%r
³ durchsucht werden sollen, herausnehmen.%r
³ RamDisk-L: und CD-ROM-L: sollte man unbedingt entfernen."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ In der log-Datei 'istep.log' werden Arbeitsinformationen%r
³ einer Sitzung gespeichert.%r
³ Dieser Datei-Inhalt wird bei jedem Sitzungsbeginn an den Inhalt%r
³ der 'istep.gol' angehängt.%r
³ Die 'istep.dat' enthält Infos über die Registrierungsstufen.%r
³ %r
³ Zu Anfang wird auch eine 'lnot.exe' erzeugt, die in kodierter%r
³ Form als ASCII-Text innerhalb(!) dieses Scripts vorhanden ist.%r
³ Diese .exe ist ein hochspezialisierter Zeilenvergleicher, der%r
³ zur Geschwindigkeitssteigerung verwendet wird.%r
³ Wenn man dies in der .ini auskommentiert, wird eine langsamere%r
³ Shell-Funktion benutzt.%r
³ Man bedenke, daß bei 10000 Dateieinträgen im schlechtesten%r
³ Fall 10 Milliarden Zeilenvergleiche pro Arbeitsschritt bei%r
³ der Differenzenfeststellung vorgenommen werden müssen!%r
³ Ohne Spezial-exe kann das eine halbe Stunde und länger dauern."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Der Menü-Punkt VOR erzeugt 'liste.001', 'alias.001',%r
³ 'scanlist.001', 'savelist.001' und 'save_dir.001/'.%r
³ Die Gruppennummer kann bis .999 gehen.%r
³ Der Menü-Punkt NACH erzeugt 'diffs.001' und 'savemiss.001'.%r
³ Die 'alias.001' wird hier gegebenenfalls reduziert%r
³ und unnötig gerettete Dateien werden gelöscht, was ja wieder%r
³ Festplattenplatz freigibt.%r
³ Die 'savemiss' enthält Einträge von Dateien, die nicht(!)%r
³ gerettet wurden, entsprechend der 'savelist', jedoch von%r
³ einer Installation verändert oder gelöscht wurden!%r
³ Hierzu muß man also gut vorausgeschätzte Angaben in der%r
³ ini-Datei machen!%r
³ Die 'diffs' listet Dateieinträge in drei Gruppen:%r
³ [Neu], [Geändert] und [Gelöscht]."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Mit 'Zustand Rückwärts', '-Vorwärts' und 'Rückwärts Löschen'%r
³ verändert man den Installationsstand.%r
³ %r
³ Rückwärts ist eine De-Installation, wobei die Dateien vom%r
³ normalen Standort im Dateisystem hinein in das Verzeichnis%r
³ 'save_dir.nnn' bewegt werden (MOVE).%r
³ Die Installation wird also in einem Ladezustand behalten.%r
³ Für gerettete Dateien ist der Weg anders herum.%r
³ %r
³ Vorwärts ist eine Re-Installation, bei der der Vorgang%r
³ wiederum anders herum passiert.%r
³ %r
³ Dieses Installationswerkzeug braucht nur wenig Platz auf%r
³ der Festplatte - etwa 2 bis 20 MByte pro Stufe,%r
³ wobei 5 MByte als normal gelten können.%r
³ Ein Spitzenbedarf entsteht bei VOR, weil dann erst einmal%r
³ relativ viele Dateien gerettet werden, die erst bei NACH%r
³ gegebenenfalls wieder entfernt werden können."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Dieses Script wurde aus einem größeren Script, das nur mit der%r
³ Unix-Vollversion der 'bish' läuft, abspeckend herausgezogen.%r
³ Die Ressourcen der Shareware sind erheblich schmaler, so daß%r
³ die Programmierung ganz anders und 'unschön' vorgenommen%r
³ werden mußte.%r
³ Auch fehlen einige Ausstattungsmerkmale des Originals.%r
³ %r
³ Dennoch zählt dieses Script zu 'den besseren', weil es recht%r
³ viele Sicherheitsmerkmale und Automatismen enthält.%r
³ %r
³ Man kann mit der 'bish' auch richtige farbige Vollbild-Menüs%r
³ mit Fenster-Technik programmieren.%r
³ Aber das ist erstens nicht nötig, und zweitens ist es doch%r
³ tatsächlich schon vorgekommen, daß jemand seinen ANSI.SYS%r
³ nicht geladen hatte ..."
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Die Menü-Punkte VOR und NACH Installation können völlig%r
³ bedenkenlos ausgeführt werden, weil dabei nur das%r
³ istep-Verzeichnis mit Daten gefüllt wird.%r
³ Soll heißen, daß man damit herumprobieren kann, um dann%r
³ beispielsweise die erzeugten Info-Dateien anzuschauen.%r
³ Aufgrund der Infos kann man auch manuelle Manipulationen%r
³ vornehmen. Auch können danach Stufen manuell wieder%r
³ gelöscht werden.%r
³ Es können insbesondere Dateien gemäß 'savemiss' manuell%r
³ nachträglich gerettet werden, falls man die Arbeitsweise%r
³ verstanden hat und Einträge in der 'alias' vornehmen kann.%r
³ Besser ist es allerdings meistens, mißglückte Schritte oder%r
³ Halbschritte zu löschen und dann nur die 'istep.dat'%r
³ manuell anzupassen. Oder 'Löschen Rückwärts' verwenden.%r
³ Der Schreibschutz einiger Dateien wird gesetzt!%r
³ Die 'liste'-Dateien sind nach NACH entbehrlich!"
read "inp?$((++n)): "
ifset inp && return
echo %
"³ Einrichten einer RamDisk für mehr Arbeitstempo:%r
³ CONFIG.SYS:%r
³ %tdevicehigh=c:\dos\ramdrive.sys 2048 512 128 /e%r
³ AUTOEXEC.BAT:%r
³ %tset TEMP=f:%r
³ falls f: das ramdisk-Laufwerk ist."
read "inp?$((++n))(EOF): "
ifset inp && return
done
return 0
;;
*) print -r "Main(): '$1' ist ungültig!"; exit 1 ;;
esac
return 0
}
Titel=' '
[ -s $isDir\istep.dat ] && Funktion rddat
Funktion free
echo "%r
________________________________________________________%r
| bish-Script 'istep.bish' |%r
| Copyright (c) 1998, Helmut Schellong |%r
| |%r
| Multistufen De-/Re-Installierer |%r
--------------------------------------------------------"
while echo %
"%r
frei=${Space}MB ù akt,max,flg=$Enum,$Max,$Flags ù '$Titel'%r
___________________________________________________%r
| Hilfe : h |%r
| Vor Installation : v |%r
| Nach Installation : n |%r
| Zustand Rückwärts : R |%r
| Zustand Vorwärts : V |%r
| Löschen Rückwärts : LR |%r
| Dateien lesen : l |%r
| Dateien editieren : ed |%r
| Beenden : E |%r
---------------------------------------------------%r
: __%b%b%c"
do
read Line
case "$Line" in
v) Main vor ;;
n) Main nach ;;
R) Main zdown ;;
V) Main zup ;;
LR) Main zdowndel ;;
l) Main lesen; continue ;;
ed) Main edit; continue ;;
H|h) Main help; continue ;;
E) break ;;
*) ifset Line && echo %a%c
continue ;;
esac
Funktion free
done
2>/dev/ttyp1
catv '/%e%%-12345X@PJL USTATUSOFF %n@PJL ENTER LANGUAGE = POSTSCRIPT %n' 0 '/%4%e%%-12345X' >$DRUCKER
[ $# -ne 1 ] && exit
[ -s tbl_$1 ] && : > tbl_$1
echo if=$1 of=tmp_$1 of=tbl_$1
< $1
> tmp_$1
while readl zeile
do
catv zeile /%j
expr "$zeile" :: '^[ %t]%{1,%}jmp %*%.L' || continue
readl zeile || break
expr "$zeile" :: '^[ %t]%{1,%}%.align' &&
catv zeile /%j && readl zeile || break
catv zeile /%j >> tbl_$1
while readl zeile
do
expr "$zeile" :: '%.long %.L' || break
catv zeile /%j >> tbl_$1
done
catv zeile /%j
done
><<
echo if=tmp_$1 of=_$1
< tmp_$1
> _$1
while readl zeile
do
catv zeile /%j
expr "$zeile" :: '^[ %t]%.data' || continue
catv "/%t.align 4%j"
cat tbl_$1
while readl zeile
do catv zeile /%j ; done
break
done
><<
remove tmp_$1 tbl_$1
set -f
SigDoku='doku/signale.htm'
K=4 B=12 nK=000 nB=000 N=000
set Z:.300
[ ! -s "$SigDoku" ] && echo "'$SigDoku' does not exist!%a"
Scan() {
local z=0
N=0
<$SigDoku
while readl Z
do
case "$z" in
0) expr "$Z" :: '^<h3.%{20,}>%d%{4}<' && z=1 ;;
1) expr "$Z" :: '^<p' && z=2 ;;
2) expr "$Z" :: '^</p' && z=0 goend
expr "$Z" :: "$1" && z=0 let ++N ;;
esac
done
><
return 0
}
Scan 'System %[1]'; nK=$N
Scan 'Batterie %[1]'; nB=$N
while echo "
%tKämme+Batterien: $K $B
%tEinträge K+B : $nK $nB
%tSignale-Datei : S datei [$SigDoku]
%tKämme copy : k
%tBatterien copy : b
%tBeenden : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
S) [ -s "$rest" ] || { echo "%a%c"; goend; }
SigDoku="$rest";;
E) break;;
*) echo "%a%c"; continue;;
esac
done
:
Strom() {
local ip:010 p:010 f:010 ib:010 i10:010
ib=$1 i10=$2
if [ ib -lt 0 ]
then
p=$etlqual
if let "-ib>=i10"
then
let "ip={1000*[-ib*(130-p)]}/[(p+30)*i10]"
[ ip -lt 1000 ] && ip=1000
let "f=(ip+3000+2)/4"
else echo $ib $f $ip; return 0
fi
else
p=$ladqual
if [ ib -ge i10 ]
then
let "ip={1000*[ib*(130-p)]}/[(p+30)*i10]"
[ ip -lt 1000 ] && ip=1000
[ ip -gt 9000 ] && ip=9000
let "f=(9000-ip+4)/8"
else f=1000
fi
let "f=(ladeff*f+50)/100"
fi
echo Ieff=$(([f*ib+500]/1000)) $f $ip
echo Uadd=$((30*24*[5*ib-i10]/[48*i10]))
return 0
}
set ladeff=000 ladqual=000 etlqual=000
ladeff=75 ladqual=50 etlqual=50
local kapaz:010 strom:010 cmd:.5 val:010
kapaz=100 strom=-100
while echo "
%tLadeeffizienz [%%] : eff $ladeff
%tLadequalität [%%] : laq $ladqual
%tEntladequalität [%%] : elq $etlqual
%tKapazität [Ah] : k $kapaz
%tStrom [dA] : i $strom
%tBerechnen : b
%tBeenden : E
%t _%b%c"
do
read cmd val
case "$cmd" in
eff) ladeff=$val;;
laq) ladqual=$val;;
elq) etlqual=$val;;
k) kapaz=$val;;
i) strom=$val;;
b) Strom $strom $kapaz;;
E) break;;
*) echo "%a%c"; continue;;
esac
done
Rp=$1
Rv=2700
[ $# -gt 1 ] && Rv=$2
Calc() {
R2=$( ti "1/[1/$Rp+1/(2000*pow(1.0079,$T-25))]" )
U=$( ti "(5*$R2)/($Rv+$R2)" )
}
T=25; Calc; U1=$U; echo " " $U
T=50; Calc; U2=$U; echo " " $U
T=75; Calc; U3=$U; echo " " $U
echo %t $( ti "$U2-$U1" )
echo %t $( ti "$U3-$U2" )
echo %t $( ti "($U3-$U2)/($U2-$U1)" )
[[ $# -gt 0 -a "$1" != [0-9]* ]] && {
echo "[#h(255)] [sS nS]..."; return; }
set -f
nh=255
let "$#&1" && { nh=$1; shift; }
read "file?datei_s0: "
[ -s "$file" ] || return
[ $# -gt 0 ] && SS=$*
< $file
[ $# -eq 0 ] && SS=`catv $((446+0+8)),4,0 $((446+0+12)),4,0 %
$((446+16+8)),4,0 $((446+16+12)),4,0 %
$((446+32+8)),4,0 $((446+32+12)),4,0 %
$((446+48+8)),4,0 $((446+48+12)),4,0 %
| base -l +10`
><
o=0
3<> $file
while let "o<=48"
do
catv $((446+o+1)),3,3 | base -b +10 | read sh ss sc
catv $((446+o+5)),3,3 | base -b +10 | read eh es ec
let "sc|=(ss&16#c0)<<2, ss&=63"
let "ec|=(es&16#c0)<<2, es&=63"
echo c=$sc-$ec h=$sh-$eh s=$ss-$es
let "o+=16"
done
><
3<> $file
o=0
for 2 sS nS in $SS
do
let "eS=sS+nS-1"
let "ss=sS%63,v=(sS-ss)/63,++ss,sh=v%nh,v=(v-sh)/nh,sc=v%1024"
let "v>1023" && sc=1023
let "es=eS%63,v=(eS-es)/63,++es,eh=v%nh,v=(v-eh)/nh,ec=v%1024"
let "v>1023" && ec=1023
echo c=$sc-$ec h=$sh-$eh s=$ss-$es sS=$sS nS=$nS eS=$eS
let "o+=16"
done
><
read "inp?'$nh' schreiben?[j]: "
[ "$inp" != j ] && return
3<> $file
o=0
for 2 sS nS in $SS
do
let "eS=sS+nS-1"
let "ss=sS%63,v=(sS-ss)/63,++ss,sh=v%nh,v=(v-sh)/nh,sc=v%1024"
let "v>1023" && sc=1023
let "es=eS%63,v=(eS-es)/63,++es,eh=v%nh,v=(v-eh)/nh,ec=v%1024"
let "v>1023" && ec=1023
echo c=$sc-$ec h=$sh-$eh s=$ss-$es sS=$sS nS=$nS eS=$eS
echo $sh $((ss|((sc&16#300)>>2))) $((sc&16#ff)) |
base -10 +b | catv =$((446+o+1)),3,3
echo $eh $((es|((ec&16#300)>>2))) $((ec&16#ff)) |
base -10 +b | catv =$((446+o+5)),3,3
let "o+=16"
done
><
< val
: > valcl
cl=000000000000 cl0=000000000000
while read pos
do
let "cl=pos/(64*512)+2, cl==cl0" && continue
cl0=$cl
echo $cl >> valcl
done
><
: > valnot
< path1.lst
while read at cl sz td n
do
let "at=(sz+(64*512)-1)/(64*512)"
while let at
do echo $cl >> valnot; let "--at,++cl"; done
done
><
rm -r /scratch/VALUE
sync
mkdirs /scratch/VALUE
3< /dev/rhd0d
< valcl
while read cl
do
grep -q $cl valnot && continue
let "pos={533+[cl-2]*64}*512"
catv $pos,$((64*512)),3 > /scratch/VALUE/$cl
done
><<
cat | {
while readl Z
do
expr "$Z" :: ' "\[0-9]%{3}[a-z?A-Z]' || { catv Z /%r%n; continue; }
expr "$Z" :n '/*%(..%)*/'
expr "$Z" :c '"\...%(.%)'
expr "$cc" :: "$c" || cc="$cc$c" fst="$fst $c=$n"
nn=0
seek + 0 pos
while readl Z2
do
expr "$Z2" :n2 '/*%(..%)*/' || continue
expr "$n2" :: '^0.' && conv -D0 n2
expr "$Z2" :c2 '"\...%(.%)' || continue
[ $c2 == $c ] && nn=$n2 break
done
[ ${#nn} -eq 1 ] && nn=" $nn"
expr "$Z" :Z ', ..,' = ", $nn,"
catv Z /%r%n
seek $pos 0
done
}
catv './* ' fst '.*/' /%r%n
cyr=160
size=0
for id from 1000 to 8000 repeat
do
grep -qm '_id '"$id"'$' ./base/txtbase.h || continue
let "cyr>252" && cyr=160
base -10 cyr +b c1; let ++cyr
base -10 cyr +b c2; let ++cyr
base -10 cyr +b c3; let ++cyr
base -10 cyr +b c4; let ++cyr
echo "$id abc${c1}${c2}${c3}${c4}defABCDE%r"
let size+=22 "size>=99*1024" && break
done
[ -t 0 ] && { echo 'logf.bish < ifile [ > ofile ]'; exit; }
set Z:.200 hex:.150 dez:.150 str:.200 ms:020
char=000 c=.
while readl Z
do
expr "$Z" :hex '^RD=%([ 0-9A-Fa-f]%{3,}%)::%d%{1,10} ms.%{0,2}$' || {
catv Z /%r%n
continue
}
expr "$Z" :ms '^RD=[ 0-9A-Fa-f]%{3,}::%(%d%{1,10}%) ms.%{0,2}$'
base -16 hex +10 dez
str=RD=
for char in $dez
do
[ char -lt 32 -o char -gt 127 ] && {
[ char -eq 0 ] && { str="$str\0"; continue; }
[ char -eq 10 ] && { str="$str\n"; continue; }
[ char -eq 13 ] && { str="$str\r"; continue; }
[ char -eq 46 ] && { str="$str\."; continue; }
[ char -eq 92 ] && { str="$str\\"; continue; }
str="$str."; continue
}
base -10 char +b c; str="$str$c"
done
str="$str::$ms ms" catv str /%r%n
done
Drucken() {
/u/bish/cmd/scs.bish $scs
[ -s "$txt" ] && echo '%e&k2G%e(0N%e&a7L%c'
[ -s "$txt" ] && cat "$txt"
echo '%eE%c'
return 0
}
while echo "
%tText-Datei: t datei ($txt)
%tBank-Text : b ($scs)
%tDrucken : d
%tBeenden : E
%t : _%b%c"
do
read inp arg
case "$inp" in
t) [ -r "$arg" ] || continue
txt="$arg"
;;
b) if expr "$scs" :: '-nobank'
then scs=
else scs=-nobank
fi
;;
d) Drucken >> $DRUCKER ;;
E) break;;
*) echo "%a%c";;
esac
done
[ $# -lt 1 ] && echo file-arg! && exit
d13='[0-9]%{1,3%}'
ip4="$d13%%.$d13%%.$d13%%.$d13"
cat $1 | {
> $1
while readl Z
do
expr "$Z" :ip " %%($ip4%%) " || print -r "$Z" && continue
{ cmpv ip ip0; inv; } &| { ifset host; inv; } && {
host="$(- nslookup $ip )" || print -r "$Z" && continue
expr "$host" =:host 'Name: *%([^ %t%r%n]%{1,%}%)' ||
print -r "$Z" && continue
}
prints vs-50 host "$host"
expr "$Z" :Z " $ip4 " = " $host "
print -r "$Z"
ip0="$ip"
done
><
}
Ua=1.9 Ub=3.25
[ $# -ne 2 ] && { echo "luefterregler.bish Rntc_lowT Rntc_highT"; exit; }
Ra=$1 Rb=$2
echo Gegenkopplungswiderstand R1:
echo "scale=2%n$Rb/((1-$Rb/$Ra)*$Ub/($Ub-$Ua)-1)" | bc -l
echo Spannung an OP+ U3:
echo "scale=2%n$Ub-(($Ub-$Ua)/(1-$Rb/$Ra))" | bc -l
CHARS='#$%&()*+,-./0123456789:;<=>?@'%
'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`'%
'abcdefghijklmnopqrstuvwxyz{|}~'
CHAR=.
set FLAGS:1${#CHARS} OUT:ä64
RANDOM=$(date '+%s')
Get95() {
local i=000 f=0
while [ f -eq 0 ]
do
let "i=$RANDOM"'%'"${#CHARS}"
catv i,1,FLAGS =1,f:
done
catv /0 =i,1,FLAGS
catv i,1,CHARS =1,CHAR:
return 0
}
local i=000
to 32 repeat
do
for i from 0 to 63 repeat
do
Get95
catv 1,CHAR =i,1,OUT
done
print -r "$OUT"
conv -t01 FLAGS
done
:
mailcode -dn -c '65tBm$}i#zXs7G0Z-@%^v9UelD8?)R*&~cM!3;+w,nOgp_A:b{yx\T[K/f.CuHWq' mailcode.q3 mailcode.z2
mailcode -dn -c ':a5;,7^s-tpKTB!O+%|AhW1R\z(E&.M[v9#V0g{Jqexy)k"XwGPrj]Qi6_I~N/Y$' mailcode.z2 mailcode.z1
set Z:.200
CreateVonBis() {
local dez=00000000000 d1=00000 d2=00000 h1=00000 h2=00000 hex=00000000000
cat $1 > bish.bak
cat $1 | {
>$1
while readl Z
do
expr "$Z" :dez 'IED-MdbTbl[^!]%{1,}!--%(%d%{1,5}:%d%{1,5}%)' || { catv Z /%j; continue; }
expr "$dez" :d1 '^%(%d*%):' || { catv Z /%j; continue; }
expr "$dez" :d2 ':%(%d*%)$' || { catv Z /%j; continue; }
h1=$((16#,d1)) h2=$((16#,d2))
prints vsf03ssf03- hex "$h1" : "$h2"
conv -u hex
expr "$Z" :Z '[0-9a-fA-F]%{1,5}:[0-9a-fA-F]%{1,5}:' "$hex:"
catv Z /%j
done
><
}
return 0
}
DecrementVonBis() {
local dez=00000000000 d1=00000 d2=00000 h1=00000 h2=00000 hex=00000000000
cat $1 > bish.bak
cat $1 | {
>$1
while readl Z
do
expr "$Z" :hex 'IED-MdbTbl">%(...:...%):' || { catv Z /%j; continue; }
expr "$hex" :h1 '^%(...%):' || { catv Z /%j; continue; }
expr "$hex" :h2 ':%(...%)$' || { catv Z /%j; continue; }
let "d1=16#$h1-1" "d2=16#$h2-1"
h1=$((16#,d1)) h2=$((16#,d2))
prints vsf03ssf03- hex "$h1" : "$h2"
conv -u hex
expr "$Z" :Z '[0-9a-fA-F]%{3}:[0-9a-fA-F]%{3}:' "$hex:"
catv Z /%j
done
><
}
return 0
}
IncrementVonBis() {
local dez=00000000000 d1=00000 d2=00000 h1=00000 h2=00000 hex=00000000000
cat $1 > bish.bak
cat $1 | {
>$1
while readl Z
do
expr "$Z" :hex 'IED-MdbTbl">%(...:...%):' || { catv Z /%j; continue; }
expr "$hex" :h1 '^%(...%):' || { catv Z /%j; continue; }
expr "$hex" :h2 ':%(...%)$' || { catv Z /%j; continue; }
let "d1=16#$h1+1" "d2=16#$h2+1"
h1=$((16#,d1)) h2=$((16#,d2))
prints vsf03ssf03- hex "$h1" : "$h2"
conv -u hex
expr "$Z" :Z '[0-9a-fA-F]%{3}:[0-9a-fA-F]%{3}:' "$hex:"
catv Z /%j
done
><
}
return 0
}
IncrementVonBis "$1"
Head='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>.../schellong : Beispiele expr+catv</TITLE>
<META http-equiv="content-type" content="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; SCO_SV 3.2 i386) [Netscape]">
<META NAME="Author" CONTENT="Helmut Schellong">
<META NAME="KeyWords" CONTENT="beispiele">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#CDAA7D" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
'
set -f
set Zeile:.2000
List="$1"
catv Head
for File in $List
do
[ -s "$File" ] || { print -u2 "fehlt: '$File'"; continue; }
echo "<table bgcolor=%"#FFFFF0%" width=%"100%%%" cellpadding=%"7%">"
echo "<tr><td><font color=%"#8B3A3A%"><b><pre>"
< $File
while readl Zeile
do
expr "$Zeile" :Zeile '&' += '&'
expr "$Zeile" :Zeile '<' += '<'
expr "$Zeile" :Zeile '>' += '>'
expr "$Zeile" :Zeile '««' += '<'
expr "$Zeile" :Zeile '»»' += '>'
expr "$Zeile" :Zeile '"' += '"'
expr "$Zeile" :Zeile '¯' += '"'
expr "$Zeile" :Zeile 'ä' += 'ä'
expr "$Zeile" :Zeile 'ö' += 'ö'
expr "$Zeile" :Zeile 'ü' += 'ü'
expr "$Zeile" :Zeile 'ß' += 'ß'
expr "$Zeile" :Zeile 'Ä' += 'Ä'
expr "$Zeile" :Zeile 'Ö' += 'Ö'
expr "$Zeile" :Zeile 'Ü' += 'Ü'
expr "$Zeile" :Zeile 'yright *([cC])' = 'yright ©'
expr "$Zeile" :Zeile '(r)' += '®'
expr "$Zeile" :Zeile '©' += '©'
expr "$Zeile" :Zeile '®' += '®'
expr "$Zeile" :Zeile '[ú·]' += '·'
expr "$Zeile" :Zeile 'ù' += '.'
expr "$Zeile" :Zeile '«' += '«'
expr "$Zeile" :Zeile '»' += '»'
expr "$Zeile" :Zeile '°' += '°'
expr "$Zeile" :Zeile '±' += '±'
expr "$Zeile" :Zeile '¹' += '¹'
expr "$Zeile" :Zeile '²' += '²'
expr "$Zeile" :Zeile '³' += '³'
expr "$Zeile" :Zeile 'µ' += 'µ'
expr "$Zeile" :Zeile '¼' += '¼'
expr "$Zeile" :Zeile '½' += '½'
expr "$Zeile" :Zeile '¾' += '¾'
expr "$Zeile" :Zeile '¶' += '¶'
expr "$Zeile" :Zeile '§' += '§'
catv Zeile /%n
done
><
echo '</pre></b></font></td></tr></table><br>'
done
echo '
</BODY>
</HTML>'
readl Z0 || exit 0
catv Z0 /%n
while readl Z z
do
Z="$Z/"
cmpv Z0 Z && continue
[ $? -eq 4 ] && continue
Z0="$z"
catv Z0 /%n
done
:
TXT='Wenn Sie Dateien im Web platzieren wollen, sollten Sie zum Testen Ihrer Dateien mehr als einen Web-Browser verwenden. Verwenden Sie die weit verbreiteten Produkte wie Netscape und den Internet Explorer, wenn es irgendwie geht auch in mehreren Versionen, aber auch mal ein älteres Produkt wie etwa Mosaic. Wenn Sie die Möglichkeit haben, auf mehreren Plattformen (MS-Windows, Macintosh, Sun usw.) zu testen, machen Sie unbedingt Gebrauch davon. Und vielleicht schauen Sie sich Ihre Seiten auch mal mit einem Handheld-Computer an oder mit einer Brille, durch die Sie alles undeutlich sehen.'
RA='D_e_(allg|kamm|batt|fuse|recs)_[0-9][0-9][0-9]_(id|de) ["1-9]'
evnfile=./share/var.c
txtfile=./base/txtbase.h
htmfile=./doku/signale.htm
set N:.200 T:.200 I:.200
set n:010 t:.100 i:010
1>"$htmfile"
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title>UPC4 Signale-Beschreibungen</title>
</head>
<body style="font-family:univers,arial,helvetica,lucida,verdana">
<h2>Event-Nummer »Signaltitel« (Text-ID) und Signalbeschreibung</h2>
'
3<"$evnfile"
while readl -u3 N
do
expr "$N" :: ' EventNo%[[^][]%{1,}]=' && break
done
extern grep -E "$RA" "$txtfile" | {
while readl I && readl T
do
readl -u3 N || { print -u2 "readl N failure"; break; }
expr "$N" :n '^/[ 0-9*]%{10,12}/ %{1,3}%(%d%d%d%d%)' || { print -u2 "'$N'"; break; }
expr "$I" :i 'id %([0-9]%{4}%)' || { print -u2 "'$I'"; break; }
expr "$T" :t '"%([^"]*%)"' || { print -u2 "'$T'"; break; }
expr "$t" :t '&' += '&'
expr "$t" :t '<' += '<'
expr "$t" :t '>' += '>'
echo '<h3 style="font-family:fixedsys,''lucida console'',terminal;"><span style="color:#FF4D00;">'"$n"'</span>'
echo ' »'"$t"'« '" ($i)"'</h3>'
echo '<blockquote style="font-weight:bold; padding:9px;padding-top:0px;padding-bottom:0px;'
echo 'border:1px solid #097ca6; width:40em; background-color:#fffff0">'
echo '<p style="text-align:justify">'"T"'</p>'
echo '</blockquote>'
done
echo '</body>%n</html>'
readl T && print -u2 "'$T' überzählig"
N=''
readl -u3 N || print -u2 "readl N failure (2)"
expr "$N" :n '^/[ 0-9*]/ %{1,3}%(%d%d%d%d%)' && print -u2 "'$n' unerwartet"
}
><<
:
ip='%d%{1,3}%.%d%{1,3}%.%d%{1,3}%.%d%{1,3}'
[ -s addresses ] && remove addresses
< "$1"
while readl Z
do
ifset Z || continue
expr "$Z" :addr " %($ip%) " || continue
catv addr /%n >> addresses
done
><
gethosts <addresses >names
[ -e addresses ] && remove addresses
: > "$1a"
3<names
< "$1"
while readl Z
do
ifset Z || continue
expr "$Z" :: " $ip " || continue
readl -u3 name || break
expr "$Z" :Z " $ip " = " $name "
catv Z /%n >> "$1a"
done
><<
[ -e names ] && remove names
Head='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>.../schellong : bish-Manual (bishmnk.htm)</TITLE>
<META http-equiv="content-type" content="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; SCO_SV 3.2 i386) [Netscape]">
<META NAME="Author" CONTENT="Helmut Schellong">
<META NAME="KeyWords" CONTENT="shell,bish,bish64,bish32,sh,csh,ksh,bash,tcsh,zsh,perl,python,bourne shell,korn shell,c shell,batch,batch shell,script,scripting,programming,programmieren,programmiersprache,programming language,c,schellong,regulaere ausdruecke,regular expressions,regex,regexp,regex engine,engine,substitution,bish XRE,XRE">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#CDAA7D" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<br>
<table width="150" height="35">
<tr>
<td align=center VALIGN=CENTER BGCOLOR="#000000">
<img SRC="../cgi/icnt.cgi?0.0.d7.b000000.fffffff" height=18 width=84 align=CENTER>
<img SRC="../cgi/icnt.cgi?0.15.i8x12.d6.b000000.fffffff" height=12 width=48 align=CENTER>
</td>
</tr>
</table>
'
cd /u/bish/man
Ziel=/u/hp/2/de/htm/bishmnk.htm
set Zeile:.2000
List='bish.mnk cat.mnk crc.mnk cut.mnk
echo.mnk expr.mnk grep.mnk line.mnk
wc.mnk rel.mnk tr.mnk test.mnk
tee.mnk man.mnk xregexp.mnr regexp.mnr ansi.mnr
readc.mnk bgrep.mnk calc.mnk cmp.mnk comx.mnk
dat.mnk dd.mnk hx.mnk ov.mnk
pg.mnk timex.mnk touch.mnk vi.mns bish.mnv'
catv Head > $Ziel
echo '<a name="topp"></a><br><br>' >> $Ziel
echo '<h1>Manuals zur bish</h1>' >> $Ziel
echo '<table bgcolor="#EEEEE0" width="100%" cellpadding="10"><tr><td>' >> $Ziel
for File in $List
do
expr "$File" :Name '^%(..*%)%.mn.$' || continue
expr "$File" :Man '%(.%)$' || continue
conv -u Man
echo "<font size=%"+1%"><a href=%"#$Name$Man%">$Name($Man)</a></font><br>" >> $Ziel
done
echo '<br>Copyright © 1995-2015 Helmut Schellong<br>' >> $Ziel
echo '</td></tr></table><br>' >> $Ziel
for File in $List
do
[ -s "$File" ] || { print -u2 "fehlt: '$File'"; continue; }
expr "$File" :Name '^%(..*%)%.mn.$' || continue
expr "$File" :Man '%(.%)$' || continue
conv -u Man
echo "<a name=%"$Name$Man%"></a><br>" >> $Ziel
echo '<h1><a href="#topp">^</a></h1>' >> $Ziel
echo "<table bgcolor=%"#FFFFF0%" width=%"100%%%" cellpadding=%"7%">" >> $Ziel
echo "<tr><td><font color=%"#8B3A3A%"><b><pre>" >> $Ziel
echo $File ...
< $File
while readl Zeile
do
expr "$Zeile" :Zeile '&' += '&'
expr "$Zeile" :Zeile '<' += '<'
expr "$Zeile" :Zeile '>' += '>'
expr "$Zeile" :Zeile '««' += '<'
expr "$Zeile" :Zeile '»»' += '>'
expr "$Zeile" :Zeile '"' += '"'
expr "$Zeile" :Zeile '¯' += '"'
expr "$Zeile" :Zeile 'ä' += 'ä'
expr "$Zeile" :Zeile 'ö' += 'ö'
expr "$Zeile" :Zeile 'ü' += 'ü'
expr "$Zeile" :Zeile 'ß' += 'ß'
expr "$Zeile" :Zeile 'Ä' += 'Ä'
expr "$Zeile" :Zeile 'Ö' += 'Ö'
expr "$Zeile" :Zeile 'Ü' += 'Ü'
expr "$Zeile" :Zeile 'yright *([cC])' = 'yright ©'
expr "$Zeile" :Zeile '(r)' += '®'
expr "$Zeile" :Zeile '©' += '©'
expr "$Zeile" :Zeile '®' += '®'
expr "$Zeile" :Zeile '[ú·]' += '·'
expr "$Zeile" :Zeile 'ù' += '.'
expr "$Zeile" :Zeile '«' += '«'
expr "$Zeile" :Zeile '»' += '»'
expr "$Zeile" :Zeile '°' += '°'
expr "$Zeile" :Zeile '±' += '±'
expr "$Zeile" :Zeile '¹' += '¹'
expr "$Zeile" :Zeile '²' += '²'
expr "$Zeile" :Zeile '³' += '³'
expr "$Zeile" :Zeile 'µ' += 'µ'
expr "$Zeile" :Zeile '¼' += '¼'
expr "$Zeile" :Zeile '½' += '½'
expr "$Zeile" :Zeile '¾' += '¾'
expr "$Zeile" :Zeile '¶' += '¶'
expr "$Zeile" :Zeile '§' += '§'
catv Zeile /%n >> $Ziel
done
><
echo '</pre></b></font></td></tr></table><br>' >> $Ziel
done
echo '
</BODY>
</HTML>' >> $Ziel
PDIR="/fat/cie/mc/c"
PROJ="mu2000 upc3"
DATA="cfgdata.c mesdata.c"
TEXT="texts256.h"
TEXDIR="/fat/cie/mc/doc/fw_pdf/kap"
TEXFIL="paramlst.tex"
CHAP="Parameter-Listen"
LANG=de
NL='
'
set -f
set BUFpbn:.30000 BUFqual:.20000 FLAGS:.2500 Z:.200
set TXT:.100 SECT:.100 MU:.20 PRJ:.20 DAT:.100 FILE:.100
set Oid:020 Oadr:05 Olen:03 Onbit:03 Obitpos:03 Oxflg:015 Oflags:.100
set Otyp:.30 Odstg:.30 Oinfo1:.5 Oinfo2:05 Oparbn:05 Onelem:05 Ovoffs:.40 Oacc:.8
set Qtyp:.5 Qdstg:.10
set Odfstr:.100 Odf:024 Omi:024 Oma:024 Oname:.40 Oeinh:.30 Oinfo:.100
set OTinfo:.6500 OTgrp:.100 OTsgrp:.100 OTbit:.20000 OText:.200
set OTPinfo:.1000 OTPbit:.2000
set Snstruct:05 Snelem:06 Snbit:06 Snchar:.07
IVals=0 OT1info=0 OT1bit=0
Grp0=-0001 Grp=00000
BUFpbn= BUFqual=
GetFlags() {
local num=0000 sym:.15 txt:.100
F="$TEXDIR/idsys.tex"
FLAGS=
<$F
while readl Z
do
expr "$Z" :: '^%%++FLG--%%$' || continue
break
done
while readl Z
do
expr "$Z" :: '^%%++FLG--%%$' && break
expr "$Z" :num '^ *%(%d%{1,2}%) *& *%w%{2,} *& *[^ ]' || continue
expr "$Z" :sym '^[^&]%{1,}& *%(%w%{2,}%)' || continue
expr "$Z" :txt '^[^&]%{1,}&[^&]%{1,}& *%(.*[^\ ]%)[\ ]*$' || continue
conv -t' `' txt
FLAGS="$FLAGS$num $sym $txt$NL"
done
><
return 0
}
GetFlags
SetObj() {
local fn=000 fsym:.16
let ++Snstruct
Oflags=
for 14 Oid Oadr Olen Onbit Obitpos Oxflg %
Otyp Odstg Oinfo1 Oinfo2 Oparbn Onelem Ovoffs Oacc in $Z
do done
let 'Snelem+=Onelem' 'Snbit+=Onbit*Onelem'
expr "000000000$Oid" :Oid '%(%d%{10}%)$'
expr "$Oid" :Grp '^%d%d%(%d%{3}%)%d%{5}$'
expr "$Oid" :Oid '^%(%d%)%(%d%)%(%d%{3}%)%(%d%{5}%)$' '%1.%2.%3.%4'
expr "$Oxflg" :Oxflg '%(%d%{8}%)'
expr "$Oacc" :Oacc '%([0-9A-Fa-f]%{4}%)'
for n from 0 to 31 repeat
do
let "16#$Oxflg&1<<$n" || continue
for 3 fn fsym - in $FLAGS
do
[ fn -eq n ] || continue
Oflags="$Oflags \,$fsym"
[ "$fsym" == IVALS ] && IVals=1
done
done
conv -D' 'D\D, Oflags
conv -d"'" Otyp
Qtyp="$Otyp"
case "$Otyp" in
s) Otyp=string ;;
i) Otyp="±dec" ;;
u) Otyp=dec ;;
x) Otyp=hex ;;
b) Otyp=dual ;;
esac
conv -d"'" Odstg
Qdstg="$Odstg"
case "$Odstg" in
[1-4]) expr "xxxxx.yyyyy" :Odstg '%(x%{'"$((5-Odstg))"'}%.y%{'"$Odstg"'}%)';;
m) Odstg="x/60";;
/) Odstg="x/10";;
%%) Odstg="V.vv";;
esac
return 0
}
SetDflt() {
local nam:.15 v:015
if [ "$1" -ge 1 ]
then
Odfstr="$2"
[ "$1" -ge 2 ] && Odfstr="MAKRO()$Odfstr"
Odf= Omi= Oma=
else
for 3 Odf Omi Oma in $Z
do done
for nam in Odf Omi Oma
do
if expr "${{nam}}" :: '^[0-9-]'
then
conv -u $nam
case "$Qdstg" in
[1-4]) expr "$Qtyp" :: '^[iu]$' &&
[ Odf -ne 0 -o Omi -ne 0 -o Oma -ne 0 ] &&
DarstXpY $nam ;;
m) let "$nam/=60";;
/) let "$nam/=10";;
%%) v=${{nam}} $nam=$((v/100)).$((v%100))
expr "${{nam}}" :$nam '%.%(%d%)$' '.0%1';;
esac
else
$nam="MAKRO()${{nam}}"
fi
done
Odfstr=
fi
return 0
}
SetName() {
for 2 - Oname in $Z
do done
[ "$Oname" == 0 ] && { Oname=; return 1; }
expr "$Oname" :Oname '%([A-Za-z_].*%)$'
return 0
}
SetEinh() {
Oeinh="$1"
return 0
}
SetInfo() {
Oinfo="$1"
conv -d' 't', ' Oinfo
return 0
}
DarstXpY() {
local d=$Qdstg nam:.15 s=+
for nam in $*
do
ifset $nam || continue
s='' expr "${{nam}}" :$nam '^-' = '' && s=-
expr "00000${{nam}}" :$nam '^0*%(%d%{1,}%)%(%d%{'"$d"'}%)$' '%1.%2'
$nam="$s${{nam}}"
done
return 0
}
ToTex() {
local typ=$1 nam:.15
shift
for nam in $*
do
ifset $nam || continue
case "$typ" in
s)
expr "${{nam}}" :$nam '%([ &$#{}_%]%)' + '\%1'
expr "${{nam}}" :$nam '[\ ]%{1,}$' = '\textvisiblespace{}'
expr "${{nam}}" :$nam '°C' += '\textcelsius{}'
expr "${{nam}}" :$nam '±' += '\textpm{}'
;;
d)
expr "${{nam}}" :$nam '^-%([^-]%)' '--%1'
expr "${{nam}}" :$nam '0X%([0-9A-F]%{1,}%)' && $nam="${{nam}}\Sub{H}"
;;
a)
expr "${{nam}}" :$nam ' ' += '\, '
;;
esac
expr "${{nam}}" :$nam '^MAKRO()' = '' && $nam="${{nam}}\Sup{M}"
done
return 0
}
GetIText() {
local cstr=' "%(.*%)" *$'
local de='^ *# *define *'"$3_$4_$5"' *".*" *$'
local en='^ *# *define *'"$3_$4_en"' *".*" *$'
local ll='^ *# *define *'"$3_%d%d%d_%l%l"' *".*" *$'
local d3='^ *# *define *'"$3_%(%d%d%d%)_%l%l"' *".*" *$'
local l2='^ *# *define *'"$3_%d%d%d_%(%l%l%)"' *".*" *$'
local txt:.100 n=$4 n0=$4 l=$5 z=0 nz=0
let ++n
expr "000$n" :n '%(%d%{3}%)$'
local en1='^ *# *define *'"$3_${n}_en"' *".*" *$'
$2=''
txt="`grep -m -e "$de" $TXT`" ||
txt="`grep -m -e "$en" $TXT`" || { print -ru2 "$de"; return 1; }
if [ "$1" == one ]
then
expr "$txt" :$2 "$cstr"
else
if grep -qm -e "$en1" $TXT
then
txt=OTP$1 expr "${{txt}}" :: " $3_$4 " && goend
txt=
grep -e "$ll" $TXT | {
while readl Z
do
expr "$Z" :n "$d3" || continue
expr "$Z" :l "$l2" || continue
case $z in
0) [ "$n" != "$n0" ] && continue
z=1 txt="$Z" continue ;;
1) [ "$n" != "$n0" ] && goend
[ "$l" == en ] && txt="$Z"
[ "$l" == $5 -a "$l" != en ] &&
expr "$Z" :: "$cstr" && txt="$Z"
continue ;;
esac
expr "$txt" :txt "$cstr"
ifset txt && { let ++nz; catv txt /%n =:,,$2; }
n0=$n txt="$Z"
done
}
expr "$txt" :txt "$cstr"
ifset txt && { let ++nz; catv txt /%n =:,,$2; }
let "nz>8" && catv ." $3_$4 " =:,,OTP$1
else
OT1$1=1
expr "$txt" :$2 "$cstr"
fi
fi
return 0
}
SetIText() {
local info:06 grp:06 sgrp:06 bit:06 ext:06
local ot:.10 o:.10
for 5 OTinfo OTgrp OTsgrp OTbit OText in $Z
do done
for 2 ot o in OTinfo info OTgrp grp OTsgrp sgrp OTbit bit OText ext
do
[ "${{ot}}" == 0 ] && $ot= continue
expr "${{ot}}" :$o '+%(%d%{1,3}%)$'
expr "000${{o}}" :$o '%(%d%{3}%)$'
expr "${{ot}}" :$ot '^T%(%w%{1,}%)'
case "$o" in
grp|sgrp|ext) GetIText one $ot "D${{ot}}" ${{o}} $1 ;;
info|bit) GetIText $o $ot "D${{ot}}" ${{o}} $1 ;;
esac
done
return 0
}
WriteTex() {
local num=0000 qual:.15 sg=0 sgt='\Pt ' psgt='\\'
local p1='\color[rgb]{1,0.2,0}' p2='\color{black}'
if [ Grp -ne Grp0 ]
then
Grp0=$Grp
echo "%n\subsubsection{$OTgrp}%n"
fi
let "Snchar+=${#OTgrp}+${#OTsgrp}+${#OText}"
ToTex s OTgrp OTsgrp OText Odfstr Otyp Odstg Oname Oeinh
if [ $1 -eq 0 -a Olen -eq 0 -a Odf -eq 0 -a Omi -eq 0 -a Oma -eq 0 ]
then Odf=-- Omi=-- Oma=--
else ToTex d Odf Omi Oma
fi
ToTex a Oinfo
ifset OTsgrp || sgt= psgt=
if [ Oparbn -gt 0 ]
then catv Oparbn .' ' MU .' ' Oid .' ' OText /%n =:,,BUFpbn
else p1= p2=
fi
if ifset Oflags
then
for qual in BAK DFLTC HOLD UROOT UHW USYS UCAL
do
expr "$Oflags" :: '%<'"$qual"'%>' || continue
catv qual .' ' Oid .' ' OText /%n =:,,BUFqual
done
else Oflags=--
fi
let "${#OTgrp}+${#OTsgrp}>48" && sg=1 sgt=
ifset Oname || Oname=--
[ $2 -eq 0 ] && Oeinh=--
catv .'\begin{tabular}{|c|c|c|c|c|c|}' /%n
catv .'\hline' /%n
if [ sg -eq 0 ]
then
catv .'\Pl{Gruppe}&\multicolumn{5}{|c|}{' OTgrp sgt OTsgrp .'}\\' /%n
else
catv .'\Pl{Gruppe}&\multicolumn{5}{|c|}{' OTgrp .'}\\' /%n
catv .'\cline{1-1}' /%n
catv .'\Pl{Subgruppe}&\multicolumn{5}{|c|}{' OTsgrp .'}\\' /%n
fi
catv .'\hline' /%n
catv .'\Pl{Param\,Text}&\multicolumn{5}{|c|}{' OText .'}\\' /%n
catv .'\hline' /%n
catv .'{\small\pid}&\Pl{Typ}&\Pl{Dstg}&\Pl{Länge}&{\small\pbn}&\Pl{Elemente}\\' /%n
catv .'\hline' /%n
catv Oid .'&' Otyp .'&' Odstg .'&' Olen .'&' p1 Oparbn p2 .'&' Onelem '/\\%n'
catv .'\hline' /%n
if [ $1 -eq 0 ]
then
catv .'\Pl{Default}&\Pl{Min}&\Pl{Max}&\Pl{Einheit}&\Pl{Bits}&\Pl{Bit\,Pos}\\' /%n
catv .'\hline' /%n
catv Odf .'&' Omi .'&' Oma .'&' Oeinh .'&' Onbit .'&' Obitpos '/\\%n'
else
catv .'\multicolumn{3}{|c|}{\Pl{Default}}&\Pl{Einheit}&\Pl{Bits}&\Pl{Bit\,Pos}\\' /%n
catv .'\hline' /%n
catv .'\multicolumn{3}{|c|}{' Odfstr .'}&' Oeinh .'&' Onbit .'&' Obitpos /'\\%n'
fi
catv .'\hline' /%n
catv .'\Pl{Symbol}&\Pl{Zgrf}&\multicolumn{3}{|c|}{\Pl{Flags}}&\Pl{Adresse}\\' /%n
catv .'\hline' /%n
catv .'{\footnotesize ' Oname .'}&' Oacc .'&\multicolumn{3}{|c|}{\small ' Oflags .'}&' Oadr /'\\%n'
[ $3 -gt 0 -a IVals -gt 0 ] && {
catv .'\hline' /%n
catv .'\Pl{Auswahlwerte}&\multicolumn{5}{|c|}{' Oinfo .'}\\' /%n
}
ifset OTbit && [ OT1bit -eq 1 ] && {
let "Snchar+=${#OTbit}"
ToTex s OTbit
catv .'\hline' /%n
catv .'\Pl{Bit\,Info}&\multicolumn{5}{|c|}{\T{' OTbit .'}}\\' /%n
}
ifset OTinfo && [ OT1info -eq 1 ] && {
let "Snchar+=${#OTinfo}"
ToTex s OTinfo
catv .'\hline' /%n
catv .'\Pl{Info\,Text}&\multicolumn{5}{|c|}{\T{' OTinfo .'}}\\' /%n
}
catv .'\hline' /%n
catv .'\end{tabular}' '/%n%n\bigskip%n'
if ifset OTinfo && [ OT1info -eq 0 ]
then
echo '\udp{Info\,Text}%n'
echo '\begin{quote}%n\raggedright'
readv OTinfo =Z
while readv
do
let "Snchar+=${#Z}"
ToTex s Z
catv .'\texttt{' Z /'}\\%n'
done
readv -=
echo '\end{quote}%n%n\bigskip%n'
fi
if ifset OTbit && [ OT1bit -eq 0 ]
then
echo '\udp{Bit\,Info}%n'
echo '\begin{list}{}{\listlens[1.5em]{888.}\itemsep-1.3ex}'
num=-1
readv OTbit =Z
while readv
do
let ++num
let "Snchar+=${#Z}"
ToTex s Z
catv ."\item [\B{$num}] \texttt{" Z /'}%n'
done
readv -=
echo '\end{list}%n%n\bigskip%n'
fi
return 0
}
WriteQual() {
local qual:.15 id:.15 prj="$PRJ"
conv -l prj
catv BUFqual | sortl -f1,2 | {
echo '%n\subsection{Parameter-Qualifizierungen}'
echo '\label{paramlst:qual.'"$prj"'}%n'
echo '\begin{list}{}{\listlens{\Pl{UROOT}}\itemsep-1.0ex}'
while readl Z
do
expr "$Z" :qual '^%(%w%{1,}%) '
expr "$Z" :Z '^%w%{1,} ' = ''
expr "$Z" :id '^%([0-9.]%{1,}%) '
expr "$Z" :Z '^[0-9.]%{1,} ' = ''
catv .'\item[\Pl{' qual .'}]\makebox[\wofid][r]{' id .'}\hspace{1em}' Z /'%n'
done
echo '\end{list}'
echo '\clearpage%n'
}
return 0
}
WritePBN() {
local pbn:05 mu:.15 id:.15
catv BUFpbn | sortl -f1n,2 | {
>>$TEXDIR/$TEXFIL
echo '%n\section{\pbn{} -- Parameterbezeichnungsnummern}'
echo '\label{paramlst:pbn}%n'
echo '\begin{list}{}{\listlens{\B{44444}}\itemsep-1.0ex}'
while readl Z
do
expr "$Z" :pbn '^%(%d%{1,}%) '
expr "$Z" :Z '^%d%{1,} ' = ''
expr "$Z" :mu '^%(%w%{1,}%) '
expr "$Z" :Z '^%w%{1,} ' = ''
expr "$Z" :id '^%([0-9.]%{1,}%) '
expr "$Z" :Z '^[0-9.]%{1,} ' = ''
catv .'\item[\B{' pbn .'}]\makebox[\wofmu][r]{\Pl{' mu .'}}' %
.'\hspace{1em}\makebox[\wofid][r]{' id .'}\hspace{1em}' Z /'%n'
done
echo '\end{list}'
echo '\clearpage%n'
><
}
return 0
}
WriteCmds() {
echo '\newcommand{\Pl}[1]{{\small\sffamily\bfseries #1}}'
echo '\newcommand{\Pt}{\hspace{1.1em}$\lozenge$\hspace{1.1em}}'
echo '\newlength{\wofmu}\settowidth{\wofmu}{\Pl{MU2000}}'
echo '\newlength{\wofid}\settowidth{\wofid}{4.4.444.44444}'
echo '\newlength{\wofqual}\settowidth{\wofqual}{\Pl{UROOT}}'
return 0
}
Statistik() {
echo '
\begin{tabular}{rl}
'"$Snstruct"'& Strukturen \\
'"$Snelem"'& Elemente \\
'"$Snbit"'& Bedeutungs\,Bits \\
'"$Snchar"'& Textzeichen\Sub{\,IT} \,('"$LANG"') \\
\end{tabular}
'
return 0
}
local s=0 e=0 i=0 ztyp:.10 dfstr:.50 einh:.12 info:.100
>$TEXDIR/$TEXFIL
echo "%n\chapter{$CHAP}%n\label{paramlst}%n"
WriteCmds
for PRJ in $PROJ
do
SECT="$PRJ" conv -u SECT; MU="$SECT"
echo "\section{$SECT}%n"
TXT=$PDIR/$PRJ/$TEXT
BUFqual=
for DAT in $DATA
do
expr "$DAT" :: '^cfg' && SECT="Konfiguration"
expr "$DAT" :: '^mes' && SECT="Meßwerte"
echo "\subsection{$SECT}%n"
OTPbit= OTPinfo=
Snstruct=0 Snelem=0 Snbit=0 Snchar=0
FILE=$PDIR/$PRJ/$DAT
<$FILE
while readl Z
do
expr "$Z" :dfstr ' S%d%{10}..= *"%([^"]*%)";' && { s=1 continue; }
expr "$Z" :dfstr ' S%d%{10}..= *%(%w%w*%);' && { s=2 continue; }
expr "$Z" :einh ' E%d%{10}..= *"%([^"]*%)";' && { e=1 continue; }
expr "$Z" :info ' I%d%{10}..= *"%([^"]*%)";' && { i=1 continue; }
expr "$Z" :ztyp '^ *# *define *D%d%{10}%(%w%{3,7}%) ' || continue
expr "$Z" :Z '^ *# *define *D%d%{10}%w%{3,7}%(.*%)$' || continue
conv -d' 't', ' Z
case "$ztyp" in
grp) s=0 e=0 i=0 IVals=0 OT1bit=0 OT1info=0 ;;
obj) SetObj ;;
str) continue ;;
dfmima) SetDflt $s "$dfstr" ;;
szname) SetName ;;
einhtxt) [ e -eq 0 ] && einh=
SetEinh "$einh" ;;
info) [ i -eq 0 ] && info=
SetInfo "$info" ;;
Text) SetIText $LANG; WriteTex $s $e $i ;;
esac
done
><
echo "\clearpage%n"
echo "\subsubsection{STATISTIK}%n"
Statistik
echo "\clearpage%n"
done
ifset BUFqual && WriteQual
done
><
ifset BUFpbn && WritePBN
exit 0
DT=181297024000
ADT=`dat`
dat $DT
MD a:\bin
MD a:\man
MD a:\doc
dat $ADT
COPY c:\bish\vk\zuerst.txt a:\
COPY c:\bish\vk\version.txt a:\
COPY c:\bish\vk\sharewar.txt a:\
COPY c:\bish\bish.tar a:\
COPY c:\bish\start.bat a:\
COPY c:\bish\start.bish a:\
COPY c:\bish\bish.pif a:\
COPY c:\bish\bishs.exe a:\bish.exe
COPY c:\wapi\bish\manw.exe a:\
COPY c:\bish\bin\l.exe a:\bin
COPY c:\bish\bin\readc.com a:\bin
COPY c:\bish\bin\ov.com a:\bin
COPY c:\bish\doc\bish.mnk a:\doc
COPY c:\bish\doc\bish.mnv a:\doc
: >a:\man\bish.mnk
touch /$DT a:\*.txt
touch /$DT a:\start.* a:\bish.tar a:\bish.pif
touch /$DT a:\bish.exe a:\manw.exe a:\bish.pif
touch /$DT a:\bin\*
touch /$DT a:\doc\* a:\man\bish.mnk
DIR a:\
cd /u/sh/bish || exit
>skripte.bish
for FF in $( echo /fat/cie/mc/c/mu2000/*.bish %
./tape*.bish /fat/cie/bish/*.bish | sortl | uniq )
do
expr "$FF" :F '%([^/*?]%{1,}%)$' || continue
echo "%n%n### $F #############################################%n"
cat $FF | tr -d ''
done
><
:
cd /u/sh/bish || exit
set -f
set Z:.200 Ze:.200
AllPaths() {
list -fR /u | {
while read Z
do
expr Z cbv:: '%.bish$' || continue
print -r "$Z"
done
}
list -fR /u | {
while read Z
do
expr Z cbv:: '%.cgi$' || continue
grep -qm '^#NOTINLIST' "$Z" && continue
print -r "$Z"
done
}
list -fR /u | {
while read Z
do
expr Z cbv:: '/[^./]%{1,}$' || continue
catv 50,0 =Ze: < "$Z"
expr "$Ze" :Ze '^%([a-zA-Z_0-9/.]%{4,}%)' || continue
expr Ze v:: '/bish$' || continue
print -r "$Z"
done
}
list -fR /fat/cie | {
while read Z
do
expr Z cbv:: '%.bish$' || continue
print -r "$Z"
done
}
return 0
}
Split() {
local name:.50 size:020 time:020
while readl Z
do
expr Z vbc:: '/skripte.%{0,2}%.bish$' && continue
expr Z vbc:: '01G[a-zA-Z_0-9.]%{3,}$' && continue
expr Z vbc:: '[ %t]' && { print -ru2 "! $Z !"; exit 1; }
expr Z vbc:name '/%([^/]%{5,}%)$'
fstat -smv size time "$Z"
catv Z /%t time /%t size /%t name /%n
done
return 0
}
Sort() {
sortl -f4,3nr,2n,1
return 0
}
Uniq() {
local path:.200 time:020 size:020 name:.50
local size0:020 name0:.50 lz:32.100 n:020
while read path time size name
do
if cmpv name name0
then
[ size -eq size0 -o size -le 0 ] && continue
let "size0/$size.0<1.05" && continue
fi
name0="$name"
size0="$size"
let "n=60-${#path}" "n= n<1?1:n"
catv path n,lz time /%t size /%t name /%n
done
return 0
}
Output() {
local path:.200 name:.50
print "%n#NOTINLIST%n"
while read path - - name
do
print "%n%n### $name #############################################%n"
cat "$path"
done
return 0
}
AllPaths | Split | Sort | Uniq | Output | tr -d ''
:
set -f
N=-001
while readl Z
do
let ++N; prints vsf03 N $N
prints s-25s-27ss14 '//' '"' '<' '"'
prints sssss '#define D_xxxxxx_' $N '_en ' "%"$Z" '"'
done
:
ziel=/nsmail/Outbox
asubst='mmmmm@ttttt'
echo $ziel $asubst
read "adrf? Adressenfile Maildummyfile: " mailf
prints vs300 zeile
grep -e '|[^@]%{1,}@[^@]%{4,}|' $adrf |
while readl zeile
do
expr "$zeile" :ema '|%([^|]%{3,}%)|'
echo $ema
3< $mailf
>> $ziel
while readl -u3 zeile
do
expr "$zeile" :zeile "$asubst" = "$ema"
catv zeile /%j
done
catv /%j
><<
done
NL="
"
li=0
n=0
<def.h
while read Z
do expr "$Z" :: 'BUILDs' && break; done
while read Z
do
expr "$Z" :: '^//' || break
ifset t && ifset Z || break
expr "$Z" :: '^//-%{50,}' && {
ifset t && { t="$t</li>$NL</ol>$NL"; T$n="$t"; let ++n; }
t="<ol>$NL" li=
continue
}
expr "$Z" :b '^//--> %{1,}%([0-9, ]%{1,}%)' && { B$n="$b"; continue; }
expr "$Z" :v '^//--> %{1,}V[^0-9]%{2,}%([0-9.]%{1,}%)' && { V$n="$v"; continue; }
expr "$Z" :Z '^//%(.*%)$'
expr "$Z" :Z '&' += '&'
expr "$Z" :Z '<' += '<'
expr "$Z" :Z '>' += '>'
if expr "$Z" :: '^[^ ]'
then
ifset li && t="$t</li>$NL"
t="$t<li>" li=1
else
expr "$Z" :Z '^ %{1,}%(.*%)$'
fi
t="$t$Z<br>$NL"
done
><
v=
for t from 0 to $n repeat
do
ifset T$t || continue
ifset V$t && v="$V[t]"
ifset V$t || V$t="$v" G$t=1
done
>tdsver.htm
catv '.<!--[NEW]-->' /%n
catv '.<table width="100%" cellpadding="10" cellspacing="2"><tbody>' /%n
for n from $n by -1 to 0 repeat
do
ifset T$n || continue
h1='<h1>'
ifset G$n && h1='<h1 style="color: rgb(160,160,0);">'
catv '.<tr><td bgcolor="#a2b5cd" width="15%" valign="top" align="center">' %
/%n h1 V$n '.</h1><h3>' B$n '.</h3></td>' /%n
catv '.<td bgcolor="#fffff0" width="85%">' /%n T$n '.</td></tr>' /%n
done
catv '.</tbody></table>' /%n
catv '.<!--[/NEW]-->' /%n
><
NL="
"
li=0
n=0
<def.h
while read Z
do expr "$Z" :: 'BUILDs' && break; done
while read Z
do
expr "$Z" :: '^//' || break
ifset t && ifset Z || break
expr "$Z" :: '^//-%{50,}' && {
ifset t && { t="$t</li>$NL</ol>$NL"; T$n="$t"; let ++n; }
t="<ol>$NL" li=
continue
}
expr "$Z" :b '^//--> %{1,}%([0-9, ]%{1,}%)' && { B$n="$b"; continue; }
expr "$Z" :v '^//--> %{1,}V[^0-9]%{2,}%([0-9.]%{1,}%)' && { V$n="$v"; continue; }
expr "$Z" :Z '^//%(.*%)$'
expr "$Z" :Z '&' += '&'
expr "$Z" :Z '<' += '<'
expr "$Z" :Z '>' += '>'
if expr "$Z" :: '^[^ ]'
then
ifset li && t="$t</li>$NL"
t="$t<li>" li=1
else
expr "$Z" :Z '^ %{1,}%(.*%)$'
fi
t="$t$Z<br>$NL"
done
><
v=
for t from 0 to $n repeat
do
ifset T$t || continue
ifset V$t && v="$V[t]"
ifset V$t || V$t="$v" G$t=1
done
>neu2000.htm
catv '.<!--[NEW]-->' /%n
catv '.<table width="100%" cellpadding="10" cellspacing="2"><tbody>' /%n
for n from $n by -1 to 0 repeat
do
ifset T$n || continue
h1='<h1>'
ifset G$n && h1='<h1 style="color: rgb(160,160,0);">'
catv '.<tr><td bgcolor="#a2b5cd" width="15%" valign="top" align="center">' %
/%n h1 V$n '.</h1><h3>' B$n '.</h3></td>' /%n
catv '.<td bgcolor="#fffff0" width="85%">' /%n T$n '.</td></tr>' /%n
done
catv '.</tbody></table>' /%n
catv '.<!--[/NEW]-->' /%n
><
NL="
"
li=0
n=0
<$1
while read Z
do expr "$Z" :: 'BUILDs' && break; done
while read Z
do
expr "$Z" :: '^//' || break
ifset t && ifset Z || break
expr "$Z" :: '^//-%{50,}' && {
ifset t && { t="$t</li>$NL</ol>$NL"; T$n="$t"; let ++n; }
t="<ol>$NL" li=
continue
}
expr "$Z" :b '^//--> %{1,}%([0-9, ]%{1,}%)' && { B$n="$b"; continue; }
expr "$Z" :v '^//--> %{1,}V[^0-9]%{2,}%([0-9.]%{1,}%)' && { V$n="$v"; continue; }
expr "$Z" :Z '^//%(.*%)$'
expr "$Z" :Z '&' += '&'
expr "$Z" :Z '<' += '<'
expr "$Z" :Z '>' += '>'
if expr "$Z" :: '^[^ ]'
then
ifset li && t="$t</li>$NL"
t="$t<li>" li=1
else
expr "$Z" :Z '^ %{1,}%(.*%)$'
fi
t="$t$Z<br>$NL"
done
><
v=
for t from 0 to $n repeat
do
ifset T$t || continue
ifset V$t && v="$V[t]"
ifset V$t || V$t="$v" G$t=1
done
>__neu
catv '.<table width="100%" cellpadding="10" cellspacing="2"><tbody>' /%n
for n from $n by -1 to 0 repeat
do
ifset T$n || continue
h1='<h1>'
ifset G$n && h1='<h1 style="color: rgb(160,160,0);">'
catv '.<tr><td bgcolor="#a2b5cd" width="15%" valign="top" align="center">' %
/%n h1 V$n '.</h1><h3>' B$n '.</h3></td>' /%n
catv '.<td bgcolor="#fffff0" width="85%">' /%n T$n '.</td></tr>' /%n
done
catv '.</tbody></table>' /%n
><
:
start=0
inc=1
muster='@'
width=2
fill=' '
neq=1
nnot=1
[ -t 0 ] &| expr "$1" :: '[^0-9-]' && {
print -u2 ninc.bish: usage: start inc|inc.neq|inc-nnot muster [-]width fillchar
exit 0
}
[ $# -gt 0 ] && {
[ -n "$1" ] && start="$1"
[ -n "$2" ] && inc="$2"
[ -n "$3" ] && muster="$3"
width="$4"
fill="$5"
}
ifset fill && fill="f$fill"
expr "$width" :width '^-' = '' && sign=-
expr "$inc" :neq '%d%.%(%d%{1,}%)'
expr "$inc" :nnot '%d-%(%d%{1,}%)'
expr "$inc" :inc '^%(%d%{1,}%)'
neqd=$neq
nnotd=1
cat | {
while readl Z
do
prints "vs$sign$fill"$width subst "$start"
expr "$Z" :: "$muster" || { catv Z /%j; continue; }
let "--nnotd>0" && { catv Z /%j; continue; }
expr "$Z" :Z "$muster" += "$subst" && {
let "--neqd==0" && let "start+=inc" "neqd=neq"
nnotd=$nnot
}
catv Z /%j
done
}
exit 0
start=0
inc=1
muster='@'
width=2
fill=' '
neq=1
[ -t 0 ] &| expr "$1" :: '[^0-9-]' && {
print -u2 ninc.bish: usage: start inc.neq muster width fillchar
exit 0
}
[ $# -gt 0 ] && {
[ -n "$1" ] && start="$1"
[ -n "$2" ] && inc="$2"
[ -n "$3" ] && muster="$3"
width="$4"
fill="$5"
}
ifset fill && fill="f$fill"
expr "$width" :width '^-' = '' && sign=-
expr "$inc" :neq '%d%.%(%d%{1,}%)'
expr "$inc" :inc '^%(%d%{1,}%)'
neqd=$neq
cat | {
while readl Z
do
prints "vs$sign$fill"$width subst "$start"
expr "$Z" :Z "$muster" = "$subst" && {
let "--neqd==0" && let "start+=inc" "neqd=neq"
}
catv Z /%j
done
}
exit 0
start=0
inc=1
muster='@'
width=2
fill=' '
[ -t 0 ] &| expr "$1" :: '[^0-9-]' && {
print -u2 ninc.bish: usage: start inc muster width fillchar
exit 0
}
[ $# -gt 0 ] && {
[ -n "$1" ] && start="$1"
[ -n "$2" ] && inc="$2"
[ -n "$3" ] && muster="$3"
width="$4"
fill="$5"
}
ifset fill && fill="f$fill"
cat | {
while readl Z
do
prints "vs$fill"$width subst "$start"
expr "$Z" :Z "$muster" = "$subst" && let "start+=inc"
catv Z /%j
done
}
exit 0
[ -t 0 ] && { echo "norm.bish < if [> of]"; exit; }
Max() {
local nam=$1 max=000000000000000
local v=$max
shift
for v in $*
do
let "v>max" && max=$v
done
$nam=$max
return 0
}
Max100() {
local v=000000000000 i=0
Max Maxv $*
global
array 1 7 V $*
local
let "Maxv==100" && return 0
for v in $*
do
let "++i, v*=100, v/=Maxv"
V[i]=$v
done
return 0
}
array 1 7 S 0 0 0 0 0 0 0
N=000
while readl Z
do
ifset Z || continue
expr "$Z" :z ' %([0-9][ 0-9]*%)' || continue
expr "$Z" :p '%([^ ].*[^ ]%) ' || continue
let ++N
Max100 $z
prints s-45s5s5s5s5s5s5s5 "$p" $V1 $V2 $V3 $V4 $V5 $V6 $V7
let "S1+=V1,S2+=V2,S3+=V3,S4+=V4,S5+=V5,S6+=V6,S7+=V7"
done
echo
prints s5s5s5s5s5s5s5 $S1 $S2 $S3 $S4 $S5 $S6 $S7
Max100 $S1 $S2 $S3 $S4 $S5 $S6 $S7
prints s5s5s5s5s5s5s5 $V1 $V2 $V3 $V4 $V5 $V6 $V7
: > urls
3< /media/ns/comm47/netscape
< pos
while readl num
do
catv $num,256,3 | tr '\0[\1-\31][\128-\255]' '\10[ *]' |
catv =url:
expr "$url" :url '^%([^%n]*%)'
expr "$url" :: ' ' && continue
[ "$url" == "http://" ] && continue
echo "$num $url" >> urls
done
><<
3<> /media/ns/comm47/netscape
< urls
while read num url new
do
ifset new || continue
echo "$num $url $new"
catv new /%0 =$num,,3
done
><<
num=000
cat texte.c | {
: > texte.c
while readl zeile
do
expr "$zeile" :zeile '^/%*000' = "/*$num" && {
let ++num
let "num<100" && num=0$num
let "num< 10" && num=0$num
}
print -r "$zeile" >> texte.c
done
}
for n from 0 to 255 repeat
do
prints ssf03ssf03s "#define O" $n ' "\' $((8#, n)) '"'
done
array p %f %F %a %A %x %X %d %D %e %E
i=00000
echo $#
[ $# -lt 5 ] && i=6
for O in $@
do
let ++i
print -r "$O"
done
Osterdatum() {
local J=$1 a:010 b:010 c:010 d:010 e:010 f:010 g:010
local h:010 i:010 k:010 l:010 m:010 n:010 o:010
((
a=J % 19,
b=J / 100,
c=J % 100,
d=b / 4,
e=b % 4,
f=(b + 8) / 25,
g=(b - f + 1) / 3,
h=(19 * a + b - d - g + 15) % 30,
i=c / 4,
k=c % 4,
l=(32 + 2 * e + 2 * i - h - k) % 7,
m=(a + 11 * h + 22 * l) / 451,
n=(h + l - 7 * m + 114) / 31,
o=(h + l - 7 * m + 114) % 31,
Monat=n,
Ostersonntag=o+1
))
return $o
}
Osterdatum $1
echo "Ostersonntag $1: $Ostersonntag.$Monat."
set -f
set Z:.300 FILE:.200
R=0 C='%e[7m%e[1m' D='%e[0m%e[1m'
expr $(ver s) :: '^dos' || C='' D=''
Overlap() {
local a:010 a0:010 n:010 n0:010 r=0
while read a n
do
let "a<n0" && { echo "$C$FILE: ADDR $a overlaps $a0!$D"; r=1; }
n0=$n a0=$a
done
echo $a $n
return $r
}
PrintArgs() {
local id:010 adr:010 next:06 padd:05
local bytelen=000 flags:.10 arr:05
while read id - adr - - - - - bytelen - - - - - - - %
flags - - - - - - - -
do
expr "$id" :: '^%$' && break
expr "$id" :: '^[@x-]%d%{8,10}$' || continue
expr "$flags" :padd 'p%(%d%{1,5}%)' || padd=0
expr "$flags" :arr '[AS]%(%d%{1,4}%)' || arr=1
let "next=adr+bytelen*arr+padd"
echo $adr $next
done
return 0
}
Check() {
PrintArgs | sortl -fn1 | Overlap || return 1
return 0
}
for FILE in $*
do
< $FILE
if Check
then echo "$C$FILE: No overlapping address.$D"
else R=1
fi
><
done
return $R
for 3 g n nn in REC 96 192 DCC 64 128 INV 32 32 STS 1 8 MMB 2 4 BMB 2 8 %
DEB 2 4 RYB 2 4 FMB 4 8 FAN 16 32 XXX 16 32 UMD 4 16
do
for 3 t l ll in TYP 16 16 MAT 16 16 SNO 16 16 HID 8 8 SID 8 8 IND 16 16
do
echo $g $t $((n*[ll-l]+[nn-n]*ll))
done
done
[ -d /u/bin ] && {
cp /u/bin/htpasswd adm
cp /u/bin/bish_folso_cgi /u/bin/mailcode cgi
cp /u/bin/bish_folso_cgi cgi/bish_root
}
ln ./cgi/main.cgi ./cgi/new.cgi
ln ./cgi/main.cgi ./cgi/adm.cgi
rg=wheel
chown -R www .
chgrp -R www .
list -Rpf . |
while readl F
do
expr "$F" :: '/DB/' && continue
expr "$F" :: '/DB[^/]*/' && continue
expr "$F" :: '/db/' && continue
echo $F
expr "$F" :: '%.cgi$' && { chmod 710 $F; continue; }
expr "$F" :: '%.gif$' && { chmod 400 $F; continue; }
expr "$F" :: 'perm.bish$' && { chmod 710 $F; continue; }
expr "$F" :: 'bish_' && { chmod 100 $F; continue; }
chmod 600 $F
done
chown root adm/.wmspw adm/htpasswd cgi/NULL adm/syscmd.bish cgi/bish_root
chgrp $rg adm/.wmspw adm/htpasswd cgi/NULL adm/syscmd.bish cgi/bish_root
chmod 644 adm/.wmspw
chmod 555 adm/htpasswd
chmod 755 adm/syscmd.bish
chmod 111 cgi/bish_root
chmod 755 adm/rxtx.bish
chmod u+s,g+s adm/htpasswd adm/syscmd.bish adm/rxtx.bish cgi/bish_root
chmod 100 cgi/mailcode
chmod 444 cgi/NULL
chmod 600 cgi/null
ln hlp/help.htm.de hlp/help.htm.en
cd /u/hp/2
Files=$( find . '(' -name '*.htm' -o -name '*.pl' -o -name '*.txt' ')' -print )
echo $Files
read -
Files=$( grep -lm '%.pl' $Files )
echo $Files
read inp
prints vs500 zeile
for f in $Files
do
echo $f ...
cat $f | {
> $f
while readl zeile
do
ifset zeile || { catv /%n ; continue; }
expr "$zeile" :zeile '%<cie%.pl%>' += cie.cgi
expr "$zeile" :zeile '%<cntadm%.pl%>' += cntadm.cgi
expr "$zeile" :zeile '%<coltaB%.pl%>' += coltaB.cgi
expr "$zeile" :zeile '%<gcnt%.pl%>' += gcnt.cgi
expr "$zeile" :zeile '%<get%.pl%>' += get.cgi
expr "$zeile" :zeile '%<icnt%.pl%>' += icnt.cgi
expr "$zeile" :zeile '%<icntget%.pl%>' += icntget.cgi
expr "$zeile" :zeile '%<icntvw%.pl%>' += icntvw.cgi
catv zeile /%n
done
><
}
done
d=/u/hp/2/de/cgi
for f in cie cntadm coltaB gcnt get icnt icntget icntvw
do
[ -s $d/$f.pl ] && mv $d/$f.pl $d/$f.cgi
done
<$1
while readl Z
do
expr "$Z" :: '^"Aktien";"' || continue
conv '-t _d"t; ' Z
for 22 art isin name anz kenng bkurs eur bwert eur bdat kurs eur wert eur vtch eur vtchp diff eur diffp limu limo in $Z
do
conv -'t_ ' name
conv -d.t,. bwert wert
printf '%s %7.2f%s %s\n' "$bdat" $(-bc -e"scale=20;(($wert/$bwert)-1)*100" -e'quit') '%' "$name"
done
done
><
Hosts='
securepop.t-online.de:995 schellong@t-online.de "xxxxxxxxx"
'"$KUNDENSERVER1"'
'"$KUNDENSERVER2"'
'"$KUNDENSERVER3"'
'"$KUNDENSERVER4"'
pop.t-online.de x "."
pop.gmx.net . "."
pop.gmx.net u "."
'
Cols=090
Help='
I holt nur die Anzahl und ByteSumme
i holt die komplette Info-Liste
Versteckte Menü-Punkte:
help
H host (pop.t-online.de)
H ? {Host-Liste; siehe Hosts='' im Script}
H n {Selektiert Host/User/Pass n}
U user (.)
P pass (.)
q quiet
B bodylines (0)
C columns (80)
All
ed (Unix:vi, Win:notepad)
(Voreinstellungen)
'
[ $# -eq 1 ] &&
expr "$1" :: '[?/]' &|
expr "$1" :: '^-[hH]' && {
echo " pop.bish
pop.bish Host
pop.bish Host User
pop.bish Host User 'Password'
$Help"
exit
}
set -f
set Z:.1200
set Subj:.512
set From:.512
mktemp Tmp
echo "$Tmp"
Nmax=00000
Body=' '
Q=1
Trans=0000000
Size=0000000000
[ $# -gt 0 -a "$1" != '-a' ] && Host="$1" shift
[ $# -gt 0 -a "$1" != '-a' ] && User="$1" shift
[ $# -gt 0 -a "$1" != '-a' ] && Pass="$1" shift
ifset Host || Host="securepop.t-online.de:995"
ifset User || User="schellong@t-online.de"
ifset Pass || Pass="xxxxxxxxx"
Hostaddr() {
local hostname="$1" port=00000
IP="???.???.???.???:00000"
expr "$hostname" :port ':%([0-9]%{1,5}%)$' || port=''
expr "$hostname" :hostname '^%([^:]%{4,}%)'
[ $# -ne 1 ] && return 1
hostaddr "$hostname" | {
[ $? -ne 0 ] && return 2
while readl Z
do
[ Q -eq 0 ] && catv Z /%j
expr "$Z" :IP '^addr: %([0-9.]%{7,15}%)' && break
done
}
expr "$IP" :: '^[0-9.]%{7,15}$' || return 3
ifset port && IP="$IP:$port"
return 0
}
Hostaddr $Host || { print -u2 "'$Host'?!"; exit 1; }
Hosts() {
local n=000
catv Hosts | {
while readl Z
do
expr "$Z" :: '[a-zA-Z0-9_.-]%{4,}' || continue
let ++n
[ "$1" == '?' ] && { catv /%t n '.: ' Z /%j; continue; }
let "$1!=n" && continue
expr "$Z" :Host '%([^ %t]%{4,}%)' || break
expr "$Z" :User '[^ %t]%{4,}[ %t]%{1,}%([^ %t]%{1,}%)' || break
expr "$Z" :Pass '[ %t]"%(.%{1,}%)"[ %t]*$'
break
done
}
return 0
}
Holen() {
local c=unknown n=00000 m=- t:9.1
Trans=0
3> "$Tmp"
pop3 $1 $Body $IP "$User" "$Pass" | {
while readl Z
do
let "Trans+=${#Z}+2"
[ Q -eq 0 ] && catv $Cols,Z /%j
case "$Z" in
QUIT|STAT|LIST|UIDL)
c="$Z" Subj= From= conv -l c; continue;;
TOP% [0-9]*) c=topn m=- expr "$Z" :n '%([0-9]%{1,}%)'
[ Q -gt 0 ] && let 'n%25==0' && prints su2s6s- T "$n" ""
continue;;
esac
case "$c" in
stat) expr "$Z" :Nmax '%([0-9]%{1,}%) *[0-9]%{1,}'
expr "$Z" :Size '[0-9]%{1,} *%([0-9]%{1,}%)' ;;
list) expr "$Z" :n '^ *%([0-9]%{1,}%) *[0-9]%{1,} *$' ||
continue
[ n -le 0 ] && continue
[ Q -gt 0 ] && let 'n%25==0' && prints su2s6s- L "$n" ""
prints vs-20s-75s-2s-520s-520 Z "$Z" '' - '' ''
catv Z /%r%n =$(([n-1]*[20+75+2+520+520+2])),,3
continue
;;
uidl) expr "$Z" :n '^ *%([0-9]%{1,}%) *[!-~]%{1,} *$' ||
continue
[ n -le 0 ] && continue
expr "$Z" :Z '^ *[0-9]%{1,} *%([!-~]%{1,}%) *$'
[ Q -gt 0 ] && let 'n%25==0' && prints su2s6s- U "$n" ""
prints vs-75 Z "$Z"
catv Z =$(([n-1]*[20+75+2+520+520+2]+20)),,3
continue
;;
topn) expr "$Z" =:Subj '^Subject: %(.*%)$' && continue
expr "$Z" =:From '^From: %(..*%)$' && continue
expr "$Z" =:: '^Content-Type: text/plain' && m=t continue
expr "$Z" =:: '^Content-Type: text/html' && m=H continue
expr "$Z" =:: '^Content-Type: multipart/' && m=M continue
expr "$Z" :: '^.$' && { c=ende
let 'n>0' && let '--n'
conv "-t %`t${t}%`" Subj From
ifset Subj || Subj='"?"'
ifset From || From='"?"'
prints vs-2s-520s-520 Z "$m" "$Subj" "$From"
catv Z =$((n*[20+75+2+520+520+2]+20+75)),,3
continue
}
;;
*) : ;;
esac
done
}
><
echo
[ -s "$Tmp" ] || return
cat "$Tmp" | tr -s ' ' ' ' > "$Tmp"
return 0
}
Loeschen() {
[ $# -lt 2 -o Nmax -lt 1 ] && return 20
local lz=tHM- t=...... von=000000000 bis=000000000
local a:.25
expr "$*" :: '^[lh] *[1-9][0-9 -]*$' && t=vb
[ "$t" != vb ] && {
t=''
for a in "$2" "$3"
do
expr "$a" :: '^[tHM-]%{1,4}$' && t="${t}mt"
expr "$a" :bis '^%.%([0-9]%{1,}%)$' && t="${t}sz" von=0
expr "$a" :von '^%([0-9]%{1,}%)%.$' && t="${t}sz" bis=100000000
expr "$a" :: '^[0-9]%{1,}%.[0-9]%{1,}$' && t="${t}sz" &&
expr "$a" :von '^%([0-9]%{1,}%)' &&
expr "$a" :bis '%([0-9]%{1,}%)$'
done
}
case "$t" in
vb) GetIDs vb $( MkNs $* ) | { nop && pop3 - $IP "$User" "$Pass"; }
;;
mt) [ "$1" == l ] && lz="$2"
[ "$1" == h ] && expr "$lz" :lz "[$2]" += ''
ifset lz || return 0
GetIDs mt $1 "$lz" | { nop && pop3 - $IP "$User" "$Pass"; }
;;
sz) GetIDs sz $1 $von $bis | { nop && pop3 - $IP "$User" "$Pass"; }
;;
mtsz)
[ "$1" == l ] && lz="$2"
[ "$1" == h ] && expr "$lz" :lz "[$2]" += ''
GetIDs ts $1 $von $bis "$lz" | { nop && pop3 - $IP "$User" "$Pass"; }
;;
szmt)
[ "$1" == l ] && lz="$3"
[ "$1" == h ] && expr "$lz" :lz "[$3]" += ''
GetIDs ts $1 $von $bis "$lz" | { nop && pop3 - $IP "$User" "$Pass"; }
;;
*) return 21 ;;
esac
Nmax=? Size=? Trans=?
return 0
}
MkNs() {
[ $# -lt 2 ] && return 1
local n:010 nm=00000 nmax=$Nmax lh=$1
shift
let 'nmax>0' || return 1
if [ "$lh" == l ]
then
for n in $*
do
expr "$n" :: '-' || { echo "$n"; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do echo "$n"; done
done
else
for nm from 1 to $nmax repeat
do
for n in $*
do
expr "$n" :: '-' || { let 'n==nm' && continue 2; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do
let 'n==nm' && continue 3
done
done
echo "$nm"
done
fi
return 0
}
GetIDs() {
[ $# -gt 1 ] || { print -u2 narg le 0; return 1; }
[ -s "$Tmp" ] || { print -u2 TmpSz eq 0; return 2; }
local r=1 t=.. s=000000000 a:.20 id:.70
[ $2 == l ] && a="s>=$3 && s<=$4"
[ $2 == h ] && a="s<$3 || s>$4"
< "$Tmp"
case "$1" in
vb) shift
while read s - id - - -
do
expr " $* " :: "[ %t]${s}[ %t]" && r=0 catv id /%n
done
;;
mt) while read - - id t - -
do
expr "$3" :: "$t" && r=0 catv id /%n
done
;;
sz) while read - s id - - -
do
expr "$s" :: '[^0-9]' && continue
let "$a" && r=0 catv id /%n
done
;;
ts) while read - s id t - -
do
expr "$s" :: '[^0-9]' && continue
expr "$5" :: "$t" && let "$a" && r=0 catv id /%n
done
;;
esac
><
return $r
}
Show() {
[ -s "$Tmp" ] || return 1
local n=00000 sz:010 m=-
local ls=30 lf=29
let 'Cols>80' && let 'lf+=(Cols-80)/2' 'ls+=Cols-80-(lf-29)'
< "$Tmp"
while read n sz - m Subj From
do
conv '-t` ' Subj From
prints s5bs9bsbs-${ls}bss-${lf} $n $sz $m "$Subj" ' ' "$From"
done
><
return 0
}
MainSwitch() {
case "$Opt" in
i) Holen
[ "$1" != '--a' ] && Show ;;
I) Holen -s ;;
l|h)
ifset Arg || return 0
[ "$Opt" == l -a "$Arg" == '*' ] && Arg="1-$Nmax"
Loeschen $Opt $Arg || echo ERROR$?: Args? Info-Liste?
;;
All)
read "Arg? Alles Löschen?[jJyY]: "
expr "$Arg" :: '^[jJyY]$' || return 0
pop3 -A $IP "$User" "$Pass" ;;
U) User="$Arg" ;;
P) Pass="$Arg" ;;
B) Q=0 Body=-b$Arg ;;
C) Cols="$Arg"
let 'Cols<80' && Cols=80 ;;
H) L_ip=$IP
ifset Arg || Arg=securepop.t-online.de:995
[ "$Arg" == '?' ] && { Hosts '?'; return 0; }
expr "$Arg" :: '^[0-9]%{1,2}$' && { Hosts $Arg; Arg="$Host"; }
Hostaddr $Arg && Host="$Arg" return 0
IP=$L_ip print -u2 "'$Arg'?!"
;;
help)
print -rn "$Help" ;;
q) let "Q^=1" ;;
ed)
[ `ver s` == dos32 ] && notepad "$Tmp"
[ `ver s` == unix ] && vi "$Tmp"
read "-? <Enter> "
;;
E) return 1;;
*) return 0;;
esac
return 0
}
L_ip=000000000000000
L_ip=$IP
Nmax=? Size=? Trans=?
[ "$1" == '-a' ] && {
[ $# -lt 3 ] && { remove -s "$Tmp"; exit 0; }
Opt=I MainSwitch -a
let "Nmax>9||Nmax>5&&Size>500000" &&
Opt=i MainSwitch -a &&
Opt="$2" Arg="$3 $4" MainSwitch -a
remove -s "$Tmp"
exit 0
}
while prints sf_$Cols
echo " $IP $Host $User '$Pass' n=$Nmax b=$Size t=$Trans q=$Q
Info-Liste holen : i | I
Loeschen : l {n|v-b}... | * | tHM- | {min.max|min.|.max}
Halten : h {n|v-b}... | tHM- | {min.max|min.|.max}
Beenden : E
_%b%c"
do
read Opt Arg
MainSwitch || break
done
remove -s "$Tmp"
exit 0
[ $# -eq 1 ] &&
expr "$1" :: '[?/]' &|
expr "$1" :: '^-[hH]' && {
echo " pop.bish
pop.bish Host
pop.bish Host User
pop.bish Host User 'Password'
Menü+: U user
Menü+: P pass"
exit
}
set f
Tmp=/tmp/bish_pop3
Nmax=0000
[ $# -gt 0 ] && Host="$1"
ifset Host || Host="pop.t-online.de"
[ $# -gt 1 ] && User="$2"
ifset User || User=.
[ $# -gt 2 ] && Pass="$3"
ifset Pass || Pass=.
Z="$( hostaddr $Host )" || { print -u2 "'$Host'?!"; exit 1; }
catv Z |
while readl Z
do
expr "$Z" :IP '^addr: %([0-9.]%{7,15}%)' && break
done
Zapp() {
local n=0000
cat $1 | {
> $1
while readl Z
do
expr "$Z" :n '%([0-9]%{1,}%)' || { catv Z /%n; continue; }
let "n!=$2" && { catv Z /%n; continue; }
catv Z "/ $3" /%n
done
><
}
return 0
}
Holen() {
local c=unknown n=0000 m=-
: > $Tmp
pop3 $IP "$User" "$Pass" | {
while readl Z
do
catv 80,Z /%j
ifset Z || continue
expr "$Z" =:: '^QUIT$' && c=quit
expr "$Z" =:: '^STAT$' && c=stat
expr "$Z" =:: '^LIST$' && c=list
expr "$Z" =:: '^UIDL$' && c=uidl
expr "$Z" =:n '^TOP %([0-9]%{1,}%)' && c=topn m=-
case "$c" in
stat) expr "$Z" :Stat '%([0-9]%{1,} *[0-9]%{1,}%)' ;;
list) expr "$Z" :: '^ *[0-9]%{1,} *[0-9]%{1,} *$' &&
catv Z /%n >> $Tmp
;;
uidl) expr "$Z" :: '^ *[0-9]%{1,} *[!-~]%{1,} *$' &&
Zapp $Tmp $Z
;;
topn) expr "$Z" =:Subj '^Subject: %(.*%)$'
expr "$Z" =:From '^From: %(..*%)$'
expr "$Z" =:: '^Content-Type: multipart/' && m=M
expr "$Z" :: '^.$' && { c=ende
conv '-t _' Subj From
Zapp $Tmp $n $m
Zapp $Tmp $n $Subj
Zapp $Tmp $n $From
}
;;
*) : ;;
esac
done
}
expr "$Stat" :Nmax '%([0-9]%{1,}%) *[0-9]%{1,}'
return 0
}
Loeschen() {
[ $# -lt 2 ] && return 1
pop3 $IP "$User" "$Pass" $( GetIDs $( MkNs $* ) )
return $?
}
MkNs() {
[ $# -lt 2 ] && return 1
local n:010 nm=0000 nmax=$Nmax lh=$1
shift
let 'nmax>0' || return 1
if [ "$lh" == l ]
then
for n in $*
do
expr "$n" :: '-' || { echo $n; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do echo $n; done
done
else
for nm from 1 to $nmax repeat
do
for n in $*
do
expr "$n" :: '-' || { let 'n==nm' && continue 2; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do
let 'n==nm' && continue 3
done
done
echo $nm
done
fi
return 0
}
GetIDs() {
[ -s "$Tmp" -o $# -eq 0 ] || return 1
expr "$*" :: '[^0-9 ]' && return 2
local n=0000 id:.70
< $Tmp
while read n - id - - -
do
expr " $* " :: " $n " && echo $id
done
><
return 0
}
Show() {
[ -s "$Tmp" ] || return 1
local n=0000 sz:010 m=- id:.70 sbj=.140 frm:.140
< $Tmp
while read n sz id m sbj frm
do
prints s3bs9bsbs-33bs-29 $n $sz $m "$sbj" "$frm"
done
><
return 0
}
while echo "
%t$IP $Host $User '$Pass' $Stat
%tInfo-Liste holen : i
%t Loeschen : l * | {num | von-bis}...
%t Halten : h {num | von-bis}...
%t Beenden : E
%t _%b%c"
do
read Opt Arg
case "$Opt" in
i) Holen; Show ;;
l|h)
ifset Arg || continue
[ "$Opt" == l -a "$Arg" == '*' ] && Arg="1-$Nmax"
expr "$Arg" :: '[^0-9 -]' && continue
expr "$Arg" :: '[^0-9]-' && continue
expr "$Arg" :: '-[^0-9]' && continue
Loeschen $Opt $Arg ;;
U) User="$Arg";;
P) Pass="$Arg";;
E) break;;
*) continue;;
esac
done
exit 0
[ $# -eq 1 ] &&
expr "$1" :: '[?/]' &|
expr "$1" :: '^-[hH]' && {
echo " pop.bish [-qQ]
pop.bish [-qQ] Host
pop.bish [-qQ] Host User
pop.bish [-qQ] Host User 'Password'
Menü+: U user
Menü+: P pass
Menü+: B bodylines
Menü+: C columns
Menü+: All"
exit
}
set f
set Z:.512
mktemp Tmp
echo "$Tmp"
Nmax=00000
Cols=080
Body=' '
Q=0
[ "$1" == -q ] && Q=1 shift
[ "$1" == -Q ] && Q=2 shift
[ $# -gt 0 ] && Host="$1"
[ $# -gt 1 ] && User="$2"
[ $# -gt 2 ] && Pass="$3"
ifset Host || Host="pop.t-online.de"
ifset User || User=.
ifset Pass || Pass=.
hostaddr $Host | {
[ $? -ne 0 ] && { print -u2 "'$Host'?!"; exit 1; }
while readl Z
do
expr "$Z" :IP '^addr: %([0-9.]%{7,15}%)' && break
done
}
Zapp() {
local n=0000
cat $1 | {
> $1
while readl Z
do
expr "$Z" :n '%([0-9]%{1,}%)' || { catv Z /%n; continue; }
let "n!=$2" && { catv Z /%n; continue; }
catv Z ". $3" /%n
done
><
}
return 0
}
Holen() {
local c=unknown n=0000 m=- t:9.1
: > "$Tmp"
pop3 $Body $IP "$User" "$Pass" | {
while readl Z
do
[ Q -eq 0 -o Q -eq 1 -a $c != list -a $c != uidl -a $c != topn ] &&
catv $Cols,Z /%j
expr "$Z" =:: '^QUIT$' && c=quit
expr "$Z" =:: '^STAT$' && c=stat
expr "$Z" =:: '^LIST$' && c=list
expr "$Z" =:: '^UIDL$' && c=uidl
expr "$Z" =:n '^TOP %([0-9]%{1,}%)' && c=topn m=-
case "$c" in
stat) expr "$Z" :Stat '%([0-9]%{1,} *[0-9]%{1,}%)' ;;
list) expr "$Z" :: '^ *[0-9]%{1,} *[0-9]%{1,} *$' &&
catv Z /%n >> "$Tmp"
;;
uidl) expr "$Z" :: '^ *[0-9]%{1,} *[!-~]%{1,} *$' &&
Zapp "$Tmp" $Z
;;
topn) expr "$Z" =:Subj '^Subject: %(.*%)$'
expr "$Z" =:From '^From: %(..*%)$'
expr "$Z" =:: '^Content-Type: text/plain' && m=t
expr "$Z" =:: '^Content-Type: text/html' && m=H
expr "$Z" =:: '^Content-Type: multipart/' && m=M
expr "$Z" :: '^.$' && { c=ende
conv "-t _t${t}_" Subj From
Zapp "$Tmp" $n "$m $Subj $From"
}
;;
*) : ;;
esac
done
}
expr "$Stat" :Nmax '%([0-9]%{1,}%) *[0-9]%{1,}'
return 0
}
Loeschen() {
[ $# -lt 2 -o Nmax -lt 1 ] && return 1
GetIDs $( MkNs $* ) | pop3 $IP "$User" "$Pass"
Nmax=00000
return $?
}
MkNs() {
[ $# -lt 2 ] && return 1
local n:010 nm=00000 nmax=$Nmax lh=$1
shift
let 'nmax>0' || return 1
if [ "$lh" == l ]
then
for n in $*
do
expr "$n" :: '-' || { echo "$n"; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do echo "$n"; done
done
else
for nm from 1 to $nmax repeat
do
for n in $*
do
expr "$n" :: '-' || { let 'n==nm' && continue 2; continue; }
expr "$n" :n '-' = ' to ' || continue
for n from $n repeat
do
let 'n==nm' && continue 3
done
done
echo "$nm"
done
fi
return 0
}
GetIDs() {
[ $# -gt 0 ] || { print -u2 narg le 0; return 1; }
[ -s "$Tmp" ] || { print -u2 TmpSz eq 0; return 2; }
expr "$*" :: '[^0-9%t ]' && { print -u2 "wrong arg '$*'"; return 3; }
local n=00000 id:.70
< "$Tmp"
while read n - id - - -
do
expr " $* " :: "[ %t]${n}[ %t]" && catv id /%n
done
><
return 0
}
Show() {
[ -s "$Tmp" ] || return 1
local n=00000 sz:010 m=-
local ls=31 lf=29
let 'Cols>80' && let 'lf+=(Cols-80)/2' 'ls+=Cols-80-(lf-29)'
< "$Tmp"
while read n sz - m Subj From
do
prints s5bs9bsbs-${ls}bs-${lf} $n $sz $m "$Subj" "$From"
done
><
return 0
}
while prints sf_$Cols
echo "%t$IP $Host $User '$Pass' n+bsum: $Stat
%tInfo-Liste holen : i
%t Loeschen : l * | {num | von-bis}...
%t Halten : h {num | von-bis}...
%t Beenden : E
%t _%b%c"
do
read Opt Arg
case "$Opt" in
i) Holen; Show ;;
l|h)
ifset Arg || continue
[ "$Opt" == l -a "$Arg" == '*' ] && Arg="1-$Nmax"
expr "$Arg" :: '[^0-9 -]' && continue
expr "$Arg" :: '[^0-9]-' && continue
expr "$Arg" :: '-[^0-9]' && continue
Loeschen $Opt $Arg || echo ERROR: Args? Info-Liste?
;;
All)
read "Arg? Alles Löschen?[jJyY]: "
expr "$Arg" :: '^[jJyY]$' || continue
pop3 -A $IP "$User" "$Pass" ;;
U) User="$Arg";;
P) Pass="$Arg";;
B) Body="-b$Arg";;
C) Cols="$Arg"
let 'Cols<80' && Cols=80;;
E) break;;
*) continue;;
esac
done
remove -s "$Tmp"
exit 0
N=3000
Head='Return-Path: <schellong@t-online.de>
Received: from t-online.de (0522284540-0001@[217.0.157.82]) by fwd10.sul.t-online.com
with esmtp id 183z8r-155vs0C; Tue, 22 Oct 2002 15:32:17 +0200
Message-ID: <3DB55360.8030809@t-online.de>
Date: Tue, 22 Oct 2002 15:32:16 +0200
From: schellong@t-online.de (Helmut Schellong)
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.1) Gecko/20020925
X-Accept-Language: en-us, en, de
MIME-Version: 1.0
To: Helmut Schellong <schellong@t-online.de>
Subject: Test
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-Sender: 0522284540-0001@t-dialin.net
.
'
echo "+OK T-Online POP3 Server fpopd ready.
USER .
+OK Ok.
PASS .
+OK Ok.
STAT
+OK $N $((N*5000))
LIST
+OK $N messages."
for n from 1 to $N repeat
do echo $n 5000; done
echo .
echo "UIDL
+OK Ok."
for n from 1 to $N repeat
do echo $n skdjeof${n}sehhdwlf; done
echo .
for n from 1 to $N repeat
do
echo "TOP $n 0%n+OK Ok."
catv Head
done
echo "QUIT%n+OK closing."
Dir="$(prints s120-)"
F="$(prints s80-)"
liste="$(prints s150-)"
vorne="$(prints s80-)"
funam="$(prints s80-)"
Zeile="$(prints s500-)"
[ $# -lt 1 ] && Dir=.
[ $# -ge 1 ] && Dir="$1"
[ "$Dir" == . ] && Dir=$(pwd)
conv -F/F\ Dir
[ -d "$Dir" ] || { echo "Keine Existenz: '$Dir'!"; exit 1; }
cd "$Dir"
echo Verzeichnis: $Dir
: *.c
[ $] -lt 1 ] && { echo "Keine *.c vorhanden!"; exit 1; }
echo "
#if !defined(PROTO_H)
# define PROTO_H
" > _prototypes.h
for F in *.c
do
echo "%t$F"
: > c.tmp
< "$F"
while readl Zeile
do
expr "$Zeile" :: '[ %t*][a-zA-Z_][a-zA-Z_0-9]*(.*)[ %t]*$' && {
expr "$Zeile" :Zeile '%t' + ' '
expr "$Zeile" :Zeile '^ *%(..*%)$'
expr "$Zeile" :Zeile '^%(..*)%) *$'
print -r "$Zeile" >> c.tmp
continue
}
expr "$Zeile" :: '[ %t*][a-zA-Z_][a-zA-Z_0-9]*(.*)[ %t]*/[*/].*$' && {
expr "$Zeile" :Zeile '^%(.*[ %t*][a-zA-Z_][a-zA-Z_0-9]*(.*)%)[ %t]*/[*/].*$'
expr "$Zeile" :Zeile '%t' + ' '
expr "$Zeile" :Zeile '^ *%(..*%)$'
expr "$Zeile" :Zeile '^%(..*)%) *$'
print -r "$Zeile" >> c.tmp
}
done
><
: > c2.tmp
< c.tmp
while readl Zeile
do
liste= funam= vorne=
expr "$Zeile" :liste '[ *][a-zA-Z_][a-zA-Z_0-9]*(%(.*%))$' || continue
expr "$Zeile" :Zeile '^%(.*[ *][a-zA-Z_][a-zA-Z_0-9]*%)(.*)$' || continue
expr "$Zeile" :funam '[ *]%([a-zA-Z_][a-zA-Z_0-9]*%)$' || continue
[ "$funam" == if -o %
"$funam" == for -o %
"$funam" == while -o %
"$funam" == do -o %
"$funam" == switch -o %
"$funam" == else ] && continue
expr "$Zeile" :vorne '^%(.*[ *]%)[a-zA-Z_][a-zA-Z_0-9]*$' || continue
expr "$vorne" :: '[^* %t_a-zA-Z0-9]' && continue
expr "$vorne" :: '__interrupt' && continue
expr "$liste" :liste '^ *%(.*%)$'
expr "$liste" :liste '^%(.*%) *$'
expr "$liste" :liste ' %{2,%}' + ' '
expr "$liste" :liste ', ' + ','
expr "$liste" :liste ' ,' + ','
expr "$vorne" :vorne '^ *' ''
expr "$vorne" :vorne ' *$' ''
expr "$vorne" :vorne ' %{2,%}' + ' '
expr "$liste" :liste '%*[][a-zA-Z_0-9]%{1,%}$' '*'
expr "$liste" :liste ' [][a-zA-Z_0-9]%{1,%}$' ''
expr "$liste" :liste '%*[][a-zA-Z_0-9]%{1,%},' + '*,'
expr "$liste" :liste ' [][a-zA-Z_0-9]%{1,%},' + ','
expr "$liste" :liste ',%([^ %t]%)' + ', %1'
expr "$liste" :: '[^ %t]' || liste=void
expr "$vorne" :vorne ' %(%*%{1,%}%)$' '%1'
Zeile="$vorne $funam"
expr "$Zeile" :Zeile '%*%* ' '**'
expr "$Zeile" :Zeile '%* ' ' *'
print "%textern $Zeile($liste);" >> c2.tmp
done
><
cat c2.tmp > c.tmp
echo "//$F:" >> _prototypes.h
cat c.tmp >> _prototypes.h
done
echo "
#endif
" >> _prototypes.h
remove c2.tmp c.tmp
read "-?bish:$0: <Enter> "
echo rand.txt
> rand.txt
to 25000 repeat
do
echo $RANDOM%n$RANDOM%n$RANDOM%n$RANDOM%n$RANDOM
echo $RANDOM%n$RANDOM%n$RANDOM%n$RANDOM%n$RANDOM
done
><
echo "rand.txt-->rand.int"
< rand.txt
> rand.int
while readl num
do
base -10 num +l
done
><<
echo "rand.int-->quicksort()-->rando.int"
qs < rand.int > rando.int
echo "rando.int-->rando.txt"
offs=0
< rando.int
> rando.txt
while catv $offs,4,0 =num:
do
base -l num +10
let "offs+=4"
done
><<
echo rand.txt:sort:randoo.txt
sort -b -n < rand.txt > randoo.txt
Z=0000000000000000000000000000000000000000000000000000000000000000000
to 1000000 repeat
do
echo $RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM
done
echo schrift RCDATA PRELOAD PURE
echo BEGIN
for FN in $*
do
cat $FN | rcdat
done
echo END
echo STRINGTABLE PURE
echo BEGIN
N=1
echo "$N, %"$#%""
for FN in $*
do
((++N))
NAM=`expr $FN : '.*/%(..*%)%.'`
expr $FN :: '..*mn[a-zA-Z]$' && {
rc=`expr $FN : '..*mn%(.%)$'`
conv -u rc
NAM="$NAM($rc)"
}
echo "$N, %"$NAM%""
((++N))
NZ=`wc -l $FN`
echo "$N, %"$NZ%""
done
((++N))
for FN in $*
do
cat $FN | rcstr -$N
NZ=`wc -l $FN`
((N+=NZ))
done
echo END
sfn=1
>../bish/manw$sfn.str
echo STRINGTABLE PURE
echo BEGIN
N=1
echo "$N, %"$#%""
for FN in $*
do
((N=N+1))
NAM=`expr $FN : '.*/%(..*%)%.'`
expr $FN :: '..*mn[a-zA-Z]$' && {
rc=`expr $FN : '..*mn%(.%)$'`
conv -u rc
NAM="$NAM($rc)"
}
echo "$N, %"$NAM%""
((N=N+1))
NZ=`wc -l $FN`
echo "$N, %"$NZ%""
done
((N=N+1))
nn=0
for FN in $*
do
[ $nn -ge 4000 ] && {
echo END
><
((sfn=sfn+1))
>../bish/manw$sfn.str
echo STRINGTABLE PURE
echo BEGIN; nn=0
}
cat $FN | rcstr -$N
NZ=`wc -l $FN`
((N=N+NZ ; nn=nn+NZ))
done
echo END
><
set Z:.250
[ "$1" == v ] && {
set F:.250000
catv =F <bish.c
readv 0,237747,F =Z
to 100 repeat
do
readv 0,,F
while readv
do
nop
done
done
}
[ "$1" == l ] && {
to 100 repeat
do
<bish.c
while readl Z
do
nop
done
><
done
}
:
PSS='soft ug_soll t_ug_s'
PSSK='
utk ugs_bc ug_max ugs_ub_diff
ug_strt ug_start
inh_bc inertia ug_res
proz_kap proz_kap_s proz_kap_ss
ilade ilade_s ilade_ss
'
set Z:.300
set F:.50
set N:.50
for F in *.[chCH] ???base.txt
do
[ -s $F ] || continue
expr "$F" =:: '^mb.*%.h$' && continue
expr "$F" =:: '^t' && continue
print -u2n "%t$F"
n=0
cat $F | {
>$F
while readl Z
do
ifset Z || { catv /%n; continue; }
for N in $PSS
do
expr "$Z" :Z '%<PSS%.'"$N"'%>' += "Reg.$N" && let ++n
done
for N in $PSSK
do
expr "$Z" :Z '%<PSS%.K%(%[[^][.]%{1,}]%.%)'"$N"'%>' + 'Reg.K%1'"$N" &&
let ++n
done
catv Z /%n
done
><
}
echo %t$n
done
exit 0
menu.c 0
def.h 3
key.c 0
init.c 0
req.c 0
proto.h 0
atp.c 0
maschine.c 56
cfg.h 0
bts.c 0
cfgdata.c 9
var.c 0
upc3.c 5
modem.c 0
mesz.c 0
mesdata.c 0
cfg.c 0
can.c 0
uart.c 0
driver.c 0
maschine.h 0
funktion.c 0
cachefl.c 0
irptdef.c 0
cfgdata0.c 9
cfgdataT.c 0
mesdata0.c 0
mesdataT.c 0
var.h 0
candev.c 0
atp.h 0
mesbase.txt 0
cfgbase.txt 9
> rgb.htm
echo '<html> <head> <title></title> </head>'
echo '<body bgcolor="#ffffff">'
< /u/sc/safe/X/rgbde.txt
while read cname r g b
do
R=$((16#, r)) G=$((16#, g)) B=$((16#, b))
let "${#R}==1" && R="0$R"
let "${#G}==1" && G="0$G"
let "${#B}==1" && B="0$B"
conv -u R G B
F1= F2=
let "r+g+b<400" && F1='<font color="#ffffff">' F2='</font>'
echo "<table bgcolor=%"#$R$G$B%" width=%"67%%%%%" height=%"15%%%%%">%
<tr><td>%n$F1$cname<br>%
r=$r g=$g b=$b<br>$R$B$G<br>$F2</td></tr></table>"
done
><
echo '</body>
</html>'
><
array R 0 1 5 10 22 50 100 220 500 1000
array A 3296 3569 3850 4123 4400 4668 %
3283 3551 3828 4096 4368 4631 %
3234 3485 3744 3995 4250 4497 %
3179 3412 3652 3885 4121 4349 %
3077 3275 3479 3676 3877 4071 %
2927 3073 3223 3369 3517 3659 %
2790 2889 2992 3090 3190 3287 %
2661 2716 2772 2827 2883 2936 %
2575 2600 2627 2652 2678 2703 %
2535 2546 2559 2570 2582 2593
array B 1702 1430 1151 882 610 344 %
1715 1449 1173 908 639 380 %
1763 1513 1255 1006 754 510 %
1816 1583 1343 1112 878 652 %
1916 1717 1512 1315 1115 921 %
2062 1914 1760 1612 1436 1318 %
2196 2093 1986 1884 1779 1679 %
2322 2262 2199 2139 2078 2016 %
2406 2374 2341 2309 2277 2246 %
2446 2426 2408 2389 2370 2352
n=000
N=000
for V in p30 p40 p50 p60 p70 p80
do
let n=++N
for i from 1 to 10 repeat
do
$V$i="$A[n]"
let "n+=6"
done
done
N=0
for V in m30 m40 m50 m60 m70 m80
do
let n=++N
for i from 1 to 10 repeat
do
$V$i="$B[n]"
let "n+=6"
done
done
for V in m80 m70 m60 m50 m40 m30 p30 p40 p50 p60 p70 p80
do
>$V.xy
for i from 1 to 10 repeat
do
s=
O=$V$i
O=${{O}
let "O-=2500"
O=`calc "50000/$O"`
expr "$O" :: '^-' && s=-
echo "$O%t$s$R[i]"
done
><
done
set -f
ARITH_FMT='%.9Lg'
E6='1.0 1.5 2.2 3.3 4.7 6.8'
E12='1.0 1.2 1.5 1.8 2.2 2.7 3.3 3.9 4.7 5.6 6.8 8.2'
E24='1.0 1.1 1.2 1.3 1.5 1.6 1.8 2.0 2.2 2.4 2.7 3.0
3.3 3.6 3.9 4.3 4.7 5.1 5.6 6.2 6.8 7.5 8.2 9.1'
E48='1.00 1.05 1.10 1.15 1.21 1.27 1.33 1.40 1.47 1.54 1.62 1.69
1.78 1.87 1.96 2.05 2.15 2.26 2.37 2.49 2.61 2.74 2.87 3.01
3.16 3.32 3.48 3.65 3.83 4.02 4.22 4.42 4.64 4.87 5.11 5.36
5.62 5.90 6.19 6.49 6.81 7.15 7.50 7.87 8.25 8.66 9.09 9.53'
E96='1.00 1.02 1.05 1.07 1.10 1.13 1.15 1.18 1.21 1.24 1.27 1.30
1.33 1.37 1.40 1.43 1.47 1.50 1.54 1.58 1.62 1.65 1.69 1.74
1.78 1.82 1.87 1.91 1.96 2.00 2.05 2.10 2.15 2.21 2.26 2.32
2.37 2.43 2.49 2.55 2.61 2.67 2.74 2.80 2.87 2.94 3.01 3.09
3.16 3.24 3.32 3.40 3.48 3.57 3.65 3.74 3.83 3.92 4.02 4.12
4.22 4.32 4.42 4.53 4.64 4.75 4.87 4.99 5.11 5.23 5.36 5.49
5.62 5.76 5.90 6.04 6.19 6.34 6.49 6.65 6.81 6.98 7.15 7.32
7.50 7.68 7.87 8.06 8.25 8.45 8.66 8.87 9.09 9.31 9.53 9.76'
E=24 Tol=0.3 Zeilen=12
Beg=10.0 End=1e6
Del='1e6
'
Err() { print -u2 "$1"; exit 1; }
k='${#E'"$E"'}'
eval k=$k
[ -z "$k" -o k -lt 11 ] && Err "Falsche E-Reihe: E$E"
FillBuf() {
local er=... r=.... r0=0000 f=0 lg:025 sf:025
local c:08 o:08 n:08 fak:025
local sz=$(typeset -F)
typeset -f a zero
let "Beg<1.0" && Err "Startwert<1: $Beg"
let "Beg>=End" && Err "Startwert>=Endwert: $Beg $End"
[ E -eq $1 ] && return 0
[ $1 -gt 0 ] && E=$1
er=E$E : ${{er}} ; n=$,
[ n -ne E ] && Err "Falsche Anzahl Werte $er: $n"
let "fak=pow(10.0,1.0/E), r0=1.0/fak"
for r in ${{er}}
do
let "r<1.0" && Err "$er-Wert < 1: $r"
let "r>a" || Err "$er-Wert nicht streng monoton steigend: $r"
let "r/r0>fak*1.05||r/r0<fak/1.05" &&
Err "$er-Wert-Faktor vom Vorwert her unpassend: $r/$r0"
a=$r r0=$r
[ f -eq 1 ] && continue
let "lg=log10(End/r)" "lg-trunc(lg)>0.0" && continue
f=1
done
[ f -ne 1 ] && Err "Endwert unpassend: $End"
f=0
for r in ${{er}}
do
let "r<1.0" && Err "$er-Wert < 1: $r"
[ f -eq 1 ] && continue
let "lg=log10(Beg/r)" "lg-trunc(lg)>0.0" && continue
let "sf=Beg/r"
f=1 echo Startwert-Faktor: $sf
done
[ f -ne 1 ] && Err "Startwert unpassend: $Beg"
set BUF:32.$(( llround(ceil(log10(End/Beg))*E*sz+E*sz) ))
n=${#BUF}
echo "Puffergroesse: $n"
echo "Puffergroesse: $((n/sz)) Einträge"
f=0 o=0
while :
do
for r in ${{er}}
do
let "a=sf*r"
if [ f -eq 1 ]
then catv a =o,sz,BUF
else let "a!=Beg" && continue
f=1 catv a =o,sz,BUF
fi
let "o+=sz" "a==End" || continue
let "n=o/sz"
break 2
done
let "sf*=10"
done
N=$n
echo "Einträge: $n"
Del=$Del
[ -z "$Del" ] && return 0
c=0
for o from 0 by $sz to $((n*sz-sz)) repeat
do
catv o,sz,BUF =a
for r in $Del
do
let "a!=r" && continue
catv zero =o,sz,BUF
let "++c"
done
done
echo "Pufferwerte gelöscht: $c"
set BUFC:32.${#BUF}
catv BUF =BUFC
c=0
for o from 0 by $sz to $((n*sz-sz)) repeat
do
catv o,sz,BUFC =a
let "a<1.0" && continue
catv a =c,sz,BUF ; let "c+=sz"
done
let "N=c/sz"
echo "Einträge: $N"
return 0
}
FillBuf -1
GetRpar() {
local o:08 oa:08 ob:08 oc:08 m:025 t:08 f=0
local sz=$(typeset -F)
typeset -f a b c v zp zm ziel=$1
let "t=N*sz-sz"
let "zp=ziel*(1.0+Tol/100.0)" "zm=ziel*(1.0-Tol/100.0)"
for o from 0 by $sz to $t repeat
do
catv o,sz,BUF =v
let "v>=ziel" && { f=1; break; }
done
[ f -ne 1 ] && return 1
for oa from $o by $sz to $t repeat
do
catv oa,sz,BUF =v
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t1 $m # $ziel : $v = $v"
fi
done
for oa from $o by $sz to $t repeat
do
catv oa,sz,BUF =a
for ob from $o by $sz to $t repeat
do
catv ob,sz,BUF =b
let "a==ziel||b==ziel" && break 2
let "a>b" && continue
let "v=rpar2(a,b)"
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t2 $m # $ziel : $v = $a|$b"
fi
done
done
for oa from $o by $sz to $t repeat
do
catv oa,sz,BUF =a
for ob from $o by $sz to $t repeat
do
catv ob,sz,BUF =b
let "a>b" && continue
for oc from $o by $sz to $t repeat
do
catv oc,sz,BUF =c
let "a==ziel||b==ziel||c==ziel" && break 3
let "a>c||b>c" && continue
let "v=rpar3(a,b,c)"
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t3 $m # $ziel : $v = $a|$b|$c"
fi
done
done
done
return 0
}
Results() {
local zln=$Zeilen ap0=0 ap=0
local ppm:010 ziel:025 val:025 pr:.40
GetRpar "$1" | sortl -fn1,n2 | {
while read ap ppm - ziel - val - pr
do
[ ap -ne ap0 ] && { ap0=$ap zln=$Zeilen; echo; }
[ zln -eq 0 ] && continue
expr "$pr" :pr '%.0%([^0-9]%)' + '%1'
expr "$pr" :pr '%.0$' = ''
expr "$pr" :pr '|' += ' | '
prints s12bsbs9bsbs-12bsbs $ppm : $ziel : $val = "$pr"
let "--zln"
done
}
return 0
}
local z=000 e=000 t=000000
prints vs-2 z $Zeilen
prints vs-2 e $E
prints vs-4 t $Tol
while echo "
%tStartwert=$Beg Endwert=$End
%tReihe=E$e : e# (e6 e12 e24 e48 e96)
%tZeilen=$z : z #
%tToleranz=$t: t #
%tZielwert : zahl (123 12.3 12e3 ...)
%tBeenden : E
%t : _%b%c"
do
read cmd arg
case "$cmd" in
e6) FillBuf 6;;
e12) FillBuf 12;;
e24) FillBuf 24;;
e48) FillBuf 48;;
e96) FillBuf 96;;
z) expr "$arg" :: '[1-9][0-9]*' || { echo '%a%c'; continue; }
Zeilen=$arg;;
t) expr "$arg" :: '[0-9][0-9.]*' || { echo '%a%c'; continue; }
Tol=$arg;;
[0-9]*) Results "$cmd";;
E) break;;
*) echo '%a%c'; continue;;
esac
prints vs-2 z $Zeilen
prints vs-2 e $E
prints vs-4 t $Tol
done
:
set -f
ARITH_FMT='%.9Lg'
E6='1.0 1.5 2.2 3.3 4.7 6.8'
E12='1.0 1.2 1.5 1.8 2.2 2.7 3.3 3.9 4.7 5.6 6.8 8.2'
E24='1.0 1.1 1.2 1.3 1.5 1.6 1.8 2.0 2.2 2.4 2.7 3.0
3.3 3.6 3.9 4.3 4.7 5.1 5.6 6.2 6.8 7.5 8.2 9.1'
E48='1.00 1.05 1.10 1.15 1.21 1.27 1.33 1.40 1.47 1.54 1.62 1.69
1.78 1.87 1.96 2.05 2.15 2.26 2.37 2.49 2.61 2.74 2.87 3.01
3.16 3.32 3.48 3.65 3.83 4.02 4.22 4.42 4.64 4.87 5.11 5.36
5.62 5.90 6.19 6.49 6.81 7.15 7.50 7.87 8.25 8.66 9.09 9.53'
E96='1.00 1.02 1.05 1.07 1.10 1.13 1.15 1.18 1.21 1.24 1.27 1.30
1.33 1.37 1.40 1.43 1.47 1.50 1.54 1.58 1.62 1.65 1.69 1.74
1.78 1.82 1.87 1.91 1.96 2.00 2.05 2.10 2.15 2.21 2.26 2.32
2.37 2.43 2.49 2.55 2.61 2.67 2.74 2.80 2.87 2.94 3.01 3.09
3.16 3.24 3.32 3.40 3.48 3.57 3.65 3.74 3.83 3.92 4.02 4.12
4.22 4.32 4.42 4.53 4.64 4.75 4.87 4.99 5.11 5.23 5.36 5.49
5.62 5.76 5.90 6.04 6.19 6.34 6.49 6.65 6.81 6.98 7.15 7.32
7.50 7.68 7.87 8.06 8.25 8.45 8.66 8.87 9.09 9.31 9.53 9.76'
E=24 Tol=0.3 Zeilen=12
Beg=10.0 End=1e6
Del='1e6
'
Err() { print -u2 "$1"; exit 1; }
k='${#E'"$E"'}'
eval k=$k
[ -z "$k" -o k -lt 11 ] && Err "Falsche E-Reihe: E$E"
FillBuf() {
local er=... r=.... r0=0000 f=0 lg:025 sf:025 a:025
local lz:32.20 c:08 o:08 n:08 fak:025
let "Beg<1.0" && Err "Startwert<1: $Beg"
let "Beg>=End" && Err "Startwert>=Endwert: $Beg $End"
[ E -eq $1 ] && return 0
[ $1 -gt 0 ] && E=$1
er=E$E : ${{er}} ; a=$,
[ a -ne E ] && Err "Falsche Anzahl Werte $er: $a"
a=0.0 let "fak=pow(10.0,1.0/E), r0=1.0/fak"
for r in ${{er}}
do
let "r<1.0" && Err "$er-Wert < 1: $r"
let "r>a" || Err "$er-Wert nicht streng monoton steigend: $r"
let "r/r0>fak*1.05||r/r0<fak/1.05" &&
Err "$er-Wert-Faktor vom Vorwert her unpassend: $r/$r0"
a=$r r0=$r
[ f -eq 1 ] && continue
let "lg=log10(End/r)" "lg-trunc(lg)>0.0" && continue
f=1
done
[ f -ne 1 ] && Err "Endwert unpassend: $End"
f=0
for r in ${{er}}
do
let "r<1.0" && Err "$er-Wert < 1: $r"
[ f -eq 1 ] && continue
let "lg=log10(Beg/r)" "lg-trunc(lg)>0.0" && continue
let "sf=Beg/r"
f=1 echo Startwert-Faktor: $sf
done
[ f -ne 1 ] && Err "Startwert unpassend: $Beg"
set BUF:32.$(( llround(ceil(log10(End/Beg))*E*20+E*20) ))
a=${#BUF}
echo "Puffergroesse: $a"
echo "Puffergroesse: $((a/20)) Einträge"
f=0 o=0
while :
do
for r in ${{er}}
do
let "a=sf*r"
if [ f -eq 1 ]
then catv a =o,20,BUF
else let "a!=Beg" && continue
f=1 catv a =o,20,BUF
fi
let "o+=20" "a==End" || continue
let "n=o/20"
break 2
done
let "sf*=10"
done
N=$n
echo "Einträge: $n"
Del=$Del
[ -z "$Del" ] && return 0
c=0
for o from 0 by 20 to $((n*20-20)) repeat
do
catv o,20,BUF =a:
a=$a
for r in $Del
do
let "a!=r" && continue
catv lz =o,20,BUF
let "++c"
done
done
echo "Pufferwerte gelöscht: $c"
set BUFC:32.${#BUF}
catv BUF =BUFC
c=0
for o from 0 by 20 to $((n*20-20)) repeat
do
catv o,20,BUFC =a:
catv 1,a =f:
[ "$f" = ' ' ] && continue
catv a =c,20,BUF ; let "c+=20"
done
let "N=c/20"
echo "Einträge: $N"
return 0
}
FillBuf -1
GetRpar() {
local o:08 oa:08 ob:08 oc:08 a:025 b:025 c:025
local ziel=$1 v:025 m:025 zp:025 zm:025 t:08 f=0
let "t=N*20-20"
let "zp=ziel*(1.0+Tol/100.0)" "zm=ziel*(1.0-Tol/100.0)"
for o from 0 by 20 to $t repeat
do
catv o,20,BUF =v: ; v=$v
let "v>=ziel" && { f=1; break; }
done
[ f -ne 1 ] && return 1
for oa from $o by 20 to $t repeat
do
catv oa,20,BUF =a: ; v=$a
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t1 $m # $ziel : $v = $v"
fi
done
for oa from $o by 20 to $t repeat
do
catv oa,20,BUF =a: ; a=$a
for ob from $o by 20 to $t repeat
do
catv ob,20,BUF =b: ; b=$b
let "a==ziel||b==ziel" && break 2
let "a>b" && continue
let "v=rpar2(a,b)"
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t2 $m # $ziel : $v = $a|$b"
fi
done
done
for oa from $o by 20 to $t repeat
do
catv oa,20,BUF =a: ; a=$a
for ob from $o by 20 to $t repeat
do
catv ob,20,BUF =b: ; b=$b
let "a>b" && continue
for oc from $o by 20 to $t repeat
do
catv oc,20,BUF =c: ; c=$c
let "a==ziel||b==ziel||c==ziel" && break 3
let "a>c||b>c" && continue
let "v=rpar3(a,b,c)"
if let "v<=zp&&v>=zm"
then
let "m=fabs(v/ziel-1.0), m=llround(m*1e6)"
echo "%t3 $m # $ziel : $v = $a|$b|$c"
fi
done
done
done
return 0
}
Results() {
local zln=$Zeilen ap0=0 ap=0
local ppm:010 ziel:025 val:025 pr:.40
GetRpar "$1" | sortl -fn1,n2 | {
while read ap ppm - ziel - val - pr
do
[ ap -ne ap0 ] && { ap0=$ap zln=$Zeilen; echo; }
[ zln -eq 0 ] && continue
expr "$pr" :pr '%.0%([^0-9]%)' + '%1'
expr "$pr" :pr '%.0$' = ''
expr "$pr" :pr '|' += ' | '
prints s12bsbs9bsbs-12bsbs $ppm : $ziel : $val = "$pr"
let "--zln"
done
}
return 0
}
local z=000 e=000 t=000000
prints vs-2 z $Zeilen
prints vs-2 e $E
prints vs-4 t $Tol
while echo "
%tStartwert=$Beg Endwert=$End
%tReihe=E$e : e# (e6 e12 e24 e48 e96)
%tZeilen=$z : z #
%tToleranz=$t: t #
%tZielwert : zahl (123 12.3 12e3 ...)
%tBeenden : E
%t : _%b%c"
do
read cmd arg
case "$cmd" in
e6) FillBuf 6;;
e12) FillBuf 12;;
e24) FillBuf 24;;
e48) FillBuf 48;;
e96) FillBuf 96;;
z) expr "$arg" :: '[1-9][0-9]*' || { echo '%a%c'; continue; }
Zeilen=$arg;;
t) expr "$arg" :: '[0-9][0-9.]*' || { echo '%a%c'; continue; }
Tol=$arg;;
[0-9]*) Results "$cmd";;
E) break;;
*) echo '%a%c'; continue;;
esac
prints vs-2 z $Zeilen
prints vs-2 e $E
prints vs-4 t $Tol
done
:
<TDSru.htm
while readl Z
do
while expr "$Z" :U '&%([a-zA-Z0-9#]%{2,}%);'
do
expr "$Z" :Z '&[a-zA-Z0-9#]%{1,};' = ''
echo "$U"
done
done
><
set -f
[ $# -eq 0 ] && {
../adm/rxtx.bish run &
exit 0
}
0<&-
1>&-
2>&-
set -o sid
0</dev/null
1>/dev/null
2>/dev/null
BuildCT() {
[ -s $Fstation ] || return 0
local gid=0000 aid=0000 day=00000000
local time:010 atim:010 btim:010 ctim:010 cttim:016 dir:.20
systime time
echo BuildCT
Lock lockdb
> $Fconntest
< $Fstation
while read gid aid -
do
dir=$Ddb/$gid/$aid
[ -s $dir/i ] || continue
day="$(- grep -m "^$Cid " $dir/i )" || continue
expr "$day" :day '^[0-9]%{1,} %([0-9]%{1,}%)' || day=0
[ day -eq 0 ] && { remove -s $dir/conn; continue; }
atim=0 btim=0 ctim=0
[ -f $dir/conn ] && fstat -mv atim $dir/conn
[ -s $dir/conn ] && catv 10,3 =btim: 3< $dir/conn
[ atim -ne 0 ] && let "ctim=atim+day*spDay"
[ atim -eq 0 ] && let "ctim=time, time+=60*5"
[ atim -ne 0 -a ctim -ne btim -o atim -eq 0 ] && {
ctime cttim $ctim
catv ctim '. ' cttim > $dir/conn
fstat +m $atim $dir/conn
}
catv gid '. ' aid '. ' ctim '. ' day '. 0' /%n
done
><<
Lock lockdb del
[ -s $Fconntest ] && sortl '-d ' -f3n,4n,1n,2n -o$Fconntest $Fconntest
[ CTbuild -ne 0 ] && CTbuild=0 Uvars CTbuild
NextCT build
return 0
}
NextCT() {
local _gid=0000 _aid=0000 _tim:010 _day=0000 _try=00
local gid=0000 aid=0000 tim:010 day=0000 try=00
let "tim=16#7fffffff"
[ -e $Fconntest ] || : > $Fconntest
< $Fconntest
while read _gid _aid _tim _day _try
do
[ _tim -lt tim ] || continue
gid=$_gid aid=$_aid tim=$_tim day=$_day try=$_try
[ "$1" == build ] && break
done
><
let "tim==16#7fffffff" && tim=-1
[ "$CTgid" != "$gid" ] && CTgid=$gid Uvars CTgid
[ "$CTaid" != "$aid" ] && CTaid=$aid Uvars CTaid
[ "$CTtime" != "$tim" ] && CTtime=$tim Uvars CTtime
[ "$CTday" != "$day" ] && CTday=$day Uvars CTday
echo NextCT: $gid $aid $tim $day $try
return 0
}
WriteCT() {
local ctim:010 cttim:016 calc:030 dir=$Ddb/$CTgid/$CTaid
[ -d "$dir" ] || return
systime ctim
case "$1" in
full) let "ctim+=CTday*spDay"
calc='++try' ;;
okay) let "ctim+=CTday*spDay"
calc='try=0' ;;
try) let "ctim+=5*60"
calc='++try' ;;
esac
ctime cttim $ctim
catv ctim '. ' cttim > $dir/conn
local gid=0000 aid=0000 tim:010 day=0000 try=00 tnam=....
[ -s $Fconntest ] || return
cat $Fconntest | {
> $Fconntest
while read gid aid tim day try
do
tnam=tim
[ gid -eq CTgid -a aid -eq CTaid ] && tnam=ctim let "$calc"
catv gid '. ' aid '. ' $tnam '. ' day '. ' try /%n
done
><
}
return 0
}
GetTryCT() {
$1=0
[ -s $Fconntest ] || return
local try:0100 gid=0000 aid=0000
let "gid=CTgid, aid=CTaid"
try="$(- grep -m "^$gid $aid " $Fconntest )" || return
expr "$try" :try ' %([0-9]%{1,}%)[^0-9]*$' || return
$1=$try
return 0
}
FailCT() {
local tim:010 sz:010 msg
[ -e $MUdir/fail ] && {
fstat -smvT sz tim $MUdir/fail
msg="Has exist before:size=$sz:time=$tim: "
}
catv msg '.Connect test failed:' MUdir /: AnrufZ /%n >> $MUdir/fail
return 0
}
SetVarsCT() {
local dir=$Ddb/$CTgid/$CTaid
Lock lockdb
GetIval Telnu $Fid "$dir" || { Lock lockdb del; return 1; }
Lock lockdb del
CkTelnu "$Telnu" || return
MUdir=$dir
return 0
}
CkSetSernum() {
local id=0000 sern=$2 buf:.40
ifset sern || return
Lock lockdb
buf=$( grep -m "^$Sid " $1 ) || { Lock lockdb del; return 1; }
expr "$buf" :buf ' %([^ ].*%)$' || buf=
cmpv sern buf && { Lock lockdb del; return 1; }
cat $1 | {
> $1
while read id Hbuf
do
[ id -eq Sid ] && Hbuf=$sern
catv id '/ ' Hbuf /%r%n
done
><
}
Lock lockdb del
return 0
}
MUkategorie_c() {
local a=. c=. stat:.16 sern:.16 nam:.20 inh:.40
< $1
while read - - - nam inh
do
[ -n "$a" -a "$nam" == Sernum ] && a= sern=$inh
[ -n "$a" -a "$nam" == SN: ] && a= sern=$inh
[ -n "$c" -a "$nam" == Station ] && c= stat=$inh
[ -z "$a$c" ] && break
done
><
conv '-t` ' stat sern
stat=$stat
[ -z "$a" -a -s $MUdir/i ] && CkSetSernum $MUdir/i "$sern"
return 0
}
OkayFail() {
local a=. b=. c=. d=.
local sk=00000 ask=00000 bsk=00000 mdsk=00000
local okfa=...... stat:.16 sern:.16 dati:.50
local gid=0000 aid=00000 adir:.20
[ ! -s "$1" -o ! -s "$Fstation" ] && {
WrLog "»$1«, »$Fstation«" "File state"; return 1; }
< $1
while seek + 0 sk; readl Hbuf
do
ifset Hbuf || continue
expr "$Hbuf" :: '^<EEDATA>$' && { seek + 0 mdsk; break; }
[ "$ask" == 00000 ] && expr "$Hbuf" :: '^0%t0%t-%t-%t-$' && ask=$sk
[ "$bsk" == 00000 ] && expr "$Hbuf" :: '^65535%t0%t-%t-%t-$' && seek + 0 bsk
[ -z "$a$b$c$d" ] && continue
ifset a && expr "$Hbuf" :sern 's%tSernum%t%(.*%)$' && a=
ifset a && expr "$Hbuf" :sern 's%tSN:%t%(.*%)$' && a=
ifset b &&
expr "$Hbuf" :dati 's%t-%t%a%{2,},`*%([0-9.]%{8,}``*[0-9:]%{8,}%)' && b=
ifset b && expr "$Hbuf" :dati ' %([0-9.]%{8,} *[0-9:]%{8,}%)' && b=
ifset c && expr "$Hbuf" :stat 's%tStation%t%(.*%)$' && c=
ifset c && expr "$Hbuf" :stat 'Station: *"%([^"]%{1,}%)"' && c=
ifset d && expr "$Hbuf" :okfa '^State: %(%u%{4}%)$' && d=
ifset d && expr "$Hbuf" :okfa 'State: *%(%w%{2,}%)' && d=
done
><
echo $ask $bsk $mdsk
conv '-t` ' dati stat
stat=$stat
[ -n "$d$c" ] && {
WrLog "System: »unknown«" "Assignment impossible"
return 1
}
Lock lockdb
< $Fstation
while read gid aid Hbuf
do
ifset Hbuf || continue
cmpv Hbuf stat && adir="$Ddb/$gid/$aid" break
done
><
Lock lockdb del
[ -d "$adir" ] || {
WrLog "Not exists: »$adir«" "Assignment impossible"
return 1
}
expr "$okfa" :: '^[Oo][Kk]' && : > $adir/okay
expr "$okfa" :: '^[Ff][Aa]' && {
if [ -s $adir/fail ]
then
systime -t Hbuf
catv Hbuf '/: FAIL message%n' >> $adir/fail
else
: > $adir/fail
fi
}
[ "$ask" != 00000 -a "$bsk" != 00000 -a bsk -gt ask ] &&
catv $ask,$((bsk-ask)),0 < $1 | tr ' ' '`' > $adir/stat
[ mdsk -gt 0 ] && [ ! -e $adir/lock -o ! -s $adir/eepr ] && {
fstat -sv sk $1
let "sk<mdsk+2048+13" && {
WrLog "Incoming data" "Config data wrong size" $adir/log; return 0; }
catv $mdsk,2061,0 =Ibuf < $1
catv 2048,13,Ibuf =Hbuf:
expr "$Hbuf" :: '^%r%n</EEDATA>%r%n$' || {
WrLog "Incoming data" "Config data wrong </end>" $adir/log; return 0; }
catv 0,2,Ibuf =ask:
base -w ask +10 ask
mucrc bsk Ibuf 2 1898 || bsk=99999
[ bsk -ne ask ] &&
WrLog "Incoming config data" "CRC $ask:$bsk" $adir/log
catv 0,2048,Ibuf > $adir/eepr
}
[ -z "$a" -a -s $adir/i ] && CkSetSernum $adir/i "$sern"
return 0
}
GetMOmsgNr() {
local word="${{1}" ifs="$IFS" nr=0000 mnu=0000 msg:.40
IFS="$RN"
for word in $word
do
IFS="$ifs"
for 2 msg nr in OK 1 'CONNECT *' 2 'CARRIER *' 2 RING 4 ERROR 8 BUSY 16 %
'NO CARRIER' 32 'NO DIALTONE' 64 'NO DIAL TONE' 64 %
'NO ANSWER' 128 'DIAL LOCKED' 256 'NO MORE DIAL%{1,2}ING' 256 %
'DELAYED *' 512 'PROTOCOL[ :]*' 2 'COMPRESSION[ :]*' 2
do
expr "$word" :: "^$msg" && let "mnu|=nr"
done
done
IFS="$ifs"
[ mnu -ne 0 ] && $1=$mnu return 0
return 1
}
WriteAT() {
[ $# -lt 1 ] && return 1
local c=. ato=-0001 sec=005 msec=700 msg=00 t:010
if expr "$1" :: 'AT&F'
then local ats="$1 $MOinitapp "
else local ats="$1 "
fi
expr "$ats" :ats '[^!-~]%{1,}' += ' '
local wr="$ats "
local hbuf="$wr"
wr=
catv "/'" ats "/'%j"
while catv $((++ato)),1,ats =c:
do
expr "$c" :: '[ %%]' || wr="$wr$c" continue
[ "$c" == ' ' ] && {
expr "$wr" :: '+++$' || wr="$wr$RN"
com -cot20od10o${#wr} wr
wr= t=$SECONDS
while let "$SECONDS-t <= sec"
do
com -p || { sleep -m $msec; continue; }
com -it300id15i100 Ibuf
catv $.,Ibuf =Hbuf:
expr "$Hbuf" :Hbuf '[ %t%r%n]%{1,}$' = ''
expr "$Hbuf" :Hbuf '[%r%n]%{1,}' += "$RN"
hbuf="$Hbuf"
expr "$hbuf" :hbuf '%r%n' += "\r\n"
catv '/(' hbuf '/)%j'
[ msg -eq 0 ] && continue 2
GetMOmsgNr Hbuf || continue
[ Hbuf -ge 8 ] && return 1
let "msg&Hbuf" || return 3
continue 2
done
com -ct20od10o2 RN
com -it300id15i70 Ibuf
[ $. -gt 0 ] && catv '/((' $.,Ibuf '/))%j'
[ msg -ne 0 ] && { print -u2 TIMEOUT; return 2; }
continue
}
catv $((++ato)),1,ats =c:
expr "$c" :: '[%%dpt0COT]' || wr="$wr$c" continue
[ "$c" == '%' ] && wr="$wr$c" continue
case "$c" in
d) sleep 1 ;;
p) sleep -m 250 ;;
t) catv $((++ato)),,ats =ats:
ato=-1
expr "$ats" :sec '^%([0-9]%{1,}%)' || sec=1
expr "$ats" :ats '^[0-9]%{1,}' = ''
let "sec>=1000" && let "sec=(sec+500)/1000"
let "sec>=100" && sec=1
let "sec<1" && sec=1
msec=700
[ sec -lt 4 ] && let "msec=sec*200"
;;
0) msg=0 ;;
C) msg=2 ;;
O) msg=1 ;;
T) [ $# -lt 2 ] && return 1
expr "$2" :: '^[TP]' || wr="$wr$TPwahl"
wr="$wr$2"
;;
esac
done
return 0
}
MUanrufen() {
local telnu=$1 ch=00 offs=00000 cksum:010 ring="RING$RN.........."
while :
do
case $AnrufZ in
dialout)
[ MOwahl -eq 0 ] && AnrufZ=getdata continue
let "$SECONDS-DOtime<=40" && { sleep 2; continue; }
WriteAT "$MOdialout" "$telnu" || DOtime=$SECONDS break
AnrufZ=waitpass TOsec=$SECONDS DOtime=0
;;
waitpass)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=pass
;;
pass)
com -it400id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD:' || break
ring="@DK40mopas"
com -cot50od10o10 ring
sleep -m 150
com -ocot30od10o2 RN
AnrufZ=waitpassok TOsec=$SECONDS
;;
waitpassok)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=passok
;;
passok)
com -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD %{1,3}OK' || break
AnrufZ=getdata
;;
getdata)
[ Status -eq 2 ] && AnrufZ=writecfg continue
[ Status -eq 3 ] && AnrufZ=readcfg continue
GetMUdata $Fmustatus Nn dk40 || {
echo "$Nn Bytes"
[ MOwahl -eq 0 ] && break
ring=@EN:
com -cot30od10o4 ring
break
}
echo "$Nn Bytes"
AnrufZ=data
;;
data)
MUkategorie_c $Fmustatus
cat $Fmustatus > $MUdir/stat
[ ! -e "$MUdir/lock" -o ! -s "$MUdir/eepr" ] && AnrufZ=readcfg continue
[ MOwahl -eq 0 ] && AnrufZ=0 goend
AnrufZ=mowrite continue
;;
mowrite)
ring=@EN:
sleep -m 400
com -cot50od10o4 ring
echo @EN: = $.
AnrufZ=waitmoend TOsec=$SECONDS
;;
waitmoend)
let "$SECONDS-TOsec>10" && break
com -p || return 0
AnrufZ=moend
;;
moend)
com -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'Connection %{1,3}aborted' || break
AnrufZ=0
;;
dialin)
WriteAT "$MOabnehmen" || break
AnrufZ=getokayfail
;;
getokayfail)
GetMUdata $Fokayfail Nn rdonly || break
echo "$Nn Bytes"
AnrufZ=okayfail
;;
okayfail)
AnrufZ=0
;;
writecfg)
sum -w cksum < $MUdir/eepr
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
ring=129
base -10 ring +b ch
ring=@PC:
com -cot40od10o4 ring
com -it400id20i1 Ibuf
catv 1,Ibuf /%j
com -cot30od10o1 ch
com -it400id10i1 Ibuf
catv 1,Ibuf /%j
catv 2048,0 =Hbuf < $MUdir/eepr
for offs from 0 by 32 to 2016 repeat
do
com -cot80od10oO${offs}o32 Hbuf
com -it600id20i1 Ibuf
catv 1,Ibuf
done
com -cot30od10o2 cksum
com -it400id10i2 ring
echo
catv 2,cksum =cksum:
catv 2,ring =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || break
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=0
;;
readcfg)
ring=128
base -10 ring +b ch
ring=@PC:
com -cot40od10o4 ring
com -it400id20i1 Ibuf
catv 1,Ibuf /%j
com -cot30od10o1 ch
com -it3500id20i2050 Ibuf
echo $.
catv 2048,Ibuf > ../tmp/eeprin
sum -w cksum < ../tmp/eeprin
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
com -cot30od10o2 cksum
catv 2,cksum =cksum:
catv 2048,2,Ibuf =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || break
mucrc cksum Ibuf 2 1898 || break
catv 0,2,Ibuf =ring:
base -w ring +10 ring
echo "$cksum : $ring"
[ cksum -ne ring ] && break
cat ../tmp/eeprin > $MUdir/eepr
remove ../tmp/eeprin
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=0
;;
esac
return 0
done
return 1
}
GetMUdata() {
local nrw=0000000000 sum=00000
catv /@DK40: =6,Ibuf
[ "$3" == dk40 ] && com -cot100od10o6 Ibuf
until com -p
do
let "sum+=10, sum>3000" && break
sleep -m 10
done
echo "InputWait: $sum ms"
com -it500id20i4000 Ibuf
nrw=$. $2=$. sum=0
let "sum+=nrw, nrw==0" && return 1
> $1
while [ nrw -gt 0 ]
do
[ "$3" == dk40 ] && conv '-t `' Ibuf
catv $nrw,Ibuf
com -it500id20i4000 Ibuf
let "nrw=$., sum+=nrw"
done
><
$2=$sum
return 0
}
. ./functions.bish
. ./cvars.bish
MOauflegen='%t0%d%p%p+++%d%p%p %t4%OATH'
MOinit='AT AT%O AT&F %dATX3E0L1S0=0S7=99S9=12S10=24'
MOdialout='%t60%CATD%T'
MOabnehmen='%t40%CATA'
spDay=$((3600*24))
Status=0
TOsec=0000000000
DOtime=0000000000
AnrufZ=0000000000000000
set Ibuf:0.4096
set Hbuf:0.2100
prints vs70 Nn
. ./uvars.bish
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
case "$OsTyp" in
FreeBSD) Sio='/dev/ttyd0' Tty='/dev/console';;
OpenUnix) Sio='/dev/term/00t' Tty='/dev/pts016';;
*) Sio='/dev/null' Tty='/dev/console';;
esac
1>> $Tty
2>> $Tty
com +L $Sio || { WrLog "TTY-Device '$Sio'" "open failed"; exit 0; }
[ MOwahl -ne 0 ] && com -B19200
com -s 1
com -H TOsec
fstat -h 0 1 2 $TOsec
GetIds
local Wait=500 Sec:010 Stime:010 St:010 Uv:010 Uv0:010 Fst:010 Fct:010
local MOri=0 MOritime:010 MOrings=00 MOisinit=0 MOinittime:010
local CTwait:010
systime Stime
fstat -mv Uv0 uvars.bish
Uv=$Uv0
[ ! -e $Fconntest -o CTtime -eq 0 -o CTbuild -ne 0 -a ConnTest -gt 0 ] && BuildCT
until [ -e ../tmp/rxtx ]
do
sleep -m $Wait
Sec=$SECONDS
case $Status in
0)
[ MUcall -ge 30 -a MUcall -le 39 ] && { let "MUcall-=20"; Uvars MUcall; }
com -p && {
[ MOwahl -eq 0 ] && { com -ic; continue; }
com -it60id10i1500 Ibuf
catv $.,Ibuf =Hbuf:
catv '/[' Hbuf '/]'
GetMOmsgNr Hbuf && let "Hbuf&4" && MOri=1 MOrings=0 %
MOritime=$Sec Wait=150 Status=9 MUcall=39 Uvars MUcall
continue
}
fstat -mv Uv uvars.bish
[ Uv -ne Uv0 ] && { Uv0=$Uv . ./uvars.bish; }
[ MOwahl -ne 0 -a MOisinit -ne 1 ] && {
Status=7 MOinittime=-30
[ MOisinit -eq 0 ] && MUcall=37 Uvars MUcall
continue
}
[ MOwahl -eq 0 ] && MOisinit=0
[ Sec -ge St ] && {
let "St=Sec+10"; systime Stime
[ ConnTest -gt 0 ] && [ -s $Fstation ] && {
[ CTbuild -ne 0 ] && { BuildCT; continue; }
let "Sec-DOtime<=90||Sec-CTwait<=150" && continue
[ Stime -ge CTtime -a CTtime -ge 10 ] && {
SetVarsCT && MUcall=6; } ||
WrLog "Connect test" "SetVars failed: $CTgid/$CTaid"
}
}
[ MUcall -eq 1 ] && Status=1
[ MUcall -eq 2 ] && Status=2
[ MUcall -eq 6 ] && Status=6 echo CT: $CTgid $CTaid $CTtime $CTday
[ MUcall -lt 0 ] && MUcall=00 Uvars MUcall
[ Status -ne 0 ] && { AnrufZ=dialout let "MUcall=Status+30"; Uvars MUcall; }
continue
;;
9)
if com -p
then
MOri=0
com -it60id10i1500 Ibuf
catv $.,Ibuf =Hbuf:
catv '/[' Hbuf '/]'
GetMOmsgNr Hbuf && let "Hbuf&4" && MOri=1
else let "MOrings+=MOri, MOrings>=3" && {
Status=8 Wait=500 MUcall=38 Uvars MUcall
AnrufZ=dialin continue
}
MOri=0
fi
let "Sec-MOritime>20" && {
Status=0 Wait=500 MUcall=29 Uvars MUcall
WrLog "RING event" "less then 3 rings"
continue
}
continue
;;
1)
MUanrufen $Telnu || {
MOisinit=2 Status=0 MUcall=21 Uvars MUcall
WrLog "Call get data" "failed: $AnrufZ" $MUdir/log
}
[ $AnrufZ != 0 ] && continue
MOisinit=2 Status=0 MUcall=11 Uvars MUcall
continue
;;
2)
MUanrufen $Telnu || {
MOisinit=2 Status=0 MUcall=22 Uvars MUcall
WrLog "Call configure" "failed: $AnrufZ" $MUdir/log
}
[ $AnrufZ != 0 ] && continue
MOisinit=2 Status=0 MUcall=12 Uvars MUcall
continue
;;
6)
MUanrufen $Telnu || {
WrLog "Connect test $MUdir" "failed: $AnrufZ"
WrLog "Connect test" "failed: $AnrufZ" $MUdir/log
GetTryCT Hbuf
if [ Hbuf -ge CTtries ]
then FailCT; WriteCT full
else WriteCT try
fi
NextCT; CTwait=$Sec
MOisinit=2 Status=0 MUcall=26 Uvars MUcall
}
[ $AnrufZ != 0 ] && continue
WriteCT okay; NextCT; CTwait=$Sec
MOisinit=2 Status=0
continue
;;
8)
MUanrufen || {
MOisinit=2 Status=0 MUcall=28 Uvars MUcall
WrLog "Incoming call" "failed: $AnrufZ"
}
[ $AnrufZ != 0 ] && continue
OkayFail $Fokayfail || MUcall=28 Uvars MUcall
MOisinit=2 Status=0
continue
;;
7)
fstat -mv Uv uvars.bish
[ Uv -ne Uv0 ] && { Uv0=$Uv . ./uvars.bish; }
[ MOwahl -eq 0 ] && Status=0 MOisinit=0 continue
let "$Sec-MOinittime<30" && continue
WriteAT "$MOauflegen"
WriteAT "$MOinit" && Status=0 MOisinit=1
[ MOisinit -eq 2 ] && Status=0 MOisinit=0
MOinittime=$Sec
continue
;;
esac
done
remove -s ../tmp/rxtx
MUcall=30 Uvars MUcall
com -
[ -t 1 -a -n "$Tty" -a -c "$Tty" ] && ><
[ -t 2 -a -n "$Tty" -a -c "$Tty" ] && ><
exit 0
[ $# -lt 1 ] && echo " Argument: Sekunden seit 1.1.1970 00:00:00"
[ $# -lt 1 ] && exit 1
[ "$1" = -h ] && echo " Argument: Sekunden seit 1.1.1970 00:00:00" &&
exit
typeset -i10 corr j sec SPT m cjsj
typeset -i10 tm_mday tm_hour tm_min tm_wday tm_sec tm_mon tm_year
to 10000 repeat
do
sec=$1
((SPT=24*3600))
array MA $SPT $SPT $SPT $SPT $SPT $SPT $SPT $SPT $SPT $SPT $SPT $SPT
(( MA1*=31, MA2*=28, MA3*=31,
MA4*=30, MA5*=31, MA6*=30,
MA7*=31, MA8*=31, MA9*=30,
MA10*=31, MA11*=30, MA12*=31
))
array WA So Mo Di Mi Do Fr Sa
j=1970
repeat
do
(( cjsj=0,
corr= SPT*365 + (j%4==0&&j%100||j%400==0 ? (++cjsj,SPT) : 0),
sec<corr )) && break
(( sec-=corr, ++j ))
done
m=1
repeat
do
(( corr=MA[m] + (m==2&&cjsj ? SPT : 0), sec<corr )) && break
(( sec-=corr, ++m ))
done
(( tm_mday=sec/SPT+1, sec%=SPT,
tm_hour=sec/3600, sec%=3600, tm_min=sec/60, sec%=60
))
let "tm_wday=( $1 %% (SPT*7) )/SPT+4"
(( tm_wday-= tm_wday>6?7:0, ++tm_wday ))
tm_sec=$sec tm_mon=$m tm_year=$j
array WAwd=WA tm_wday
done
echo " $WAwd, $tm_mday.$tm_mon.$tm_year $tm_hour:$tm_min:$tm_sec"
TMP=/tmp/safe_$$
[ $# -ne 3 ] && exit 2
[ ! -e "$1" -o ! -d "$2" -o -z "$3" ] && exit 3
DEV="$1" MDIR="$2" LST="$3" DIR="$3"
LST= ARG=
for DIR in $3
do
[[ ! -d "$DIR" -a "$DIR" == "/*" ]] && continue
[[ "$DIR" != "/*" ]] && { ARG="$ARG$DIR "; continue; }
LST="$LST$DIR "
done
C="$0"
expr "$0" :C '%([^/]%{1,}%)$'
echo "%n$C: TMP=$TMP"
echo ----------------------------------------------------------------
M=0
mount > $TMP || exit
grep -q "$DEV .%{2,} $MDIR " $TMP || M=1
[ M -eq 1 ] && mount -v $DEV $MDIR || exit
sleep 3
for DIR in $LST
do
rsync -aHAXivh --stats --progress --modify-window=5 $ARG $DIR/ $MDIR/$DIR
done
rm $TMP
[ M -eq 1 ] && umount -v "$MDIR" || { sleep 5; umount -v "$MDIR"; } || exit
echo $ARG $LST
echo ----------------------------------------------------------------
TMP=/tmp/safe_$$
[ $# -ne 3 ] && exit 1
[ ! -e "$1" -o ! -d "$2" -o -z "$3" ] && exit 2
DEV="$1" MDIR="$2" LST="$3"
C="$0"
expr "$0" :C '%([^/]%{1,}%)$'
echo "%n$C: TMP=$TMP"
echo ----------------------------------------------------------------
M=0
mount > $TMP || exit
grep -q "$DEV .%{2,} $MDIR " $TMP || M=1
[ M -eq 1 ] && mount -v $DEV $MDIR || exit
sleep 3
set DIR:.500 F:.1000
for DIR in $LST
do
[ -d $DIR ] || continue
echo "$C: $DIR ..."
find $DIR -print > $TMP
[ -s $TMP ] || continue
<$TMP
while readl F
do
if [ -L "$F" ]
then
[ -f "$F" -o -d "$F" ] || {
echo "$C: Typ != -f -d: $F"; continue
}
fstat -tv T "$F" || {
echo "$C: Gebrochener Link: $F"; continue
}
[ -e "$MDIR$F" ] && [ ! -L "$MDIR$F" ] && {
echo "$C: Kein SYMLINK: $MDIR$F"; continue
}
[ -e "$MDIR$F" ] && continue
echo "$C: SYMLINK:"
else
[ -d "$F" ] && {
[ -d "$MDIR$F" ] && continue
[ -e "$MDIR$F" ] && {
echo "$C: Kein DIR: $MDIR$F"; continue
}
mkdir -pv "$MDIR$F"; continue
}
[ -e "$MDIR$F" ] && [ ! "$F" -nt "$MDIR$F" ] && continue
fi
cp -Rpv "$F" "$MDIR$F"
done
><
done
rm $TMP
[ M -eq 1 ] && umount -v "$MDIR" || { sleep 5; umount -v "$MDIR"; } || exit
echo ----------------------------------------------------------------
MDIR=/card
[ -d "$MDIR" ] || mkdir "$MDIR"
expr "$0" :A0 '%([^/ ]%{4,20}%)$' || { echo "'$0'"; exit 6; }
LABEL=label
[ $A0 = safecard -o $A0 = safecard8 ] && LABEL=CARD8 LST='/u /home'
[ $A0 = safecard128 ] && LABEL=CARD128 LST='/u /home /root /fat/cie /s/ARCH_win /s/BAK /s/CD /s/ketel /s/tape /s/zip /s/usr/BSD71_64 /s/usr/BSD92 /s/usr/DOC /s/usr/MEDIA /s/usr/pkg_src /s/usr/VMware'
[ "$LABEL" = label ] && { echo Kommandoname/Label falsch; exit 4; }
[ -n "$*" ] && LST="$*"
glabel status | grep -m '%<ufs/'"$LABEL"'%>' | readl Z || { echo ufs/$LABEL not found; exit 1; }
set DEV:.50
expr "$Z" :DEV '%(%<da[0-9]%{1,2}s[1-9]%>%)' || { echo "expr da#"; exit 2; }
DEV="/dev/$DEV"
[ -c "$DEV" -o -b "$DEV" ] || { echo "DEV=$DEV"; exit 3; }
echo "Kartengerät: $DEV"
for DIR in $LST
do
[[ ! -d "$DIR" -a "$DIR" == "/*" ]] && { echo "'$DIR'" existiert nicht oder kein Dir; exit 5; }
done
safe.bish "$DEV" "$MDIR" "$LST" || echo "$0: -> safe.bish: Exit=$?"
:
MDIR=/card
[ -d "$MDIR" ] || mkdir "$MDIR"
expr "$0" :A0 '%([^/ ]%{4,20}%)$' || { echo "'$0'"; exit 6; }
LABEL=label
[ $A0 = safecard -o $A0 = safecard8 ] && LABEL=CARD8 LST='/u /home'
[ $A0 = safecard128 ] && LABEL=CARD128 LST='/u /home /root /fat/cie /s/ARCH_win /s/BAK /s/CD /s/ketel /s/tape /s/zip /s/usr/BSD71_64 /s/usr/BSD92 /s/usr/DOC /s/usr/MEDIA /s/usr/pkg_src /s/usr/VMware'
[ "$LABEL" = label ] && { echo Kommandoname/Label falsch; exit 4; }
[ -n "$*" ] && LST="$*"
glabel status | grep -m '%<ufs/'"$LABEL"'%>' | readl Z || { echo ufs/$LABEL not found; exit 1; }
set DEV:.50
expr "$Z" :DEV '%(%<da[0-9]%{1,2}s[1-9]%>%)' || { echo "expr da#"; exit 2; }
DEV="/dev/$DEV"
[ -c "$DEV" -o -b "$DEV" ] || { echo "DEV=$DEV"; exit 3; }
echo "Kartengerät: $DEV"
for DIR in $LST
do
[[ ! -d "$DIR" -a "$DIR" == "/*" ]] && { echo "'$DIR'" existiert nicht oder kein Dir; exit 5; }
done
safe.bish "$DEV" "$MDIR" "$LST" || echo "$0: -> safe.bish: Exit=$?"
:
MDIR=/card
[ -d "$MDIR" ] || mkdir "$MDIR"
expr "$0" :A0 '%([^/ ]%{4,20}%)$' || { echo "'$0'"; exit 6; }
LABEL=label
[ $A0 = safecard -o $A0 = safecard8 ] && LABEL=CARD8 LST='/u /home'
[ $A0 = safecard128 ] && LABEL=CARD128 LST='/u /home /root /fat/cie /s/ARCH_win /s/BAK /s/CD /s/ketel /s/tape /s/zip /s/usr/BSD71_64 /s/usr/BSD92 /s/usr/DOC /s/usr/MEDIA /s/usr/pkg_src /s/usr/VMware'
[ "$LABEL" = label ] && { echo Kommandoname/Label falsch; exit 4; }
[ -n "$*" ] && LST="$*"
glabel status | grep -m '%<ufs/'"$LABEL"'%>' | readl Z || { echo ufs/$LABEL not found; exit 1; }
set DEV:.50
expr "$Z" :DEV '%(%<da[0-9]%{1,2}s[1-9]%>%)' || { echo "expr da#"; exit 2; }
DEV="/dev/$DEV"
[ -c "$DEV" -o -b "$DEV" ] || { echo "DEV=$DEV"; exit 3; }
echo "Kartengerät: $DEV"
for DIR in $LST
do
[[ ! -d "$DIR" -a "$DIR" == "/*" ]] && { echo "'$DIR'" existiert nicht oder kein Dir; exit 5; }
done
safe.bish "$DEV" "$MDIR" "$LST" || echo "$0: -> safe.bish: Exit=$?"
:
OFILE=ofile_.sbr
TMPF=tmp_file.sbr
LN= NA= SA= CR="`echo %r%c`" NL="`echo`" FF="`echo %f%c`"
stop() { read "rest? <Enter> "; }
get_addr() {
local zeile al=0
[ -z "$LN" ] && LN=1
[ -z "$NA" ] && NA=0
[ -z "$SA" ] && SA=0
while zeile="`line -$LN $ADRFILE`"
do
((LN=LN+1 ; al=al+1))
conv "-d${CR}d$NL" zeile
[ -z "$zeile" ] && {
[ $al -lt 4 -o $al -gt 5 ] && {
echo "Adressendatei fehlerhaft!(45)%a"; return 3; }
[ $al -eq 4 ] && { ORT="$STR"; STR="$ABT"; ABT="%n"; }
((NA=NA+1 ; SA=SA+1))
return 0
}
case $al in
1) ANR="$zeile%n";;
2) ABT="$zeile%n";;
3) STR="$zeile%n";;
4) ORT="$zeile%n";;
*) echo "Adressendatei fehlerhaft!(*)%a"; return 3;;
esac
done
LN=1
}
prep_txt() {
local zeile n1=1 num ns=0 nl
LINES=""
zeile="`grep -n $FF $TXTFILE`"
for num in $zeile
do
num=`expr $num : '^%([0-9]%{1,%}%):'` && {
LINES="$LINES$n1-$((num-1)) "
((n1=num+1 ; ns=ns+1))
}
done
nl=`wc -l $TXTFILE`
((nl=nl-ns ; ns=ns+1))
LINES="$LINES$n1-$nl"
echo $TXTFILE hat $ns Seiten.
echo Jeweilige Zeilen: $LINES
stop
return 0
}
make_outp() {
local seite vonbis nl nl1 printer=$DRUCKER
[ "$1" = D ] && printer=/dev/null
while get_addr
do
echo %n»Adresse $((SA-1))«%n"$ANR$ABT$STR$ORT"
read "rest?Überspringen,Abbruch [+,a]: "
[ "$rest" = + ] && continue
[ "$rest" = a ] && return 0
seite=0
for vonbis in $LINES
do
let "seite=seite+1"
nl=`eval 'echo $(( -('$vonbis')+1 ))'`
. /u/bish/cmd/scs.bish $seite
echo "%e(10U%e(s0p9h0s0b4099T%e&k2G%e&a7L%e&l8D%c" > $OFILE
if [ $seite -eq 1 ]
then
echo "%e&a9R%e&l6D%c" >> $OFILE
echo "$ANR$ABT$STR%n$ORT" >> $OFILE
echo "%e&l8D%e&a18R%c" >> $OFILE
((nl1=nl=nl+8+5 +6 +3))
else
echo "%e&a6R%c" >> $OFILE
((nl=nl+6 +6 +3))
[ $nl -gt $nl1 ] && nl1=$nl
nl=$nl1
fi
cat $OFILE >> $printer
line -$vonbis $TXTFILE > $OFILE
echo "Seite $seite ..."
/u/bin/tof -Qp2.40,z$nl,o $OFILE >> $printer
done
done
echo Ende der Adressendatei.
}
while echo "%n
Adressendatei '$ADRFILE'($SA:$LN) Textdatei '$TXTFILE'
%tAdressendatei : aDATEI
%tTextdatei : tDATEI
%tDrucken : d
%tDrucken(Test) : D
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
a?*)
LN=1; NA=0; unset ADRFILE
kdo=`expr $kdo : '.%(..*%)'`
[ ! -f $kdo ] && { echo Datei $kdo nichtexistent!%a
continue; }
ADRFILE=$kdo
while get_addr; do :; done
[ $? -gt 2 -o $NA -lt 1 ] && { unset ADRFILE; continue; }
echo $ADRFILE enthält $NA Adressen.
kdo=0
while [ "$kdo" -lt 1 -o "$kdo" -gt $NA ]
do
read "kdo?Startadresse angeben 1...$NA: "
done
SA=$kdo
to $((SA-1)) repeat; do get_addr; done
: ;;
t?*)
unset TXTFILE
kdo=`expr $kdo : '.%(..*%)'`
[ ! -f $kdo ] && { echo Datei $kdo nichtexistent!%a
continue; }
TXTFILE=$kdo
prep_txt
: ;;
[dD])
{ ifset ADRFILE && ifset TXTFILE; } ||
{ echo Erst Auswahl treffen!%a; continue; }
make_outp $kdo
: ;;
e) [ -f "$OFILE" ] && rm $OFILE; exit 0;;
*) echo %a%c ;;
esac
done
D='g:\cie\mc\c\upc4\base'
F="$D\cfgbase.txt $D\mesbase.txt"
N=00000 A=00000 a=0000
for B in $F
do
N=0 A=0 a=0
echo "$B"
<"$B"
while readl Z
do
expr "$Z" :: '^%$' && break
expr "$Z" :: '^@%d' || continue
if expr "$Z" :a '[AS]%(%d%{1,}%)'
then let "++N" "A+=a"
else let "++N"
fi
done
><
echo N=$N A=$A
done
:
OFILE=bish_schi.out
init() {
echo "%eE%e&a9L%e&k2G%e*t600R%e%1Binsc0,4,0,4,2;
sd1,341,2,1,4,10,5,4,6,0,7,4148ss;
DT³,1sp1wu0pw0.0lo5;
" > $OFILE
}
schild() {
echo "pa100,$RH;sd4,$SG;" >> $OFILE
for NAME in "Junker" "Stork" "KKKKKKK" %
"Schenk" "Horsthemke" "Rabe" %
"Torres" "Schulze" "2.OG_re"
do
echo "er$RB,$RH;pr$((RB/2)),$((RH/2))pc1,$FARBE;lb$NAME%r³pc1,0,0,0
pr-$((LOCH/2)),0ci6pr$LOCH,0ci6;
pr-$((LOCH/2+RB/2)),$((RH/2));" >> $OFILE
done
}
end_gl() {
echo '%e%%0A%c' >> $OFILE
}
druck() {
init
schild
end_gl
echo '%eE%c' >> $OFILE
cat $OFILE >> $DRUCKER
}
RH=150 RB=600 LOCH=620 SG=30
FARBE=22,4,198
while :
do
echo "%n%n%thöhe=$RH breite=$RB löcher=$LOCH schrift=$SG farbe=$FARBE%n
%t%th150b640l630s24 : 1
%t%th140b440l380s15.5 : 2
%t%th150b600l620s30 : 3
%t%tEingabe h b l s : e
%t%tSchriftfarbe : f
%t%tDrucken : d
%t%tBeenden : q
%t%t : %c"
read kdo
case "$kdo" in
1) RH=150 RB=640 LOCH=630 SG=24 ;;
2) RH=140 RB=440 LOCH=380 SG=15.5 ;;
3) RH=150 RB=600 LOCH=620 SG=30 ;;
e) read "RH? h b l [mm/10] s: " RB LOCH SG rest ;;
f) read "FARBE? rot,grün,blau: " rest ;;
d) druck ;;
q) break ;;
*) : ;;
esac
done
[ -f $OFILE ] && rm $OFILE
OFILE=bish_schi.out
init() {
echo "%eE%e&a9L%e&k2G%e*t600R%e%1Binsc0,4,0,4,2;
sd1,341,2,1,4,10,5,4,6,0,7,4148ss;
DT³,1sp1wu0pw0.0lo5;
" > $OFILE
}
schild() {
RH=90 RB=610 SG=20
NAME="H. Schellong"
echo "pa100,$RH;sd4,$SG;" >> $OFILE
echo "er$RB,$RH;pr$((RB/2)),$((RH/2))lb$NAME%r³;" >> $OFILE
}
end_gl() {
echo '%e%%0A%c' >> $OFILE
}
druck() {
init
schild
end_gl
echo '%eE%c' >> $OFILE
cat $OFILE >> $DRUCKER
}
druck
[ -f $OFILE ] && rm $OFILE
OFILE=bish_schi.out
init() {
echo "%eE%e&a9L%e&k2G%e*t600R%e%1Binsc0,4,0,4,2;
sd1,341,2,1,4,10,5,4,6,0,7,4148ss;
DT³,1sp1wu0pw0.0lo5;
" > $OFILE
}
schild() {
RH=250 RB=800 SG=18
FARBE=229,74,44
NAME="Keine Werbung%r%nund keine Zeitungen%r%neinwerfen"
echo "pa100,$RH;sd4,$SG;" >> $OFILE
echo "pr$((RB/2)),$((RH/2))pc1,$FARBE;lb$NAME%r³pc1,0,0,0;" >> $OFILE
}
end_gl() {
echo '%e%%0A%c' >> $OFILE
}
druck() {
init
schild
end_gl
echo '%eE%c' >> $OFILE
cat $OFILE >> $DRUCKER
}
druck
[ -f $OFILE ] && rm $OFILE
set Z:.300 num:020 p:.300 n:.100 N:.200
num=1000
for 2 p n in $(cat sco2.lst)
do
expr "$p" :Z '^%(.%{1,}%)%.Z$'
expr "$n" :N '^%(.%{1,}%)%.Z$'
cp -pv "/fat/SCOb/$N" "$Z" && rm -v "$p"
done
LST=`ls -iRqF /u/sh | %
awk 'BEGIN { ino=0; dir="" }
NF == 1 { split($0,A,":"); dir=A[1]; next }
/..*\*$/ && NF == 2 && $1 != ino {
ino=$1; split($2,A,"*"); print dir "/" A[1]
}
'`
scanhlp() {
R=1
for F
do
HS="`/bin/grep '^#?@(#).' "$F" | sed -e 's/^......\(..*\)$/\1/' `"
[ -z "$HS" ] && continue
HC=`echo "$HS" | sed -e 's/^\(.\).*$/\1/' `
case "$HC" in
:) echo "$HS" | sed -e 's/^.\(.*\)$/\1/';;
() echo " Subscript." ;;
-) csh -f -c "$F" ;;
+) csh -f -c "$F 7___2" ;;
[a-zA-Z_0-9]*) csh -c "$F $HC" ;;
*) continue ;;
esac
R=0
done
return $R
}
LST="`fgrep -l -e '#!/' $LST`"
BLST="`echo "$LST%c" | awk -F / '{ print $NF }'`"
BLST="`echo "$BLST%c" | sort`"
while :
do
echo "$BLST%c" | pr -t -w78 -5 | pg -23 -efns -p'%d: '
echo " Auswahl: [v|vi] [name]: %c"
read A B rest
[ -z "$A" ] && exit 0
F=$A
[ "$A" = v -o "$A" = vi ] && { F=$B A=""; }
[ -z "$F" ] && continue
ALST="`echo "$LST%c" | /bin/grep "/$F%$" `"
[ -n "$A" ] && scanhlp $ALST || {
[ -n "$ALST" -a -n "$A" ] && pg -23 -fns -p'%d: ' $ALST
}
[ -n "$ALST" -a -z "$A" ] && vi $ALST
echo " <Enter> %c"
read rest
done
NAME="Helmut Schellong%r"
STRASE="Pestalozzi-Straße 72%r"
ORT="32108 Bad Salzuflen%r"
TELFAX="Tel/Fax 05222-84540 · var@schellong.biz%r"
BANK="Kreissparkasse RRRRRRR · BLZ 480 501 10 · Konto 7777777%r"
YMAX=2710 XMAX=1980
start() {
echo "%eE%e&a9L%e&k2G%e*t600R%e%1BinSC0,$XMAX,0,$YMAX,1;
sd1,14,2,1,4,10,5,0,6,3,7,4148ss;
DT|,1sp1wu0pw0.0lo2;
rf1,10,8,1,%c"
echo "1,1,0,0,0,0,0,0,0,0,%c"
echo "0,0,0,0,0,0,0,0,0,0,%c"
echo "0,0,0,0,0,1,1,0,0,0,%c"
echo "0,0,0,0,0,0,0,0,0,0,%c"
echo "1,1,0,0,0,0,0,0,0,0,%c"
echo "0,0,0,0,0,0,0,0,0,0,%c"
echo "0,0,0,0,0,1,1,0,0,0,%c"
echo "0,0,0,0,0,0,0,0,0,0,;"
echo "PUpa0,0;"
}
GROU=80 GRL=100 RAD=80
LGRAD=70
LGX=1600 LGY=$((YMAX-LGRAD))
schatten() {
local FARBE=148,186,247
echo "
pa0,0PM0pr0,$((LGY+GROU/2)),2000,0,0,-$GROU,-$((2000-GRL-RAD)),0;
ar0,-$RAD,90pr0,-$((LGY-GROU/2-2*RAD-GROU))ar$RAD,0,90;
pr$((2000-GRL-RAD)),0,0,-$GROU,-2000,0PM2pc1,$FARBE;ft1fp;pc1,0,0,0;
"
}
logo() {
local rad=$LGRAD abs=$(([6*LGRAD]/25)) ybr=$(([10*LGRAD]/25))
local neig=$(([15*LGRAD]/25)) y
y=$((rad*2-abs*2-ybr))
echo "
pa$LGX,$LGY;pm0ci$((rad+[rad*4]/10)),0.5pm2tr0ft10,0fp;
pm0ci$rad,0.5pm2ft1fp;
pr0,$((rad-abs))pm0;
pr0,-$ybr,$neig,-$y,0,$ybr,-$neig,$y;
pm2ft10,0fp;
pr0,-$(([rad-abs]*2))pm0;
pr0,$ybr,-$neig,$y,0,-$ybr,$neig,-$y;
pm2fpft1tr1;
"
}
logo0() {
echo "
pa$LGX,${LGY}PM0ci${LGRAD}PM2tr0ft10,0FP;
pa$LGX,${LGY}PM0ci$(((LGRAD*3)/4))PM2ft1FP;
pr-$((LGRAD/2)),-$((GROU/2))ft10,0rr$LGRAD,$GROU;
pa$((LGX-LGRAD)),$((LGY+GROU/2+LGRAD/10))rr$((2*LGRAD)),$((LGRAD/2));
pa$((LGX-LGRAD)),$((LGY-GROU/2-LGRAD/10))rr$((2*LGRAD)),-$((LGRAD/2))tr;
pa$LGX,$LGY$LGTXT
pa$LGX,$((LGY-GROU/2-LGRAD/10-40))lo5sd4,12,5,0,6,3si.254,.20;
lbSOFTWARE%r|si;
"
}
abs() {
echo "
pa$LGX,$((LGY-LGRAD-100))lo5sd4,12.00,5,4,6,0;
lb$NAME|pr0,-38lb$STRASE|pr0,-38lb$ORT|pr0,-38sd4,9.5lb$TELFAX|;
"
}
striche() {
echo "
pupw.35;
pa0,$((1050-115))pdpr40,0pupr0,1050pdpr-40,0pupw.5pr0,-620pdpr40,0;
pupw0;
"
}
bank() {
echo "
pa$((GRL+RAD)),0tr0ft10,0rr600,28pr300,0sd4,7.5,6,0lo14lb$BANK|;
"
}
diverses() {
echo "
pa0,$((GROU+RAD))tr0ft10,0rr12,170di0,1sd4,2.75,5,0lo13;
lbSie wollen alles ganz genau wissen!|di;
pw0pupa$((200-56-20)),$((2*1050-115+170-20))pdpr30,0,-30,0,0,30,0,-30pu;
pr900,0pdpr-30,0,30,0,0,30,0,-30pupr0,440pdpr0,-30,0,30,-30,0,30,0pu;
pr-900,0pdpr30,0,-30,0,0,-30,0,30pupr$((50+20)),-40lo3sd4,7.00;
lbHelmut Schellong · Pestalozzi-Straße 72 · 32108 Bad Salzuflen%r|;
"
}
end_gl() {
echo '%e%%0A%c'
}
start
schatten
logo
striche
abs
[ "$1" == -nobank ] || bank
diverses
end_gl
cd "$1"
shift
[ $# -ne 0 ] && files="$@"
[ $# -eq 0 ] && files=?*.[ch]
while :
do
read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
print -r $files
read "abf?Dateien/Aenderungen abfragen? [yn][yn]: "
nowd='[^a-zA-Z_0-9]'
for file in $files
do
expr "$file" =:: 'mb[0-9]%{2,%}%.h$' && continue
expr "$file" =:: '^tmp_..*' && continue
is=1
grep -q "$nowd$old$nowd" "$file" && is=
ifset is && grep -q "^$old$nowd" "$file" && is=
ifset is && grep -q "$nowd$old%$" "$file" && is=
ifset is && grep -q "^$old%$" "$file" && is=
ifset is && continue
inp=y
echo "$file:"
[[ "$abf" == y? ]] && read "inp?'$file'? [y]: "
[ "$inp" != y ] && continue
cat "$file" > "tmp_$file"
4<&0
cat "$file" | {
3> "$file"
while readl zeile zeile2
do
is=1
expr "$zeile" :zeile "%%($nowd%%)$old%%($nowd%%)" + "%%1$new%%2" && is=
ifset is && expr "$zeile" :zeile "^$old%%($nowd%%)" "$new%%1" && is=
ifset is && expr "$zeile" :zeile "%%($nowd%%)$old%$" "%%1$new" && is=
ifset is && expr "$zeile" :zeile "^$old%$" "$new" && is=
inp=y
ifset is || [[ "$abf" == ?y ]] && {
print -r "$zeile2"
echo
print -r "$zeile"
read -u4 "inp??[y]: "
}
[ "$inp" != y ] && zeile="$zeile2"
print -ru3 "$zeile"
done
><
}
><
done
read "inp?Sicherheitskopien '$(print -rn tmp_*)' behalten?[y]: "
[ "$inp" != y ] && remove -v tmp_*
read "inp?$0: Beenden?[y]: "
[ "$inp" == y ] && break
done
[ $# -ne 0 ] && files="$@"
[ $# -eq 0 ] && files=?*.[chCH]
files="$files cfgbase.txt mesbase.txt"
read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
expr "$old" :old '\s' += ' '
expr "$new" :new '\s' += ' '
print -r $files
read "abf?Dateien/Aenderungen abfragen? [yn][yn]: "
nowd='[^a-zA-Z_0-9]'
for file in $files
do
expr "$file" =:: '[Mm][Bb][0-9]%{2,%}%.[Hh]$' && continue
grep -qm -e "%%<$old%%>" "$file" || continue
inp=y
[[ "$abf" == y? ]] && read "inp?'$file'? [y]: "
[ "$inp" != y ] && continue
4<&0
cat "$file" | {
3> "$file"
while readl zeile zeile2
do
is=1
expr "$zeile" :zeile "%%<$old%%>" + "$new" && is=
inp=y
ifset is || [[ "$abf" == ?y ]] && {
print -r "$zeile2"
echo
print -r "$zeile"
read -u4 "inp??[y]: "
}
[ "$inp" != y ] && zeile="$zeile2"
print -ru3 "$zeile"
done
><
}
><
done
Wl='%<'
Wr='%>'
O=.........
[ $# -eq 0 -o $# -eq 2 -o $# -eq 3 ] || exit
[ $# -eq 3 ] && O="$1" old="$2" new="$3"
[ $# -eq 3 -a "$O" != '-a' ] && exit 1
[ $# -eq 3 -a "$O" == '-a' ] && unset Wl Wr
[ $# -eq 2 ] && old="$1" new="$2"
sharefiles=./share/?*.[chCH]
mfiles=./mu2000/?*.[chCH]
ufiles=./upc3/?*.[chCH]
madd="./mu2000/cfgbase.txt ./mu2000/mesbase.txt ./mu2000/ver.txt"
uadd="./upc3/cfgbase.txt ./upc3/mesbase.txt ./upc3/ver.txt"
files="$sharefiles $mfiles $ufiles $madd $uadd"
expr "$files" =:files '%./%w%{2,}/mb[0-9]%{2,}%.h%>' += ''
expr "$files" =:files '%./%w%{2,}/t[0-9]h[^ ]%{2,}%>' += ''
expr "$files" =:files '%./%w%{2,}/texts[^ ]*%.h%>' += ''
[ $# -eq 0 ] && read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
expr "$old" :old '\s' += ' '
expr "$new" :new '\s' += ' '
print -r $files
for file in $files
do
grep -qm -e "$Wl$old$Wr" "$file" || continue
cat "$file" | {
> "$file"
while readl zeile
do
expr "$zeile" :zeile "$Wl$old$Wr" + "$new"
print -r "$zeile"
done
><
}
done
exit 0
Wl='%<'
Wr='%>'
O=.........
[ $# -eq 0 -o $# -eq 2 -o $# -eq 3 ] || exit
[ $# -eq 3 ] && O="$1" old="$2" new="$3"
[ $# -eq 3 -a "$O" != '-a' ] && exit 1
[ $# -eq 3 -a "$O" == '-a' ] && unset Wl Wr
[ $# -eq 2 ] && old="$1" new="$2"
files=?*.[chCH]
files="$files cfgbase.txt cfgbase256.txt"
expr "$files" =:files '%<mb[0-9]%{2,}%.h%>' += ''
expr "$files" =:files '%<t[0-9]h[^ ]%{2,}%>' += ''
expr "$files" =:files '%<texts[^ ]*%.h%>' += ''
[ $# -eq 0 ] && read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
expr "$old" :old '\s' += ' '
expr "$new" :new '\s' += ' '
print -r $files
for file in $files
do
grep -qm -e "$Wl$old$Wr" "$file" || continue
cat "$file" | {
> "$file"
while readl zeile
do
expr "$zeile" :zeile "$Wl$old$Wr" + "$new"
print -r "$zeile"
done
><
}
done
exit 0
set files:.1000
set file:.100
O=......... Wl=.... Wr=....
Wl=
Wr=
files=
[ $# -eq 0 -o $# -eq 2 -o $# -eq 3 ] || exit
[ $# -eq 3 ] && O="$1" old="$2" new="$3"
[ $# -eq 3 -a "$O" != '-a' ] && exit 1
[ $# -eq 3 -a "$O" == '-a' ] && Wl='%<' Wr='%>'
[ $# -eq 2 ] && old="$1" new="$2"
for file in kap/??*.tex mod/??*.tex
do files="$files $file"; done
[ $# -eq 0 ] && read "old?ALT und NEU [aaa nnn]: " new
ifset old || exit
ifset new || exit
expr "$old" :old '\S' += ' '
expr "$new" :new '\S' += ' '
print -r $files
for file in $files
do
grep -qm -e "$Wl$old$Wr" "$file" || continue
cat "$file" | {
> "$file"
while readl zeile
do
expr "$zeile" :zeile "$Wl$old$Wr" + "$new"
print -r "$zeile"
done
><
}
done
exit 0
RA='
w REQ_MOU1 REQ_MOUE
w REQ_MOU2 REQ_MOUI
'
W=......
set O:.50
set N:.50
for 3 W O N in $RA
do
[ "$W" == a ] && W=-a
[ "$W" == w ] && W=
print -u2 "%t$W: $O $N"
bish ./sed.bish $W "$O" "$N"
done
exit 0
w uart1sovr uartmsovr
w uart1crc uartmcrc
w uart0hw uartehw
w uart0buf uartebuf
w uart1hw uartmhw
w uart1buf uartmbuf
w uart2hw uartihw
w uart2buf uartibuf
w uart3hw uartfhw
w uart3buf uartfbuf
w uart0recv uarterecv
w uart1recv uartmrecv
w uart2recv uartirecv
w uart3recv uartfrecv
w uart1tmo0 uartmtmo0
w uart1tmo1 uartmtmo1
w uart1tmo2 uartmtmo2
w uart1tmo uartmtmo
w uart1tmo0 uartmtmo0
a TXIRPT(0) TXIRPT(UNE)
a TXIRPT(1) TXIRPT(UNM)
a TXIRPT(2) TXIRPT(UNI)
a TXIRPT(3) TXIRPT(UNF)
a RXIRPT(0) RXIRPT(UNE)
a RXIRPT(1) RXIRPT(UNM)
a RXIRPT(2) RXIRPT(UNI)
a RXIRPT(3) RXIRPT(UNF)
a TXDATA(0) TXDATA(UNE)
a TXDATA(1) TXDATA(UNM)
a TXDATA(2) TXDATA(UNI)
a TXDATA(3) TXDATA(UNF)
a RXDATA(0) RXDATA(UNE)
a RXDATA(1) RXDATA(UNM)
a RXDATA(2) RXDATA(UNI)
a RXDATA(3) RXDATA(UNF)
a ISTXDATA(0) ISTXDATA(UNE)
a ISTXDATA(1) ISTXDATA(UNM)
a ISTXDATA(2) ISTXDATA(UNI)
a ISTXDATA(3) ISTXDATA(UNF)
a ISRXDATA(0) ISRXDATA(UNE)
a ISRXDATA(1) ISRXDATA(UNM)
a ISRXDATA(2) ISRXDATA(UNI)
a ISRXDATA(3) ISRXDATA(UNF)
a CLRRXERR(0) CLRRXERR(UNE)
a CLRRXERR(1) CLRRXERR(UNM)
a CLRRXERR(2) CLRRXERR(UNI)
a CLRRXERR(3) CLRRXERR(UNF)
a GETRXERR(0) GETRXERR(UNE)
a GETRXERR(1) GETRXERR(UNM)
a GETRXERR(2) GETRXERR(UNI)
a GETRXERR(3) GETRXERR(UNF)
a RXERR(0) RXERR(UNE)
a RXERR(1) RXERR(UNM)
a RXERR(2) RXERR(UNI)
a RXERR(3) RXERR(UNF)
w U0t Uet
w U1t Umt
w U2t Uit
w U3t Uft
w U0r Uer
w U1r Umr
w U2r Uir
w U3r Ufr
w Putc0 PutcE
w Putc1 PutcM
w Putc2 PutcI
w Putc0i PutcEi
w Putc1i PutcMi
w Putc2i PutcIi
w Write0 WriteE
w Write1 WriteM
w Write2 WriteI
w Write0s WriteEs
w Write1s WriteMs
w Write2s WriteIs
sum=000000000000
Dir="$(prints s80-)"
F="$(prints s80-)"
vonbis="$(prints s80-)"
size="$(prints s80-)"
name="$(prints s80-)"
namen="$(prints s500-)"
[ $# -lt 1 ] && Dir=.
[ $# -ge 1 ] && Dir="$1"
[ "$Dir" == . ] && Dir=$(pwd)
expr "$Dir" =:: '[/\]lst$' || Dir="$Dir/lst"
conv -F/F\ Dir
[ -d "$Dir" ] || { echo "Keine Existenz: '$Dir'!"; exit 1; }
cd "$Dir"
echo Verzeichnis: $Dir
: *.mp1
[ $] -lt 1 ] && { echo "Keine *.mp1 vorhanden!"; exit 1; }
RamSZ=8 RomSZ=384
read "ramsz?RAM($RamSZ) und FLASH($RomSZ) [KB]: " romsz
expr "$ramsz" :: '^[0-9]%{1,}$' && RamSZ=$ramsz
expr "$romsz" :: '^[0-9]%{1,}$' && RomSZ=$romsz
namen=" "
for F in *.mp1
do
echo "$F ..."
5< "$F"
while read -u5 vonbis size name - - - - -
do
expr "$vonbis" :: '^[0-9a-fA-F]%{8%}-[0-9a-fA-F.]%{8%}' || continue
expr "$namen" :: " $name " || namen="$namen$name "
done
><
for Dir in $namen
do
sum=0
5< "$F"
while read -u5 vonbis size name - - - - snam
do
[ "$snam" == IOXTND -o "$snam" == INTVECT ] && continue
expr "$vonbis" :: '^[0-9a-fA-F]%{8%}-[0-9a-fA-F.]%{8%}' || continue
[ "$name" != "$Dir" ] && continue
let "sum+=16#$size"
done
><
prints s20s13 "$Dir:" $sum
case "$Dir" in
IO) IO=$sum;;
DIR) DIR=$sum;;
DATA) DATA=$sum;;
STACK) STACK=$sum;;
CODE) CODE=$sum;;
CONST) CONST=$sum;;
DIRC) DIRC=$sum;;
esac
done
done
echo
prints s20s13s13 RAM= $((DIR+DATA+STACK+DIRC)) $((RamSZ*1024-[DIR+DATA+STACK+DIRC]))
prints s20s13s13 FLASH= $((CODE+CONST)) $((RomSZ*1024-[CODE+CONST]))
read
:
set Z:.200 W:.20 N:.10 Np:.10
>"t_1"
for BF in "base/cfgbase.txt" "base/mesbase.txt"
do
<"$BF"
while readl Z
do
for W in $Z
do
expr "$W" :: '^T_[0-9a-z_]%{2,}$' || continue
expr "$W" :: '^T_e_' && continue
conv -TTD W
catv W /%n
done
done
><
done
><
sortl t_1 | uniq > t_1
N=0 Np=0
>"t_2"
<"base/txtbase.h"
while readl Z
do
expr "$Z" :Z ' %(D_[0-9a-z_]%{2,}%)_%d%d%d_en ' || continue
grep -q "$Z" t_1 && { let ++Np; continue; }
catv Z /%n
let ++N
done
><<
sortl t_2 | uniq > t_2
catv /"$Np Textbezeichner aus dem Parameterbereich:%n" 0 %
/"%n$N Textbezeichner außerhalb des Parameterbereichs:%n" 4 >t_3 <t_1 4<t_2
remove t_1 t_2
Tt='1011508099'
Nn='758'
Sperre='0'
SelfN='1831'
cat $1 | {
>$1
while readl Z
do
expr "$Z" :Z '=$' = '' && { catv Z; continue; }
catv Z /%n
done
><
}
K=1024
NA=1024
NV=128
NF=64
echo abuf=$((ABUF=5*K))
echo args=$((ARGS=NA*2)) nargs=$NA
echo vars=$((VARS=NV*8)) nvar=$NV
echo vbuf=$((VBUF=4*K))
echo vbufl=$((VBUFL=2*K))
echo fun=$((FUN=NF*4)) nfu=$NF
echo summe=$((ABUF+ARGS+VARS+VBUF+VBUFL+FUN))
for j from 1970 to 2079 repeat
do
(( nsj+= cjsj= !(j%4)&&j%100||!(j%400) ))
echo "/*$j*/ { $cjsj, $nsj },"
done
for j from 1970 to 2079 repeat
do
(( cjsj= !(j%4)&&j%100||!(j%400) ))
(( corr+= 24*3600*(365+cjsj) ))
prints ss13 "/*$j*/ " "${corr}ul,"
done
NB=00000000
nb=00000000
nb0=00000000
esl=SELI
s=111
Dir="$(prints s80-)"
nam="$(prints s80-)"
nam0="$(prints s80-)"
na="$(prints s80-)"
F="$(prints s80-)"
LibStk="$(prints s80-)"
zeile="$(prints s500-)"
Zeile="$(prints s500-)"
ASM_C="../../lib/calib.c"
[ $# -lt 1 ] && Dir=.
[ $# -ge 1 ] && Dir="$1"
[ "$Dir" == . ] && Dir=$(pwd)
expr "$Dir" =:: '[/\]obj$' || Dir="$Dir/obj"
conv -F/F\ Dir
[ -d "$Dir" ] || { echo "Keine Existenz: '$Dir'!"; exit 1; }
cd "$Dir"
echo Verzeichnis: $Dir
: *.stk
[ $] -lt 2 ] && { echo "Keine/zuwenig *.stk vorhanden!"; exit 1; }
for F in *.stk
do
expr "$F" :: '[lL][iI][bB]9..[slmcSLMC]%....$' && {
LibStk=$F; continue
}
done
[ -s "$LibStk" ] || { echo "Keine lib9##x.stk vorhanden!"; exit 1; }
[ -s "$ASM_C" ] && grep '^[ %t]*FOO(%w%w*)' "$ASM_C" | {
> asm_c_stk
while readl Zeile
do
expr "$Zeile" :zeile 'FOO(%([^)]%{1,}%))' || continue
catv '/ 4 E ' /_ zeile /%n
done
><
cat asm_c_stk >> calib.stk
}
GetStkLen() {
zeile="$( grep -m -e $2 $3 )" || zeile=8
expr "$zeile" :$1 '^%([0-9]%{1,%}%)'
return 0
}
GetStkLenLib() {
zeile="$( grep -m -e "[ %t]$2[ %t]*" $LibStk )" || return
expr "$zeile" :$1 '%([0-9]%{1,%}%)'
return 0
}
echo .stk-Dateien Konversion ...
> fuu.txt
for F in *.stk
do
expr "$F" :: '[lL][iI][bB]9..[slmcSLMC]%....$' && {
print -u2 "%t-- $F --"
continue
}
print -u2 "%t$F"
< $F
while read nb esl nam a
do
ifset nb esl nam || continue
expr "$esl" :esl '^%([ESILesil]%)' || continue
[ "$a" == A -a "$nb" == 0 ] && nb=8
expr "$nb" :nb '^%([0-9]%{1,%}%)' && print "$nb +$esl$nam+"
done
><
done
><
echo .stk-Dateien Konversion2 und Bytes ...
> stack.txt
for F in *.stk
do
expr "$F" :: '[lL][iI][bB]9..[slmcSLMC]%....$' && {
print -u2 "%t-- $F --"
continue
}
print -u2 "%t$F"
< $F
while read nb esl nam a
do
ifset nb esl nam || continue
expr "$esl" :esl '^%([ESILesil]%)' || continue
na="$nam"
nam="$esl$nam"
[ "$a" == A -a "$nb" == 0 ] && nb=8
expr "$nb" :nb '^%([0-9]%{1,%}%)' && {
nam0=$nam nb0=$nb
print "$nam:$nb"
continue
}
expr "$nb" :: '^->' && {
GetStkLen NB "+$nam+" fuu.txt || GetStkLenLib NB "$na" || {
print -u2 "'$nam' nicht gefunden!"
><< ; read "-?<Enter> "; exit 1
}
cmpv nam nam0 && print -u2 "Rekursiv!: $nam0:$nb0 $nam:$NB" && continue
print "$nam0:$nb0 $nam:$NB"
}
done
><
done
><
fstat -s stack.txt
nb=0
echo Verschachtelter Scan ...%c
cat stack.txt > fuu.txt
while ifset s
do
print -u2
prints su210- $((++nb))
s="" nb0=0
cat stack.txt | {
> stack.txt
while readl Zeile
do
print -u2 "%r%c"
prints su210s10- $nb $((++nb0))
ifset Zeile || continue
expr "$Zeile" :nam ' %([^ %t]%{1,%}%)$' || { print -r "$Zeile"; continue; }
grep -e "^$nam " fuu.txt > fuu2.txt || { print -r "$Zeile"; continue; }
s=1
3< fuu2.txt
while read -u3 - zeile
do
print -r "$Zeile $zeile"
done
><
done
><
}
done
print -u2
fstat -s stack.txt
echo Summenbildung ...
cat stack.txt | {
> stack.txt
while readl Zeile
do
NB=0
for nam in $Zeile
do
expr "$nam" :nb ':%([0-9][0-9]*%)'
let "NB+=nb"
done
prints s5s $NB " $Zeile"
done
><
}
fstat -s stack.txt
echo Sortierung ...
sortl -r -fn1 -ostack.txt stack.txt || echo -$?- Fehler bei sortl-Kommando!
fstat -s stack.txt
echo Interrupts ...
grep ' I' stack.txt > fuu2.txt
echo >> fuu2.txt
cat fuu2.txt stack.txt | cat > stack.txt
fstat -s stack.txt
echo ID-Buchstaben entfernen ...
cat stack.txt | {
> stack.txt
while readl Zeile
do
expr "$Zeile" :Zeile '%([ %t]%)[ISEL]' + '%1'
expr "$Zeile" :Zeile '^[ISEL]' ''
print -r "$Zeile"
done
><
}
fstat -s stack.txt
remove fuu.txt fuu2.txt
read "-?bish:$0: <Enter> "
trap 'ifset R && echo "%e[0;37;40m%c"
#ifset tempfile && [ -f $tempfile ] && DEL $tempfile
ifset OV && $S_DIR\bin\ov.com -q $OV
echo "%n*** Skript-Abbruch ***%n"
' 1 2
set -f
ifenv S && S=' '
ifenv R && R=
X=0000000000
e=`echo %e%c`
inp="`prints s300-`"
ifset -E S_DIR BISHTEMP || {
echo Sie haben dieses Script nicht mittels start.bat gestartet
echo oder es liegt ein unerwarteter Fehler vor.
exit
}
whence -ep mem || [ $? -eq 10 ] &&
mem /d | grep -iq '[^a-zA-Z]ansi[^a-zA-Z]*' &&
whence -ep mode || [ $? -eq 10 ] &&
mode con | grep -q '[^0-9]25[^0-9]' &&
mode con | grep -q '[^0-9]80[^0-9]' &&
R='%e[2C' S='%e[0;30;46m%e[2;3H'
ifset R || {
VER | grep -iq caldera &&
grep -iq '^device.*=.*ansi%.' c:\config.sys &&
R='%e[2C' S='%e[0;30;46m%e[2;3H' &&
{ echo Caldera-DOS + ANSI; sleep 1; }
}
ifset R || {
prints sf-72
echo Es konnte nicht ermittelt werden, daß Ihr ANSI-Treiber
echo für den Bildschirm %(i.d.R. c:\dos\ansi.sys%) installiert ist!
echo Diese Batch-Datei benötigt diesen Treiber für Farbeinstellungen
echo und zur Cursor-Steuerung.
echo Entweder wurden die externen Kommandos "'mem' und/oder 'mode'"
echo nicht gefunden oder aber die Ausgabe dieser Kommandos enthielt
echo nicht die erforderlichen Informationen.
echo
echo Folgender Eintrag in Ihrer config.sys:
echo " devicehigh=c:\dos\ansi.sys /x"
echo %(od.ähnl.%) muß vorhanden sein.
echo
echo Sie können trotzdem fortsetzen, indem Sie nachfolgend
echo "das Wort 'ansi' eingeben."
echo Dabei sollten Sie aber sicher sein, daß ein ANSI-Treiber
echo geladen wurde und 25/80 Zeilen/Spalten eingestellt sind.
echo Andernfalls erhielten Sie unleserliches Durcheinander
echo auf dem Bildschirm!
prints sf-72
read "inp? Eingabe zum Fortsetzen: "
[ "$inp" != ansi ] && { echo "'$inp' ==> Abbruch"; exit; }
R='%e[2C' S='%e[0;30;46m%e[2;3H'
}
[ $S_DIR == . -o $S_DIR == .\ ] && S_DIR=$PWD
local ABAT='c:\autoexec.bat' CSYS=c:\config.sys
for ABAT from 100 to 199 repeat
do
tempfile=$BISHTEMP\startbish.$ABAT ; conv -F\ tempfile
[ ! -e $tempfile ] && echo $tempfile > $tempfile &&
[ -s $tempfile ] && break
[ $ABAT -ge 199 ] && { echo Fehlschlag $tempfile;tempfile=;exit; }
tempfile=''
done
echo Temporäre Datei ist: "'$tempfile'"
ABAT=c:\autoexec.bat
[ `ver w` == shw ] && { echo Bitte warten...; sleep 3; }
frage() {
[ $# -lt 1 ] && { read "-?start.bish: <Enter>"; return 0; }
while echo "%n$1 [jn]: %c"
do
read inp
case "$inp" in
[jJ]) return 0 ;;
[nN]) return 1 ;;
#M) return 2 ;;
#!) read "inp?"`pwd`":> "; system "$inp"; continue ;;
*) continue ;;
esac
done
return 3
}
info() {
local r=" " rd n=1
ansiscreen
ifset R && r='%e[4C '
while :
do
ifset R && { echo '%e[0;37;40m%c'
for rd from 3 to 23 repeat; do prints ss72- "${e}[$rd;5H" ""; done
echo '%e[3H%c'
}
[ $n == 1 ] &&
echo "$r bish.exe v3.05 - UNIX-Shell-Programm für DOS
$r -----------------------------------------------------
$r Das Shell-Programm arbeitet jetzt gerade das Skript
$r 'start.bish' ab - eine lesbare Batch-Textdatei.
$r Alle Funktionen, die hier angeboten sind, können allein
$r von der 'bish' erledigt werden. Und wenn externe Programme
$r benutzt werden, dann als Beispiel - notwendig sind sie selten.
$r Die bish (Batch-Shell) mit ihren Shell-Scripts '*[.bish]'
$r ist mit command.com und seinen '*.bat' prinzipiell
$r vergleichbar. Allerdings ist die bish vielleicht um einen
$r Faktor 30-50 leistungsfähiger als command.com.
$r
$r Dieses Start-Skript ist als Anschauungsbeispiel geeignet,
$r jedoch konzeptionell an die begrenzten Möglichkeiten
$r der Shareware-Version angepaßt.
$r Das heißt, mit der Vollversion kann man noch wesentlich
$r 'schöner', einfacher und souveräner programmieren.
$r Sogar Scripts sind möglich, die wie defrag,scandisk,...
$r mit Fenstern auf dem Bildschirm erscheinen!"
[ $n == 2 ] &&
echo "$r Das Skript ist gleichzeitig als Demo, Anschauungsobjekt,
$r Anregung und kleine Installationshilfe gedacht, wobei letztere
$r kaum notwendig ist.
$r Bei Durchsicht des Skriptes wird man unschwer erkennen, daß
$r sehr darauf geachtet wurde, möglichst wenige Funktionen,
$r Variablen und Verschachtelungen zu erzeugen.
$r Daraus ergibt sich ein streckenweise unschön aussehender
$r und unnötig umfangreicher Skript-Text.
$r Der Grund dafür wurde oben bereits genannt: Shareware-Limits.
$r
$r Trotz der Ressourcenbeschneidung ist es gelungen, einige sehr
$r mächtige Funktionen zu verwirklichen.
$r Das komplexeste Beispiel dieses Skripts ist eine Light-Version
$r des UNIX-Kommandos 'tar', die alle Grundfunktionen bietet und
$r kompatibel mit den Original-Kommandos ist.
$r Das Archiv 'bish.tar' kann hiermit ausgepackt werden.
$r Eine weitere erstaunliche Funktion ist im Menü mittels Punkt 'b'
$r (b=Blocksatz) aktivierbar.
$r Auf der nächsten Seite mehr davon..."
[ $n == 3 ] &&
echo "$r Dennoch sind es netto nur etwa 60 Zeilen Skript-Text, die
$r dafür benötigt wurden. - Arbeitsergebnis:
$r
$r Gebrauch. Nutzung an allen Computern des
$r Kunden. Herstellung beliebig vieler Kopien
$r auf Festplatten, die sich im Kundenbereich
$r befinden. Herstellung von bis zu zwei
$r Disketten-Kopien pro Computer oder
$r Computer-Terminal, die sich im Kundenbereich
$r befinden. Sämtliche Kopien müssen
$r Urheberrechts-Vermerke (Copyright) enthalten
$r bzw. tragen, wie die Original-Software bzw.
$r die Original-Diskette(n). Die Software darf
$r Dritten nicht zugänglich gemacht werden.
$r Kopien müssen Urheberrechts-Vermerke
$r
$r Das Ausstattungsmerkmal einer automatischen Worttrennung
$r ist in diesen Demo-Blocksatz allerdings nicht eingebaut.
$r Die Lückenbreite würde dadurch begrenzt."
[ $n == 4 ] &&
echo "$r Die Blocksatz- und die Tar-Funktion wurden keineswegs
$r mit irgendwelchen Spezial-Kommandos realisiert, sondern nur
$r mit elementarer Grundausstattung der bish.
$r Am Beispiel dieser Funktionen wird erkennbar, daß man allein
$r mit 'bish.exe' nahezu alles machen kann, was vorstellbar ist!
$r Nimmt man die Kommandos 'dd' und 'bgrep' für den Binärbereich
$r hinzu, ist man in der Lage, jede beliebige Byte-Folge von jedem
$r beliebigen Ort zu lesen, an jeden zu schreiben und zu suchen.
$r
$r Bei diesen Schilderungen wird sicher langsam sichtbar, daß die
$r bish ein extrem mächtiges Universal-Werkzeug ist, mit dem
$r letztlich alle in der Praxis vorkommenden Probleme lösbar sind.
$r
$r Die Anwenderschaft wird sich aber stets in mindestens zwei
$r Gruppen spalten. Und zwar gibt es diejenigen, die willens und
$r in der Lage sind, zumindest kleinere Batch-Dateien zu schreiben,
$r und diejenigen, die nur fertige Programme für jeden Einzelzweck
$r kaufen - mit all den Vor- und Nachteilen."
[ $n == 5 ] &&
echo "$r Nachfolgend wird die Leistungsfähigkeit der bish aufgezeigt
$r und Vergleiche mit anderen Shell-Programmen gezogen:
$r
$r A r b e i t s g e s c h w i n d i g k e i t
$r ------------------------------------------------------------------
$r bish ************************************************************
$r ksh *******************************************
$r zsh *****
$r bash ***
$r csh **
$r 4dos *
$r sh -
$r ------------------------------------------------------------------
$r (s.a. Manual bish.mnv)
$r Die bish ist das schnellste aller Shell-Programme.
$r Vergleichbar in diesem Punkt ist bisher nur die ksh unter SCO-Unix.
$r
$r Das Arbeitstempo wird dann wichtig, wenn eine Shell für ein Skript
$r wenige Sekunden benötigt, eine andere jedoch mehrere Minuten!"
[ $n == 6 ] &&
echo "$r Die Größen der Shell-Executables:
$r ---------------------------------------------------------------
$r bish 95K (DOS), 103K (COFF), 87K (ELF)
$r 4dos 180K (DOS)
$r ksh 152K (ELF)
$r zsh 503K (COFF)
$r bash 528K (COFF)
$r csh 75K (ELF)
$r sh 57K (ELF)
$r ---------------------------------------------------------------
$r Als einzige Shell hat die bish zusätzlich die Kommandos
$r grep, expr, tr, cut, cat, prints, sum, crc,
$r wc, line, tee, catv, base, ...
$r eingebaut(!), die man nicht als typische Buildins bezeichnen kann,
$r sondern eher als kleine bis mittelgroße Arbeitskommandos,
$r wobei die ersten beiden sogar Regular Expressions verarbeiten.
$r Unter diesem Blickwinkel und in Anbetracht der noch folgenden
$r Informationen ist die Größe von anderen Shells sehr erstaunlich."
[ $n == 7 ] &&
echo "$r Arithmetik- und Logik-Modul der bish:
$r ---------------------------------------------------------------
$r () [] {} ! ~ ++ -- + - * * / % + -
$r << >> < <= > >= == != & ^ | && ^^ || ?:
$r = += -= *= /= %= &= ^= |= <<= >>= , ;
$r
$r array[...array[arithm_expr]...]
$r Zahlenbasis: 2-36, 256
$r typeset -i ((...)) %$((...)) let %"...%" ...
$r ---------------------------------------------------------------
$r Die bish verarbeitet alle Operatoren der Sprache C und noch
$r etwas mehr. Der Umfang ist hier mit dem der zsh vergleichbar.
$r
$r Arrays können auch außerhalb von aritm. Ausdrücken gesetzt
$r werden (a[i]=wert) und cond?true:false kann auch links
$r vom Gleichheitszeichen stehen.
$r Die modernen Shells (ksh,bash,zsh,bish) haben -insgesamt-
$r eine wesentlich höhere Komplexität als die Sprache C !"
[ $n == 8 ] &&
echo "$r Weitere Vergleichskriterien:
$r bish ksh zsh bash csh sh 4dos
$r ---------------------------------------------------------------
$r Kommandos 76 35 58 41 26 27 >50
$r Prozeßmanagem. 0 5 10 7 2 0 0
$r Alternativnamen 1 0 14 1 1 0 0
$r if - - - - * - *
$r if-elif-else * * * * . * .
$r for name in * * * * * * .
$r for n name... * - - - - - -
$r for ... repeat * - * - . - *
$r while, until * * * * * * *
$r case * * * * * * -
$r function() 8 6 6 6 0 6 0
$r alias 6 7 7 7 9 0 7
$r Arithmetik 8 6 8 6 3 0 2
$r Arrays 9 8 8 8 5 0 2
$r Wildcards 8 9 9 9 8 9 2
$r RegExpr * - - - - - -"
[ $n == 9 ] &&
echo "$r Abschließende Vergleichskriterien:
$r bish ksh zsh bash csh sh 4dos
$r ---------------------------------------------------------------
$r Lokale Objekte 8 3 3 3 0 0 1
$r Umlenkungen 7 8 8 8 4 7 2
$r Dateien 9 5 6 5 5 5 7
$r Pipeline 7 9 9 8 7 6 4
$r Exit-Code 9 7 7 7 3 6 3
$r Struktur.Syntax 8 8 8 8 7 7 1
$r goto * - - - * - *
$r Syntax-Menge 7 8 9 8 5 4 6
$r Binär-Operat. 8 2 2 1 0 1 1
$r Binär-Variabl. * * * - - - -
$r Kdo.Substitut. 9 8 8 7 7 7 0
$r Maskierung 8 7 7 7 5 6 2
$r Argum.bildung 8 8 8 7 6 6 2
$r Spelling - * * * * * *
$r Help 5 5 5 7 5 5 8
$r Portabilität all ux ux ux ux ux dos"
[ $n == 10 ] &&
echo "$r Fazit aus den Vergleichsbetrachtungen:
$r ---------------------------------------------------------------
$r Es ist eine Tatsache, daß man bei dem Versuch, die unterschied=
$r lichsten Probleme zu lösen, mit der bish am seltensten in eine
$r Sackgasse läuft. Mit der vorliegenden Version 2.4 ist das in
$r Praxis noch nie vorgekommen.
$r Die zsh ist nach der bish einerseits die erste Wahl, jedoch bei
$r zeitkritischen Aufgaben bekommt die ksh nach der bish den
$r zweiten Platz.
$r Als Autor der bish bin ich natürlich prinzipiell befangen,
$r es läßt sich aber nicht wegdiskutieren, daß die bish, obwohl für
$r DOS und alle anderen Systeme konzipiert, die schnellste,
$r fast die kleinste, und diejenige Shell mit dem mächtigsten
$r Inhalt und der größten Problemlösungskraft ist.
$r Die bish ist allen anderen existierenden Shell-Programmen
$r deutlich bis haushoch überlegen!
$r Die meisten Ausstattungsmerkmale der bish, die über den Grundstock
$r der ksh hinausgehen, sind in Folge konkreter, in der Praxis
$r aufgetauchter Programmiernöte entstanden."
[ $n == 11 ] &&
echo "$r Zum eingebauten tar-Kommando:
$r
$r Erzeugung eines Archivs: tar cf arch ./dir ./datei ...
$r Erweitern eines Archivs: tar rf arch ./dir ./datei ...
$r Inhalt auflisten : tar tf arch
$r Archiv auspacken : tar xf arch
$r Abbruch : <Enter>
$r
$r Verzeichnisse werden rekursiv erfaßt.
$r Wildcards sind möglich: ./dir/*.txt
$r Bei allen tar-Kommandos sollte man stets relative und
$r mit ./ oder .\ beginnende Angaben machen!
$r tar erzeugt später keine Verzeichnisse, falls man nur
$r ./dir/datei angibt. Dazu muß man (auch) ./dir angeben, weil
$r nur hierbei ein spezieller dir-Dateikopf erzeugt wird.
$r Das ist auch unter Unix teilweise so.
$r Das Verzeichnis kann man unter Menü '#' wechseln!
$r Das Kommando erzeugt Prüfsummen der Dateiköpfe.
$r Bei unpassenden Prüfsummen muß tar abbrechen!"
[ $n == 12 ] &&
echo "$r tar-Archive wurden unter DOS und unter UNIX mit allen
$r Grundfunktionen erfolgreich getestet.
$r Dieser TARchiver kann nicht direkt mit Disketten arbeiten,
$r dazu braucht man zusätzlich eine dazu fähige 'dd.exe'.
$r (Gibt es für DOS meines Wissens nur von mir.)
$r
$r DOS mag es überhaupt nicht, wenn man von der Festplatte liest
$r und gleichzeitig auf sie schreibt.
$r Es ist mehrere 10x(!) schneller, beispielsweise ein tar-Archiv
$r auf einer RAM-Disk entstehen zu lassen:
$r : tar cf r:\ta ./doc ./man
$r > dd if=r:\ta of=fd0:c80h2s18 bs=18k
$r Das dd-Kommando ist übrigens recht schnell, es benötigt
$r nur etwa 30 Sekunden pro MByte auf Floppies.
$r
$r Solchermaßen hergestellte Floppies sind unter DOS nicht lesbar,
$r da das tar-Archiv byte-linear ohne Dateisystem kopiert wird.
$r Aber unter UNIX unmittelbar: tar tvnf /dev/rfd0135ds18."
[ $n == 13 ] &&
echo "$r Die Shell wird bei manchen Aktionen beträchtlich schneller,
$r wenn man die Variable TEMP auf ein gültiges Verzeichnis einer
$r RamDisk setzt! Beispielsweise 'set TEMP=e:\'.
$r Die Shell verwendet temporäre Dateien für Funktionen, Substitution
$r und um Pipes nachzubilden.
$r BISHTEMP ist diejenige Variable, die die bish zuallererst sucht.
$r Die Inhalte der Temp-Variablen müssen stets gültig sein.
$r
$r Beim Ratespiel (Menü=r) muß man die Fragen natürlich
$r korrekt beantworten, sonst bleibt der richtige Wert versperrt.
$r Nach maximal 10 Versuchen hat der Algorithmus den Wert
$r gefunden, und zwar weil 1000 ungefähr 2^10=1024 ist.
$r Falls vorhanden, wird eine Lesefunktion benutzt, bei der man
$r nicht mit <Enter> abschließen muß."
[ $n == 14 ] &&
echo "$r Dieses Skript erzeugt eine temporäre Datei.
$r Diese Datei/en wird/werden nicht gelöscht, damit
$r beispielsweise die Möglichkeit nicht versperrt ist,
$r das Ergebnis einer Blocksatzerzeugung zu verwerten.
$r
$r Zum Dokumentationssystem gehören die Kommandos
$r man.exe, pg.exe und upat.exe.
$r Lesbare Dateien kann man mittels 'man [R] kdo > datei'
$r herstellen, für den Fall, daß im Verzeichnis .\doc
$r nicht alle Dateien aus .\man vorhanden sind.
$r
$r Man beachte bitte, daß der Lieferumfang der Shareware
$r nicht alles enthält, was insgesamt in der Dokumentation
$r beschrieben ist."
[ $n == 15 ] &&
echo "$r D i e P r o g r a m m i e r u n g d e r b s h
$r ist recht einfach, wenn man Schritt für Schritt vorgeht.
$r Man sollte nicht versuchen, die gesamte Dokumentation
$r auf einen Schlag verstehen zu wollen.
$r
$r Die Manuals bish.mn? und regexp.mnr informieren hierzu.
$r
$r Der Kommandozeilen-Editor in Verbindung mit Ausgabe-Kommandos,
$r wie beispielsweise 'echo', eignet sich sehr gut dazu, mit
$r der Shell auf harmlose Weise allerlei auszuprobieren.
$r
$r Nachfolgend werden Tabellen zu den Zeichen mit Spezialbedeutung
$r und zu den internen Kommandos aufgeführt:
$r ---------------------------------------------------------------
$r ; NL (&) Trennen Kommandos (und Pipes,Listen) voneinander
$r SPACE TAB Trennen Argumente voneinander
$r && || &| Exit-Code-abhängige Verkettung von Kommandos
$r | |! |2 (|h) Verknüpfung von Aus- und Eingabe von Kommandos"
[ $n == 16 ] &&
echo "$r Fortsetzung Zeichentabelle:
$r > >> < << <> Umlenkung von Aus- und Eingabe von Kommandos
$r {...} {{...}} Zusammenfassung von Kommandos
$r %$(...) %`...%` Einsetzung der Ausgabe von Kommandos
$r %$(-..) %`-..%` Einsetzung der Ausgabe von Kommandos
$r %$.. %${..} Einsetzung eines Variablen- oder Parameterinhalts
$r %${#..} Einsetzung einer Variablen- oder Param.inh.länge
$r %${..:x..} Entweder/Oder-Einsetzung
$r %$((...)) Einsetzung des Resultats eines arithm. Ausdrucks
$r ? * [ Einsetzung von passenden Dateinamen (Wildcards)
$r name[i] Arrays
$r ((...)) Berechnung eines arithmetischen Ausdrucks
$r (...) Sub-Shell-Aufruf
$r %"..%" '..' % Maskierende Einfassungen und Maskierzeichen
$r = Variablen-Zuweisung
$r ;; ;, Beenden eine Kommando-Folge beim case-Kommando
$r fname() { } Definition einer Shell-Funktion
$r fname()) { )} Definition einer (verschacht.) Shell-Funktion"
[ $n == 17 ] &&
echo "$r Fortsetzung Zeichentabelle:
$r %NL Zeilenverlängerung
$r # Kommentar-Zeichen
$r label: goto-Marke
$r : Leer-Kommando
$r [[...]] [...] Symbolische Syntax des test-Kommandos
$r ^.*[^a-b]%{a,b%} Reguläre Ausdrücke = Super-Wildcards
$r %(%)%1%9%$ Reguläre Ausdrücke = Super-Wildcards
$r
$r S c h l ü s s e l w o r t e :
$r
$r if then else elif fi case esac Schlüsselwort-Kommandos
$r for while until do done time Schlüsselwort-Kommandos
$r in from by to repeat Schlüsselwort-Argumente
$r { } {{ }} Schlüsselwort-Kommando-Paare
$r [ ] [[ ]] Kommandos mit Schlußargument
$r break continue goend Programmier-Kommandos
$r return goto Programmier-Kommandos"
[ $n == 18 ] &&
echo "$r Kommando-Liste:
$r . Skript-Aufruf (. datei arg ...)
$r : Exit-Code
$r true Exit-Code
$r false Exit-Code
$r inv Exit-Code
$r typeset Variablen-Typ (binär,basis)
$r readonly Variablen
$r export Variablen
$r unexport Variablen
$r unset Variablen
$r unsetenv Variablen
$r local Variablen
$r localset Variablen
$r static Variablen
$r global Variablen
$r env Variablen
$r array Variablen, Arrays
$r set Variablen, Arrays, Optionen"
[ $n == 19 ] &&
echo "$r Fortsetzung Kommando-Liste:
$r shift Parameterkette verschieben
$r conv,cmpv Variablen-Bearbeitung und -Vergleich
$r ifdef Variablen-Test
$r ifset Variablen-Test
$r ifenv Variablen-Test
$r alias Aliases
$r unalias Aliases
$r echo Ausgabe
$r print Ausgabe
$r prints Ausgabe, universell, formatiert
$r fprint Ausgabe, Funktionskörper
$r catv Extrem universelle, binäre Eingabe/Ausgabe
$r seek Dateizeiger
$r read Eingabe
$r readc Eingabe
$r readl Eingabe
$r line Eingabe/Ausgabe
$r test Universal-Bedingungsprüfer"
[ $n == 20 ] &&
echo "$r Fortsetzung Kommando-Liste:
$r fmode Datei-Attribute
$r fsize Datei-Attribute
$r mtime Datei-Attribute
$r stime Datei-Attribute
$r umask Datei-Attribute
$r basename Datei-Namen
$r dirname Datei-Namen
$r let Arithmetik
$r base Zahlen-Darstellungsbasis, multi-funktional
$r cd Directory
$r chdir Directory
$r pwd Directory
$r eval Mehrfache Shell-Interpretation
$r trap Signal-Reaktionen
$r exec Programm ausführen und damit Shell beenden
$r exit Shell beenden
$r extern Externes Programm ausführen
$r system Kommandoausführung durch Standard-Shell"
[ $n == 21 ] &&
echo "$r Abschluß Kommando-Liste:
$r prompt Shell rekursiv interaktiv aufrufen
$r sleep Zeitdauer
$r times Zeitdauer
$r type Bedeutung von Namen herausfinden
$r whence Bedeutung von Namen herausfinden
$r sane Dateinummern rückverknüpfen (sanieren)
$r expr Operationen mittels regulärer Ausdrücke
$r grep Zeilensuche mittels regulärer Ausdrücke
$r tr Universelle Zeichen-Veränderungen
$r cat Dateien-Verkettung
$r cut Datei-Ausschnitte
$r crc Prüfsummen
$r sum Bytesummen
$r tee Umlenkungs-Zusatzverzweigung
$r wc Zählt Zeilen, Worte, Zeichen
$r rel Entfernt bestimmte Zeilen
$r ver Programmversion
$r autor Programmautor"
let "++n>21" && n=1
ifset R && echo "%e[23;5H%c"
read rd"?(e=ende;1,2,3,...=seite) >>>$n"
[ "$rd" == e ] && break
expr "$rd" :: '^[1-9][0-9]*$' && n=$rd
done
}
systhem() {
ifset R && [ $# -eq 1 -a "$1" != rate ] && echo '%e[0;37;40m%e[2J%c'
[ "$1" == auto -o "$1" == conf ] && {
prints sf-72
echo Bevor $ABAT oder $CSYS verändert werden, werden
echo garantiert Sicherheitskopien gemacht, genau geprüft
echo und schreibgeschützt!
echo "(Bei Dateinamen wird auch / anstatt \ akzeptiert.)"
echo "(Bei Fragen [jn] kommen Sie per 'n' manchmal zum Hauptmenü"
echo " zurück - beispielsweise jetzt.)"
prints sf-72
frage "Wollen Sie fortsetzen?" || return 0
}
case $1 in
copy)
local a=' ' b=' '
if [ -s $2 -a ! -s $3 ]
then
while a=` ATTRIB $2 `
expr "$a" :: "[sShHrR][ %t][ %t]*[^ %t][^ %t]*"'$'
do
echo Schreibschutz liegt vor: "'$a'" !
frage "Wollen Sie den Schreibschutz entfernen?" || {
echo Es erfolgt Rückkehr zum Hauptmenü.; frage; return 1; }
ATTRIB -S $2 ; ATTRIB -H $2 ; ATTRIB -R $2
done
if COPY /Y $2 $3 && [ -s $3 ] && a=`crc $2` &&
b=`crc $3` && ifset a b && [ "$a" -eq "$b" ] &&
[ `fsize $2` -eq `fsize $3` ] && ATTRIB +R $3
then
echo $2 wurde erfolgreich kopiert: $3
echo %(Kopiert wird nur, wenn $3 nicht existiert%c
echo % oder leer ist.%)
a=`grep -c '%z' $2`
[ $a -gt 0 ] && {
echo Sie haben $a ^Z-Zeichen in Ihrer $2 !
echo Diese Zeichen müssen später entfernt werden
echo oder am Dateiende stehen.
}
else
echo Beim Kopieren von $2 nach $3 gab es einen Fehler!
echo Es erfolgt Rückkehr zum Menü.
return 1
fi
else
echo Eine Kopie von $2 wird nicht erstellt, weil $2 nicht
echo existiert oder leer ist - oder $3 bereits existiert.
fi
return 0
;;
auto)
local t='[ %t%z]' b a
prints sf-72
systhem copy $ABAT c:\auto_cpy.bat || { frage; return 1; }
prints sf-72
frage
[ ! -s $ABAT ] && {
prints sf-72
echo $ABAT existiert nicht oder ist leer und wird daher erzeugt.
echo '@ echo off' > $ABAT
echo 'loadhigh c:\dos\share.exe /F:4096 /L:32' >> $ABAT
echo 'c:\dos\smartdrv.exe a c 2048' >> $ABAT
echo 'loadhigh c:\dos\doskey /reinstall /overstrike' >> $ABAT
ifset PATH && echo "PATH=$PATH" >> $ABAT
ifset PATH || [ -d c:\dos ] && echo 'PATH=c:\dos;' >> $ABAT
echo 'VERIFY on' >> $ABAT
echo 'PROMPT $p: ' >> $ABAT
echo 'set DIRCMD=/p/a:-s-h/o:gne/l' >> $ABAT
echo 'c:\dos\mode con: rate=27 delay=2' >> $ABAT
echo 'VER' >> $ABAT
prints sf-72
frage
}
b=H.Schellong,BadSalzuflen
for a in bish MAN PG L
do
grep -qm "^$t*[sS][eE][tT]$t$t*"${a}AUTOR=$b $ABAT ||
echo "seT ${a}AUTOR=$b" >> $ABAT
done
b=Freeware_nur_für_nichtgewerbliche_Verwendung
for a in L READC
do
grep -qm "^$t*[sS][eE][tT]$t$t*"${a}PROGRAM=$b $ABAT ||
echo "seT ${a}PROGRAM=$b" >> $ABAT
done
ifset -s I_DIR && aI_DIR=$I_DIR
ifset -s aI_DIR || aI_DIR=c:\bish
frage "Welches Verzeichnis für die bish-Dateien soll für weitere
Variableninhalte in der $ABAT zugrundegelegt werden?
- $aI_DIR ?" || {
while : ; do
frage "Wollen Sie ein Verzeichnis angeben?" || break
read "inp? : " b
ifset inp || continue
ifset b && echo Fehler! && continue
expr $inp :: '^[a-zA-Z]:' ||
echo Mit Laufwerk-Angabe! && continue
conv -t/\F\ inp
[ -e $inp -a ! -d $inp ] &&
echo $inp existiert als Nicht-Verzeichnis! && continue
aI_DIR=$inp ; true ; break
done
} || return 1
[ ! -d "$aI_DIR" ] && frage "Soll $aI_DIR angelegt werden?" &&
makedir $aI_DIR ||
echo $aI_DIR konnte unerwarteterweise nicht erzeugt werden! &&
{ frage; return 1; }
grep -qm "^$t*[sS][eE][tT]$t$t*"MANRUBRIK= $ABAT ||
echo "seT MANRUBRIK=KRSVLABI" >> $ABAT
grep -qm "^$t*[sS][eE][tT]$t$t*"MANFILES=$aI_DIR\man $ABAT ||
echo "seT MANFILES=$aI_DIR\man" >> $ABAT
grep -qi "^PATH .*;$aI_DIR\bin" $ABAT ||
echo "$PATH" | grep -qi $aI_DIR\bin ||
echo "PATH $PATH;$aI_DIR\bin" >> $ABAT
grep -qm "^$t*[sS][eE][tT]$t$t*"HOME=$aI_DIR $ABAT ||
echo "seT HOME=$aI_DIR" >> $ABAT
grep -qm "^$t*[sS][eE][tT]$t$t*"CDPATH= $ABAT ||
echo "seT CDPATH=;\;$aI_DIR" >> $ABAT
BISHTEMP=c:
whence -ep mem || [ $? -eq 10 ] && mem /d |
b="`grep -im ' *[a-zA-Z]: *.*[^a-zA-Z]ramdrive[^a-zA-Z]*'`" &&
a=`expr "$b" : ' *%([a-zA-Z]:%) *..*[rR][aA][mM]'` &&
BISHTEMP=$a && echo Geladener RAMDRIVE für "'$a'" festgestellt. &&
frage
grep -qm "^$t*[sS][eE][tT]$t$t*"BISHTEMP=$BISHTEMP $ABAT ||
echo "seT BISHTEMP=$BISHTEMP" >> $ABAT
grep -iqm "^$t*[sS][eE][tT]$t$t*"TEMP= $ABAT ||
echo "seT TEMP=$BISHTEMP" >> $ABAT
unset -s BISHTEMP
a=`grep -c '^reM ' $ABAT` && [ $a -ge 8 ] && return 0
systhem bat_ ''
fprint +"+++ " bat
frage "Soll vorstehender Inhalt einer $ABAT als Kommentar (REM ...)
an Ihre $ABAT angehängt werden?" && fprint +"reM " bat >> $ABAT
unset -f bat
return 0
;;
conf)
local t='[ %t%z]' a b n
prints sf-72
systhem copy $CSYS c:\conf_cpy.sys || { frage; return 1; }
prints sf-72
frage
[ ! -s $CSYS ] && {
prints sf-72
echo $CSYS existiert nicht oder ist leer und wird daher erzeugt.
systhem sys_ ''
fprint sys > $CSYS
unset -f sys
prints sf-72
frage
}
n=256
a="`grep -iL "^$t*SHELL=....." $CSYS`" &&
n=`expr "$a" : '/[Ee]:%([1-9][0-9]*%)'` &| n=256
a=`env | wc -c`
prints sf-72
echo Aktuell sind etwa $a Byte von Umgebungsvariablen belegt.
echo Verfügbar sind $n Byte.
[ $n -gt 256 ] && echo Einstellung in $CSYS: /E:$n
prints sf-72
frage
local s=' '
{ [ $n -lt 1536 ] && s=2048; } &|
{ [ $n -lt $(((16*a)/10)) ] && s=$(( ((16*a)/10)&~15 )); } &&
frage "Wollen Sie den Wert $n auf $s Byte erhöhen?" && {
local c=' '
if a="`grep -inL "^$t*SHELL=....." $CSYS`"
then
n=` expr "$a" : '^%([1-9][0-9]*%):.' `
if expr "$a" :: '/[Ee]:[1-9][0-9]*'
then
b="`- expr "$a" : '^[1-9][0-9]*:%(..*/[Ee]:%)[1-9]'`"
c="`- expr "$a" : '^[1-9][0-9]*:..*/[Ee]:[1-9][0-9]*%(.*%)$'`"
c="$b$s$c"
else
b="`- expr "$a" : '^[1-9][0-9]*:%(..*%)$'`"
c="$b /E:$s"
fi
echo %c > $tempfile
line -1-$((n-1)) $CSYS >> $tempfile
echo "$c" >> $tempfile
line -$((n+1))-1000 $CSYS >> $tempfile
cat $tempfile > $CSYS
else
echo 'SHELL=c:\command.com c:\ /p /e:'$s >> $CSYS
fi
}
grep -qs 'ReM devicehigh=c:' $CSYS && return 0
a=`grep -c '^reM ' $CSYS` && [ $a -ge 8 ] && return 0
systhem sys_ ''
fprint +"+++ " sys
frage "Soll vorstehender Inhalt einer $CSYS als Kommentar (REM ...)
an Ihre $CSYS angehängt werden?" && fprint +"reM " sys >> $CSYS
unset -f sys
return 0
;;
inst)
local qdir=$S_DIR rest=' ' idir
prints sf-72
echo Diese Installations-Routine kopiert alle Dateien von einem
echo Quell- in ein Ziel-Verzeichnis, ist also nur ein Kopierer.
echo Weitere Maßnahmen können Sie im Haupt-Menü auswählen.
echo Es werden Verzeichnisse vorgeschlagen, Sie können aber auch
echo eigene Angaben machen "(anstelle von \ auch /)".
echo Auf Wunsch wird vor Überschreibungen gewarnt.
echo In der Regel sind die bish-Dateien bereits auf Festplatte.
echo In diesem Fall können Sie sie zu einem weiteren Ort kopieren.
prints sf-72
frage "Wollen Sie weitermachen?" || return 0
prints sf-72
echo Verzeichnis $qdir ist der Ort dieser aktiven bish-Batch-Datei.
frage "Soll $qdir als Installations-Quelle benutzt werden?" ||
while : ; do
frage "Wollen Sie ein Quellverzeichnis angeben?" || break
read "inp? : " rest
ifset inp || continue
ifset rest && echo Fehler! && continue
expr $inp :: '^[a-zA-Z]:' ||
echo Mit Laufwerk-Angabe! && continue
conv -t/\F\ inp
[ -e $inp -a ! -d $inp ] &&
echo $inp existiert als Nicht-Verzeichnis! && continue
[ ! -d $inp ] && echo $inp existiert nicht! && continue
qdir=$inp ; true ; break
done || return 1
ifset -s aI_DIR && idir=$aI_DIR
ifset -s idir || idir=c:\bish
frage "Soll $idir als Installations-Ziel benutzt werden?" ||
while : ; do
frage "Wollen Sie ein Zielverzeichnis angeben?" || break
read "inp? : " rest
ifset inp || continue
ifset rest && echo Fehler! && continue
expr $inp :: '^[a-zA-Z]:' ||
echo Mit Laufwerk-Angabe! && continue
conv -t/\F\ inp
[ -e $inp -a ! -d $inp ] &&
echo $inp existiert als Nicht-Verzeichnis! && continue
idir=$inp ; true ; break
done || return 1
[ ! -d $idir ] && makedir $idir ||
echo Fehler von "'makedir()'" ! && { frage ; return 1; }
rest=/Y
frage "Vor Überschreiben warnen?" && rest=/-Y
frage "Kopieren $qdir ---> $idir ?" || return 0
xcopy $qdir $idir\/s/e/v$rest || { frage; return 2; }
I_DIR=$idir
echo Kopieren beendet.
frage
return 0
;;
ldir)
local l=$S_DIR\bin\l.exe do=' ' prev=.
let "X&4" || l=DIR do=/p/a/o:gne/l
prints sf-72
[ $l != DIR ] && echo "'l.exe' ist vorhanden und wird verwendet."
[ $l == DIR ] && echo "'l.exe' fehlt und 'DIR' wird verwendet."
echo
echo Sie kommen nachfolgend durch "<Enter>" zum Hauptmenü zurück.
echo "Bei '.' wird das aktuelle Verzeichnis gelistet."
echo "Bei '-name' wird für '-' der vorherige Name eingesetzt."
echo Sie können anstelle von \ auch / verwenden.
echo Wildcards "(*?)" werden ggf. vom List-Kommando berücksichtigt,
echo nicht von der bish an dieser Stelle.
prints sf-72
frage
while :
do
echo
read "inp?Verzeichnis oder Datei: "
ifset inp || break
expr "$inp" :: '^-.*$' && inp="$prev\`-expr "$inp" : '^-%(.*%)$'`"
conv -t/\F\ inp
$l $do "$inp" && prev="$inp"
frage
done
return 0
;;
lese)
local rest=' ' A=' ' a=' ' l=lines
prints sf-72
echo "Durch 'A' und 'C' werden '$ABAT' bzw. '$CSYS' ausgewählt,"
echo oder "'B'"locksatzdatei, andernfalls das, was Sie angeben.
echo Durch Eingabe von nur %<Enter%> wird abgebrochen.
echo Sie können anstelle von \ auch / verwenden.
prints sf-72
while :
do
echo
read "inp?<Enter>,A,C,B oder Datei: " rest
ifset inp || break
ifset rest && continue
[ $inp == A ] && inp=$ABAT
[ $inp == C ] && inp=$CSYS
[ $inp == B ] && inp=$tempfile
conv -t/\F\ inp
[ -f $inp -a -r $inp -a -s $inp ] ||
echo $inp nicht lesbar! && continue
A=1
let "X&2" ||
while :
do
for a from $A by 20 repeat
do
line -$a-$((a+20-1)) $inp || break
ifset R && echo "%e[1m$a:e,1,-,<Enter>: %e[0m%c"
ifset R || echo "<<<$a:e,1,-,<Enter>>>: %c"
read rest
[ "$rest" == e ] && break 2
[ "$rest" == 1 ] && break
[ "$rest" == - -a $a -gt 20 ] && { A=$((a-20))
continue 2; }
[ "$rest" == - -a $a -le 20 ] && break
done
A=1
done
l=lines
let "X&2" &&
while :
do
for a from $A by 20 repeat
do
line -$a-$((a+20-1)) $inp || break
ifset R && echo "%e[1m$a:Esc,Home,End,PgU,Enter: %e[0m%c"
ifset R || echo "<<<$a:Esc,Home,End,PgU,Enter>>>: %c"
rest=`$S_DIR\bin\readc.com`
echo
[ "$rest" == ESC ] && break 2
[ "$rest" == HOME ] && break
[ "$rest" == PGU -a $a -gt 20 ] && { A=$((a-20))
continue 2; }
[ "$rest" == PGU -a $a -le 20 ] && break
[ "$rest" == END ] && {
[ $l == lines ] && l=`wc -l < $inp`
[ $l -le 20 ] && break
A=$((l-20+1)) ; continue 2
}
done
A=1
done
done
return 0
;;
blok)
local s=00000 rw=`prints sf+80-` rz=`prints sf+110-` %
oz=`prints sf+110-` sp="`prints s18-`"
prints sf-72
echo Geben Sie eine Quelldatei für Blocksatzerzeugung an.
echo Durch Eingabe von nur %<Enter%> wird abgebrochen.
echo "Sie können dann im Menü 'd' wählen und dann 'B',"
echo um sich den Blocksatz anzuschauen.
echo Andere Menüpunkte dazwischen überschreiben möglicherweise!
echo Zeitdauer etwa 0,5 bis 2 Sekunden pro 10000 Byte.
prints sf-72
while : ; do
read "inp?Datei für Blocksatz: "
ifset inp || return 0
conv -t/\F\ inp
[ -f $inp -a -r $inp -a -s $inp ] && break
echo $inp nicht lesbar!
done
s=$SECONDS
systhem ozad ''
> $tempfile
< $inp
oz=''
while read inp
do
ifset inp || {
ifset oz && { catv sp oz /%j; oz=''; }
echo; continue
}
ifset oz && oz="$oz $inp"
ifset oz || oz="$inp"
[ ${#oz} -lt 44 ] && continue
while [ ${#oz} -ge 44 ]
do
[ ${#oz} -eq 44 ] && { catv sp oz /%j; oz=''; continue 2; }
#expr "$oz" :rz '^.%{44%}%(.*%)$'
#expr "$oz" :oz '^%(.%{44%}%)'
catv 44,,oz =:rz
catv 44,oz =:oz
if expr "$rz" :: '^ '
then
catv sp oz /%j
expr "$rz" :oz '^.%(.*%)$'
elif expr "$oz" :rw ' %([^ ]*%)$'
then
rz="$rw$rz"
expr "$oz" :oz '^%(.*%) [^ ]*$'
let "rw=44-${#oz}"
catv sp
ozadd $rw $oz
oz="$rz"
[ $SECONDS -gt $s ] && { s=$SECONDS; print -nu2 .; }
else
catv sp oz /%j
oz="$rz"
fi
done
done
ifset oz && { catv sp oz /%j; }
><<
unset -f ozadd
echo %nBlocksatz erledigt.
frage
return 0
;;
ozad)
ozadd())) {
typeset -i10 nadd=$1 nz=$# zn
shift
(( nz-=2 ))
for zn from $nz by -1 to 1 repeat
do
print -nr "$1"; shift
prints s$(( nadd/nz+1+[zn<=nadd%nz] ))-
done
print -r "$1"
))}
return 0
;;
tar)
local s=000000000000 S=000000000000
local file=' '
local arch=' '
set -f
let "X&4+32" || { echo "l.exe nicht vorhanden";frage; return; }
let "X&4" && alias lkdo=$S_DIR\bin\l.exe
let "(X&4+32)==32" && alias lkdo=l.exe
echo %n%n%n%n
while :
do
read "s? tar crxtvf archiv [datei ...]: " file arch inp
ifset s || return
[ "$s" != tar ] && continue
ifset file || continue
ifset arch || continue
expr "$file" :: c || [ ! -e "$arch" ] &&
echo "does not exist: '$arch'" && continue
break
done
conv -lt/\ inp arch
s='' S=0
case "$file" in
cf|cvf)
set +f
for file in $inp
do
set -f
[ ! -e $file ] && { echo does not exist: $file; continue; }
lkdo -bRpf -F%n\n $file |
while readl file
do
expr "$file" :: ' ' &| expr "$file" :: '\%.%.$' && continue
expr "$file" :: '\%.$' && expr "$file" :file '^%(..*%)\%.$'
let "${#file}>=100" && { echo path too long: $file; continue; }
[ ! -f $file -a ! -d $file ] && { echo special: $file; continue; }
ifset s || 3>$arch
prints s-F000100s7sF0001s7sF0001s7sF0001s12s12s-F000130- $file %
`fmode $file`" " '' "0 " '' "0 " '' %
`fsize $file | base -10 +8`" " %
`mtime $file | base -10 +8`" " " " | catv =inp:
[ -d $file ] && catv /5 =156,1,inp
conv -t\/ inp
s=`catv inp | sum`
prints s6sF0002- $((8#, s)) " " | catv =148,8,inp
catv inp =3
prints su3F000$((512-278))- ''
[ -d $file ] && { (( S+=512 )) ; continue; }
cat $file 1>&3
s=`fsize $file`
(( s&511 )) && prints su3F000$((512-[s&511]))-
(( s=[s&~511]+512*!![s&511]+512 ))
prints sbsbs-9bsbsbs seek = $(( S/1024+!![S&1023] ))K %
a $file $(( s/1024+!![s&1023] ))K
(( S+=s ))
done
done
ifset s && { prints su3F0001024- ; >< ; }
;;
tf|tvf)
< $arch
while catv 512,0 =278,inp:
do
[ "`catv 148,6,inp | tr 0\0 E0`" = 000000 ] && break
s=`catv 148,6,inp | tr -c " 01234567" "[E*]"`
expr "$s" :: E && { echo directory checksum error; break; }
let 8#$s!=256+`catv 148,inp 156,122,inp | sum` && {
echo directory checksum error; break
}
#[ "`catv 156,1,inp | tr \0 0`" = 5 ] && continue
catv 103,3,inp =s:
let s=8#$s ; S=-rwx
catv $((!!(s&8#400)*1)),1,S $((!!(s&8#200)*2)),1,S %
$((!!(s&8#100)*3)),1,S $((!!(s&8#040)*1)),1,S %
$((!!(s&8#020)*2)),1,S $((!!(s&8#010)*3)),1,S %
$((!!(s&8#004)*1)),1,S $((!!(s&8#002)*2)),1,S %
$((!!(s&8#001)*3)),1,S
echo " "`catv 108,6,inp | base -8 +10`/%c
echo `catv 116,6,inp | base -8 +10`" %c"
s=`catv 124,11,inp | base -8 +10`
prints s8bs10b- $s `catv 136,11,inp | base -8 +10`
catv 100,inp | tr -d \0
S="`catv 156,1,inp | tr \0 0`"
[ "$S" = 1 ] && echo " ," link to `catv 157,100,inp | tr -d \0`%c
[ "$S" = 2 ] &&
echo " , slink->"`catv 157,100,inp | tr -d \0`%c
[ "`catv 277,1,inp | tr \0 0`" == 1 ] && echo " , compressed%c"
[ "$S" == 5 ] && echo " , directory%c"
echo
[ "$s" -eq 0 -o "$S" == 1 -o "$S" == 2 -o "$S" == 5 ] && continue
seek +$s 0
(( s&511 )) && seek +$((512-[s&511])) 0
done
><
;;
rf|rvf)
file="$inp"
3<> $arch
while catv 512,3 =278,inp:
do
s=`catv ,`
[ "`catv 148,6,inp | tr 0\0 E0`" = 000000 ] && {
[ $s = 512 ] && { seek -512 3 ; break; }
echo directory checksum error; >< ; goend
}
s=`catv 148,6,inp | tr -c " 01234567" "[E*]"`
expr "$s" :: E && { echo directory checksum error; >< ; goend; }
let 8#$s!=256+`catv 148,inp 156,122,inp | sum` && {
echo directory checksum error; >< ; goend
}
[ "`catv 156,1,inp | tr \0 0`" = 5 ] && continue
s=`catv 124,11,inp | base -8 +10`
S="`catv 156,1,inp | tr \0 0`"
[ "$s" -eq 0 -o "$S" = 1 -o "$S" = 2 -o "$S" = 5 ] && continue
seek +$s 3
(( s&511 )) && seek +$((512-[s&511])) 3
done
inp="$file"
s='' S=`seek + 3`
set +f
for file in $inp
do
set -f
[ ! -e $file ] && { echo does not exist: $file; continue; }
lkdo -bRpf -F%n\n $file |
while readl file
do
expr "$file" :: ' ' &| expr "$file" :: '\%.%.$' && continue
expr "$file" :: '\%.$' && expr "$file" :file '^%(..*%)\%.$'
let "${#file}>=100" && { echo path too long: $file; continue; }
[ ! -f $file -a ! -d $file ] && { echo special: $file; continue; }
prints s-F000100s7sF0001s7sF0001s7sF0001s12s12s-F000130- $file %
`fmode $file`" " '' "0 " '' "0 " '' %
`fsize $file | base -10 +8`" " %
`mtime $file | base -10 +8`" " " " | catv =inp:
[ -d $file ] && catv /5 =156,1,inp
conv -t\/ inp
s=`catv inp | sum`
prints s6sF0002- $((8#, s)) " " | catv =148,8,inp
catv inp =3
prints su3F000$((512-278))- ''
[ -d $file ] && { (( S+=512 )) ; continue; }
cat $file 1>&3
s=`fsize $file`
(( s&511 )) && prints su3F000$((512-[s&511]))-
(( s=[s&~511]+512*!![s&511]+512 ))
prints sbsbs-9bsbsbs seek = $(( S/1024+!![S&1023] ))K %
a $file $(( s/1024+!![s&1023] ))K
(( S+=s ))
done
done
ifset s && prints su3F0001024-
><
;;
xf|xvf)
< $arch
while catv 512,0 =278,inp:
do
[ "`catv 148,6,inp | tr 0\0 E0`" = 000000 ] && break
s=`catv 148,6,inp | tr -c " 01234567" "[E*]"`
expr "$s" :: E && { echo directory checksum error; break; }
let 8#$s!=256+`catv 148,inp 156,122,inp | sum` && {
echo directory checksum error; break
}
file=`catv 100,inp | tr -d \0`
conv -t/\ file
S="`catv 156,1,inp | tr \0 0`"
[ "$S" = 5 ] && {
[ -e $file -a ! -d $file ] &&
echo exist, but not a dir: $file && break
[ ! -d $file ] && MD $file
continue
}
s=`catv 124,11,inp | base -8 +10`
echo x $file, $s bytes, $((s/1024+!![s&1023]))K%c
[ "$S" = 1 -o "$S" = 2 ] && { arch=`catv 157,100,inp | tr -d \0`
[ "$S" = 1 ] && echo , link to $arch
[ "$S" = 2 ] && echo , slink"->"$arch
continue
}
[ "`catv 277,1,inp | tr \0 0`" = 1 ] && echo , compressed%c
echo
catv $s,0 > $file
stime `catv 136,11,inp | base -8 +10` $file
(( s&511 )) && seek +$((512-[s&511])) 0
#600 catv 103,3,inp =s:
#600 let s=8#$s
#uid `catv 108,6,inp | base -8 +10`
#gid `catv 116,6,inp | base -8 +10`
done
><
;;
*) echo "Falsche Option: '$file'" ;;
esac
set -f
echo %ntar-Funktion erledigt.
frage
return 0
;;
rate)
local a=0000 b=0000 x=0000 l=0000 n=0000
ansiscreen
while :
do
a=1 b=1000
echo "$S Geben Sie ein beliebiges Zeichen für Abbruch ein
$R oder denken Sie sich eine Zahl zwischen $((a+0)) und $((b-0)) aus
$R und drücken Sie dann <Enter> %c"
read inp
ifset inp && return
for l from 9 to 23 repeat; do prints s- "${e}[$l;36H "; done
l=8 n=0
while :
do
((x=a+(b-a)/2))
ifset R && echo '%e[7H%c'
echo "$R Ist diese Zahl kleiner,größer,gleich [<>=] $x %c"
ifset R && echo ' %e[4D%e[37;40m%e[1m%c'
echo '?%b%c'
let "X&2+16" || read inp
let "X&2" && inp=`$S_DIR\bin\readc.com`
let "(X&2+16)==16" && inp=`readc.com`
ifset R && echo '%e[0;30;46m%c'
[ "$inp" == = ] && break
[ "$inp" == %> -o "$inp" == . ] && a=$x inp='>'
[ "$inp" == %< -o "$inp" == , ] && b=$x inp='<'
expr "$inp" :: '^[><]$' || { echo '%a%c'; continue; }
((n=n+1;l=l+1))
prints ss2ss1s4s- "${e}[$l;36H${e}[37;40m" $n " " "$inp" $x "${e}[30;46m"
[ $l -ge 23 ] && l=8
done
done
return 0
;;
bat_) bat())) {
@ echo off
ReM loadhigh c:\dos\mscdex.exe /D:TEAC-CDI /M:10 /L:F
loadhigh c:\dos\share.exe /F:4096 /L:32
c:\dos\smartdrv.exe a b c d f- 2048
loadhigh c:\dos\doskey /reinstall /bufsize=4096 /overstrike
PATH=c:\dos;c:\cpqdos;c:\usr\bin;c:\usr\cmd;c:\windows;c:\bish\bin
VERIFY on
PROMPT $p:
set DIRCMD=/p/a:-s-h/o:gne/l
set TEMP=e:\
ReM c:\dos\mode COM2:19200,NONE,8,1
c:\dos\mode con: rate=27 delay=2
ReM call c:\usr\cmd\alias.bat
ReM type c:\usr\cmd\keys
VER
))}
return 0
;;
sys_) sys())) {
device=c:\dos\himem.sys
device=c:\dos\emm386.exe RAM
DOS=HIGH,UMB
BREAK=ON
FCBS=4
LASTDRIVE=G
STACKS=8,256
BUFFERS=32,0
FILES=100
SWITCHES=/F
COUNTRY=049,437,c:\dos\country.sys
SHELL=c:\command.com c:\ /p /e:2048
devicehigh=c:\dos\setver.exe
devicehigh=c:\dos\ramdrive.sys 2048 512 128 /e
devicehigh=c:\dos\ansi.sys /x /r
ReM devicehigh=c:\dos\teac\teac_cdi.sys /D:TEAC-CDI /P:P-S
))}
return 0
;;
esac
return 0
}
makedir() {
local N=000 C=' ' B=' ' dirn="$1" dir="$1"
N=0 B='' dirn=''
conv -Lt/\F\ dir
while expr "$dir" :C '^.%{'$N'%}%(.%)'
do
let ++N
case "$C" in
:) [ -z "$B" -o N -ne 2 ] && {
echo "Fehlerhafte Laufwerkangabe!"; return 1; }
B=''
[ -d $dirn:\ ] || { echo "$dirn:\ kein Laufwerk!"
return 1; } ;;
.) ;;
[/\]) [ $C != \ ] && { echo "'$C'"; return 1; }
test $B && [ -e $dirn -a ! -d $dirn ] &&
echo "$dirn existiert, ist aber kein Verzeichnis!" &&
return 1
[ "$B" -a ! -d "$dirn" ] &&
{ MD $dirn; [ ! -d $dirn ]; } && return 1 ;;
[a-zA-Z_0-9%!$#'`~@{}-]) B=$C ;;
*) echo Unerlaubtes Zeichen "'$C'" && return 1 ;;
esac
dirn=$dirn$C
done
test $B && [ -e $dirn -a ! -d $dirn ] &&
echo "$dirn existiert, ist aber kein Verzeichnis!" && return 1
[ "$B" -a ! -d "$dirn" ] && { MD $dirn; [ ! -d $dirn ]; } && return 1
return 0
}
ansiscreen() {
ifset R || return 1
local z
echo "%e[0;30;46m%e[2J%e[33;43m%c"
echo "%e[25H%e[K%e[H%e[K%c"
for z from 2 to 24 repeat
do
echo "%e[${z}H %e[76C %c"
done
echo '%e[0;30;46m%c'
return 0
}
[ -x $S_DIR\bin\ov.com ] && OV=` $S_DIR\bin\ov.com ` ((X+=1))
[ -x $S_DIR\bin\readc.com ] && ((X+=2))
[ -x $S_DIR\bin\l.exe ] && ((X+=4))
whence -ep ov.com || [ $? -eq 10 ] && ((X+=8)) OV=`ov.com`
whence -ep readc.com || [ $? -eq 10 ] && ((X+=16))
whence -ep l.exe || [ $? -eq 10 ] && ((X+=32))
ifset R && PS1='print -nu2 "%e[s%r%e[53C%e[40;36m"; prints su2-26- $PWD
print -nu2 "%e[u%e[40;37m$:%e[1m#%e[0m "'
let "X&(2|16)" && { BISHAUTOR=H.Schellong,BadSalzuflen
READCPROGRAM=Freeware_nur_für_nichtgewerbliche_Verwendung
export BISHAUTOR READCPROGRAM
}
let "X&(4|32)" && { LAUTOR=H.Schellong,BadSalzuflen
LPROGRAM=Freeware_nur_für_nichtgewerbliche_Verwendung
export LAUTOR LPROGRAM
}
let "X&1" && $S_DIR\bin\ov.com -q 38
let "(X&9)==8" && ov.com -q 38
sleep -m 800
ansiscreen
while echo %
"$S ---------------------------------------------------------------------
$R Shell-Script 'start.bish' - Copyright (C) 1997 Helmut Schellong, B.S.
$R ---------------------------------------------------------------------
$R
$R
$R Infos : i
$R Verzeichnisse listen : l
$R Dateien lesen : d
$R Blocksatz : b
$R Installieren : I
$R autoexec.bat : A
$R config.sys : C
$R Kleines Ratespiel : r
$R command.com : !
$R bish - interaktiv : #
$R TARchiver : t
$R Beenden : E%c"
do
[ -z "$R" ] && echo "%n
: %c"
[ -n "$R" ] && echo "%e[2B%e[2D%e[0;37;40m%e[1m" %
" " %
"%e[35D%e[s%c"
read inp
case "$inp" in
i) info ;;
l) systhem ldir ;;
d) systhem lese ;;
b) systhem blok ; sane q ;;
I) systhem inst ;;
A) systhem auto ;;
C) systhem conf ;;
r) systhem rate ;;
t) systhem tar ; sane q ;;
!) [ -n "$R" ] && echo '%e[s%e[0;37;40m%e[2J%e[u%r%c'
set -C; command.com; set +C; frage ;;
%#) ifset R && echo '%e[s%e[0;37;40m%e[2J%e[u%r%c' && set -E
echo Dies ist kein neuer Prozeß, sondern die bish ruft sich
echo rekursiv interaktiv auf.%n
ifset R && echo Kommandozeilen-Editor ist aktiv.%n
echo Probieren Sie: SET, env, set, export, echo "*", ...
echo Falls nötig: xxx %| more%n
echo "Beenden Sie mit 'return'.%n"
set -C;set +f; prompt; set +C;set -f; frage; set +E
;;
E) break ;;
*) ifset R || echo '%a%c'
ifset R && echo '%e[uFalsche Eingabe%c' && sleep 1 &&
to 15 repeat; do echo '%e[D %e[D%c'; sleep -m 120; done
continue ;;
esac
ansiscreen
done
ifset OV && $S_DIR\bin\ov.com -q $OV
ifset R && echo "%e[25H%e[0;37;40m%n%e[K"
echo % --- Shell-Script 'start.bish' beendet ---
set Z:.500 lc:.500 name:.100
list -Rf \ | {
while readl Z
do
expr "$Z" :lc '^%(.%{1,}\%)%([.A-Za-z_0-9-]%{1,}%.%)%([A-Z_0-9]%{1,}%)$' + '%1%2%L%3' || continue
expr "$lc" :name '[\/]%([^\/]%{1,}%)$' || break
echo "%"$Z%" --> %"$name%" ($lc)"
RENAME "%"$Z%"" "%"$name%"" || break
done
}
set Z:.500 lc:.500
list -Rf /fat | {
while readl Z
do
expr "$Z" :lc '^%(.%{1,}/%)%([A-Z_0-9]%{1,}%.[A-Z_0-9]%{1,}%)$' + '%1%L%2' || continue
move -V "$Z" "$lc"
done
}
[ `pwd` != /fat/cie/mc/archiv ] && { echo Falsches Arbeitsverzeichnis!; exit 0; }
set ZNAM:.50
local title:.40 title0:.40
: >FileDiff
for ZNAM in $( list | sortl )
do
expr "$ZNAM" :title '^_%(upc3_.%{1,}%)$' || continue
[ -d _$title ] || continue
cd _$title || continue
echo $title:
list -R | sortl > ../$title
cd ..
expr "$title0" :: '^%.%.%.' || {
echo diff -bBdaw $title0 '<>' $title >>FileDiff
diff -aw $title0 $title >>FileDiff
remove $title0
}
title0=$title
done
remove $title0
case "$1" in
date)
[ $# -ne 6 ] && goend
local ta=$2 mo=$3 ja=$4 st=$5 mi=$6
let "ta=ta, mo=mo, ja=ja, st=st, mi=mi"
let "ta<1||ta>31||mo<1||mo>12||st>23||mi>=60" && goend
let "ja<100" && let "ja+=2000"
let "ja<2000||ja>2030" && goend
prints vsf02 ta $ta
prints vsf02 mo $mo
prints vsf02 st $st
prints vsf02 mi $mi
extern /bin/date -u $mo$ta$st$mi$ja
exit $?
;;
shutdown)
cd /
extern sync
extern sync
extern $2
exit $?
;;
esac
exit 1
Fp() {
local a=$1 b=$2 a2=$1 b2=$2
cmpv a b
echo $.
catv $.,a =a:
catv $.,b =b:
conv -t// a
echo $.
catv $.,a /%j
catv $.,b /%j
catv $.,,a2 /%j
catv $.,,b2 /%j
return 0
}
Ren() {
ic="$1" Zeile="$2" inp="$3"
File="$Zeile" Dir="$inp" inp=
while expr "$Dir" :lsec '%([^/]%{1,%}%)$' &&
expr "$File" :rsec '%([^/]%{1,%}%)$' &&
cmpv -$ic lsec rsec
do
expr "$Dir" :Dir '^%(.*/%)[^/]%{1,%}$' || Dir=
expr "$File" :File '^%(.*/%)[^/]%{1,%}$' || File=
lsec="$rsec"
expr "$Dir" :Dir '/$' '' && lsec="/$lsec"
expr "$File" :File '/$' '' && rsec="/$rsec"
inp="$lsec$inp"
done
inp="$Dir$inp"
print -r "rename $Zeile $inp"
return 0
}
set -f
Tout() {
local n=0000 e=0 l=000
while :
do
e=0
while readl ZS && readl -u3 ZR
do
expr "$ZS" :: '^ *//' && continue
expr "$ZS" :Tnam ' %(T_%w%{1,}%) *= *{' || continue
e=1 break
done
[ e -eq 0 ] && break
n=0
while readl ZS && readl -u3 ZR
do
expr "$ZS" :: '^ *}; *$' && break
expr "$ZS" :: '^ *//' && continue
expr "$ZS" :: ' "[^"]%{16%}",' || continue
expr "$ZS" :S1 ' %("[^"]%{16%}"%)'
expr "$ZS" :ZS ' "[^"]%{16%}"' = ' '
expr "$ZS" :S2 ' %("[^"]%{16%}"%)'
expr "$ZS" :ZS ' "[^"]%{16%}"' = ' '
expr "$ZS" :S3 ' %("[^"]%{16%}"%)'
expr "$ZS" :ZS ' "[^"]%{16%}"' = ' '
expr "$ZS" :S4 ' %("[^"]%{16%}"%)'
expr "$ZR" :ZR ' "[^"]%{16%}"' = ' '
expr "$ZR" :ZR ' "[^"]%{16%}"' = ' '
expr "$ZR" :S5 ' %("[^"]%{16%}"%)'
prints vsf03 n $n
let "l= ${#Tnam}+${#n}+14"
conv -TTD Tnam
prints s-${l}ss40s '//' '"' '' '"'
print -r "#define ${Tnam}_${n}_en $S1"
print -r "#define ${Tnam}_${n}_de $S2"
print -r "#define ${Tnam}_${n}_sw $S3"
print -r "#define ${Tnam}_${n}_it $S4"
print -r "#define ${Tnam}_${n}_ru $S5"
let ++n
done
echo
done
return 0
}
0< ../MU1000C/TXT2_STD.C
3< ../MU1000C/TXT2_RUS.C
1> T.OUT
Tout
><<<
0< ../MU1000C/TXT_STD.C
3< ../MU1000C/TXT_RUS.C
1>>T.OUT
Tout
><<<
set -f
sp=" "
l=${#1}
s1=$( catv ".$1" | base -b +10 )
s2=$( catv ".$1" $((11-l)),sp | base -b +10 )
echo "¯$s1®"
start=256
while let "--start>=0"
do
echo $start:
m=-0000000001
while let "++m<1"
do
MSK8=$m
for cpc in $s1
do
crc=$start cn=8
while :
do
let "(crc&16#80)^^(cpc&16#01)" && {
(( crc<<=1,
crc|=16#01 ))
let "crc&=255,cpc>>=1, --cn<=0" && break
continue
}
(( crc<<=1,
crc&=~16#01 ))
let "crc&=255,cpc>>=1, --cn<=0" && break
done
done
[ $# -eq 1 ] && echo " $((16#,crc))%c"
[ $# -eq 2 ] && {
let "crc==16#$2" || echo " $((16#,crc))%c"
let "crc==16#$2" && echo "%a ¯$((16#,crc))®%c" &&
echo "¯$1® $2 s=$start m=$m" >> crco
}
done
echo
done
echo
F='/u/bish/bish.c /u/bish/mod/*.c'
grep '%<%w%{3,}(' $F | {
while readl Z
do
while expr "$Z" :f '%(%<%w%{3,}(%)'
do
catv f '/)%n'
expr "$Z" :Z '%<%w%{3,}(' = ''
done
done
}
Files=*.[ch]
files=*base.txt
Files="$Files $files"
expr "$Files" :Files ' texts256.h' = ' '
expr "$Files" :Files ' texts.h' = ' '
expr "$Files" :Files ' text.h' = ' '
expr "$Files" :Files ' texte.h' = ' '
expr "$Files" :Files ' texte.c' = ' '
expr "$Files" :Files ' [tT]%dh%d%{2,}.c' += ' '
t0=XXXXXXXXXXXXXXXX
: > __1__
: > __2__
< texts256.h
while readl Z
do
ifset Z || continue
expr "$Z" :t1 ' D_%(%w%{1,}%)_%d%d%d_en ' || continue
expr "$Z" :t2 ' D_%w%{1,}_%(%d%d%d%)_en '
expr "$t2" :t2 '^0%{1,2}' = ''
[ "$t1" != "$t0" ] && catv /T_ t1 /%n >> __1__ ; t0=$t1
catv /T_ t1 /' ' t2 /%n >> __2__
done
><
echo $Files
for t in `cat __1__`
do
catv /%n t
grep -q '%<'"$t"'%>' $Files && continue
catv /' --'
done
catv /%n
for 2 t1 t2 in `cat __2__`
do
catv /%n t1 /+ t2
[ t2 -eq 0 ] && grep -q '%<'"$t1"'%>' cfgdata.c mesdata.c && continue
grep -q '%<'"$t1"'+'"$t2"'%>' cfgdata.c mesdata.c && continue
catv /' --'
done
catv /%n
remove -s __1__ __2__
LDIR=/fat/cie/mc/c
RDIR=/home/schellong/cie/mc/c
DN=/
BN=
expr "$RDIR" :BN '%(/[^/]%{1,}%)$'
expr "$RDIR" :DN '^%(/.%{1,}%)/[^/]%{1,}$'
TDIR=/usr/tapeBAK
TMPL=$TDIR/_tbllist
TMPR=$TDIR/_tbrlist
TMPC=$TDIR/_tbclist
[ -d $TDIR ] && rm -r $TDIR
mkdir -p $TDIR$BN
: >$TMPC
N=0
set Z:.200
Copy() {
local d
echo $LDIR/$1 >> $TMPC
expr "$TDIR$BN/$1" :d '^%(.%{1,}%)/[^/]%{1,}$' || d=/
[ -d $d ] || mkdir -p $d
cp -pv $LDIR/$1 $d
chmod 600 "$TDIR$BN/$1"
N=1
return 0
}
ssh -C -l root -p 8108 tape find $RDIR -type f -printf '%T@\ %P\\n' > $TMPR || exit 1
[ -s $TMPR ] || exit 1
cd $LDIR
list -Rf > $TMPL
cd -
< $TMPL
while readl Z
do
expr "$Z" =:: '%.lst$' && continue
expr "$Z" =:: '%.obj$' && continue
expr "$Z" =:: '%.stk$' && continue
expr "$Z" =:: '%.als$' && continue
expr "$Z" =:: '%.bin$' && continue
expr "$Z" =:: '%.abs$' && continue
mtr=$( grep -m -e " $Z%$" $TMPR ) || { echo neu:; Copy $Z; continue; }
fstat -mv mtl $LDIR/$Z
expr "$mtr" :mtr '^%([0-9]%{1,}%)'
let "mtl>mtr+5" && { print -r $((mtl-mtr))s:; Copy $Z; }
done
><
[ $# -eq 0 -a N -gt 0 ] && scp -rpC -P 8108 $TDIR$BN root@tape:$DN
8< $TMPR
while readl -u8 Z
do
expr "$Z" :Z '[0-9] %(.%{1,}%)$'
expr "$Z" =:: '%.abs$' && {
echo rm $RDIR/$Z ...
ssh -l root -p 8108 tape rm "$RDIR/$Z" || echo $?
continue
}
expr "$Z" =:: '%.mhx$' || continue
grep -qm -e "^$Z%$" $TMPL && continue
echo rm $RDIR/$Z ...
ssh -l root -p 8108 tape rm "$RDIR/$Z" || echo $?
done
><
exit 0
DIR=/home/schellong/cie/mc/c/BUILDS
MKZIP=/home/schellong/cie/mc/c/BUILDS/tapemkzip.sh
cps=0
ssh -l root -p 8108 tape "[ -x $MKZIP ]" || cps=1
[ cps -gt 0 -o $# -gt 0 ] && {
echo Kopiere Script ...
[ -s /u/sh/bish/tapemkzip.sh ] || { echo Kein Script; exit 5; }
ssh -l root -p 8108 tape "mkdir -p $DIR; chmod 700 $DIR" || { echo Fail1; exit 1; }
scp -rpC -P 8108 /u/sh/bish/tapemkzip.sh root@tape:$DIR || { echo Fail2; exit 2; }
ssh -l root -p 8108 tape "chmod 700 $MKZIP" || { echo Fail3; exit 3; }
}
ssh -l root -p 8108 tape $MKZIP || { echo Fail4; exit 4; }
exit 0
MIETER="Junker Stork KKKKKKK
Schenk Horsthemke Rabe
Torres Schulze 2.OG_re"
array WPOS El Em Er 1l 1m 1r 2l 2m 2r
array MIETER $MIETER
array WASCH 1 2 3 4 5 6 0 8 0
array BODEN 1 2 3 4 5 6 7 8 9
array TpM 31 28 31 30 31 30 31 31 30 31 30 31
array Mon Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez
nW=54
T=26 M=12 J=2011
nFlur=1 nFlurF=1 iFlur=2 nKell=1 nKellF=1 iKell=7 nMull=6 iMull=9
nWasch=4 nWaschF=8 iWasch=4 nHeiz=16 iHeiz=8 iBod=9 fBod=0 fGlock=0
nFLUR=1 nFLURF=1 iFLUR=3 nKELL=1 nKELLF=1 nMULL=6
nWASCH=4 nWASCHF=8 nHEIZ=16
[ -s termine.INI ] && {
until read "wahl? q(uit), S, E oder 0...$nW: " rest
[ -z "$wahl" -o "$wahl" = q ] && exit
grep -1 "^$wahl " termine.ini
do :; done
for 20 rest T M J nFlur nFlurF iFlur nKell nKellF iKell %
nMull iMull nWasch nWaschF iWasch nHeiz iHeiz iBod %
fBod fGlock %
in `grep "^$wahl " termine.ini`
do :; done
/bin/cp termine.ini termine.in_
echo %c > termine.ini
}
wr_ini() {
echo $1 $T $M $J $nFlur $nFlurF $iFlur%c >> termine.ini
echo " "$nKell $nKellF $iKell $nMull $iMull%c >> termine.ini
echo " "$nWasch $nWaschF $iWasch $nHeiz $iHeiz%c >> termine.ini
echo " "$iBod $fBod $fGlock >> termine.ini
return
}
aT=$T aM=$M aJ=$J
eT=$T eM=$M eJ=$J
schaltjahr() {
local j=$1
[ $((j%4)) -eq 0 -a $((j%100)) -ne 0 -o $((j%400)) -eq 0 ] && {
TpM2=29
return 0
}
TpM2=28
return 1
}
datum_add() {
local t m j tpm add=$4
t=`eval echo '$'$1`
m=`eval echo '$'$2`
j=`eval echo '$'$3`
[ $m -eq 2 ] && schaltjahr $j
array tpm=TpM $m
((t=t+add))
[ $t -gt $tpm ] && let 't=t-tpm; m=m+1'
[ $m -gt 12 ] && let 'm=m-12; j=j+1'
eval $1=$t $2=$m $3=$j
return
}
set_ae() {
aT=$T aM=$M aJ=$J eT=$T eM=$M eJ=$J
datum_add aT aM aJ $1
datum_add eT eM eJ $2
array aMs=Mon $aM
array eMs=Mon $eM
return
}
P_dat_miet() {
local mieter wpos
array mieter=MIETER $1
array wpos=WPOS $1
prints sf03ss2ssf03ss2- $aT. $aMs. $aJ " - " $eT. $eMs. $eJ
prints ss-14- " $wpos " $mieter
return
}
flur() {
((nFlurF=nFlurF-1))
((nFlur=nFlur-1)) || {
set_ae 1 $((1+4))
for I from 0 by 3 to 6 repeat
do
P_dat_miet $((iFlur+I))
prints s- "Treppe, Handl"
[ $nFlurF -le 0 ] && prints s- " + Fenst, Fußl, Gel"
echo
done
nFlur=$nFLUR
((iFlur=iFlur+1))
[ $iFlur -gt $iFLUR ] && iFlur=1
}
[ $nFlurF -le 0 ] && nFlurF=$nFLURF
return
}
glocken() {
[ $M -ne 10 ] && fGlock=0
[ $M -eq 10 -a $fGlock != 1 ] && {
set_ae 0 27
for I to 9 repeat
do
P_dat_miet $I
prints s Glasglocken
done
fGlock=1
}
return
}
boden() {
local ibod
[ $M -ne 4 -a $M -ne 9 ] && fBod=0
[ '(' $M -eq 4 -o $M -eq 9 ')' -a $fBod != 1 ] && {
set_ae 0 27
P_dat_miet $iBod
prints s Dachboden
fBod=1
while let 'iBod=iBod+1'; [ $iBod -gt 9 ] && iBod=1
array ibod=BODEN $iBod; [ $ibod -le 0 ]
do :; done
iBod=$ibod
}
return
}
heiz() {
local iheiz
((nHeiz=nHeiz-1)) || {
set_ae 0 15
P_dat_miet $iHeiz
prints s "Heizungskeller, Zählerraum"
nHeiz=$nHEIZ
while let 'iHeiz=iHeiz+1'; [ $iHeiz -gt 9 ] && iHeiz=1
array iheiz=BODEN $iHeiz; [ $iheiz -gt 0 ]
do :; done
}
return
}
keller() {
((nKellF=nKellF-1))
((nKell=nKell-1)) || {
set_ae 3 $((3+2))
P_dat_miet $iKell
prints s- Keller
[ $nKellF -le 0 ] && prints s- " + Fenster"
echo
nKell=$nKELL
((iKell=iKell+1))
[ $iKell -gt 9 ] && iKell=1
}
[ $nKellF -le 0 ] && nKellF=$nKELLF
return
}
wasch() {
local iwasch
((nWaschF=nWaschF-1))
((nWasch=nWasch-1)) || {
set_ae 2 $((2+6))
P_dat_miet $iWasch
prints s- Waschkeller
[ $nWaschF -le 0 ] && prints s- " + Fenster"
echo
nWasch=$nWASCH
while let 'iWasch=iWasch+1'; [ $iWasch -gt 9 ] && iWasch=1
array iwasch=WASCH $iWasch; [ $iwasch -le 0 ]
do :; done
iWasch=$iwasch
}
[ $nWaschF -le 0 ] && nWaschF=$nWASCHF
return
}
mull() {
((nMull=nMull-1)) || {
set_ae 0 10
P_dat_miet $iMull
prints s Mülleimerabstellplatz
nMull=$nMULL
((iMull=iMull+1))
[ $iMull -gt 9 ] && iMull=1
}
return
}
wr_ini S
> termine.all
echo "Terminplan zu den Mieter-Reinigungspflichten `date +'%x'`%c"
echo ------------------------------------------------------------
echo "Laufzeit ab $T.$M.$J · $nW Wochen"
echo "Waschkeller: %c"
for I to 9 repeat
do
array ibod=WASCH $I
array rest=WPOS $I
[ $ibod -gt 0 ] && echo " $rest%c"
[ $ibod -le 0 ] && echo " --%c"
done
echo
echo "Dachboden : %c"
for I to 9 repeat
do
array ibod=BODEN $I
array rest=WPOS $I
[ $ibod -gt 0 ] && echo " $rest%c"
[ $ibod -le 0 ] && echo " --%c"
done
echo %n%n
while [ $nW -gt 0 ]
do
wr_ini $nW
flur
keller
boden
datum_add T M J 7
((nW=nW-1))
done
><
wr_ini $nW
wr_ini E
for I to 9 repeat
do
array wpos=WPOS $I
grep " $wpos " termine.all > termine.$wpos
done
a() {
if [ 1 -gt 1 ]
then
b()) {
echo bf then
)}
else
b()) {
echo bf else
)}
fi
b
echo af
}
local v0=00000000 v1=00000000 r=00000000 n=000
local s0=00000000 s1=00000000
s0=0 s1=0
to 16777216 repeat
do
let "r=random(2)"
if [ r -eq 0 ]
then
let "++v0" "++s0"
ifset eins$s1 || eins$s1=000000
[ s1 -gt 0 ] && let "++eins$s1"
s1=0
else
let "++v1" "++s1"
ifset null$s0 || null$s0=000000
[ s0 -gt 0 ] && let "++null$s0"
s0=0
fi
done
[ r -eq 0 -a s1 -gt 0 ] && let "++eins$s1"
[ r -eq 1 -a s0 -gt 0 ] && let "++null$s0"
echo $v0 $v1
echo "0: %c"
for r to 50 repeat
do
ifset null$r || continue
v0=null$r
echo " $r=${{v0}}%c"
done
echo
echo "1: %c"
for r to 50 repeat
do
ifset eins$r || continue
v1=eins$r
echo " $r=${{v1}}%c"
done
echo
exit
Symbols() {
<z
while read i
do
echo $i
nm $i | grep zero
done
><
}
Symbols | less
C=00000
set Z:.150 Z16:.300 LLn:.50
LL=sv l=0 LLn=
read LL < ll.txt || { print -u2 "ll.txt"; exit 1; }
conv -l LL
expr "$LL" :: '^%l%l$' || { print -u2 "LL='$LL'"; exit 2; }
>texts256.h
<txtbase.h
while readl Z
do
expr "$Z" :: '%<D_%w%{1,}_%d%d%d_%l%l%>' || {
[ l -eq 1 ] && l=2
catv Z /%n
continue
}
[ l -lt 2 ] && expr "$Z" :ll '_%d%d%d_%(%l%l%)%>' && {
l=1 LLn="$LLn$ll "
}
expr "$Z" :: '_%d%d%d_[ed][ne]%>' && {
catv Z /%n
continue
}
expr "$Z" :: '_%d%d%d_'"$LL"'%>' && catv Z /%n
done
><<
conv -u LL LLn
echo %t$LLn
Lang=$(grep -m1 '%<LANG%l_'"$LL"' *, *LANG_'"$LL"'%>' ../share/var.c)
expr "$Lang" :Lang 'LANG_%u%u[ %t]*,[ %t]*"%([^"]%{3,}%)"'
echo %t$Lang
cat cfgbase.txt | {
>cfgbase.txt
while readl Z
do
expr "$Z" :Z '^%(@:English,Deutsch,%).*$' '%1'"$Lang"
catv Z /%n
done
><
}
C=.
cat def.h | {
>def.h
while readl Z
do
expr "$Z" :: ' LANGX_%u%u%>' && {
expr "$Z" :Z 'LANGX_%u%u' = "LANGX_$LL"
}
expr "$Z" :LLs ' LANGi_%(%u%u%)%>' && {
C=.
for ll in $LLn
do cmpv ll LLs && C=+ break; done
expr "$Z" :Z 'LANGi_%u%u.*$' = "LANGi_$LLs '$C'"
}
catv Z /%n
done
><
}
>texts.h
<texts256.h
while readl Z
do
base -b Z +16 Z16
expr "$Z16" :: '[89abcdef][0-9a-f]' || { catv Z /%n; continue; }
for C in $Z16
do
let "16#$C<=127" && { base -16 C +b; continue; }
base -16 C +8 C
prints ssf03- '\' $C
done
catv /%n
done
><<
remove -s texts.tmp
C=00000
: > texts.h
base -b +10 < texts256.h |
while readl Z
do
for C in $Z
do
let "C<=127" && {
base -10 C +b C
catv 0,1,C >> texts.h
continue
}
base -10 C +8 C
prints vssf03 C '\' $C
catv 0,4,C >> texts.h
done
done
: > cfgbase.txt
base -b +10 < cfgbase256.txt |
while readl Z
do
for C in $Z
do
let "C<=127" && {
base -10 C +b C
catv 0,1,C >> cfgbase.txt
continue
}
base -10 C +8 C
prints vssf03 C '\' $C
catv 0,4,C >> cfgbase.txt
done
done
C=00000
: > texts.h
base -b +10 < texts256.h |
while readl Z
do
for C in $Z
do
let "C<=127" && {
base -10 C +b C
catv 0,1,C >> texts.h
continue
}
base -10 C +8 C
prints vssf03 C '\' $C
catv 0,4,C >> texts.h
done
done
exit 0
: > cfgbase.txt
base -b +10 < cfgbase256.txt |
while readl Z
do
for C in $Z
do
let "C<=127" && {
base -10 C +b C
catv 0,1,C >> cfgbase.txt
continue
}
base -10 C +8 C
prints vssf03 C '\' $C
catv 0,4,C >> cfgbase.txt
done
done
C=00000
set Z:.150 Z16:.300
>texts.h
print '%n/* Made by script texts.bish (H.Schellong) */%n'
<./base/txtbase.h
while readl Z
do
base -b Z +16 Z16
expr "$Z16" :: '[89abcdef][0-9a-f]' || { catv Z /%n; continue; }
for C in $Z16
do
let "16#$C<=127" && { base -16 C +b; continue; }
base -16 C +8 C
prints ssf03- '\' $C
done
catv /%n
done
><<
C=00000
set Z:.150 Z16:.300
>texts.h
<texts256.h
while readl Z
do
base -b Z +16 Z16
expr "$Z16" :: '[89abcdef][0-9a-f]' || { catv Z /%n; continue; }
for C in $Z16
do
let "16#$C<=127" && { base -16 C +b; continue; }
base -16 C +8 C
prints ssf03- '\' $C
done
catv /%n
done
><<
C=00000
: > texts.h
base -b +10 < texts256.h |
while readl Z
do
for C in $Z
do
let "C<=127" && {
base -10 C +b C
catv 0,1,C >> texts.h
continue
}
base -10 C +8 C
prints vssf03 C '\' $C
catv 0,4,C >> texts.h
done
done
C=00000
set Z:.150 Z16:.300 LLn:.50
LL=sv l=0 LLn=
read LL < ./base/ll.txt || { print -u2 "ll.txt"; exit 1; }
conv -l LL
expr "$LL" :: '^%l%l$' || { print -u2 "LL='$LL'"; exit 2; }
>texts256.h
print '%n/* Made by script texts.bish (H.Schellong) */%n'
<./base/txtbase.h
while readl Z
do
expr "$Z" :: '%<D_%w%{1,}_%d%d%d_%l%l%>' || {
[ l -eq 1 ] && l=2
catv Z /%n
continue
}
[ l -lt 2 ] && expr "$Z" :ll '_%d%d%d_%(%l%l%)%>' && {
l=1 LLn="$LLn$ll "
}
expr "$Z" :: '_%d%d%d_[ed][ne]%>' && {
catv Z /%n
continue
}
expr "$Z" :: '_%d%d%d_'"$LL"'%>' && catv Z /%n
done
><<
conv -u LL LLn
echo %t$LLn
Lang=$(grep -m1 '%<LANG%l_'"$LL"' *, *LANG_'"$LL"'%>' share/var.c)
expr "$Lang" :Lang 'LANG_%u%u[ %t]*,[ %t]*"%([^"]%{3,}%)"'
echo %t$Lang
cat ./base/cfgbase.txt | {
>./base/cfgbase.txt
while readl Z
do
expr "$Z" :Z '^%(@:English,Deutsch,%).*$' '%1'"$Lang"
catv Z /%n
done
><
}
C=.
cat def.h | {
>def.h
while readl Z
do
expr "$Z" :: ' LANGX_%u%u%>' && {
expr "$Z" :Z 'LANGX_%u%u' = "LANGX_$LL"
}
expr "$Z" :LLs ' LANGi_%(%u%u%)%>' && {
C=.
for ll in $LLn
do cmpv ll LLs && C=+ break; done
expr "$Z" :Z 'LANGi_%u%u.*$' = "LANGi_$LLs '$C'"
}
catv Z /%n
done
><
}
>texts.h
print '%n/* Made by script texts.bish (H.Schellong) */%n'
<texts256.h
while readl Z
do
base -b Z +16 Z16
expr "$Z16" :: '[89abcdef][0-9a-f]' || { catv Z /%n; continue; }
for C in $Z16
do
let "16#$C<=127" && { base -16 C +b; continue; }
base -16 C +8 C
prints ssf03- '\' $C
done
catv /%n
done
><<
remove -s texts.tmp
set -f
ifile=texts256.h
[ $# -ge 1 ] && ifile=$1
set Z:.200 Z0:.200 DZ:.200 Lz:32.100
LEN=16 Len=16
z0=0 dz0=0 len=000 lm=000
while readl Z
do
expr "$Z" :DZ '^%( *# *define *[Dd]_%w%{1,}_%d%d%d_%l%l *%)["0-9]' || {
expr "$Z" :LEN '^//|%(%d%d%)|' && Len=$LEN
expr "$Z" :Len '^//%(%d%d%)'
expr "$Z" :: '^ *$' && Len=$LEN
[ z0 -eq 1 ] && catv Z0 /%n
Z0="$Z" z0=1 dz0=0
continue
}
[ dz0 -eq 0 ] && {
lm='' let "len=${#DZ}-2"
expr "$Z0" :lm '^//%([^ %t]%{1,}%)' && let "len-=${#lm}"
catv './/' lm $len,Lz '.|' $Len,Lz '.|' =Z0:
}
[ z0 -eq 1 ] && catv Z0 /%n
Z0="$Z" z0=1 dz0=1
done
[ z0 -eq 1 ] && catv Z0 /%n
:
T=/ UNIX=ja
[ `ver o` = dos ] && { T=\; unset UNIX; DOS=ja; }
[ `ver w` = shw ] && {
echo Script $0 für bish-Shareware-Version nicht geeignet!; exit; }
if ifdef UNIX
then
DIRS0="/u/bish /u/wapi /u/hs /u/l /u/sc /u/helmut /u/sh /u/coor
/u/frei /u/bin /u/di-so /u/old /u/tmp"
PACKER=/usr/bin/compress
ENTPACKER=/usr/bin/uncompress
NUL=/dev/null
MNTDEV=/dev/fd0135ds18
MNTDIR=/mnt
FSTYP=AFS
A_=$MNTDIR
BSZ=1024
MRO=""
else
DIRS0="c:\bish c:\wapi c:\usr c:\win"
PACKER=c:\usr\bin\pack.exe
ENTPACKER=c:\usr\bin\unpack.exe
NUL=NUL
MNTDIR=DOS
A_="A:"
BSZ=512
fi
MNT=U
FLST=temp_001.tcp
TMPS=size_tmp.tcp
LISTE=time_lst.tcp
ALISTE=time_l_a.tcp
NEWLST=time_l_n.tcp
TCPPATT='[a-zA-Z0-9_]%{4%}_[a-zA-Z0-9_]%{3%}%.[tT][cC][pP]'
conv -"d`echo %0012%c`d`echo %0015%c`f " DIRS0
DIRS=`expr "$DIRS0" : '%([^ ][^ ]*%) '`
DSKUPCK=`expr $ENTPACKER : '.*%('$T'..*%)'`
ifdef DOS && conv -U PACKER ENTPACKER DIRS0 DIRS NUL A_ FLST TMPS %
LISTE ALISTE NEWLST DSKUPCK
[ ! -f $PACKER -o ! -f $ENTPACKER ] && {
echo %n$PACKER und/oder $ENTPACKER nicht gefunden!
echo Entsprechend einrichten oder in der Datei "'$0'"
echo die betreffenden Zuweisungen entsprechend editieren.
echo Hinweis:
echo Auf Sicherungs-Disketten ist $DSKUPCK per Packoption
echo regelmäßig kopiert worden.
exit
}
aliases() {
global
ifdef DOS && alias remove=DEL mkdir=MD "copy=COPY /v" %
pack=$PACKER unpack=$ENTPACKER
ifdef UNIX && alias remove=rm mkdir="mkdir -p" "copy=/bin/copy -om" %
pack="$PACKER -c -H" unpack="$ENTPACKER -c"
}
aliases
trap 'Delete; Umount' 0 2
fecho() { echo "%e[1;5m$*%e[0m"; }
echoh() { echo "%e[1m$*%e[0m"; }
fehler() { echo "%n $0: '$1'%n"; exit 1; }
stop() { read "rest? <Enter> "; }
Mount() {
[ $MNT = F -o $MNT = RW -a -z "$2" -o $MNT = R -a -n "$2" ] &&
return 0
frage "Diskette '$1' eingeschoben? (Ende=e)" || return
[ $MNT != U ] && Umount
MNT=F
[ $T = / ] && {
mount $2 -f $FSTYP $MNTDEV $MNTDIR || return
MNT=R
[ -z "$2" ] && MNT=RW
}
return 0
}
Umount() {
ifdef DOS && { MNT=U; return 0; }
[ $MNT = R -o $MNT = RW ] &| mount | grep -e "$MNTDEV" > $NUL &&
{ umount $MNTDEV && MNT=U; } ||
echoh Kann $MNTDEV nicht abmontieren!
}
Delete() {
local es=-e dat
[ $# -gt 0 -a -n "$1" ] && es=$1
for dat in $FLST $TMPS $ALISTE $NEWLST
do
[ $es $dat ] && remove $dat
done
}
frage() {
while echo "%n$1 [jne]: %c"
do
read rest
case "$rest" in
[jJ]) return 0 ;;
[nN]) return 1 ;;
[eE]) exit 0 ;;
*) continue ;;
esac
done
return 2
}
getlines() {
[ $# -gt 1 ] && { static sl=1 cnt=$1 dat=$2; return 0; }
line -$sl-$((sl+cnt-1)) "$dat" || return 1
((sl=sl+cnt))
return 0
}
check_liste() {
local nw=`wc -w $1` nl=`wc -l $1`
[ $((nw%3)) -ne 0 -o "$nw" -lt 3 -o $((nl*3)) -ne "$nw" ] && {
fecho Inhalt von $1 ist nicht okay!; return 1; }
return 0
}
make_dirs() {
local dir=$1 von=$2 nach=$3 dz=0 dlst mdir
ifdef DOS && dlst="$von$dir `DIR $von$dir /s/b/a:d`"
ifdef UNIX && dlst="`find $von$dir -type d -print`"
for mdir in $dlst
do
((dz=dz+1)); echo "%r$dz(md) %r%c"
mdir=$nach`expr $mdir : $von'%(.*%)'`
[ ! -d $mdir ] && {
[ -e $mdir ] && {
fecho $mdir existiert bereits, ist aber kein Verzeichnis!
return 1
}
echo % Erzeuge Verzeichnis $mdir; mkdir $mdir
}
done
return 0
}
akt_liste() {
echo %c > $ALISTE
local liste=$1 new=$2 nz=0 pfad szeit pck g_zeile
getlines 15 $liste
while dateien="`getlines`"
do
for 3 pfad szeit pck in $dateien
do
((nz=nz+1)); echo "%r$nz(al1) %r%c"
if g_zeile="`grep -m -e "^$pfad " $new`"
then
echo $g_zeile >> $ALISTE
else
echo $pfad $szeit $pck >> $ALISTE
fi
done
done
nz=0; echo
getlines 15 $new
while dateien="`getlines`"
do
for 3 pfad szeit pck in $dateien
do
((nz=nz+1)); echo "%r$nz(al2) %r%c"
grep -cm -e "^$pfad " $ALISTE > $NUL ||
echo $pfad $szeit $pck >> $ALISTE
done
done
[ -s $ALISTE ] && { echo copy $ALISTE $liste
copy $ALISTE $liste > $NUL; }
return
}
backup_file() {
local datei=$1 floppydat
[ -z "$md" ] && {
Mount $dir || return
make_dirs $dir "$L" $A_ || return
frage "Dateien bei Absicherung packen?" && PACK=packed
md=1
[ ! -e $A_$DSKUPCK -a $PACK = packed ] && {
copy $ENTPACKER $A_$T > $NUL
echo copy $ENTPACKER $A_$T
}
}
floppydat=$A_$datei
local pzeile fq fz p mtim fmod
PAC=$PACK
mtim=`mtime $L$datei`
fmod=`fmode $L$datei`
[ ! -f $L$datei -o `fsize $L$datei` -le $BSZ ] && PAC=unpacked
[ $PAC = packed ] && ifdef UNIX && {
p=`expr $datei : '[^/]*$'`
expr $datei :: '.Z$' &| [ $p -gt 12 ] && PAC=unpacked
}
[ $PAC != packed ] && { copy $L$datei $floppydat > $NUL
stime $mtim $floppydat; return 0; }
[ $PAC = packed ] && ifdef DOS && {
pack $L$datei $floppydat | pzeile="`grep '[0-9]%%'`"
echo " Packreduktion %c"
expr "$pzeile" : ' %(-%{0,1%}[0-9]%{1,4%}%%%)' && ((lz=lz+1))
}
[ $PAC = packed ] && ifdef UNIX && {
if pack $L$datei > $floppydat
then
fq=`fsize $L$datei`; fz=`fsize $floppydat`; ((p=(fz*100)/fq))
echo " Komprimiert auf $p%%%%"; ((lz=lz+1))
else
copy $L$datei $floppydat > $NUL; PAC=unpacked
fi
chmod $fmod $floppydat
}
stime $mtim $floppydat
return 0
}
backup() {
PACK=unpacked PAC=unpacked md=""
echo Bearbeite Verzeichnis $Dir ...
ifdef DOS && DIR $Dir /s/b/a:-d/o:s > $FLST
ifdef UNIX && find $Dir -type f -print > $FLST
[ ! -e $Dir$T$LISTE ] && { echo "?:?:? 0 p" > $Dir$T$LISTE
echoh Allererste Bearbeitung; }
check_liste $Dir$T$LISTE || exit 1
echo `wc -l $FLST` Dateien gefunden ; sleep
getlines 20 $FLST
lz=0; local h=0 nz=0 datei zeit Datei g_zeile altezeit diff
while dateien="`getlines`"
do
for Datei in $dateien
do
expr $Datei : "$TCPPATT" > $NUL && continue
zeit=`mtime $Datei`
datei=`expr $Datei : '%('$T'.*%)'`
((nz=nz+1)); echo "%r$nz(td) %r%c"
if g_zeile="`grep -m -e "^$datei " $Dir$T$LISTE`"
then
echo $g_zeile | read - altezeit -
[ $zeit -gt $altezeit ] && {
(( diff=zeit-altezeit ; h=diff/3600 ; s=diff%3600 ))
[ "$h" != 0 ] && h="$h Std. "
[ "$h" = 0 ] && h=""
echo "Neuere Datei: $Datei,"
echo " um $h$s Sek. neuer"
backup_file $datei || return
echo $datei $zeit $PAC >> $ALISTE
echo $datei $zeit $PAC >> $NEWLST
((lz=lz+2))
}
[ $zeit -gt $altezeit ] || echo $g_zeile >> $ALISTE
else
echo "Neuaufnahme-Datei: $Datei"
backup_file $datei || return
echo $datei $zeit $PAC >> $ALISTE
echo $datei $zeit $PAC >> $NEWLST
((lz=lz+1))
fi
[ $lz -ge 21 ] && { lz=0; stop; }
done
done
[ $nz -gt 0 ] && echo
[ -n "$md" ] && {
echo Aktualisiere Zeitmarken-Liste:
echo copy $ALISTE $Dir$T$LISTE
copy $ALISTE $Dir$T$LISTE > $NUL
if [ ! -s $A_$dir$T$LISTE ]
then
echo copy $ALISTE $A_$dir$T$LISTE
copy $ALISTE $A_$dir$T$LISTE > $NUL
else
akt_liste $A_$dir$T$LISTE $NEWLST
fi
ifdef DOS && DIR $A_$T
ifdef UNIX && { /bin/l $MNTDIR; df -vk $MNTDEV; }
stop
}
Delete
[ -z "$md" ] && { echoh "*** Keine Datei-Veränderung ***"; stop; }
return 0
}
restore_file() {
local dat=$1 von=$2 nach=$3 pck=$4 fq fz p pzeile mtim fmod
if [ ! -f $von$dat ]
then
echoh "%r '$von$dat' ist in $von$dir$T$LISTE enthalten,"
echoh " existiert jedoch nicht!"
((lz=lz+2))
else
echo " Kopiere $von$dat --> $nach ($pck)"
md=1; ((lz=lz+1))
mtim=`mtime $von$dat`; fmod=`fmode $von$dat`
if [ $pck = packed ]
then
((lz=lz+1))
ifdef DOS && {
unpack $von$dat $nach$dat | pzeile="`grep '[0-9]%%'`"
echo " Entpackerweiterung %c"
expr "$pzeile" : ' %(-%{0,1%}[0-9]%{1,4%}%%%)'
stime $mtim $nach$dat
}
ifdef UNIX && {
mv $von$dat $von$dat.Z
if unpack $von$dat.Z > $nach$dat
then
mv $von$dat.Z $von$dat
fq=`fsize $von$dat`; fz=`fsize $nach$dat`
((p=(fz*100)/fq))
echo " Expandiert auf $p%%%%"
else
mv $von$dat.Z $von$dat
fecho Expansion von $von$dat fehlgeschlagen!
copy $von$dat $nach$dat
stop
fi
stime $mtim $nach$dat
chmod $fmod $nach$dat
}
echo $nach$dat `mtime $nach$dat` packed >> $NEWLST
else
copy $von$dat $nach$dat > $NUL
stime $mtim $nach$dat
ifdef UNIX && chmod $fmod $nach$dat
echo $nach$dat `mtime $nach$dat` unpacked >> $NEWLST
fi
fi
}
help_ff() {
echo "%r%n
Option '*' überträgt unbedingt alle Dateien, die in der
Listen-Datei $LISTE auf Laufwerk $A_ enthalten sind
und löscht alle anderen Optionen.
Option '+' löscht logischerweise die Optionen, die
Dateigrößen und das Dateialter vergleichen.
Bei gepackten Dateien wird vorletztgenannte Option ignoriert.
Die letztgenannten Optionen müssen beide zutreffen,
damit (wenn beide angegeben wurden) kopiert wird.
Man beachte, daß Dateien auf der Diskette vorhanden sein können,
die nicht mehr in der Listendatei enthalten sind.
"
stop
}
restore() {
local datlst; md="" DA= S_O= T_O= SO= TO=
Mount $dir $MRO || return
[ "$L" = $A_ ] && { fecho Zielverzeichnis auf $A_; return; }
[ ! -s $A_$dir$T$LISTE -o ! -d $A_$dir ] && {
fecho "$A_$dir oder $A_$dir$T$LISTE fehlen!"; return; }
check_liste $A_$dir$T$LISTE || exit 1
while true
do
while echo "%r%n
Datei-Auswahl: '$DA $S_O $T_O $datlst'
Alle Dateien auf Diskette zur Festplatte : *
Die, die auf Diskette aber nicht auf Festplatte sind : +
Pfadnamen-Einzelangabe: $T...$T... (kein Laufw. ang.!) : $T...
Die auf Diskette größer-gleich-kleiner sind: > >= = <= < : s.li.
Die auf Diskette neuer-...usw. sind : >> >>= == <<= << : s.li.
Bisherige Auswahl löschen : --
Bisherige Pfadnamen löschen : $T-
Kopiervorgang beginnen : S
Hinweise : ?
Dieses Menü Verlassen : v
Beenden : e
: %c"
do
read kdo rest
case "$kdo" in
%*) DA='*'; S_O=""; T_O=""; SO=""; TO=""; datlst="" ;;
+) DA=+; S_O=""; T_O=""; SO=""; TO="" ;;
--) DA=""; S_O=""; T_O=""; SO=""; TO="" ;;
/-|\-) datlst="" ;;
/?*|\?*) ifdef DOS && conv -U kdo
[ ! -f $A_$kdo ] && { fecho Datei $A_$kdo fehlt;continue; }
datlst="$datlst$kdo " ;;
>) S_O='>' ; SO=gt ;;
>=) S_O='>='; SO=ge ;;
=) S_O='=' ; SO=eq ;;
<=) S_O='<='; SO=le ;;
<) S_O='<' ; SO=lt ;;
>>) T_O='>>' ; TO=gt ;;
>>=) T_O='>>='; TO=ge ;;
==) T_O='==' ; TO=eq ;;
<<=) T_O='<<='; TO=le ;;
<<) T_O='<<' ; TO=lt ;;
%?) help_ff; continue ;;
v) return ;;
e) exit 0 ;;
S) [ -n "$DA" -o -n "$datlst" -o -n "$SO" -o -n "$TO" ] &&
break
echo %a%c; continue ;;
*) echo %a%c; continue ;;
esac
done
make_dirs $dir $A_ "$L" || return
local dat pck nz datei dtime ja nein
for dat in $datlst
do
if g_zeile="`grep -m -e "^$dat " $A_$dir$T$LISTE`"
then
echo $g_zeile | read - - pck -
restore_file $dat $A_ "$L" $pck
else
echoh Ausgewählte Datei $dat nicht in Liste $A_$dir$T$LISTE !
fi
done
getlines 15 $A_$dir$T$LISTE
lz=0 nz=0
while [ -n "$DA" -o -n "$SO" -o -n "$TO" ] &&
dateien="`getlines`"
do
for 3 datei dtime pck in $dateien
do
ja=0 nein=0
[ "$DA" = '*' ] && ja=16
[ "$DA" = + ] && [ ! -e $L$datei ] && ja=8
[ -n "$SO" -a $pck != packed ] &&
[ -f $A_$datei -a -f $L$datei ] && ja=4 &&
[ `fsize $A_$datei` -$SO `fsize $L$datei` ] || nein=4
[ -n "$TO" ] && [ -f $A_$datei -a -f $L$datei ] && ja=2 &&
[ $dtime -$TO `mtime $L$datei` ] || nein=2
((nz=nz+1)); echo "%r$nz(ff) %r%c"
[ $ja -gt 0 -a $nein -eq 0 ] &&
restore_file $datei $A_ "$L" $pck
[ $lz -ge 21 ] && { lz=0; stop; }
done
done
[ -n "$md" ] && {
echo Aktualisiere Zeitmarken-Liste ...
if [ ! -s $L$dir$T$LISTE ]
then
echo copy $A_$dir$T$LISTE $L$dir
copy $A_$dir$T$LISTE $L$dir > $NUL
else
akt_liste $L$dir$T$LISTE $NEWLST
fi
}
Delete
[ -z "$md" ] && { echoh "*** Keine Datei übertragen ***"; stop; }
done
}
get_size() {
echo " Verzeichnis: '$1'%n"
expr $Dir :: "^$A_" &| expr "$L" :: '^[abAB]:' && {
Mount $dir $MRO || return
}
local dblks=00000 fblks=00000 fsz=00000000000 rblks=00000
local verz einträge=0000 fblk=00000 dblk=00000 datei
local size=00000000000 rb=00000000000 prz=0000
ifdef DOS && verzchnsse="$1 `DIR $1 /s/b/a:d`"
ifdef UNIX && verzchnsse="`find $1 -type d -print`"
for verz in $verzchnsse
do
echo %r% Bearbeite $verz ...
ifdef DOS && DIR $verz /b/a:-d > $TMPS
ifdef UNIX && ls -p $verz > $TMPS
ifdef DOS && einträge=`DIR $verz /b/a | wc -l`
ifdef UNIX && einträge=`ls $verz | wc -l`
((einträge=einträge+2))
fblk=$fblks dblk=$dblks
getlines 20 $TMPS
while dateien="`getlines`"
do
for datei in $dateien
do
ifdef UNIX && expr $datei : '/$' > $NUL && continue
size=`fsize $verz$T$datei` ((fsz=fsz+size))
(( fblks= fblks + size/BSZ + (rb=((size%BSZ)+BSZ-1)/BSZ) ))
((rblks=rblks+rb))
done
done
(( size= einträge<<5 ; fsz=fsz+size ;
dblks= dblks + size/BSZ + (rb=((size%BSZ)+BSZ-1)/BSZ) ))
((rblks=rblks+rb))
echo "%r " $((fblks-fblk)) %tDateiblöcke
echo " " $((dblks-dblk)) %tVerzeichnisblöcke
done
[ -e $TMPS ] && remove $TMPS
echo "%r%n Verzeichnis '$1' wird auf DOS-Diskette belegen:%n"
echo " $fblks%tDateiblöcke%n $dblks%tVerzeichnisblöcke"
((fblks=fblks+dblks))
[ $fsz -lt $BSZ ] && fsz=$BSZ
(( prz=(fblks*100)/(fsz/BSZ) - 100 ; rb=fblks-(fsz/BSZ) ))
echo " $fblks %tBlöcke insgesamt (mit je $BSZ Byte)"
echo " Komprimiert etwa $(( (fblks*35)/100 )) bis $(( (fblks*70)
/100 )) Blöcke"
echo " Eine 3½%"-1440K-Diskette hat $(([(80*2*18-33)*512]/BSZ)) Blöcke"
echo "%n $rblks Blöcke mit weniger als $BSZ Byte;"
echo " die Erhöhung durch die Blockbildung beträgt $prz%%%%%c"
echo " oder $rb Blöcke."
stop
unset verzchnsse
}
Test() {
while echo "%r%n
Zu testendes Verzeichnis: '$1'
%tListendatei zur Liegenschaft : l
%tLiegenschaft zur Listendatei : a
%tHinweise : ?
%tDieses Menü verlassen : v
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
l) tst_lst_lieg $1 ;;
a) tst_lieg_lst $1 ;;
v) return 0 ;;
e) exit 0 ;;
%?) echoh Keine Hinweise. ;;
*) echo %a%c ;;
esac
done
}
tst_lst_lieg() {
expr $Dir : "^$A_" > $NUL &| expr "$L" : '^[abAB]:' > $NUL && {
Mount $dir $MRO || return
}
[ ! -s $Dir$T$LISTE -o ! -d $Dir ] && {
fecho "$Dir oder $Dir$T$LISTE fehlen!"; return 1; }
check_liste $Dir$T$LISTE || return 1
getlines 20 $Dir$T$LISTE
lz=0; local nz=0 datei stime pck
while dateien="`getlines`"
do
for 3 datei stime pck in $dateien
do
((nz=nz+1)); echo "%r$nz(tl) %r%c"
if [ ! -f "$L$datei" ]
then
echoh "%r%n '$L$datei' ist in $Dir$T$LISTE enthalten,"
echoh " existiert jedoch nicht!"
((lz=lz+3))
else
:
fi
[ $lz -ge 21 ] && { lz=0; stop; }
done
done
echo; stop
}
tst_lieg_lst() {
expr $Dir : "^$A_" > $NUL &| expr "$L" : '^[abAB]:' > $NUL && {
Mount $dir $MRO || return
}
[ ! -s $Dir$T$LISTE -o ! -d $Dir ] && {
fecho "$Dir oder $Dir$T$LISTE fehlen!"; return 1; }
check_liste $Dir$T$LISTE || return 1
ifdef DOS && DIR $Dir /s/b/a:-d/o:s > $FLST
ifdef UNIX && find $Dir -type f -print > $FLST
getlines 30 $FLST
lz=0; local nz=0 pfad datei
while dateien="`getlines`"
do
for pfad in $dateien
do
datei=`expr $pfad : '^'$L'%(..*%)'`
expr $datei : "$TCPPATT" > $NUL && continue
((nz=nz+1)); echo "%r$nz(ta) %r%c"
if grep -cm -e "^$datei " $Dir$T$LISTE > $NUL
then
:
else
echoh "%r%n '$pfad' existiert,"
echoh " ist jedoch nicht in $Dir$T$LISTE enthalten!"
((lz=lz+3))
fi
[ $lz -ge 21 ] && { lz=0; stop; }
done
done
[ -e $FLST ] && remove $FLST
echo; stop
}
choice_dirs() {
local dir r=0
[ $# -eq 0 ] && read "DIRS?Verzeichnis(se): "
[ -z "$DIRS" ] && fecho Kein Verzeichnis angegeben! && r=2
for dir in $DIRS
do
ifdef UNIX && expr $dir :: '^'$MNTDIR && Mount $MNTDIR $MRO || r=2
ifdef DOS && expr $dir :: '^[abAB]:' && Mount $MNTDIR $MRO || r=2
ifdef DOS && expr $dir :: '^[a-zA-Z]:' ||
fecho Verzeichnis $dir ohne Laufwerkangabe! && r=2
[ ! -d $dir ] && echoh Verzeichnis $dir existiert nicht! &&
r=1 && [ -e $dir ] &&
fecho $dir existiert jedoch als Datei! && r=2
done
return $r
}
help() {
echo "%r%n
Die Verzeichnisse sind Quelle beim Absichern (a)
und Ziel beim Holen (h).
Ansonsten sind sie Gegenstand der Bearbeitung.
Bei den Testläufen (A,H) geschieht alles genau so
wie bei a,h. Es wird lediglich tatsächliches Kopieren
und Anlegen von Verzeichnissen unterbunden.
Dateien mit nicht mehr als $BSZ Byte werden trotz eventueller
Anwahl nicht gepackt.
"
stop
}
while echo "%r%n
Sicherungs-Diskette: '$A_'
Verzeichnis-Liste: '$DIRS0'
Quell- bzw. Ziel-Verzeichnis(se): '$DIRS'
%tListen-Verzeichnisse wählen : 1[,2,...,9]
%tVerzeichnis(se) eingeben : v
%tAuf Diskette absichern : a
%tVon Diskette holen : h
%tAuf Diskette absichern (Test): A
%tVon Diskette holen (Test) : H
%tVerzeichnisgröße feststellen : g
%tTest-Menü : t
%tHinweise : ?
%tBeenden : e
%t : %c"
do
read kdo rest
case "$kdo" in
v) choice_dirs; continue ;;
[1-9]*)
cdn=1
for DIRS in $DIRS0 ; do
[ $cdn -eq $kdo ] && break
((cdn=cdn+1))
done
choice_dirs ""$DIRS; continue ;;
a) Delete -s; KDOFKTN=backup; TST=0 ;;
A) Delete -s; KDOFKTN=backup; TST=1
alias mkdir=: copy=: pack=: ;;
h) Delete -s; KDOFKTN=restore; TST=0 ;;
H) Delete -s; KDOFKTN=restore; TST=1
alias mkdir=: copy=: unpack=: ;;
t) KDOFKTN=Test ;;
g) KDOFKTN=get_size ;;
e) exit 0 ;;
%?) help; continue ;;
*) continue ;;
esac
choice_dirs ""$DIRS || [ $? -gt 1 ] && continue
for kdir in $DIRS
do
Dir=$kdir
ifdef DOS && {
L=`expr $kdir : '^%([A-Za-z]:%)'`
dir=`expr $kdir : '%('$T'.*%)'`; }
ifdef UNIX && {
L=''`expr $kdir : '^%('$MNTDIR'%)'`
dir=`expr $kdir : '^'$L'%('$T'.*%)'`; }
$KDOFKTN $kdir
Umount
done
aliases
done
Delete; Umount
LBL=bish-Shell
while :
do
while echo "%n
%tbish : 1
%tdocsys : 2
%tbish+docsys : 3
%twdoc : 4
%tshareware : 5
%tcmp : 6
%tZur Diskette : a
%tGesetztes loschen: L
%tBeenden : Q
%t : %c"
do
read opt rest
case "$opt" in
1) bishx=1 ztxt=1 doku=1 demo=1 docf=1 LBL=bish-Shell ;;
2) ztxt=1 docf=1 manf=1 dsysx=1 LBL=bish-docsys ;;
3) bishx=1 ztxt=1 doku=1 demo=1 docf=1
manf=1 dsysx=1 LBL='bish!docsys' ;;
4) LBL=bish-manw ;;
5) bishS=1 ztxt=1 docf=1 LBL=bish-shw ;;
6) cmpx=1; LBL=bish-support;;
a) break ;;
L) unset bishx bishS ztxt doku demo docf manf dsysx
unset pgx cmpx calcx ddx hxx touchx timexx ;;
Q) exit ;;
*) continue ;;
esac
done
ptxt=1 manwx=1
[ -n "$docf$manf$dsysx$bishx$bishS" ] && {
DT=`dat`
dat 021195011500
[ -n "$dsysx" -o -n "$bishx" -o -n "$bishS" ] && MD a:\bin
[ -n "$docf" ] && MD a:\doc
[ -n "$manf" ] && MD a:\man
dat $DT
}
label a:"$LBL"
ifset ptxt && COPY \bish\vk\produkte.txt a:\/v
ifset manwx && COPY \wapi\bish\manw.exe a:\/v
ifset ztxt && COPY \bish\vk\zuerst.txt a:\/v
ifset ztxt && COPY \bish\vk\kurzdoku.txt a:\/v
ifset doku && COPY \bish\vk\doku.'*' a:\/v
ifset demo && COPY \bish\vk\demo.'*' a:\/v
ifset docf && xcopy \bish\doc a:\doc\/s/v
ifset manf && xcopy \bish\man a:\man\/s/v
ifset dsysx && { xcopy \bish\prog\man.exe a:\bin\/v
xcopy \bish\prog\pg.exe a:\bin\/v
xcopy \bish\prog\upat.exe a:\bin\/v ; }
ifset bishx && xcopy \bish\bish.exe a:\bin\/v
ifset bishS && xcopy \bish\bishS.exe a:\bin\bish.exe/v
ifset cmpx && { COPY \bish\prog\cmp.exe a:\/v
COPY \bish\doc\cmp.mnk a:\/v ; }
touch -c /021195011500 a:\?*.?*
for Dir in doc man bin
do
[ -d a:\$Dir ] && { LST=a:\$Dir\?*.?*
for D in $LST
do
touch -c /021195011500 $D
done
}
done
DIR a:\
read rest"?<Enter>"
done
set -f
ifile=texts256.h
[ -s "$1" ] && ifile="$1"
[ -s "$ifile" ] || exit 0
Npa=0000 Na=00000
T1() {
local k=0 n=000000 len=00
local tnam=.........................
local dnam=.........................
local tnam0=.........................
local tanam=.........................
local danam=.........................
echo text.h texte.h texte.c tsizes.txt
6> tall.tmp
5> tpa.tmp
4> text.h
3> texte.h
> texte.c
< $ifile
print -u3 'extern cfap_t const FAR T_All[];%n'
print -u6 '%n%ncfap_t const FAR T_All[]= {'
print '%n%n#%t%tinclude "def.h"'
print '#%t%tinclude "text.h"%n%n'
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *["0]' || continue
len=0
expr "$Z" :: ' 0%{1,}[ %t]*$' ||
expr "$Z" :Z '^[^"]%{1,} %(".*%)"[ %t]*$' && len=${#Z}
tanam="$danam" conv -TDT tanam; let ++Na
let len && print -ru4 "extern ta_t $tanam;"
expr "$tanam" :tnam '^%(T_%w%{1,}%)_%d%d%d_%l%l$'
let len || tanam=0
cmpv tnam tnam0 && { echo " $tanam,"; let n+=len; continue; }
tnam0="$tnam"
print -ru3 "extern tpa_t $tnam;"
print -ru6 " $tnam,"
[ k -eq 1 ] && { echo " 0%n};%n"; print -u5 "$n $dnam"; n=0; }
dnam="$tnam" conv -TTD dnam
echo "tpa_t $tnam= {"; let ++Npa
echo " $tanam,"; let n+=len
k=1
done
[ k -eq 1 ] && { echo ' 0%n};%n'; print -u5 "$n $dnam"; n=0; }
[ k -eq 1 ] && { print -u6 ' 0%n};%n'; }
><<<<<<
cat tall.tmp >> texte.c
return 0
}
T1
echo PointerArrays=$Npa StringPointer=$Na
sortl -r -f1n,2r -otpa.tmp tpa.tmp
cat tpa.tmp > tsizes.txt
GetD() {
local k=1 size=000000 szmax=000000 sk=00000 sz=000000
local dnam=.................................
let "szmax=16#$2"
<> $1
while seek + 0 sk; read sz dnam
do
expr "$sz" :: '^-' && continue
let "sz>=64*1024" && print -u2 "$sz ! $dnam"
let "size+sz>=szmax && (size>0||szmax<64*1024)" && continue
let "size+=sz"
catv /- =$sk,1,0.
echo $dnam
k=0
done
><
return $k
}
WrFromDnam() {
[ $# -le 1 ] && return 1
echo $* $Dnam
local n64k=000000 sk64k=00000000 len=00
local tnam=.........................
local dnam=.........................
local dnam0=.........................
local tanam=.........................
local danam=.........................
> $1
shift
echo '%n%n#%t%tinclude "def.h"'
echo '#%t%tinclude "texts.h"%n%n'
< $ifile
[ SK64k -gt 0 ] && { seek $SK64k 0; dnam0=$Dnam0 SK64k=0; }
while seek + 0 sk64k; readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *"' || continue
expr "$danam" :dnam '^%(D_%w%{1,}%)_%d%d%d_%l%l$'
expr " $* $Dnam " :: "[ %t]${dnam}[ %t]" || continue
tanam="$danam" tnam="$dnam" conv -TDT tanam tnam
len=0
expr "$Z" :Z '^[^"]%{1,} %(".*%)"[ %t]*$' && len=${#Z}
let "n64k+=len" 'n64k>=64*1024' &&
SK64k=$sk64k Dnam0=$dnam0 Dnam=$dnam break
cmpv dnam0 dnam || dnam0=$dnam echo
echo "ta_t $tanam= $danam;"
done
><<
[ SK64k -gt 0 ] && return 64
Dnam=
return 0
}
Dnam=.........................
Dnam0=.........................
SK64k=00000000
Dnam=
local HS=..... b=0 n=000 Cnam=...............
for HS in $*
do
let ++n
Cnam=t${n}h$HS.c
echo $Cnam -----------------------
[ b -eq 0 ] && { WrFromDnam $Cnam $( GetD tpa.tmp $HS ) ; b=$?; }
[ b -eq 2 ] && { WrFromDnam $Cnam ' ' ; b=$?; }
[ b -gt 2 ] && b=2
[ b -eq 1 ] && echo remove $Cnam ...
[ b -eq 1 ] && [ -e $Cnam ] && remove $Cnam
done
remove -s tpa.tmp tall.tmp
:
set -f
ifile=texts256.h
[ -s "$1" ] && ifile="$1"
[ -s "$ifile" ] || exit 0
NLANG=7 Npa=0000 Na=00000
T1() {
local k=0 n=000000 len=00
local tnam=.........................
local dnam=.........................
local tnam0=.........................
local tanam=.........................
local danam=.........................
echo text.h texte.h texte.c tsizes.txt
6> tall.tmp
5> tpa.tmp
4> text.h
3> texte.h
> texte.c
< $ifile
print -u3 'extern cfap_t const FAR T_All[];%n'
print -u6 '%n%ncfap_t const FAR T_All[]= {'
print '%n%n#%t%tinclude "def.h"'
print '#%t%tinclude "text.h"%n%n'
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *["0]' || continue
len=0
expr "$Z" :: ' 0%{1,}[ %t]*$' ||
expr "$Z" :Z '^[^"]%{1,} %(".*%)"[ %t]*$' && len=${#Z}
tanam="$danam" conv -TDT tanam; let ++Na
let len && print -ru4 "extern ta_t $tanam;"
expr "$tanam" :tnam '^%(T_%w%{1,}%)_%d%d%d_%l%l$'
let len || tanam=0
cmpv tnam tnam0 && { echo " $tanam,"; let n+=len; continue; }
tnam0="$tnam"
print -ru3 "extern tpa_t $tnam;"
print -ru6 " $tnam,"
[ k -eq 1 ] && { echo " 0%n};%n"; print -u5 "$n $dnam"; n=0; }
dnam="$tnam" conv -TTD dnam
echo "tpa_t $tnam= {"; let ++Npa
echo " $tanam,"; let n+=len
k=1
done
[ k -eq 1 ] && { echo ' 0%n};%n'; print -u5 "$n $dnam"; n=0; }
[ k -eq 1 ] && { print -u6 ' 0%n};%n'; }
><<<<<<
cat tall.tmp >> texte.c
return 0
}
T1
echo PointerArrays=$Npa StringPointer=$Na
sortl -r -f1n,2r -otpa.tmp tpa.tmp
cat tpa.tmp > tsizes.txt
GetD() {
local k=1 size=000000 szmax=000000 sk=00000 sz=000000
local dnam=.................................
let "szmax=16#$2"
<> $1
while seek + 0 sk; read sz dnam
do
expr "$sz" :: '^-' && continue
let "sz>=64*1024" && print -u2 "$sz ! $dnam"
let "size+sz>=szmax && (size>0||szmax<64*1024)" && continue
let "size+=sz"
catv /- =$sk,1,0.
echo $dnam
k=0
done
><
return $k
}
WrFromDnam() {
[ $# -le 1 ] && return 1
echo $* $Dnam
local n64k=000000 sk64k=00000000 len=00
local tnam=.........................
local dnam=.........................
local dnam0=.........................
local tanam=.........................
local danam=.........................
> $1
shift
echo '%n%n#%t%tinclude "def.h"'
echo '#%t%tinclude "texts.h"%n%n'
< $ifile
[ SK64k -gt 0 ] && { seek $SK64k 0; dnam0=$Dnam0 SK64k=0; }
while seek + 0 sk64k; readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *"' || continue
expr "$danam" :dnam '^%(D_%w%{1,}%)_%d%d%d_%l%l$'
expr " $* $Dnam " :: "[ %t]${dnam}[ %t]" || continue
tanam="$danam" tnam="$dnam" conv -TDT tanam tnam
len=0
expr "$Z" :Z '^[^"]%{1,} %(".*%)"[ %t]*$' && len=${#Z}
let "n64k+=len" 'n64k>=64*1024' &&
SK64k=$sk64k Dnam0=$dnam0 Dnam=$dnam break
cmpv dnam0 dnam || dnam0=$dnam echo
echo "ta_t $tanam= $danam;"
done
><<
[ SK64k -gt 0 ] && return 64
Dnam=
return 0
}
Dnam=.........................
Dnam0=.........................
SK64k=00000000
Dnam=
local HS=..... b=0 n=000 Cnam=...............
for HS in 8000 10000 10000 10000 4000 4000 4000
do
let ++n
Cnam=t${n}h$HS.c
echo $Cnam -----------------------
[ b -eq 0 ] && { WrFromDnam $Cnam $( GetD tpa.tmp $HS ) ; b=$?; }
[ b -eq 2 ] && { WrFromDnam $Cnam ' ' ; b=$?; }
[ b -gt 2 ] && b=2
[ b -eq 1 ] && echo remove $Cnam ...
[ b -eq 1 ] && [ -e $Cnam ] && remove $Cnam
done
remove -s tpa.tmp tall.tmp
:
set -f
ifile=texts256.h
[ -s "$1" ] && ifile="$1"
[ -s "$ifile" ] || exit 0
NLANG=5 Npa=0000 Na=00000
T1() {
local k=0 n=000000 len=00
local tnam=.........................
local dnam=.........................
local tnam0=.........................
local tanam=.........................
local danam=.........................
echo text.h texte.h texte.c tsizes.txt
5> tpa.tmp
4> text.h
3> texte.h
> texte.c
< $ifile
print '%n%n#%t%tinclude "def.h"'
print '#%t%tinclude "text.h"%n%n'
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *"' || continue
expr "$Z" :Z '^[^"]%{1,} %(".*%)"[ %t]*$'; len=${#Z}
tanam="$danam" conv -TDT tanam; let ++Na
print -ru4 "extern ta_t $tanam;"
expr "$tanam" :tnam '^%(T_%w%{1,}%)_%d%d%d_%l%l$'
cmpv tnam tnam0 && { echo " $tanam,"; let n+=len; continue; }
tnam0="$tnam"
print -ru3 "extern tpa_t $tnam;"
[ k -eq 1 ] && { echo " 0%n};%n"; print -u5 "$n $dnam"; n=0; }
dnam="$tnam" conv -TTD dnam
echo "tpa_t $tnam= {"; let ++Npa
echo " $tanam,"; let n+=len
k=1
done
[ k -eq 1 ] && { echo " 0%n};%n"; print -u5 "$n $dnam"; n=0; }
><<<<<
return 0
}
T1
echo PointerArrays=$Npa StringPointer=$Na
sortl -r -f1n,2r -otpa.tmp tpa.tmp
cat tpa.tmp > tsizes.txt
GetD() {
local k=1 size=000000 szmax=000000 sk=00000 sz=000000
local dnam=.................................
let "szmax=16#$2"
<> $1
while seek + 0 sk; read sz dnam
do
expr "$sz" :: '^-' && continue
let "sz>=64*1024" && print -u2 "$sz ! $dnam"
let "size+sz>=szmax && (size>0||szmax<64*1024)" && continue
let "size+=sz"
catv /- =$sk,1,0.
echo $dnam
k=0
done
><
return $k
}
WrFromDnam() {
[ $# -le 1 ] && return 1
echo $*
local tnam=.........................
local dnam=.........................
local dnam0=.........................
local tanam=.........................
local danam=.........................
> $1
shift
echo '%n%n#%t%tinclude "def.h"'
echo '#%t%tinclude "texts.h"%n%n'
< $ifile
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *"' || continue
expr "$danam" :dnam '^%(D_%w%{1,}%)_%d%d%d_%l%l$'
expr " $* " :: "[ %t]${dnam}[ %t]" || continue
tanam="$danam" tnam="$dnam" conv -TDT tanam tnam
cmpv dnam0 dnam || dnam0=$dnam echo
echo "ta_t $tanam= $danam;"
done
><<
return 0
}
local HS=..... b=0 n=000 Cnam=...............
for HS in 4000 10000 10000 10000 10000
do
let ++n
Cnam=t${n}h$HS.c
echo $Cnam -----------------------
[ b -eq 0 ] && WrFromDnam $Cnam $( GetD tpa.tmp $HS ) || b=1
[ b -eq 1 ] && echo remove $Cnam ...
[ b -eq 1 ] && [ -e $Cnam ] && remove $Cnam
done
remove tpa.tmp
:
set -f
ifile=./base/txtbase.h
[ -s "$1" ] && ifile="$1"
[ -s "$ifile" ] || exit 0
Npa=0000 Na=000000 IDmax=000000 Nid=000000 Nchar=0000000
SC='/* Made by script tpa.bish (H.Schellong) */'
set Z:.250
T1() {
local k=0 nl=0 id=000000
local danam:.30 tanam:.30 tnam:.20 tnam0:.20
echo texte.c texte.h
6> tall.tmp
3> texte.h
> texte.c
print -u6 "%n$SC%n"
print -u3 "%n$SC%n"
print "%n$SC%n"
< $ifile
print -u6 '%n%ntsp_t const T_All[]= {'
print -u3 'extern tsp_t const T_All[];%n'
print '%n%n#%t%tinclude "def.h"'
print '#%t%tinclude "texts.h"%n%n'
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *["0-9]' || continue
if expr "$Z" :id ' D_%w%{1,}_%d%d%d_id *%(%d%{1,6}%)'
then let ++Nid
else id=0 expr "$Z" :Z ' %(".*%)"[ %t]*$' && let "Nchar+=${#Z}"
fi
[ id -gt IDmax -a id -lt 9999 ] && IDmax=$id
tanam="$danam" conv -TDT tanam
expr "$tanam" :tnam '^%(T_%w%{1,}%)_%d%d%d_%l%l$'
cmpv tnam tnam0 && { let ++nl
case "$nl" in
1) echo " { $danam, {";;
2|3) echo " $danam,";;
4) nl=0 let Na+=3; echo " $danam,"
echo " 0 } },";;
esac
continue
}
tnam0="$tnam"
print -ru3 "extern tpa_t $tnam;"
print -ru6 " $tnam,"
[ k -eq 1 ] && echo ' { 0, { 0,0,0,0 } }%n};%n'
echo "tpa_t $tnam= {"; let ++Npa
echo " { $danam, {"; nl=1
k=1
done
[ k -eq 1 ] && echo ' { 0, { 0,0,0,0 } }%n};%n'; %
print -u6 ' 0%n};%n'
><<<<
cat tall.tmp >> texte.c
return 0
}
T1
echo PointerArrays=$Npa StringPointer=$Na Zeichen=$Nchar
echo IDs=$Nid MaxID=$IDmax
remove -s tall.tmp
:
cd /home/bish
mkdir /home2/merge/fat
mkdir /home2/merge/fat/bish
mkdir /home2/merge/fat/bish/cmd
mkdir /home2/merge/fat/bish/mod
copy -mv cmd/beck.cfg cmd/beck.bat /home2/merge/fat/bish/cmd
copy -mv bish.c /home2/merge/fat/bish
copy -rmv mod /home2/merge/fat/bish/mod
chown -R helmut /home2/merge/fat
chgrp -R other /home2/merge/fat
hr===================================================
from=0
< $1
while readl zeile
do
expr "$zeile" :: '^From - ' && {
[ from -gt 1 ] && cat from_tmp >> from.txt &&
catv hr /%n >> from.txt
: > from_tmp
from=1
}
[ from -gt 0 ] && {
expr "$zeile" :: '^[!-~]%{60,}$' ||
catv zeile /%n >> from_tmp
expr "$zeile" :zeile ' %(filename=..*%)$' &&
expr "$zeile" =:: '%.gif"*$' ||
expr "$zeile" =:: '%.jpg"*$' ||
expr "$zeile" =:: '%.jpeg"*$' ||
expr "$zeile" =:: '%.htm"*$' ||
expr "$zeile" =:: '%.html"*$' ||
expr "$zeile" =:: '%.zip"*$' ||
expr "$zeile" =:: '%.itr"*$' ||
expr "$zeile" =:: '%.00"*$' ||
from=2 catv zeile /%n >> from_fn
}
done
><
[ from -gt 1 ] && cat from_tmp >> from.txt &&
catv hr /%n >> from.txt
cat from.txt | { catv hr /%n > from.txt
cat from_fn >> from.txt
catv hr /%n >> from.txt
cat >> from.txt
}
remove from_tmp from_fn
set -f
ifile=txtbase.h
[ $# -ge 1 ] && ifile=$1
set Zen:.100
set Zde:.100
set Zsw:.100
set Zit:.100
set Zru:.100
set Zhu:.100
s=0
dnanu=.........................
dnanu0=.........................
set text:.50
set text_en:.50
set langs:32.25
langs=
AddLangs() {
[ s -eq 0 ] && return 1
ifset langs || return 2
ifset text_en && text="$text_en"
ifset text || return 3
local l=ll
for l in en de sv es
do
expr " $langs " :: " $l " && { catv Z$l /%n; continue; }
catv '/#define ' dnanu0 l text /%n
done
s=0 langs= text=? text_en=?
return 0
}
while readl Z
do
expr "$Z" :danam ' %(D_%w%{1,}_%d%d%d_%l%l%) *["0]' || {
[ s -eq 1 ] && AddLangs
catv Z /%n
continue
}
expr "$Z" :text '%( *"[^"]*"%) *$' || text=0
expr "$danam" :dnanu '^%(D_%w%{1,}_%d%d%d_%)%l%l$'
expr "$danam" :lang '^D_%w%{1,}_%d%d%d_%(%l%l%)$'
catv Z =Z$lang:
[ $lang == en ] && text_en="$text"
[ s -eq 0 ] && dnanu0=$dnanu
cmpv dnanu dnanu0 || { AddLangs; dnanu0=$dnanu; }
s=1 langs="$langs$lang "
done
:
if [ "$(-ver s)" == unix ]
then MORE='gvim -fnR -'
LESSCHARSET=iso8859; export LESSCHARSET
else MORE='more'
fi
set TxtB:.50 cmd:.10 rest:.30
set Z:.200
Lang=de Langs='en de sv'
if [ -s base/txtbase.h ]
then TxtB=./base/txtbase.h
elif [ -s txtbase.h ]
then TxtB=./txtbase.h
else TxtB='???'
fi
Check() {
local id=000000 nl=000000 nid=00000 ntxt=000000 nchar=0000 idmax=00000
local z:.80 nam:.40 nam0:.40 len0=016 len=016
while readl Z
do
let ++nl
expr "$Z" :len0 '^//|%(%d%{1,}%)|' && { len=$len0; continue; }
expr "$Z" :: '^[%t ]*$' && { len=$len0; continue; }
expr "$Z" :len '^//%(%d%{1,}%)' && continue
expr "$Z" :: 'D_%w%{1,}_%d%d%d_%l%l' || continue
expr "$Z" :nam '^#define D_%(%w%{2,24}%)_%d%d%d_id %d%{4}$' &|
expr "$Z" :: '^#define D_%w%{2,24}_%d%d%d_%l%l ".*"$' || {
catv ".$nl »" Z .« '/defektes Format%j'; continue
}
if expr "$Z" :id '_id %(%d%{4}%)$'
then let ++nid
[ id -gt idmax -a id -lt 9999 ] && idmax=$id
elif expr "$Z" :z ' "%(.*%)"$'
then let nchar=${#z} ++ntxt
[ nchar -gt len ] && catv ".$nl »" z .« /len=$nchar%j
else catv ".$nl »" Z .« '/Text fehlt%j'
fi
done
return 0
}
IDCheck() {
local id=000000 id0=000000 z0:.200 fst=0
grep -n '^#define D_%w%{2,24}_%d%d%d_id %d%{4}$' |
sortl -fn3 | {
while readl Z
do
expr "$Z" :id '_id %(%d%{4}%)$'
if [ id -eq id0 ]
then [ fst -eq 0 ] && { fst=1; catv z0 /%j; }
catv Z /%j
else fst=0
fi
id0=$id z0="$Z"
done
}
return 0
}
Print() {
local id=000000 z:.40
while readl Z
do
expr "$Z" :id '^#define D_%w%{2,24}_%d%d%d_id %(%d%{4}%)$' && continue
expr "$Z" :z '^#define D_%w%{2,24}_%d%d%d_'"$Lang"' %(".*"%)$' && {
catv id /%t z /%j
}
done
return 0
}
while echo "
%tTextbasis : f datei [$TxtB]
%tSprachen : $Langs ..
%tSprache $Lang: en de sv ..
%tKorrektheit: c
%tID Prüfung : i
%tAusgabe : a
%tBeenden : E
%t _%b%c"
do
read cmd rest
case "$cmd" in
f) [ -s "$rest" ] || { echo "%a%c"; continue; }
TxtB="$rest";;
[a-z][a-z])
ifset rest || Lang=$cmd
ifset rest && Langs="$cmd $rest";;
c) Check <"$TxtB" | $MORE;;
i) IDCheck <"$TxtB" | $MORE;;
a) Print <"$TxtB" | $MORE;;
E) break;;
*) echo "%a%c"; continue;;
esac
done
:
[ $# -eq 0 ] && exit 0
Zeile() {
local a:17.1 b:19.1 comment:.200
local n:.100
if expr "$Z" :comment '[^\]%(%%.*%)$'
then expr "$Z" :Z '%([^\]%)%%.*$' '%1'
else comment=
fi
expr "$N" :n '^%(.%)%(.*%)$' '%1%L%2'
expr "$n" :n ' %([a-z]%)' + ' %U%1'
expr "$Z" :Z "%<$N%>" + "$a&$b"
expr "$Z" :Z "\index{$a$N$b" += "\index{$N"
expr "$Z" :Z "\textsc{$a$N$b" += "\textsc{$N"
expr "$Z" :Z "\verb%(.%)$a$N$b" + "\verb%1$N"
expr "$Z" :Z "\label{%([^}]*%)$a$N$b" + "\label{%1$N"
expr "$Z" :Z "\pageref{%([^}]*%)$a$N$b" + "\pageref{%1$N"
expr "$Z" :Z "\ref{%([^}]*%)$a$N$b" + "\ref{%1$N"
expr "$Z" :Z "\textbf{%([^}]*%)$a$N$b" + "\textbf{%1$N"
expr "$Z" :Z "$a$N$b" += "\textsc{$n}"
ifset comment && catv comment =:,,Z:
return 0
}
UseNot() {
ifset Z || { catv /%n; return 0; }
expr "$Z" :: '^[ %t]%{0,}%%' &|
expr "$Z" :: '\[a-z]*section[{[]' &|
expr "$Z" :: '\[a-z]*section%*[{[]' &|
expr "$Z" :: '\chapter[{[]' && {
catv Z /%n; return 0
}
return 1
}
set Z:.300
set Zcmp:.300
set F:.50
set N:.50
V=v
for F in kap/*.tex
do
[ -s "$F" ] || continue
[ $# -eq 1 ] && grep -qm "%<$1%>" "$F" || continue
cat "$F" | {
> "$F"
while readl Z Zcmp
do
if [ $V == V ]
then
expr "$Z" :: '\end{verbatim}' && V=v
catv Z /%n; continue
else
UseNot && continue
expr "$Z" :: '\begin{verbatim}' || goend
V=V catv Z /%n; continue
fi
for N in "$@"
do
[ ${#N} -ge 2 ] || continue
expr "$Z" :: "%<$N%>" || continue
Zeile
done
cmpv Z Zcmp || print -u2 "$F:$Zcmp%n$F:$Z%n"
catv Z /%n
done
><
}
done
exit 0
TEXT=uni
ADR=unis
A=mba E=mbe
nlt=`wc -l $TEXT`
nla=`wc -l $ADR`
((na=nla/5))
line -1-2 $TEXT > $A
line -7-$nlt $TEXT > $E
az=1
for dnu to $na repeat
do
cat $A > $TEXT$dnu
for tz from 3 to 6 repeat
do
tzeile="`line -$tz $TEXT`"
azeile="`line -$az $ADR`"
ltz=`expr "$tzeile" : '^.*$'`
laz=`expr "$azeile" : '^.*$'`
tzeile="`echo "$tzeile%c" | cut -c$((laz+1))-$ltz`"
conv -d"
" azeile tzeile
echo '$ '"$azeile $tzeile" >> $TEXT$dnu
((az=az+1))
done
((az=az+1))
cat $E >> $TEXT$dnu
done
rm $A $E
set -f
set Z:.300 FILE:.200 PrintADDR:.50
R=0 C='%e[7m%e[1m' D='%e[0m%e[1m'
expr $(ver s) :: '^dos' || C='' D=''
Unique() {
local z:012 r=0
while readl Z
do
[ Z -eq z ] && { echo "$C$FILE: ADDR $Z not unique!$D"; r=1; }
z=$Z
done
return $r
}
PrintADDR_base() {
local adr=0000000000
while readl Z
do
expr "$Z" :: '^%$' && break
expr "$Z" :adr '^[@x-]%d%{8,10} %d %(%d%{6}%) ' || continue
echo $adr
done
return 0
}
Check() {
$PrintADDR | sortl -fn1 | Unique || return 1
return 0
}
local typ:.10
for FILE in $*
do
expr "$FILE" :: '%<cfgbase.txt%>' && typ=base
< $FILE
case "$typ" in
base) PrintADDR=PrintADDR_$typ ;;
*) ><; exit 2;;
esac
if Check
then echo "$C$FILE: all addresses are unique.$D"
else R=1
fi
><
done
return $R
set -f
set Z:.300 FILE:.200 PrintID:.50
R=0 C='%e[7m%e[1m' D='%e[0m%e[1m'
expr $(ver s) :: '^dos' || C='' D=''
Unique() {
local z:012 r=0
while readl Z
do
[ Z -eq z ] && { echo "$C$FILE: ID $Z not unique!$D"; r=1; }
z=$Z
done
return $r
}
PrintID_base() {
local id=0000000000
while readl Z
do
expr "$Z" :: '^%$' && break
expr "$Z" :id '^@%(%d%{8,10}%) %d' || continue
echo $id
done
return 0
}
PrintID_text() {
local id=0000000000
while readl Z
do
expr "$Z" :id ' D_%w%{1,}_%d%d%d_id *%(%d%{1,6}%)' || continue
echo $id
done
return 0
}
Check() {
$PrintID | sortl -fn1 | Unique || return 1
return 0
}
local typ:.10
for FILE in $*
do
expr "$FILE" :: '%<cfgbase.txt%>' && typ=base
expr "$FILE" :: '%<mesbase.txt%>' && typ=base
expr "$FILE" :: '%<txtbase.h%>' && typ=text
< $FILE
case "$typ" in
base) PrintID=PrintID_$typ ;;
text) PrintID=PrintID_$typ ;;
*) ><; exit 2;;
esac
if Check
then echo "$C$FILE: all identifiers are unique.$D"
else R=1
fi
><
done
return $R
set -f
set Z:.300 FILE:.200 PrintID:.50
R=0
Unique() {
local z:012 r=0
while readl Z
do
[ Z -eq z ] && { echo "$FILE: ID $Z not unique!"; r=1; }
z=$Z
done
return $r
}
PrintID_base() {
local id=0000000000
while readl Z
do
expr "$Z" :: '^%$' && break
expr "$Z" :id '^@%(%d%{8,10}%) %d' || continue
echo $id
done
return 0
}
PrintID_text() {
local id=0000000000
while readl Z
do
expr "$Z" :id ' D_%w%{1,}_%d%d%d_id *%(%d%{1,6}%)' || continue
echo $id
done
return 0
}
Check() {
$PrintID | sortl -fn1 | Unique || return 1
return 0
}
local typ:.10
for FILE in $*
do
expr "$FILE" :: '%<cfgbase.txt%>' && typ=base
expr "$FILE" :: '%<mesbase.txt%>' && typ=base
expr "$FILE" :: '%<txtbase.h%>' && typ=text
< $FILE
case "$typ" in
base) PrintID=PrintID_$typ ;;
text) PrintID=PrintID_$typ ;;
*) ><; exit 2;;
esac
if Check
then echo $FILE: all identifiers are unique.
else R=1
fi
><
done
return $R
set -f
ex=000000
LineA=000000
LineB=000000
DIRm='../mu2000'
DIRu='../upc3'
HTM="../share/htm/mu.htm"
BASE="
$DIRm/cfgbase.txt
$DIRm/mesbase.txt
$DIRu/cfgbase.txt
$DIRu/mesbase.txt
"
BASEm="$DIRm/cfgbase.txt $DIRm/mesbase.txt"
BASEu="$DIRu/cfgbase.txt $DIRu/mesbase.txt"
set Z:.16000
ToHtm() {
while readl Z
do
expr "$Z" :Z '&' += '&'
expr "$Z" :Z '<' += '<'
expr "$Z" :Z '>' += '>'
expr "$Z" :Z '"' += '"'
catv Z /%n
done
return 0
}
ToHtmTable() {
local z=0 F:.50 W:.100
for F in $*
do
cat $F | {
>$F
echo '<table cellpadding="0" cellspacing="0"><tbody>'
while readl Z
do
z=0 print -n '<tr>'
for W in $Z
do
conv '-t` ' W; let ++z
case "$z" in
1) catv '.<td align="right"><tt><b>' W '.</b></tt></td>';;
2) catv '.<td><tt> ' W '.</tt></td>';;
*) catv '.<td><tt> ' W '.</tt></td>';;
esac
done
print '</tr>'
done
echo '</tbody></table>'
><
}
done
return 0
}
GrepLines() {
local z=02 s=000000 e=000000
grep -nh "$1" "$2" | {
readl Z && expr "$Z" :s '%([0-9]%{1,6}%):' && z=1
readl Z && expr "$Z" :e '%([0-9]%{1,6}%):' && z=0
readl Z && z=-1
}
[ z -ne 0 ] && return $z
LineA=$s
LineB=$e
return 0
}
Grep() {
GrepLines "<!--{$1}-->" "$2" || return
local s=$LineA e=$LineB
let ++s --e
[ e -gt s ] && line -$s-$e "$2"
return 0
}
FillIn() {
local sk=0000000000
GrepLines "<!--{$1}-->" "$2" || return
cat "$2" | {
seek + 0 sk
>"$2"
line -1-$LineA
cat "$3"
seek $sk 0
line -$LineB-
><
}
return 0
}
FillInMulti() {
local ofile="$1" patt:.20 ifile:.80
shift
for 2 patt ifile in $*
do
FillIn $patt $ofile $ifile
echo "$patt: exit=$?"
done
return 0
}
Gvim() {
local if=- of=__gvim
>__devnull
gvim -n -f +'set nonu' +'set syntax=c' +TOhtml +"w! $of" +'q!' +'q!' $if
><
<__gvim
while readl Z
do expr "$Z" :: '^ *<body%>' && break; done
while readl Z
do expr "$Z" :: '^ *</body%>' && break; catv Z /%n; done
><
remove -s __gvim __devnull
return 0
}
PreStyle() {
echo "<pre style=%"background-color:#$1; padding:10px;%">"
return 0
}
ParBn() {
for F in $*
do
bish geta.bish $F '^[#1-9][0-9]*$' 11 14 20
done
return 0
}
bish ../bish/neuvb.bish $DIRm/ver.txt
copy __neu __nvbm
bish ../bish/neuvb.bish $DIRu/ver.txt
copy __neu __nvbu
FillInMulti $HTM NVBm __nvbm NVBu __nvbu
set +f
remove -s __[a-z][a-z]*
:
[ `ver n` -lt 305 ] && { echo "Shell-Version < 305!"; exit 0; }
set -f
set +S
Script="$0"
echo "Script: '$Script'"
[ -w "$Script" ] || {
print -u2 "Script hat Schreibschutz: '$Script'"; exit 1; }
iv=___
Cpos=000000000000
inp="$( prints s260-)"
rest="$( prints s260-)"
url="$( prints s260-)"
Url="$( prints s260-)"
File="$( prints s260-)"
Path="$( prints s260-)"
Dir="$( prints s260-)"
Tag="$( prints s300-)"
Zeile="$( prints s1500-)"
echo Prüfung Script-Inhalt...
< $Script
inp=0
while seek + 0 Cpos; readl Zeile
do expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && inp=1 && break; done
><
echo "Konfigurations-Position=$Cpos"
let inp==0 && {
print -u2 "Schreibe #@-Einträge..."
echo "%n%n%
#@dirs %
#@erw htm html%
#@tz %
#@edit %n" >> $Script
< $Script
while seek + 0 Cpos; readl Zeile
do expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && break; done
><
echo "Konfigurations-Position=$Cpos"
}
< $Script
seek $Cpos 0
while readl Zeile
do
ifset Zeile || continue
expr "$Zeile" :: '^#@[a-zA-Z]%{1,8%} ' && continue
expr "$Zeile" :: '^[ %t]*#' && continue
expr "$Zeile" :: '[^ %t%z]' || continue
><; print -u2 "Script-Inhalt fehlerhaft!: '$Zeile'"; exit 1
done
><
[ `ver w` == full ] && {
trap 'for inp in Plist PUlist
do ifset $inp && [ -f "${{inp}" ] &&
remove "${{inp}" && $inp=""
done
' 0 1 2
}
mktemp Plist
mktemp PUlist
echo "TempFiles: $Plist, $PUlist"
expr "$Plist" :: '[ %t%r%n%z%%]' && {
print -ru2 "Verzeichnisteil wird nicht akzeptiert!: '$Plist'"
exit 1
}
Fmain() {
case "$1" in $(shift)
CorrPP)
local iv=$1
rest="${{iv}"
expr "$rest" :: '%./' || expr "$rest" :: '/%.' || return 0
while expr "$rest" :rest '/%./' '/'; do done
expr "$rest" :rest '^%./' '.'
expr "$rest" :rest '%(.%)/%.$' '%1'
expr "$rest" :rest '^/%.$' '/'
expr "$rest" :rest '^%.%./' '*/'
expr "$rest" :rest '/%.%.$' '/*'
while expr "$rest" :rest '/%.%./' '/*/'; do done
while expr "$rest" :rest '/[^/*]%{1,%}/%*/' '/'; do done
expr "$rest" :rest '%(.%)/[^/*]%{1,%}/%*$' '%1'
expr "$rest" :rest '^/[^/*]%{1,%}/%*$' '/'
$iv="$rest"
expr "$rest" :: '%*' && return 1
return 0
;;
CorrPP2)
local iv=$1
rest="${{iv}"
expr "$rest" :: '%./' || expr "$rest" :: '/%.' || return 0
while expr "$rest" :rest '/%./' '/'; do done
expr "$rest" :rest '^%./' '.'
expr "$rest" :rest '%(.%)/%.$' '%1'
expr "$rest" :rest '^/%.$' '/'
expr "$rest" :rest '^%.%./' '*/'
expr "$rest" :rest '/%.%.$' '/*'
while expr "$rest" :rest '/%.%./' '/*/'; do done
while expr "$rest" :rest '/[^/*]%{1,%}/%*/' '/'; do done
expr "$rest" :rest '%(.%)/[^/*]%{1,%}/%*$' '%1'
expr "$rest" :rest '^/[^/*]%{1,%}/%*$' '/'
while expr "$rest" :rest '^%*/%(.%)' '%1'; do done
$iv="$rest"
expr "$rest" :: '%*' && return 1
return 0
;;
UrlUcLc)
local o="$1" iv=$2 r
rest="${{iv}"
Tag= inp=
expr "$rest" :Tag '%([#?].*%)$'
expr "$rest" :rest '^%([^#?]%{1,%}%)' || return
while expr "$rest" :r '%([^/]%{1,%}%)$'
do
expr "$rest" :rest '^%(.*/%)[^/]%{1,%}$' || rest=
expr "$o" :: 'l' && conv -l r
expr "$o" :: 'u' && expr "$o" :: '[x1]' || conv -u r
expr "$o" :: 'u1' && expr "$o" :: 'x' ||
expr "$r" :r '^[a-z]' '%U&'
expr "$o" :: 'xu1' && expr "$r" :: '[^.]%.[^.]%{1,%}$' &&
expr "$r" :r '%([a-z]%)%(.*%.[^.]%{1,%}%)$' '%U%1%E%2'
expr "$o" :: 'xu1' && expr "$r" :: '[^.]%.[^.]%{1,%}$' ||
expr "$r" :r '[a-z]' '%U&'
expr "$rest" :rest '/$' '' && r="/$r"
inp="$r$inp"
expr "$o" :: 'd' || { inp="$rest$inp"; break; }
done
$iv="$inp$Tag"
return 0
;;
DatTim)
local mon=000 Mon='JanFebMärAprMaiJunJulAugSepOktNovDez' dt
systime -t dt
catv 4,2,dt =mon:
catv 6,2,dt /. $(([mon-1]*3)),3,Mon /. 0,4,dt "/, " %
8,2,dt /: 10,,dt
return 0
;;
Get)
local l=${#1} a="$1" b="$2"
$3=''
< $Script
seek $Cpos 0
while readl Zeile
do
expr "$Zeile" :: "^#@$a $b" || continue
catv $((l+3)),,Zeile =$3:
>< ; return 0
done
><
return 1
;;
Set)
local a="$1" f=0
catv $Cpos,,0 < $Script | {
fstat +s $Cpos $Script
while readl Zeile
do
expr "$Zeile" :: "^#@$a " ||
catv Zeile /%j >> $Script && continue
catv "/#@" a ". $2" /%j >> $Script
f=1
done
}
[ $f == 0 ] && catv "/#@" a ". $2" /%j >> $Script
return 0
;;
ChoiceP)
local iv=$2 n=0000 size=000000000000 zeile
while :
do
n=0
print -u2
< "$1"
while readl zeile
do
let ++n
expr "$zeile" :zeile 'P%*%([^*]%{1,%}%)%*P'
[ `ver s` != unix ] && conv '-t/\' zeile
fstat -sv size "$zeile"
prints s8s12s $n: $size " $zeile"
done
><
print -ru2 "${{iv}"
read "inp?Abbruch:a Welche Datei?[n]: "
ifset inp || continue
[ "$inp" == a ] && { remove "$1"; return 1; }
expr "$inp" :: '[^0-9]' && continue
let "inp<1||inp>n" && continue
$iv="$(- line -$inp "$1" )"
break
done
remove "$1"
return 0
;;
Edit)
local edo='+/^#@[a-zA-Z]' edf=$Script ed=/usr/bin/vi
if Fmain Get edit '.' File
then catv File /%n | read ed -
else [ `ver s` == unix ] && ed=vi
[ `ver s` != unix ] && ed=edit
fi
whence -pe "$ed" && return 1
expr "$ed" :: 'vim%{0,1%}$' || edo=
[ `ver s` != unix ] && expr "$ed" =:: 'vim$' || edo=
ifset File || File="$ed"
[ "$1" != i ] && {
echo "%n Nur am Dateiende die speziellen Zeilen ändern!%
%r Beschreibungen sind dort vorhanden."
read "-?<Enter> "
}
[ "$1" == i ] && { edo=
edf=url_tmpf.inf
[ -f $edf ] || return
}
echo "'$File $edo $edf'..."
eval "$File $edo $edf"
return 0
;;
Perr)
local s
[ $# -gt 1 ] && s=s && shift
print -ru2 "*** $1 ***"
ifset s && read "-?<Enter> "
return 0
;;
Help)
local n=00000 j=/%j z=...
3<&0
while :
do
echo ; prints sf-79
n=0 j=/%j z=
grep '^#%%H' $Script |
while readl Zeile
do
catv "/ " 4,,Zeile $j
let "++n%20==0" &&
echo "${z}Start:s Beenden:e Weiter:<Enter> %c"
let "n>=20" && { j= z=%n
read -u3 inp
[ "$inp" == e ] && break 2
[ "$inp" == s ] && continue 2
}
done
prints sf-79
echo "Start:<Enter> Beenden:e (EOF) %c"
read -u3 inp
[ "$inp" == e ] && break
done
><
return 0
;;
*) return 1 ;;
esac
return 0
}
UcLc() {
[ $# -lt 2 ] && return
local pnt=00 o="$1" fd=f e=$(prints sf024-) erw="$(prints s60-)"
shift
pnt=
expr "$o" :: '[^ !adlxut0-9+-]' && return 1
expr "$o" :: '[lut]' || return
expr "$o" :: 'd' && fd=d
url=
expr "$o" :: 't' && {
systime url
expr "$o" :e 't%([+-]%{0,1%}[0-9]%{1,%}%)' && let "url+= $e*60"
}
[ `ver s` != unix ] && pnt=1
Fmain Get erw '.' inp; erw="$inp"
: $erw
[ $} -lt 1 ] && expr "$o" :: 'a' || return
expr "$o" :: 'a' && erw=
inp="$(-pwd)"
Tag="$inp/url_tmpf.inf"
ifset pnt && conv '-t/\' Tag
: > "$Tag"
for Dir in "$@"
do
expr "$Dir" :: '^[/\]' || {
Fmain Perr . "Falscher Verz.-Pfad: '$Dir'"
continue
}
ifset pnt && conv '-t/\' Dir
[ -d "$Dir" ] || {
Fmain Perr . "Verz. existiert nicht: '$Dir'"
continue
}
cd "$Dir" || continue
echo; print -r "Verzeichnis '$Dir'..."
list -${fd}R . |
while readl Zeile File
do
ifset pnt && conv '-t\/' File
for e in $erw
do
expr "$File" =:: "[^/]%.$e%$" || continue
e=')*(' ; break
done
[ "$e" != ')*(' ] && expr "$o" :: 'a' || continue
ifset url && fstat +m $url "$Zeile"
expr "$o" :: '[lu]' || continue
expr "$File" :Url '/%([^/]%{1,%}%)$' || continue
expr "$File" :Dir '^%(.*/%)[^/]%{1,%}$' || continue
expr "$o" :: 'l' && conv -l Url
expr "$o" :: 'u' && expr "$o" :: '[x1]' || conv -u Url
expr "$o" :: 'u1' && expr "$o" :: 'x' ||
expr "$Url" :Url '^[a-z]' '%U&'
expr "$o" :: 'xu1' && expr "$Url" :: '[^.]%.[^.]%{1,%}$' &&
expr "$Url" :Url '%([a-z]%)%(.*%.[^.]%{1,%}%)$' '%U%1%E%2'
expr "$o" :: 'xu1' && expr "$Url" :: '[^.]%.[^.]%{1,%}$' ||
expr "$Url" :Url '[a-z]' '%U&'
ifset pnt && conv '-t/\' File Dir Url
print -r "RENAME: $File --> $Dir$Url"
print -r "RENAME: $File --> $Dir$Url" >> "$Tag"
expr "$o" :: '!' && move "$File" "$Dir$Url"
done
done
cd "$inp"
return 0
}
ScanF() {
[ $# -lt 1 ] && return
local pnt=00 n=00000 e=$(prints sf024-) erw="$(prints s60-)"
pnt=
[ `ver s` != unix ] && pnt=1
Fmain Get erw '.' inp; erw="$inp"
: $erw
[ $} -lt 1 ] && return
: > $Plist
: > $PUlist
for Dir in "$@"
do
expr "$Dir" :: '^[/\]' || {
Fmain Perr . "Falscher Verz.-Pfad: '$Dir'"
continue
}
ifset pnt && conv '-t/\' Dir
[ -d "$Dir" ] || {
Fmain Perr . "Verz. existiert nicht: '$Dir'"
continue
}
echo; print -r "Verzeichnis '$Dir'..."
list -fR "$Dir" | sortl -d |
while readl File Zeile
do
ifset pnt && conv '-t\/' File
print -r "P*$File*P" >> $Plist
for e in $erw
do
expr "$File" =:: "[^/]%.$e%$" || continue
e=')*(' ; break
done
[ "$e" != ')*(' ] && continue
print -r "Datei '$Zeile'..."
n=0
3< "$Zeile"
while readl -u3 Zeile
do
let ++n
while expr "$Zeile" :Tag '%(<[a-zA-Z][^<>]%{8,%}>%)'
do
for e in HREF SRC BACKGROUND PROFILE CITE DATA %
CODE CODEBASE PLUGINURL PLUGINSPAGE %
DYNSRC ARCHIVE URL
do
while expr "$Tag" =:Url %
"[ %t]${e}"'[ %t]*=[ %t]*"%([^"][^"]*%)"'
do
expr "$Url" :: '^[#?/\]' ||
expr "$Url" :: '^[a-zA-Z][a-zA-Z0-9]%{1,16%}:' ||
print -r "$n: P*$File*P U*$Url*U" %
>> $PUlist && echo "%r%c" &&
prints s-79- " $n: '$Url'"
expr "$Tag" =:Tag %
"[ %t]${e}"'[ %t]*=[ %t]*"[^"][^"]*"' ''
done
done
expr "$Zeile" :Zeile '<[a-zA-Z][^<>]%{8,%}>' ''
done
done
><
echo
done
done
[ -s $PUlist -o -s $Plist ] && : > url_tmpf.inf
[ -s $PUlist ] && cat $PUlist >> url_tmpf.inf
[ -s $Plist ] && cat $Plist >> url_tmpf.inf
return 0
}
CkUrls() {
local ic=' ' o="$1" f=00000 n=000000
[ -s $PUlist -a -s $Plist ] || return
[ `ver s` != unix ] && ic=i
expr "$o" :: '[^=adlxu1 ]' && return 1
[ -s url_tmpf.inf ] && : > url_tmpf.inf
3< $PUlist
while readl -u3 Zeile
do
expr "$Zeile" :n '^%([0-9][0-9]*%)'
expr "$Zeile" :Url 'U%*%([^*]%{1,%}%)%*U'
expr "$Url" :url '^%([^#?]%{1,%}%)'
conv -F/ url
expr "$Zeile" :Path 'P%*%([^*]%{1,%}%)%*P'
expr "$Url" :: '^%^' &| expr "$Url" :: '%$$' &|
expr "$Url" :: '[*[\%]' && {
Fmain Perr "Falsche Zeichen: %"$Url%" in: ${Path}[$n]"
print -r "Falsche Zeichen: %"$Url%" in: ${Path}[$n]" %
>> url_tmpf.inf
continue
}
expr "$Path" :Dir '^%(.*%)/[^/]%{1,%}$'
Dir="$Dir/$url"
expr "$o" :: a || Fmain CorrPP Dir &&
grep -qFm$ic -e "P*$Dir*P" $Plist && continue
Fmain CorrPP2 url || {
Fmain Perr "Keine Datei zu: %"$Url%" in: ${Path}[$n]"
print -r "Keine Datei zu: %"$Url%" in: ${Path}[$n]" %
>> url_tmpf.inf
continue
}
f=0
until grep -qFm$ic -e "/$url*P" $Plist && f=1
do
expr "$url" :url '^[^/]%{1,%}/%(..*%)$' || break
done
let f || {
Fmain Perr "Keine Datei zu: %"$Url%" in: ${Path}[$n]"
print -r "Keine Datei zu: %"$Url%" in: ${Path}[$n]" %
>> url_tmpf.inf
continue
}
f=$( grep -cF$ic -e "/$url*P" $Plist )
let "f>1" && {
grep -F$ic -e "/$url*P" $Plist > url_tmpf.fnd
Dir="OLD:%"$Url%" NEW:%"${url}[#?...]%" IN: ${Path}[$n]"
Fmain ChoiceP url_tmpf.fnd Dir || break
}
let "f==1" && Dir="$(- grep -Fm$ic -e "/$url*P" $Plist )"
expr "$Dir" :File 'P%*%([^*]%{1,%}%)%*P'
[ "$ic" == i ] && conv '-t/\' File
expr "$Url" :Dir '#%(..*%)$' &&
grep -qmi -e '<A[ %t].*NAME[ %t]*=[ %t]*"'"$Dir"'"' %
"$File" || {
Fmain Perr "Kein Anker: %"$Dir%" in: $File"
print -r "Kein Anker: %"$Dir%" in: $File" %
>> url_tmpf.inf
}
[ "$ic" == i ] && conv '-t\/' File
cmpv Path File
catv $.,File =url:
conv '-t//' url
let "f=$.+1"
catv $f,,File =url:
catv $f,,Path =Dir:
while expr "$Dir" :Dir '^[^/]%{1,%}/' ''
do url="../$url"; done
expr "$Url" :Dir '%([#?].*%)$' && url="$url$Dir"
expr "$o" :: '=' && url="$Url"
expr "$o" :: '[lu]' && Fmain UrlUcLc "$o" url
catv ".FOR: $File" /%j %
".OLD: %"$Url%"" /%j %
".NEW: %"$url%"" /%j %
".IN : ${Path}[$n]" /%j%j >> url_tmpf.inf
done
><
return 0
}
WrUrls() {
[ -s url_tmpf.inf ] || return
grep -qm '^NEW: "' url_tmpf.inf || return
local n=000000 nf=000000 chl=000 e=00
File= Url= url=
cat url_tmpf.inf > $PUlist
: > url_tmpf.inf
expr "$1" :: '!' && print -r "<!undo>" > url_tmpf.inf
3< $PUlist
while readl -u3 Dir
do
ifset Dir || continue
expr "$Dir" :: '^[ONI][LDEWN ]%{2%}: ' || continue
expr "$Dir" :Url '^OLD: "%(..*%)"$' && continue
expr "$Dir" :url '^NEW: "%(..*%)"$' && continue
expr "$Dir" :Path '^IN : %(..*%)%[[0-9]%{1,%}]$' || continue
expr "$Dir" :n '%([0-9]%{1,%}%)]$'
ifset Url url || {
Fmain Perr . "Fehlschlag 'OLD: NEW': ${Path}[$n], in: *.inf"
ifset File && >< ; >< ; return 1
}
[ `ver s` != unix ] && conv '-t/\' Path
cmpv Path File || {
ifset File && {
let chl && expr "$Zeile" :Zeile '<%*>%*<>?"' += '"'
let chl && catv Zeile /%j >> $Plist
let chl && catv Zeile /%j >> url_tmpf.inf
while readl -u4 Zeile; do catv Zeile /%j >> $Plist; done
>< ; expr "$1" :: '!' && cat $Plist > "$File"
}
File="$Path" nf=0 chl=0
4< "$File" ; : > $Plist
}
let "nf>n" && {
Fmain Perr . "Zeilennum.-Fehlschlag in: ${File}[$n<$nf]"
ifset File && >< ; >< ; return 1
}
let "nf<n&&chl" && { chl=0
expr "$Zeile" :Zeile '<%*>%*<>?"' += '"'
catv Zeile /%j >> $Plist
catv Zeile /%j >> url_tmpf.inf
}
while let "nf<n" && readl -u4 Zeile
do
let "++nf>=n" && break
chl=0; catv Zeile /%j >> $Plist
done
let "nf!=n" && {
Fmain Perr . "Zeilennum.-Fehlschlag in: ${File}[$n!=$nf]"
ifset File && >< ; >< ; return 1
}
let !chl && catv n '/: ' File /%j Zeile /%j >> url_tmpf.inf
let ++chl ; e=0
print -r "${File}[$n]: $Url --> $url"
expr "$Url" :Url '%.' += '%.'
expr "$Zeile" :Zeile %
"%([a-zA-Z]%{3,%}[ %t]*=[ %t]*%)%"$Url%"" %
"%1%"!)#@<$n>{(}%"" || e=1
expr "$Zeile" :Zeile "%"!)#@<$n>{(}%"" = "%"$url<*>*<>?%"" || e=${e}2
let e && {
Fmain Perr . "Substitutions-Fehlschlag '$e' in: ${File}[$n]"
ifset File && >< ; >< ; return 1
}
Url= url=
done
ifset File && {
let chl && expr "$Zeile" :Zeile '<%*>%*<>?"' += '"'
let chl && catv Zeile /%j >> $Plist
let chl && catv Zeile /%j >> url_tmpf.inf
while readl -u4 Zeile; do catv Zeile /%j >> $Plist; done
>< ; expr "$1" :: '!' && cat $Plist > "$File"
}
><
return 0
}
Undo() {
[ -s url_tmpf.inf ] || return
local n=000000 a=000000 b=000000 nl=000000
< url_tmpf.inf
readl Zeile || { >< ; return 0; }
expr "$Zeile" :: '^<!undo>$' || { >< ; return 0; }
: > $PUlist
while readl Zeile
do
expr "$Zeile" :n '^%([0-9]%{1,%}%): .' || n=a
expr "$Zeile" :File '^[0-9]%{1,%}: %(..*%)$' || n=${n}b
readl Zeile || n=${n}c
readl || n=${n}d
expr "$n" :: '^[1-9]' || n=${n}e
expr "$n" :: '[^0-9]' && { ><
Fmain Perr . "Undo-Datei fehlerhaft: [$n]$File"
print -r "Undo-Datei fehlerhaft: [$n]$File" >> $PUlist
return 1
}
[ -s "$File" ] || { print -ru2 "Fehlt: $File"
print -r "Fehlt: $File" >> $PUlist; continue; }
nl=`wc -l "$File"`
let "nl<n" && { print -ru2 "Zuwenig Zeilen: $File"
print -r "Zuwenig Zeilen: $File" >> $PUlist; continue; }
print -r "UNDO: ${File}[$n]..."
print -r "UNDO: ${File}[$n]..." >> $PUlist
: > $Plist
let "a=1, b=n-1, b>0" && line -$a-$b "$File" >> $Plist
catv Zeile /%j >> $Plist
let "b+=2, b<=nl" && line -$b- "$File" >> $Plist
cat $Plist > "$File"
done
><
[ -s $PUlist ] && cat $PUlist > url_tmpf.inf
return 0
}
echo Einträge lesen/setzen...
rest=0
[ `ver s` != dos ] && rest=-1
Fmain Get tz . inp || Fmain Set tz $rest
Fmain Get tz '-%{0,1%}[0-9]%{1,%}' inp && tz $inp
rest=vi
[ `ver s` != unix ] && rest=edit
Fmain Get edit '[^ %t]' inp || Fmain Set edit "$rest"
rest='htm html'
Fmain Get erw '[^ %t]' inp || Fmain Set erw "$rest"
rest='/u/hp/1,/u/hp/2'
[ `ver s` != unix ] && rest='\a\bc\1,\x\yz\2'
Fmain Get dirs '[^ %t]' inp || Fmain Set dirs "$rest"
echo
prints s:f-50 " bish-Script 'URL-Manager' "
prints s:f-50 " Copyright (c) 1999 Helmut Schellong "
echo
read "-?<Enter> "
while echo "%r
%tAktuelles Verz. %"$(- pwd )%" : cd [verz]%r
%tDatum+Uhrzeit : $( Fmain DatTim )%r
%tVerzeichnisse : $( Fmain Get dirs . inp; print -rn "$inp")%r
%tErweiterungen : $( Fmain Get erw . inp; print -rn "$inp")%r
%r
%tVerzeichnisse hinzu : v [verz[,verz]...]%r
%tErweiterungen hinzu : e [erw[ erw]...]%r
%tRename Upp/Low-Case : R [!][a][d] [l][u|u1|xu1] [t[[-]min]]%r
%tDatenliste erzeugen : 1%r
%tUrls herstellen : 2 [=][a][d] [l][u|u1|xu1]%r
%tUrls schreiben : 3 [!]%r
%tUndo 3 ! : U%r
%tEditor: script|info : ed [s|i]%r
%tHilfe : h%r
%tBeenden : E%r
%r
%t : %c"
do
read inp rest
case "$inp" in
cd) ifset rest || { cd -; continue; }
[ -d "$rest" ] || continue
cd "$rest" ;;
v) Fmain Get dirs . inp
ifset inp && inp="$inp,"
ifset rest && rest="$inp$rest"
Fmain Set dirs "$rest" ;;
e) Fmain Get erw . inp
ifset inp && inp="$inp "
ifset rest && rest="$inp$rest"
Fmain Set erw "$rest" ;;
R) ifset rest || continue
UcLc "$rest" %
$(Fmain Get dirs . inp; File="$IFS";IFS=',;') %
$inp $(IFS="$File")
;;
1) ScanF $(Fmain Get dirs . inp; File="$IFS";IFS=',;') %
$inp $(IFS="$File")
;;
2) CkUrls "$rest" ;;
3) WrUrls "$rest" ;;
U) Undo ;;
ed) Fmain Edit $rest ||
Fmain Perr . "Edit(): Programm- oder Dateifehlschlag."
;;
h) Fmain Help ;;
E) break ;;
*) echo %a%c; continue ;;
esac
done
for inp in Plist PUlist
do ifset $inp && [ -f "${{inp}" ] && remove "${{inp}" && $inp=''
done
exit 0
for N from 1 to 9 repeat
do
echo $N
for C from 0 to 255 repeat
do
prints sF`prints sf03- $C`$N- > uu
prints sbsf03 $N $C >> uuu
uuencode uu remuu | grep -v '^begin' | grep -v '^end' >> uuu
done
done
MOwahl='1'
TPwahl='T'
MUcall='18'
MUspsw='0'
MOinitapp=''
VBMip0='192.168.64.100'
VBMip='192.168.64.100'
Telnu='4'
Failall='0'
Update='0'
ConnTest='1'
RxTxAuto='0'
SysLogSz='3000'
AdmLogSz='500000'
CTbuild='1'
CTtries='1'
CTday='1'
CTgid='1'
CTaid='10'
CTtime='1017437431'
MUdir='../db/1/11'
RxTxMsg='RXTX:'
BasePos='750 1873 3354 5025 6677 10027 11679 14118 15593 16136 16694 18945 20033 21425 22460 23395 '
Dir="$(prints s80-)"
F="$(prints s80-)"
VF="$(prints s80-)"
isda="$(prints s80-)"
fnam="$(prints s80-)"
vfile="$(prints s80-)"
is=000000000
zeile="$(prints s300-)"
name="$(prints s300-)"
err() {
print -r "$0: ERROR: $1"
read "-? <Enter> "
exit 0
return 0
}
[ $# -lt 1 ] && Dir=.
[ $# -ge 1 ] && Dir="$1"
[ "$Dir" == . ] && Dir=$(pwd)
[ -d "$Dir" ] || err "Keine Existenz: '$Dir'"
cd "$Dir"
echo Verzeichnis: $Dir
read "vfile?Datei eingeben [var.c==Enter]: "
ifset vfile || vfile=var.c
[ -s "$vfile" ] || err "Keine Existenz/Kein Inhalt: '$vfile'"
for VF in $vfile
do
3< "$VF"
while readl -u3 name
do
ifset name || continue
expr "$name" :: '^ */[/*]' && continue
is=
expr "$name" :name ' %([a-zA-Z_][a-zA-Z_0-9]*%) *[,;] *$' && is=1
ifset is || expr "$name" :name ' %([a-zA-Z_][a-zA-Z_0-9]*%) *%[' && is=1
ifset is || continue
isda=0 fnam=
for F in *.c
do
expr "$F" =:: "^$VF%$" && continue
is=0
grep -q "[^a-zA-Z_0-9]${name}[^a-zA-Z_0-9]" "$F" && let ++is
let is==0 && grep -q "^${name}[^a-zA-Z_0-9]" "$F" && let ++is
let is==0 && grep -q "[^a-zA-Z_0-9]${name}%$" "$F" && let ++is
let is==0 && grep -q "^${name}%$" "$F" && let ++is
let is==0 && continue
let isda==0 && fnam="$F"
let ++isda
done
let "isda==0" && print "$isda: $name"
let "isda==1" && print "$isda: $fnam: $name"
done
><
done
read "-? $0: <Enter> "
HTM1='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head profile="/htm/meta.txt"><title>MU1000_C with NET Services</title>
<meta name="Author" content="Sentelor GmbH, Hetten">
<meta name="GENERATOR" content="bish Script-Interpreter v3.21 for Embedded DOS">
<meta HTTP-EQUIV="expires" CONTENT="0">
'
HTM2='</head>
<body text="#000000" bgcolor="#CDAA7D" link="#000000" vlink="#000000" alink="#000000">
<br>
'
HTMktbl='<table BORDER=4 CELLSPACING=4 CELLPADDING=10 WIDTH="100%" BGCOLOR="#39458f">
'
HTMtbl='<table BORDER=1 CELLSPACING=0 CELLPADDING=20 WIDTH="100%" BGCOLOR="#FFFFF0">
'
HTMinf1='<br>
<table BORDER=1 CELLSPACING=0 CELLPADDING=10 WIDTH="100%" BGCOLOR="#A2B5CD"
align="center" valign="center"><tr><td width="20%"><pre>
<h3><a href="HELP.HTM#vbmkonf" target="_blank">Hilfe</a></h3>
<h3><a href="cfg">Konfiguration</a></h3>
<h4><a href="TEL.HTM">MU-Kontakt</a></h4>
<h4><a href="EE.HTM">MU-Konfiguration</a></h4>
</pre></td><td>
'
HTMinf2='</td></tr></table>
'
HTMcfg1='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>VBM1000C -- Configuration</title>
<meta HTTP-EQUIV="expires" CONTENT="0">
<meta name="GENERATOR" content="bish.exe"></head>
<body bgcolor="#39458f" text="#ffd700" link="#ffd700" vlink="#ffd700" alink="#ffd700">
<center><h2>Konfiguration VBM1000C</h2>
<h3>Sentelor GmbH</h3></center>
<br>
'
HTMcfg2='
<form action="cfgp" method="POST">
<table bgcolor="#39458f" border="3" cellspacing="0" cellpadding="15" width="100%">
<tr valign="top"><td><pre><b>
TEL-Datei entleeren <input name="TELclear" type="checkbox">
Permanent speichern <input name="Default" type="checkbox">
~TPwahl~ <input name="TPwahl" type="checkbox">
~MOwahl ~ <input name="MOwahl" type="checkbox">
</b></pre></td><td>
<pre><b>Tabellenwahl
Meßwerte 1 <input name="T1" value="~1~" size="1" maxlength="1">
Alarmliste <input name="T2" value="~2~" size="1" maxlength="1">
PSS-Geräte <input name="T3" value="~3~" size="1" maxlength="1">
UNV-Geräte <input name="T4" value="~4~" size="1" maxlength="1">
UNB/BM1/MM <input name="T5" value="~5~" size="1" maxlength="1">
Meßwerte 2 <input name="T6" value="~6~" size="1" maxlength="1">
Ereignisse <input name="T7" value="~7~" size="1" maxlength="1">
</b></pre>
</td>
'
HTMcfg3='
<td align="center"><pre><b>Upload für TEL-Datei (600 Byte max.)
<textarea name="TextArea" cols="32" rows="16">
Station____max16 Telefonnummer</textarea>
</b></pre>
</td>
</tr>
<tr><td colspan="3" align="center" valign="center">
<pre><b>Modem-Initialisierung (Zusatz) <input name="MOinit" value="~moinitapp~" size="30" maxlength="40">
<a href="TEL.HTM">MU-Kontakt</a> <input type="SUBMIT" value=" Absenden "> <input type="RESET" value=" Eingaben löschen "> <a href="HELP.HTM#vbmkonf" target="_blank">Hilfe</a></b></pre>
</td></tr>
</table>
</form>
<br>
'
HTMcfg4='
<table bgcolor="#39458f" border="3" cellspacing="0" cellpadding="15" width="100%">
<tr><td><pre><b>Download:
<a href="TEL.TXT">Aktuelle TEL-Datei</a>
</b></pre></td><td>
<form action="cfgp" method="POST" enctype="multipart/form-data">
<pre><b><input type="SUBMIT" value=" Upload: Lokale TEL-Datei "> (7600 Byte max.)
<input type="FILE" name="Upload" size="40" value="" maxlength="7600" accept="text/plain">
</b></pre></form>
</td></tr>
</table>
</body>
</html>
'
HTMkont1='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Verbindungsmanager VBM1000C -- Kontakt</title>
<meta HTTP-EQUIV="expires" CONTENT="0">
<meta name="GENERATOR" content="bish.exe">
</head>
<body bgcolor="#39458f" text="#ffd700" link="#ffd700" vlink="#ffd700" alink="#ffd700">
<br>
<center><h2>Verbindungsmanager VBM1000C -- Kontakt</h2>
<h3>Sentelor GmbH</h3></center>
<br>
<br>
<br>
<br>
<h1 align="CENTER"><a href="http://999.888.777.666/TEL.HTM">MU-Kontakt</a></h1>
<h3 align="CENTER"><a href="http://999.888.777.666/EE.HTM">MU-Konfiguration</a></h3>
<h3 align="CENTER"><a href="http://999.888.777.666/cfg">VBM-Konfiguration</a></h3>
<h3 align="CENTER"><a href="http://999.888.777.666/HELP.HTM#start" target="_blank">Hilfe</a></h3>
<br>
<br>
<br>
<br>
<table align="center" border="1" cellpadding="8">
<tr><td>
'
HTMkont2='
<form name="Form1" action="http://999.888.777.666/newip" method="POST">
<pre><b>
Aktuelle IP-Nummer: 999.888.777.666
Neue IP-Nummer <input name="IP1" value="192" size="3" maxlength="3">.<input name="IP2" value="168" size="3" maxlength="3">.<input name="IP3" value="" size="3" maxlength="3">.<input name="IP4" value="" size="3" maxlength="3">
Stationsbezeichnung <input name="Station" value="~Station~" size="16" maxlength="16">
<input type="SUBMIT" value=" Absenden "> <input type="RESET" value=" Eingaben löschen ">
</b></pre>
</form>
</td></tr>
</table>
<br>
<br>
'
HTMkont3='
<table align="center" width="65%">
<tr><td>
<p align="justify"><font color="#ffffff">
Sie erhalten nach Eintragung der korrekten IP-Nummer, Anklicken
von ''Absenden'' und nachfolgender Kennwort-Eingabe eine Datei zum Speichern angeboten.
Diese Datei muß im Speicher-Fenster des Browsers einen gewünschten Namen
erhalten, der allerdings mit ''.htm'' oder ''.html'' enden muß.
Die Download-Datei ersetzt diese Datei, mit der Sie gerade arbeiten!<br>
(Siehe auch <a href="http://999.888.777.666/Start.htm">Start.htm</a>)
</font></p>
</td></tr>
</table>
</body>
</html>
'
HTMtelhf='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title>
<meta HTTP-EQUIV="expires" CONTENT="0">
<meta name="GENERATOR" content="bish.exe">
</head>
<body>
<form name="FormAnruf" action="telhf" method="GET">
<input name="InpAnruf" value="~telnu~">
</form>
<form name="FormTelhf">
<textarea name="TextTelhf">
~TextTelhf~
</textarea>
</form>
<script language="JavaScript">
parent.frames[0].focus();
</script>
</body>
</html>
'
HTMtelvf1='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>VBM Kontakt - MU-Kontakt</title>
<meta HTTP-EQUIV="expires" CONTENT="0">
<meta name="GENERATOR" content="bish.exe">
<script language="JavaScript" src="data/telvf.js" type="text/javascript"></script>
</head>
<body bgcolor="#39458f" text="#000000" link="#0000ff" vlink="#0000ff" alink="#0000ff">
<br>
<center><font color="#ffd700"><h2>Verbindungsmanager VBM1000C -- MU-Kontakt</h2>
<h3>Sentelor GmbH</h3></font></center>
<br>
<br>
<table align="CENTER" border="0" cellpadding="5">
<tr><td bgcolor="#e0e0e0" align="CENTER" colspan="2">
<a href="KONTAKT.HTM" target="_top">VBM-Kontakt</a>
<a href="TEL.HTM" target="_top">MU-Kontakt</a>
<a href="EE.HTM" target="_top">MU-Konfiguration</a>
<a href="cfg" target="_top">VBM-Konfiguration</a>
<a href="HELP.HTM#mukont" target="_blank">Hilfe</a>
</td></tr>
<tr><td bgcolor="#e0e0e0" align="CENTER" colspan="2">
<a href="MU.HTM" target="_blank">MU-Daten
(manueller Zugriff nach kompletter Anruf-Aktion)</a>
</td></tr>
'
HTMtelvf2='
<br>
<br>
<br>
<br>
<form name="FormTelvf">
<table border="1" align="center" cellpadding="10">
<tr><td align="center" valign="center">
<textarea name="TextTelvf" cols="44" rows="10" wrap="virtual">
</textarea>
</td><td align="left" valign="center">
<font color="#ffffff">
<tt><b>
<input name="Del" type="BUTTON" value="Stations-Botschaften löschen" onClick="DelMsg('''')">
<br>
<input name="Start" type="BUTTON" value="Start Autoabfrage 1 min" onClick="Start1m(1)">
<br>
<input name="Stop" type="BUTTON" value="Stop Autoabfragen" onClick="Stopp()">
<br>
<input name="Reset" type="RESET" value="Textfenster löschen">
</b></tt></font>
</td></tr>
</table>
</form>
<script language="JavaScript">
MOinit();
if (parent.frames[1].document.FormAnruf.InpAnruf.value == "1min") {
Start1m(1);
document.FormTelvf.TextTelvf.value= "Autoabfrage läuft\r\n";
}
</script>
</body>
</html>
'
Err() {
print -ru2 "bish [vbm.bish] ERROR: '$1'"
sem -"d${SemBishrun}d${SemCgirun}d${SemCfg}d${SemHtm}d${SemSigbish}d${SemSigcgi}"
ext -
exit 1
return 0
}
CheckIP() {
[ $# -ne 1 -a $# -ne 4 ] && return 1
[ $# -eq 1 ] && {
local ip="$1" n
expr "$ip" :: "^$REip%$" || return 1
conv -'t. ' ip
for n in $ip
do let "n>255" && return 1; done
return 0
}
local n
expr "$1.$2.$3.$4" :: "^$REip%$" || return 1
for n in $1 $2 $3 $4
do let "n>255" && return 1; done
return 0
}
FormConv() {
local h=0000 z=00
conv -'t+ ' $1
while expr "${{1}" :h '%%%([a-fA-F0-9]%{2%}%)'
do
base -16 h +b z
expr "${{1}" :$1 '%%'$h += "$z"
done
return 0
}
FormRead() {
[ -s "$1" ] || return 1
local nam=................ ip
catv 0 =Hbuf: < "$1"
conv -'t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
StartIP) VBMip=$Hbuf ;;
Station) expr "$Hbuf" :Hbuf '^[ %t]%{1,}' = ''
expr "$Hbuf" :Hbuf '[ %t]%{1,}$' = ''
ifset Hbuf && VBMstation="$Hbuf"
;;
IP1) ip=$Hbuf ;;
IP2) ip=$ip.$Hbuf ;;
IP3) ip=$ip.$Hbuf ;;
IP4) ip=$ip.$Hbuf ;;
InpAnruf) InpAnruf=$Hbuf
expr "$Hbuf" :: '^DELALL:' && {
MkTbl5data $Ftbl5 submu " "
InpAnruf=. goend
}
expr "$Hbuf" :Hbuf '^DEL:%(.*%)$' && {
MkTbl5data $Ftbl5 submu "$Hbuf"
InpAnruf=. goend
}
;;
esac
done
ifset ip && VBMip="$ip"
cmpv VBMstation0 VBMstation || {
VBMstation0="$VBMstation"
WrChipIni DEVICE NAME "$VBMstation"
}
return 0
}
ReadCfg() {
[ -s "$1" ] || return 1
catv 1000,0 =Hbuf: < $1
if expr "$Hbuf" :: '[ %t%r%n]'
then
local n=00 boundary
< $1
while readl Hbuf
do
expr "$Hbuf" :boundary '%(-%{2,}[^-]%{1,}%)"%{0,1}$' && break
let "++n>0" && { >< ; return 1; }
done
while readl Hbuf
do
ifset Hbuf || break
done
boundary="$boundary--"
> $Fteltxt
while readl Hbuf
do
ifset Hbuf && { catv Hbuf /%j ; continue; }
while readl Hbuf
do
ifset Hbuf || continue
expr "$Hbuf" :: "$boundary" && break
catv Hbuf /%j
continue 2
done
break
done
><<
MkTbl5data $Ftbl5 start
return 0
fi
local dflt=00 nam=................ teltxt
conv -'t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
TELclear) : > "$Fteltxt"; : > $Ftbl5 ;;
Default) dflt=1 ;;
MOinit) expr "$Hbuf" :Hbuf '[^!-~]%{1,}' += ' '
conv -u Hbuf
expr "$Hbuf" :Hbuf 'AT' += ' AT'
Hbuf=$Hbuf
expr "$Hbuf" :: '^AT' && MOinitapp=$Hbuf
ifset Hbuf || MOinitapp=''
;;
T[1-9]) expr "$Hbuf" :Hbuf '[^0-9]' += ''
let "Hbuf+=0, Hbuf==0" && Hbuf=-
ifset Hbuf || Hbuf=-
catv 1,2,nam =nam:
prints vs-3 Hbuf "$Hbuf"
catv Hbuf =$(([nam-1]*3)),3,TblFolge
conv -t ' ' TblFolge
;;
TPwahl) [ $TPwahl == P ] && TPwahl=T continue
[ $TPwahl == T ] && TPwahl=P
;;
MOwahl) [ MOwahl -eq 0 ] && MOwahl=2 MOisinit=2 continue
[ MOwahl -ne 0 ] && MOwahl=0 MOisinit=1
;;
TextArea) teltxt="$Hbuf" ;;
esac
done
ifset teltxt && {
expr "$teltxt" :teltxt 'Station____max16[^%r%n]*[%r%n]*' = ''
expr "$teltxt" :: '%w' || teltxt=
}
ifset teltxt && {
catv teltxt /%j >> "$Fteltxt"
cat $Fteltxt | {
> $Fteltxt
while readl Hbuf
do ifset Hbuf || continue
expr "$Hbuf" :Hbuf '^[ %t]%{1,}' = ''
expr "$Hbuf" :Hbuf '[ %t]%{1,}$' = ''
expr "$Hbuf" :: '^[^ %t]' || continue
expr "$Hbuf" :: '[ %t][0-9W,PT]%{1,}$' || continue
expr "$Hbuf" :Hbuf '[ %t]%{1,}%([0-9W,PT]%{1,}%)$' ' %1'
catv Hbuf /%j
done
><
}
MkTbl5data $Ftbl5 grow
}
[ "$dflt" == 1 ] && catv TPwahl MOwahl TblFolge /MOINIT: MOinitapp > "$Fcfgcfg"
return 0
}
GetMOmsgNr() {
local word="${{1}" ifs="$IFS" nr=00 mnu=0000 msg
IFS="$RN"
for word in $word
do
IFS="$ifs"
for 2 msg nr in OK 1 'CONNECT *' 2 'CARRIER *' 2 RING 4 ERROR 8 BUSY 16 %
'NO CARRIER' 32 'NO DIALTONE' 64 'NO DIAL TONE' 64 %
'NO ANSWER' 128 'DIAL LOCKED' 256 'NO MORE DIAL%{1,2}ING' 256 %
'DELAYED *' 512 'PROTOCOL[ :]*' 2 'COMPRESSION[ :]*' 2
do
expr "$word" :: "^$msg" && let "mnu|=nr"
done
done
IFS="$ifs"
[ mnu -ne 0 ] && $1=$mnu return 0
return 1
}
WriteAT() {
[ $# -lt 1 ] && return 1
local peek=00 c=. ato=-0001 sec=005 msec=700 msg=00 t=0000000000
if expr "$1" :: 'AT&F'
then local ats="$1 $MOinitapp "
else local ats="$1 "
fi
expr "$ats" :ats '[^!-~]%{1,}' += ' '
local wr="$ats "
local hbuf="$wr"
wr=
catv "/'" ats "/'%j"
while catv $((++ato)),1,ats =c:
do
expr "$c" :: '[ %%]' || wr="$wr$c" continue
[ "$c" == ' ' ] && {
expr "$wr" :: '+++$' || wr="$wr$RN"
ext -icocot20od4o${#wr} wr
wr= t=$SECONDS
while let "$SECONDS-t <= sec"
do
sem -s$SemBishrun
sem -g$SemSigbish && WebServer
ext -p peek || { sleep -m $msec; continue; }
ext -it300id15i100 Ibuf
catv $.,Ibuf =Hbuf:
expr "$Hbuf" :Hbuf '[ %t%r%n]%{1,}$' = ''
expr "$Hbuf" :Hbuf '[%r%n]%{1,}' += "$RN"
hbuf="$Hbuf"
expr "$hbuf" :hbuf '%r%n' += "\r\n"
catv '/(' hbuf '/)%j'
[ msg -eq 0 ] && continue 2
AnrufMsg=$Hbuf
GetMOmsgNr Hbuf || continue
[ Hbuf -ge 4 ] && return 1
let "msg&Hbuf" || return 1
continue 2
done
ext -icoct20od4o2 RN
ext -it300id15i70 Ibuf
[ $. -gt 0 ] && catv '/((' $.,Ibuf '/))%j'
[ msg -ne 0 ] && { AnrufMsg=TIMEOUT; print -u2 $AnrufMsg; return 1; }
continue
}
catv $((++ato)),1,ats =c:
expr "$c" :: '[%%dpt0COT]' || wr="$wr$c" continue
[ "$c" == '%' ] && wr="$wr$c" continue
case "$c" in
d) sleep 1 ;;
p) sleep -m 250 ;;
t) catv $((++ato)),,ats =ats:
ato=-1
expr "$ats" :sec '^%([0-9]%{1,}%)' || sec=1
expr "$ats" :ats '^[0-9]%{1,}' = ''
let "sec>=1000" && let "sec=(sec+500)/1000"
let "sec>=100" && sec=1
let "sec<1" && sec=1
msec=700
[ sec -lt 4 ] && let "msec=sec*200"
;;
0) msg=0 ;;
C) msg=2 ;;
O) msg=1 ;;
T) [ $# -lt 2 ] && return 1
expr "$2" :: '^[TP]' || wr="$wr$TPwahl"
wr="$wr$2"
;;
esac
done
return 0
}
MkCfgHtm() {
local a=0000 b=0000 tpw=Pulswahl moinit="$MOinitapp"
local mow='Modem AUS'
Hbuf="$HTMcfg2"
for b in $TblFolge
do
let "++a"
[ "$b" == - ] && b=
expr "$Hbuf" :Hbuf "~$a~" = "$b"
done
[ $TPwahl == P ] && tpw="Tonwahl "
[ MOwahl -eq 0 ] && mow="Modem EIN"
expr "$Hbuf" :Hbuf '~TPwahl~' = "$tpw"
expr "$Hbuf" :Hbuf '~MOwahl ~' = "$mow"
> "$1"
catv HTMcfg1 Hbuf
moinit=$MOinitapp
expr "$HTMcfg3" :Hbuf '~moinitapp~' = "$moinit"
catv Hbuf HTMcfg4
><
return 0
}
MkKontHtm() {
> $1
expr "$HTMkont1" :Hbuf '999.888.777.666' += "$VBMip"
catv Hbuf
expr "$HTMkont2" :Hbuf '999.888.777.666' += "$VBMip"
expr "$Hbuf" :Hbuf '~Station~' += "$VBMstation"
catv Hbuf
expr "$HTMkont3" :Hbuf '999.888.777.666' += "$VBMip"
catv Hbuf
><
cat $1 > A:\KONTAKT.HTM
return 0
}
MkTelhfHtm() {
ifset InpAnruf || { catv HTMtelhf > $1; return 0; }
[ "$InpAnruf" != . ] && AnrufMsg="Anrufen $InpAnruf"
> $1
expr "$HTMtelhf" :Hbuf '~TextTelhf~' = "$AnrufMsg"
expr "$Hbuf" :Hbuf '~telnu~' = "$2"
catv Hbuf
><
return 0
}
WrChipIni() {
local rub=$1 nam=$2 inh="$3" f=A:\CHIP.INI zv=.........
local buf=...................................
zv=000
[ -s $f ] || : > $f
cat $f > A:\CHIP.BAK
cat $f | {
> $f
while readl buf
do
catv buf /%r%n
expr "$buf" =:: '^%['"$rub"']' || continue
zv=
while readl buf
do
ifset buf || { zv=/%r%n ; break; }
expr "$buf" :: '^%[[A-Za-z]' && zv=' ' break
expr "$buf" =:: '^[ %t]*'"$nam"'[ %t]*=' && break
catv buf /%r%n
done
catv nam /= inh /%r%n $zv
[ "$zv" == ' ' ] && catv buf /%r%n
done
[ "$zv" == 000 ] && catv '/[' rub '/]%r%n' nam /= inh /%r%n
><
}
return 0
}
RdChipIni() {
local rub=$1 nam=$2 inh=$3 f=A:\CHIP.INI zv=1
local buf=...................................
[ -s $f ] || return 1
< $f
while readl buf
do
expr "$buf" =:: '^%['"$rub"']' || continue
while readl buf
do
expr "$buf" =:: '^%['"$rub"']' && continue
expr "$buf" :: '^%[[A-Za-z]' && continue 2
expr "$buf" =:: '^[ %t]*'"$nam"'[ %t]*=' || continue
expr "$buf" :$inh '=[ %t]*%(..*%)[ %t]*$' && zv=0
done
done
><
return $zv
}
MUkategorie_c() {
local o=00000 nam
prints vs40 nam
local kat=0000000000 inh
prints vs150 inh
expr "$KatOffs" :o '%tc %(%d%{1,5}%)' || return 1
< "$1"
seek $o 0
while read kat - - nam inh
do
[ "$kat" != c ] && break
conv '-t` ' inh
[ "$nam" == IPether ] && MUip="$inh"
[ "$nam" == Station ] && MUstation="$inh"
[ "$nam" == Passwd ] && MUpasswd="$inh"
[ "$nam" == MOerr ] && MUmoerr="$inh"
done
><
return 0
}
MUanrufen() {
local telnu=$1 ch=00 offs=00000 cksum=0000000000 ring="RING$RN.........."
while :
do
case $AnrufZ in
dialout)
[ MOwahl -eq 0 ] && AnrufZ=getdata continue
WriteAT "$MOdialout" "$telnu" || break
AnrufZ=waitpass TOsec=$SECONDS
;;
waitpass)
let "$SECONDS-TOsec>10" && AnrufMsg=TimeOut break
ext -p ch || return 0
AnrufZ=pass
;;
pass)
ext -it400id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD:' || AnrufMsg="NO PASSWORD:" break
ring="@DK40mopas"
ext -icocot30od4o10 ring
sleep -m 150
ext -ocot30od4o2 RN
AnrufZ=waitpassok TOsec=$SECONDS
;;
waitpassok)
let "$SECONDS-TOsec>10" && AnrufMsg=TimeOut break
ext -p ch || return 0
AnrufZ=passok
;;
passok)
ext -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
expr "$Hbuf" =:: 'PASSWORD %{1,3}OK' || AnrufMsg="PASSWORD NOT OK" break
AnrufZ=getdata
;;
getdata)
[ $MUee == tomu ] && AnrufZ=writecfg continue
[ $MUee == tovbm ] && AnrufZ=readcfg continue
GetMUdata $Fc1 Nn dk40 || {
AnrufMsg="NREAD==0"
echo "$Nn Bytes"
[ MOwahl -eq 0 ] && break
ring=@EN:
ext -icocot30od4o4 ring
break
}
echo "$Nn Bytes"
AnrufZ=data
;;
data)
ScanOffsets $Fc1
sem -g$SemSigbish && WebServer
MUkategorie_c $Fc1
[ MOwahl -eq 0 ] && AnrufZ=c1written goend
AnrufZ=mowrite continue
;;
mowrite)
ring=@EN:
ext -icocot30od4o4 ring
AnrufZ=waitmoend TOsec=$SECONDS
;;
waitmoend)
let "$SECONDS-TOsec>10" && AnrufMsg=TimeOut break
ext -p ch || return 0
AnrufZ=moend
;;
moend)
ext -it300id15i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv Hbuf
AnrufZ=c1written
[ $MUee != none ] && AnrufZ=mucfgokay
expr "$Hbuf" =:: 'Connection %{1,3}aborted' || AnrufMsg="NO ABORT" break
;;
dialin)
WriteAT "$MOabnehmen" || break
AnrufZ=gettext
;;
gettext)
GetMUdata $Fc2 Nn rdonly || AnrufMsg="NREAD==0" break
echo "$Nn Bytes"
AnrufZ=text
;;
text)
local a=- b=- c=- muokfa=...... mustat=................ mudati
< $Fc2
while readl Hbuf
do
ifset Hbuf || continue
expr "$Hbuf" :mudati ' %([0-9.]%{8,} *[0-9:]%{8,}%)' && a=.
expr "$Hbuf" :mustat 'Station: *"%([^"]%{1,}%)"' && b=.
expr "$Hbuf" :muokfa 'State: *%(%w%{2,}%)' && c=.
[ "$a$b$c" == ... ] && break
done
><
MkTbl5data $Ftbl5 addmu "$mustat" "$muokfa" "$mudati"
AnrufZ=c2written
;;
writecfg)
sum -w cksum < C:\MUEE
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
ring=129
base -10 ring +b ch
ring=@PC:
ext -icocot30od4o4 ring
ext -it400id20i1 Ibuf
catv 1,Ibuf /%j
ext -icocot30od4o1 ch
ext -it400id10i1 Ibuf
catv 1,Ibuf /%j
< C:\MUEE
for offs from 0 by 32 to 2016 repeat
do
catv $offs,32,0 =Hbuf
ext -icocot30od4o32 Hbuf
ext -it600id20i1 Ibuf
catv 1,Ibuf
done
><
ext -icocot30od4o2 cksum
ext -it400id10i2 ring
echo
catv 2,cksum =cksum:
catv 2,ring =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || AnrufMsg="Checksum wrong" break
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=mucfgokay
;;
readcfg)
ring=128
base -10 ring +b ch
ring=@PC:
ext -icocot30od4o4 ring
ext -it400id20i1 Ibuf
catv 1,Ibuf /%j
ext -icocot30od4o1 ch
ext -it2000id20i1500 Ibuf
echo $. ${#Ibuf}
ext -it800id20i550 Hbuf
echo $.
> C:\MUEEIN
catv 1500,Ibuf
catv 548,Hbuf
><
sum -w cksum < C:\MUEEIN
let "cksum+=16#1d0f, cksum&=65535"
base -10 cksum +w cksum
ext -icocot30od4o2 cksum
catv 2,cksum =cksum:
catv 548,2,Hbuf =ring:
base -w cksum +16
base -w ring +16
cmpv cksum ring || AnrufMsg="Checksum wrong" break
cat C:\MUEEIN > C:\MUEE
remove C:\MUEEIN
base -W +w < C:\MUEE | catv 2048,0 =5000,2048,3 3<> C:\DATA.MUC
catv $(( 960<<1)),2,0 =ring: < C:\MUEE
base -w ring +10 ring
MUspsw=0
let "ring==1" && MUspsw=1
catv $((1001<<1)),2,0 =ring: < C:\MUEE
base -w ring +10 ring
let "ring==1" && MUspsw=2
[ MOwahl -ne 0 ] && AnrufZ=mowrite continue
AnrufZ=mucfgokay
;;
test)
cat A:\1 > $Fc1
ScanOffsets $Fc1
MUkategorie_c $Fc1
AnrufZ=c1written
;;
esac
AnrufMsg=$AnrufZ
return 0
done
[ $AnrufZ != c1written ] && AnrufZ=0
print -u2 $AnrufMsg
AnrufMsg="ERROR: $AnrufMsg"
return 1
}
GetMUdata() {
local peek=00 nrw=0000000000 sum=00000
catv /@DK40: =6,Ibuf
[ "$3" == dk40 ] && ext -icocot100od4o6 Ibuf
until ext -p peek
do
let "sum+=10, sum>3000" && break
sleep -m 10
done
echo "InputWait: $sum ms"
ext -iT2000it400id15i1500 Ibuf
nrw=$. $2=$. sum=0
let "sum+=nrw, nrw==0" && return 1
> $1
while let "nrw>0"
do
[ "$3" == dk40 ] && conv '-t `' Ibuf
catv $nrw,Ibuf
ext -iT2000it400id15i1500 Ibuf
let "nrw=$., sum+=nrw"
done
><
$2=$sum
return 0
}
ScanOffsets() {
local o=000000 n=0000 kat0=xxx kat=xxx tab=9
KatOffs=
catv /%t =tab:
< "$1"
while seek + 0 o ; read kat - - - -
do
ifset kat || kat=$kat0
[ "$kat" != "$kat0" ] && KatOffs="$KatOffs$tab$kat $o " kat0="$kat"
done
><
return 0
}
MkTelCells() {
[ ! -e "$Ftbl5" ] && MkTbl5data $Ftbl5 start
local station=................ okfa=...... ifs="$IFS" tab=t co=ffffff
local st=station tn=telnu
local dati=......................................................
local telnu=$dati$dati end=0
catv /%t =tab:
>> "$1"
telnu=Modem
[ MOwahl -eq 0 ] && telnu=Direkt
catv '.<tr><td bgcolor="#e0e0e0" align=center>' %
'.Verbindungsart VBM<->MU (Modem/Direkt)</td>' %
'.<td bgcolor="#e0e0e0" align=center>' telnu '.</td></tr>' /%n
telnu='<tr><td bgcolor="#e0e0e0" align=center>MU-Konfiguration'
case $MUee in
tomu) dati='<a href="muee?none">Deaktivieren</a></td></tr>'
telnu="$telnu (VBM-->MU)" ;;
tovbm) dati='<a href="muee?tomu">VBM-->MU</a></td></tr>'
telnu="$telnu (VBM<--MU)" ;;
none) dati='<a href="muee?tovbm">Aktivieren</a></td></tr>'
telnu="$telnu (Inaktiv)" ;;
esac
catv telnu '.</td><td bgcolor="#e0e0e0" align=center>' dati /%n
catv '.</table><br> <br> ' /%n
[ MOwahl -eq 0 ] && {
catv '.<table height="9%" align="CENTER" border="0"' %
'. cellpadding="10" bgcolor="#ffffff"><tr>' /%n
catv '.<td nowrap valign="CENTER"><tt><b>' /%n
catv '.<a href="javascript:Anruf(''1'')">'
catv '.Direkt verbundene MU-Einheit kontaktieren</a>' /%n
catv '.</b></tt></td></tr></table>' /%n
><
return 0
}
< $Ftbl5
catv '.<table width="90%" align="CENTER" border="0" cellspacing="5"' %
'. cellpadding="5">' /%n
IFS="$tab"
to 4 repeat
do
echo '<tr>'
to 5 repeat
do
if read station telnu okfa dati && ifset station telnu okfa dati
then [ "$station" == ' ' ] && station=' '
[ "$telnu" == ' ' ] && telnu=' '
[ "$okfa" == ' ' ] && okfa=' '
[ "$dati" == ' ' ] && dati=' '
else station=' ' telnu=' ' okfa=' ' dati=' ' end=1
fi
st=station tn=telnu
[ "$station" == " " ] && st='. '
[ "$telnu" == " " ] && tn='. '
co=ffffff
[ "$okfa" == OKAY ] && co=00ff00
[ "$okfa" == FAIL ] && co=ff0000
catv '.<td nowrap align="CENTER" valign="CENTER" width="19%" bgcolor="#ffffff">' /%n
catv '.<tt><b><a href="javascript:Anruf(''' "$tn" '.'')">'
catv station '.<br>' telnu '.</a><br>' %
'.<a href="javascript:DelMsg(''' "$st" '.'')">' okfa %
". </a><font color=%"#$co%">" dati '.</font></b></tt>' /%n %
'.</td>' /%n
done
echo '</tr>'
[ end -eq 1 ] && break
done
catv '.</table>' /%n
><<
IFS="$ifs"
return 0
}
MkTbl5data() {
[ ! -e "$Fteltxt" ] && : > $Fteltxt
[ ! -e "$1" -a $2 != start ] && MkTbl5data $1 start
local station=................
local telnu=.......................................
case "$2" in
start)
< $Fteltxt
> "$1"
while readl telnu
do
expr "$telnu" :station '^%(.*[^ ]%) %{1,}[^ ]%{1,}$' || station=Station
expr "$telnu" :telnu '%([^ ]%{1,}%)$' || telnu=0000000
catv station /%t telnu "/%t %t %j"
done
><<
;;
grow)
< $Fteltxt
while readl telnu
do
expr "$telnu" :station '^%(.*[^ ]%) %{1,}[^ ]%{1,}$' || station=Station
expr "$telnu" :telnu '%([^ ]%{1,}%)$' || telnu=0000000
grep -q "^$station%t" $1 ||
catv station /%t telnu "/%t %t %j" >> $1
done
><
;;
addmu)
local ifs="$IFS" tab=t a=0 okfa=......
local dati=........................................
catv /%t =tab:
cat $1 | {
> $1
IFS="$tab"
while read station telnu okfa dati
do
[ "$3" == "$station" ] && okfa="$4" dati="$5" a=1
catv station /%t telnu "/%t$okfa%t$dati%j"
done
[ a -eq 0 ] && catv "/$3%t0000000%t$4%t$5%j"
><
}
IFS="$ifs"
;;
submu)
local ifs="$IFS" tab=t a=0 okfa=......
local dati=........................................
catv /%t =tab:
cat $1 | {
> $1
IFS="$tab"
while read station telnu okfa dati
do
[ "$3" == "$station" -o "$3" == " " ] && okfa=" " dati=" "
catv station /%t telnu "/%t$okfa%t$dati%j"
done
><
}
IFS="$ifs"
;;
esac
return 0
}
MkInfTbl() {
>> "$1"
catv HTMinf1
if [ ! -s "$Fteltxt" ]
then
catv ".${MUstation}<------>"
else
local ip=................ st
prints vs40 st
local zeile
prints vs150 zeile
< "$Fteltxt"
while readl zeile
do
expr "$zeile" :ip '[ %t]%([0-9W,PT]%{1,}%)[ %t]*$' || continue
expr "$zeile" :st '^%(..*%)[ %t][0-9W,PT]%{1,}[ %t]*$' || st=--
catv ".${st}<$ip> " /%n
done
><
fi
catv HTMinf2
><
return 0
}
MkTbl() {
local o=00000 bgc='"#A2B5CD"' nam
prints vs40 nam
local kat=0000000000 num=0000000000 typ=0000000000 inh
prints vs150 inh
expr "$KatOffs" :o '%t'"$3"' %(%d%{1,5}%)' || return
>> "$2"
catv '/<br> %n' $4 '/<tr>'
[ $# -ge 9 ] && catv '.<td align=center valign=top width="20%" ' %
"/bgcolor=$bgc><h2>$9</h2></td>%n"
catv "/<td>$5%n"
< "$1"
seek $o 0
while read kat num typ nam inh
do
[ "$kat" != "$3" ] && break
conv '-t` '"$Tconv" nam inh
expr "$nam" :nam '<' += '<'
expr "$inh" :inh '<' += '<'
[ "$nam" != - ] && nam="$nam "
[ "$nam" == - ] && nam=
expr "$typ" :: 't' && catv '/<ul>%n'
expr "$typ" :: 'n' && catv /%n
catv ".$7" nam inh ".$8" /%n
expr "$typ" :: 'N' && catv /%n
expr "$typ" :: 'T' && catv '/</ul>%n'
done
><
catv ".$6</td></tr></table>" /%n
><
return 0
}
MkMUhtm() {
local iv a=0000 b=0000
prints vs40 iv
catv HTM1 HTM2 > $Fc2
echo "<tt>$N $SECONDS</tt>" >> $Fc2
MkTbl $Fc1 $Fc2 1 HTMktbl '<center><font color="#ffd700">' %
'</font></center>' '<h3>' '</h3>'
MkInfTbl $Fc2
b=2
for a in $TblFolge
do
let "++b, a<=0||a>12" && continue
prints vs-3 b "$b"
catv b =$((a*3-3)),3,iv
done
for a in $iv
do
expr "$KatOffs" :: "%t$a " || continue
MkTbl $Fc1 $Fc2 $a HTMtbl "<pre><b>" "</b></pre>" "" "" "$TblTitle[a]"
done
echo '</body></html>' >> $Fc2
return 0
}
CopyCmuee() {
local ee=MUEEHV
[ MUspsw -eq 0 ] && ee=MUEE
[ MUspsw -eq 2 ] && ee=MUEEBM
echo "A:\DATA\$ee > C:\MUEE"
cat A:\DATA\$ee > C:\MUEE
ee=0
[ -s C:\DATA.MUC ] && fstat -sv ee C:\DATA.MUC
let "ee==5000+2048" && {
base -W +w < C:\MUEE | catv 2048,0 =5000,2048,3 3<> C:\DATA.MUC
return 0
}
echo "Default C:\DATA.MUC ..."
prints vs48 Hbuf
> C:\DATA.MUC
cat A:\DATA\HEAD.MUC
to $((100-15)) repeat
do
catv 48,Hbuf /%r%n
done
base -W +w < C:\MUEE
><
return 0
}
MkMucFile() {
local n=00000 sz=00000 o0=00000 o=00000 zv=.. c=.. boundary
catv /%r%n =zv:
< $2
while readl Hbuf
do
expr "$Hbuf" :boundary '%(-%{2,}[^-]%{1,}%)"%{0,1}$' && break
let "++n>0" && { >< ; return 1; }
done
while readl Hbuf
do
ifset Hbuf || break
done
n=0
> $1
while catv +0,50,0 =Hbuf:
do
let "${#Hbuf}!=50" && break
catv 48,2,Hbuf =c:
cmpv zv c || break
catv Hbuf
let "++n>=100" && break
done
let "n!=100" && { ><< ; return 2; }
catv /%r%n boundary /--%r%n =boundary:
catv /%r%r =c:
seek + 0 o0
while seek + 0 o; catv +0,1000,0 =Hbuf:
do
conv "-T$c" Hbuf
let "o+=$., $.<0" && continue
catv $o,${#boundary},0 =Hbuf:
cmpv Hbuf boundary || { let "++o"; seek $o 0; continue; }
catv $o0,$((o-o0)),0
let "o+=${#boundary}"
catv $o,,0
break
done
><<
fstat -sv sz $1
let "sz!=5000+2048" && return 3
catv 5000,2048,0 < $1 | base -W +w > C:\MUEE
return 0
}
EEconvertTxt() {
local b=10 len=00000 blen=00$5 dflt="$8" min="$9" max="${10}"
EEmin=''
let "blen<<=1"
len=$blen
[ MUspsw -eq 1 -a "${11}" != '"' ] && dflt="${11}"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ MUspsw -eq 2 -a "${14}" != '"' ] && dflt="${14}"
case $6 in
x) b=16 ;;
b) b=2 ;;
esac
[ $7 == b ] && b=2
case $4 in
w) base -w $2 +$b $2
[ $6 == i -a $2 -gt 32767 ] && let "$2-=65536" ;;
L) base -L $2 +$b $2 ;;
S) base -W $2 +w $2
[ $6 == 0 ] && $2="${{2}" let "--len"
[ $6 == m ] && expr "${{2}" :$2 ' %{1,}$' = ''
InputLen=$len
return 0 ;;
esac
if [ $max != '"' ]
then
len=${#max}
[ ${#min} -gt len ] && len=${#min}
[ $6 == x -a $7 == b ] && let "len<<=2"
[ b -ne 10 ] && goend
local v=........
EEmin=$min EEmax=$max EEdflt=$dflt
for v in EEmin EEmax EEdflt
do
case $7 in
.1) expr "${{v}" :$v '.$' '.&' ;;
.2) let "${{#v}==1" && $v="${{v}0"
expr "${{v}" :$v '..$' '.&' ;;
1) let "$v/=10" ;;
m) let "$v/=60" ;;
=) ;;
*) EEmin='' goend 2 ;;
esac
expr "${{v}" :: '^%.' && $v="0${{v}"
done
else
case $b in
16) let "len<<=1";;
2) let "len<<=3";;
10) len=${#dflt};;
esac
fi
[ b -ne 10 ] && prints vsf0$len $2 "${{2}"
case $7 in
.1) let "++len"; expr "${{2}" :$2 '.$' '.&' ;;
.2) let "++len, ${{#2}==1" && $2="${{2}0"
expr "${{2}" :$2 '..$' '.&' ;;
1) let "--len, $2/=10" ;;
m) let "--len, $2/=60" ;;
b) ;;
a) let "$2=512-$2"; len=4 ;;
bb) let "b=$2&255, $2>>=8"
prints vssf02 $2 ${{2}. $b
len="${{#2}" ;;
J) let "$2<100" && let "$2+=2000"
let "$2>2079" && let "$2-=100"
len=4 ;;
esac
expr "${{2}" :: '^%.' && $2="0${{2}"
[ $6 == i ] && expr "${{2}" :: '^[-+]' || let "++len"
InputLen=$len
return 0
}
EEconvertEye() {
[ $15 == ro ] && return 1
local var=........ val="$2" _7=$7
local b=10 len=000 blen=00$5
let "blen<<=1, len=blen-1"
expr "$2" :var '^%([^:]%{1,}%):'
expr "$val" :val '^[^:]%{1,}:' = ''
[ $7 == .1 -o $7 == .2 -o $7 == 1 -o $7 == m -o $7 == a -o $7 == J ] &&
expr "$val" :val '[^0-9-]' += ''
[ $7 == = -a $4 != S ] && _7=$6
case $_7 in
u) expr "$val" :val '[^0-9]' += '' ;;
i) expr "$val" :val '[^0-9-]' += '' ;;
b) expr "$val" :val '[^01]' += ''
b=2 ;;
x) expr "$val" :val '[^0-9a-fA-F]' += ''
b=16 ;;
1) let "val*=10" ;;
m) let "val*=60" ;;
a) let "val=512-val" ;;
bb) expr "$val" :val '%(%d%.%d%{1,2}%)'
expr "$val" :val '%(%d%)%.%(%d%{1,2}%)' '(%1<<8)+%2'
let "val=$val" ;;
J) let "val-=1900, val>=100" && let "val-=100"
let "val<0" && val=80
let "val>99" && val=79 ;;
esac
case $4 in
w) base -$b val +w $var; return 0 ;;
L) base -$b val +L $var; return 0 ;;
S) [ $6 == 0 ] && {
catv $len,val =val:
prints vs-F000$blen val "$val"
}
[ $6 == m -a ${#val} -lt blen ] && prints vs-$blen val "$val"
base -w val +W $var ;;
esac
return 0
}
EEconvertHtm() {
local adr=00000 txt="${18}" min=$9 max=${10} unit
let "adr=$3"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ ${16} != '"' ] && unit=" ${16}"
local onfoc
[ $6 == u -a $min == 0 -a $max == 1 ] && onfoc=" onFocus=%"Toggle01(this)%""
ifset EEmin || EEmax= EEdflt=
ifset EEmin && EEmin="</b><font color=%"#bbbbbb%"> [$EEmin " %
EEmax=" $EEmax]</font><b>"
conv '-t` ' txt
prints s25ss "$txt" %
" <input name=%"A$adr%" value=%"$2%" size=%"$InputLen%"" %
" maxlength=%"$InputLen%"$onfoc>$unit$EEmin$EEdflt$EEmax"
return 0
}
MkMUee() {
local b=10 offs=00000 adr=00000 typ=.. blen=00 dst=..
local df1=........................................
local df2=....................
local dfbm=....................
catv 5,BasePos =offs:
prints sF2552048- > $1
3<> $1
< $2
seek $offs 0
while read adr typ blen dst - df1 - - df2 - - dfbm - - - -
do
expr "$adr" :: '^@%d' || { expr "$adr" :: '^%$' || continue; break; }
conv -D@ adr
let "blen<<=1, adr=$adr, adr<<=1"
b=10
case $dst in
x) b=16 ;;
b) b=2 ;;
esac
[ $3 -eq 1 -a $df2 != '"' ] && df1="$df2"
[ $3 -eq 2 -a $dfbm != '"' ] && df1="$dfbm"
case $typ in
w) base -$b df1 +w Hbuf ;;
L) base -$b df1 +L Hbuf ;;
S) conv '-t` ' df1
[ $dst == 0 ] && prints vs-F000$blen df1 "$df1"
[ $dst == m -a ${#df1} -lt blen ] && prints vs-$blen df1 "$df1"
base -w df1 +W Hbuf ;;
esac
catv $blen,Hbuf =$adr,,3
done
><<
return 0
}
ChangeMUee() {
local rub=00 offs=000000 nam=........ sp=00 sw=00 spsw=0
local adr=00000 typ=.... len=00000 flg=........
local val=.....................................
local f=............................................
catv 0 =1000,Hbuf: < $3
conv '-t& ' Hbuf
< $2
3<> $1
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Rubrik) rub=$Hbuf $4=$Hbuf
let "offs=(rub-1)*6"
catv $offs,5,BasePos =offs:
seek $offs 0
readl Hbuf
;;
A[0-9]*) val="$Hbuf"
conv -DA nam
while readl Hbuf
do
expr "$Hbuf" :: '^@' || break 2
expr "$Hbuf" :: '^@%d' || continue
conv -D@ Hbuf
for 16 adr typ len f f f f f f f f f flg f f f in $Hbuf
do break; done
let "len<<=1, adr=$adr, adr<<=1, (nam<<1)==adr" || continue
EEconvertEye eye "Hbuf:$val" $Hbuf || continue 2
[ $flg == SP ] && sp=$val
[ $flg == SW ] && sw=$val
catv $len,Hbuf =$adr,,3
continue 2
done
;;
esac
done
><<
[ sw -eq 1 ] && sp=0 spsw=2
[ sp -eq 1 ] && spsw=1
[ MUspsw -ne spsw ] && MUspsw=$spsw CopyCmuee
return 0
}
MkMUeeHtm() {
local r=0 e=0 n=$4 offs=000000
local adr=00000 len=00000 siga=..........
let "n<1" && n=1
catv $(([n-1]*6)),5,BasePos =offs:
< $3
seek $offs 0
readl Hbuf
seek + 0 offs
><
expr "$Hbuf" :: '^!' && r=e conv -D! Hbuf
> $1
echo '<html><head><title></title>%
<script language="JavaScript">%
function Toggle01(i)%
{%
var inh= i.value;%
if (inh=="0" || inh=="" || inh==" ")%
i.value= "1";%
else i.value= "0";%
i.blur();%
}%
</script>%012%c'
siga=siga.js
[ MUspsw -eq 2 ] && siga=sigabm.js
[ $r == e ] &&
echo "<script language=%"JavaScript%" %
src=%"data/$siga%" type=%"text/javascript%"></script>%
<script language=%"JavaScript%" %
src=%"data/sig.js%" type=%"text/javascript%"></script>%
%012%c"
echo '</head>%
<body bgcolor="#39458f" text="#ffd700" link="#ffd700" %
vlink="#ffd700" alink="#ffd700">%012%c'
[ $r == e ] && echo '<script language="JavaScript">Wr(' "%"$Hbuf%"" ');</script>%012%c'
catv '.<form name="Vis" action="mueep" method="POST"><pre><b>' /%n %
'.<input name="Rubrik" type="HIDDEN" value="' n '.">' /%n
[ $r == e ] && catv '.<font color="#000000">' %
'.<input name="Submit" type="SUBMIT" value="Submit">' %
'. ' %
'.<input name="Reset" type="BUTTON" value="Reset"' %
'. onClick="Dflt(1);">' %
'.</font>' /%n
[ $r == 0 ] && catv '.<h2>' Hbuf '.</h2>' /%n%n
< $3
seek $offs 0
while readl Hbuf
do
expr "$Hbuf" :e '^@%(.%)' || break
[ "$e" == : ] && {
conv -D@D: Hbuf
prints s27s "" "</b><font color=%"#ffffff%">$Hbuf</font><b>"
continue
}
conv -D@ Hbuf
for 3 adr len len in $Hbuf; do break; done
let "len<<=1" "adr=$adr" "adr<<=1"
catv $adr,$len,3 =Nn: 3<> $2
EEconvertTxt txt Nn $Hbuf
EEconvertHtm htm "$Nn" $Hbuf
done
[ $r == 0 ] && {
catv /%n%n '.<font color="#000000"><input name="Submit" type="SUBMIT" value="Submit">'
catv '. <input name="Reset" type="RESET" value="Reset"></font>' /%n
}
echo '</b></pre></form>%012%c'
[ $r == e ] && echo '<script language="JavaScript">Dflt(0);</script>%012%c'
echo '</body></html>%012%c'
><<
return 0
}
WebServer() {
sem -R$SemCfg:10000 || return 0
[ -e $Fstart ] && {
FormRead $Fstart
remove $Fstart
sem -R$SemHtm:10000 && { MkKontHtm $Fkonthtm; sem -r$SemHtm; }
sem -s$SemSigcgi
}
[ -e $Fnewip ] && {
FormRead $Fnewip
remove $Fnewip
CheckIP "$VBMip" || VBMip=$VBMip0
sem -R$SemHtm:10000 && { MkKontHtm $Fkonthtm; sem -r$SemHtm; }
sem -s$SemSigcgi
cmpv VBMip0 VBMip || {
sleep 5
VBMip0=$VBMip
WrChipIni IP ADDRESS $VBMip
sleep 2
system reboot
}
}
[ -e $Fcfgp ] && {
[ -s $Fcfgp ] && ReadCfg $Fcfgp
remove $Fcfgp
sem -R$SemHtm:10000 && { MkCfgHtm $Fcfghtm; sem -r$SemHtm; }
sem -s$SemSigcgi
}
[ -e $Fanruf ] && {
if [ -s $Fanruf ]
then FormRead $Fanruf || InpAnruf=
else InpAnruf=
fi
remove $Fanruf
[ MOisinit -eq 0 ] && MUdata=@MOnoinit: %
AnrufMsg="Modem-Initialisierung fehlgeschlagen!" %
InpAnruf=. AnrufZ=0
expr "$InpAnruf" :: '^[0-9W,PT]%{1,}$' &&
AnrufZ=dialout MUdata= Telnu=$InpAnruf
sem -R$SemHtm:10000 && { MkTelhfHtm $Ftelhfhtm $MUdata; sem -r$SemHtm; }
sem -s$SemSigcgi
}
[ -e $Ftelvf ] && {
remove $Ftelvf
sem -R$SemHtm:10000 && {
catv HTMtelvf1 > $Ftelvfhtm
MkTelCells $Ftelvfhtm
catv HTMtelvf2 >> $Ftelvfhtm
sem -r$SemHtm
}
sem -s$SemSigcgi
}
[ -e $Fmuee ] && {
local n=00000
catv 0 =n: < $Fmuee
n=$n ifset n || n=0
remove $Fmuee
[ -s C:\MUEE ] || CopyCmuee
case $n in
tomu|tovbm|none)
MUee=$n
sem -R$SemHtm:10000 || goend
catv HTMtelvf1 > $Fmueehtm
MkTelCells $Fmueehtm
catv HTMtelvf2 >> $Fmueehtm
;;
defaults)
CopyCmuee
sem -R$SemHtm:10000 || goend
cat A:\EE.HTM > $Fmueehtm
;;
*)
sem -R$SemHtm:10000 || goend
MkMUeeHtm $Fmueehtm C:\MUEE A:\DATA\EEBASE $n
;;
esac
sem -r$SemHtm
sem -s$SemSigcgi
}
[ -e $Fmueep ] && {
local sz=00000
fstat -sv sz $Fmueep
if let "sz>=2048"
then
MkMucFile C:\DATA.MUC $Fmueep || [ $? -gt 1 ] && CopyCmuee
remove $Fmueep
sem -R$SemHtm:10000 && { cat A:\EELF.HTM > $Fmueehtm; sem -r$SemHtm; }
else
MUee=tomu
[ -s C:\MUEE ] || CopyCmuee
ChangeMUee C:\MUEE A:\DATA\EEBASE $Fmueep Nn
remove $Fmueep
base -W +w < C:\MUEE | catv 2048,0 =5000,2048,3 3<> C:\DATA.MUC
sem -R$SemHtm:10000 && { MkMUeeHtm $Fmueehtm C:\MUEE A:\DATA\EEBASE $Nn
sem -r$SemHtm; }
fi
sem -s$SemSigcgi
}
sem -r$SemCfg
return 0
}
set -f
Fmuhtm='C:\MU.HTM'
Fsema='C:\SEMA'
Fstart='C:\CFG\START'
Fnewip='C:\CFG\NEWIP'
Fcfgp='C:\CFG\CFGP'
Fanruf='C:\CFG\ANRUF'
Ftelvf='C:\CFG\TELVF'
Fmuee='C:\CFG\MUEE'
Fmueep='C:\CFG\MUEEP'
Fkonthtm='C:\HTM\KONTAKT.HTM'
Fcfghtm='C:\HTM\CFG.HTM'
Ftelhfhtm='C:\HTM\TELHF.HTM'
Ftelvfhtm='C:\HTM\TELVF.HTM'
Fmueehtm='C:\HTM\MUEE.HTM'
Fc1='C:\1'
Fc2='C:\2'
Ftbl5='C:\TBL5.TXT'
Fcfgcfg='A:\CFG.CFG'
Fteltxt='A:\TEL.TXT'
MOauflegen='%t0%d%p%p+++%d%p%p %t4%OATH'
MOinit='AT AT%O AT&F %dATX3E0L1S0=0'
MOinitapp=' '
MOdialout='%t50%CATD%T'
MOabnehmen='%t40%CATA'
MOisinit=0
MOwahl=1
TPwahl=T
MUee=.....
MUee=none
MUspsw=0
prints vs70 EEmin
prints vs40 EEmax
EEdflt=00000000
catv /%r%n =RN:
N=0000000000
ext -b9600h1icocs N || Err "ext-Init fehlgeschlagen"
echo $N
[ -e "$Fsema" ] && {
base -l +16 SemBishrun < $Fsema
sem -c$SemBishrun
echo $SemBishrun:$?
}
SemBishrun=0 SemCgirun=1 SemCfg=2 SemHtm=3 SemSigbish=4 SemSigcgi=5
Nn="$SemBishrun $SemCgirun $SemCfg $SemHtm $SemSigbish $SemSigcgi"
echo $Nn
sem -g$SemSigbish ; echo $?
sem -g$SemSigcgi ; echo $?
catv /%0 =1500,,Ibuf
catv /%0 =1000,,Hbuf
N=0000000000
TOsec=0000000000
REip='%d%{1,3}%.%d%{1,3}%.%d%{1,3}%.%d%{1,3}'
VBMip0=192.168.111.222
VBMip=192.168.111.222
Telnu=0000000000000000000000000000000
InputLen=000
prints vs150 KatOffs
prints vs20 MUip
prints vs20 MUstation
prints vs20 MUpasswd
MUmoerr=0
prints vs20 VBMstation0
prints vs20 VBMstation
prints vs20 VBMpasswd
prints vs30 TblFolge
prints vs20 AnrufZ
prints vs30 AnrufMsg
prints vs30 InpAnruf
prints vs10 MUdata
local MOinittime=000000000000 MOring=00 MOringtime=000000000000
MOinittime=$SECONDS
local L_offs=000000 L_n=000 L_c=.... L_src=000000 L_x=....................
TblFolge="1 2 3 4 5 6 7 "
AnrufZ=0
Nn='116 239 246 116 245 252 116 223 176'
base -10 Nn +b Tconv
echo "$Tconv"
array TblTitle "1" "2" "Haupt-<br>Messwerte" "Alarmdaten" %
"PSS-<br>Geräte" "UNV-<br>Geräte" "UNB<br>BM1<br>MM" "Meßwerte2" "Ereignisse"
[ -s "$Fcfgcfg" ] && {
catv 0 =Hbuf: < $Fcfgcfg
expr "$Hbuf" :TPwahl '^%([TP]%)'
expr "$Hbuf" :MOwahl '^.%([01]%)'
expr "$Hbuf" :TblFolge '^..%([0-9 ]%{1,}%)'
expr "$Hbuf" :MOinitapp 'MOINIT:%(..*%)$' && MOinitapp=$MOinitapp
}
sem -s$SemBishrun
if [ -s "A:\DATA\EEBASE" -a '(' %
! -s "A:\EELF.HTM" -o %
! -s "A:\DATA\BASEPOS" -o %
! -s "A:\DATA\SIGA.JS" -o %
! -s "A:\DATA\SIGABM.JS" ')' ]
then
echo eebase: creating basepos ...
prints vs150 BasePos
L_n=0
< "A:\DATA\EEBASE"
while seek + 0 L_offs; readl Hbuf
do
expr "$Hbuf" :L_c '^:%(.%)' || continue
[ "$L_c" == '!' ] && let "L_src=L_offs+1"
let "++L_offs"
prints vs-6 L_offs $L_offs
catv L_offs =$L_n,6,BasePos
let "L_n+=6"
done
[ L_src -ne 0 ] && {
L_c=' '
seek $L_src 0
readl Hbuf
> "A:\DATA\SIGA.JS"
catv '/var SigSrc= Array(%n'
while readl Hbuf
do
expr "$Hbuf" :: '^@' || break
expr "$Hbuf" :: '^@%d%{3} %{1,}L %{1,}2 ' || continue
expr "$Hbuf" :Hbuf '%([^ %t]%{1,}%)$' || continue
conv '-t` ' Hbuf
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><
cat "A:\DATA\SIGA.JS" > "A:\DATA\SIGABM.JS"
}
><
catv BasePos > "A:\DATA\BASEPOS"
{
L_c=' '
>> "A:\DATA\SIGA.JS"
catv '/var Sig= Array(%n'
< "A:\DATA\SIGA.TXT"
while readl Hbuf
do
ifset Hbuf || continue
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><<
L_c=' '
>> "A:\DATA\SIGABM.JS"
catv '/var Sig= Array(%n'
< "A:\DATA\SIGABM.TXT"
while readl Hbuf
do
ifset Hbuf || continue
catv $L_c /%s Hbuf /%s ; L_c='/,%n'
done
catv '/);%n'
><<
}
else
[ -s "A:\DATA\BASEPOS" ] || : > "A:\DATA\BASEPOS"
catv 0 =BasePos: < "A:\DATA\BASEPOS"
fi
echo BasePos: $BasePos
[ -s "A:\DATA\EEBASE" -a ! -s "A:\EELF.HTM" ] && {
sem -s$SemBishrun
echo creating eelframe ...
L_n=0
> "A:\EELF.HTM"
echo '<html><head><title></title></head>%
<body bgcolor="#39458f" text="#ffd700" link="#ffd700"%
vlink="#ffd700" alink="#ffd700"><b>'
< "A:\DATA\EEBASE"
for L_offs in $BasePos
do
seek $L_offs 0
readl Hbuf
let "++L_n"
catv '.<a href="muee?' L_n '." target="EErf">' Hbuf '.</a><br><br>' /%n
done
catv '.<br><h3 align="center"><a href="HELP.HTM#mukonf" target="_blank">Hilfe</a></h3>' /%n
catv '.<br><h3 align="center"><a href="Tel.htm" target="_top">MU-Kontakt</a></h3>' /%n
catv '.<br><h3 align="center"><a href="muee?defaults" target="_top">Standard-Werte</a></h3>' /%n
catv '.<br><h3 align="center"><a href="Data.muc">Download .muc-Datei</a></h3>' /%n
catv '.<br>
<form action="mueep" method="POST" enctype="multipart/form-data">
<input type="SUBMIT" value=" Upload .muc-Datei ">
<input type="FILE" name="Upload" size="20" maxlength="7600" accept="*/*">
</form>' /%n
echo '</b></BODY></HTML>'
><<
}
for 2 L_c L_x in 1 MUEEHV 2 MUEEBM 0 MUEE
do
[ -s A:\DATA\$L_x ] && continue
sem -s$SemBishrun
echo creating A:\DATA\$L_x ...
MkMUee C:\MUEE A:\DATA\EEBASE $L_c
cat C:\MUEE > A:\DATA\$L_x
done
sem -s$SemBishrun
CopyCmuee
catv /%0 =1000,,Hbuf
MkTbl5data $Ftbl5 start
VBMip0=1.1.1.1
RdChipIni IP ADDRESS Hbuf && VBMip0=$Hbuf
VBMip=$VBMip0
VBMstation0=Station1
RdChipIni DEVICE NAME Hbuf && VBMstation0="$Hbuf"
VBMstation="$VBMstation0"
echo $VBMip
echo "'$VBMstation'"
if [ MOwahl -ne 0 ]
then WriteAT "$MOauflegen"
WriteAT "$MOinit" && MOisinit=1
else MOisinit=1
fi
while :
do
[ -e c:\exitbish ] && {
remove -sv c:\exitbish $Fc2
break
}
sem -s$SemBishrun
((++N))
sleep -m 700
sem -g$SemSigbish && WebServer
[ $AnrufZ == 0 ] && {
[ MOring -gt 0 ] && {
[ MOringtime -eq 0 ] && MOringtime=$SECONDS
let "$SECONDS-MOringtime>=30" && MOring=0 MOringtime=0
}
[ MOisinit -ne 1 ] && {
[ MOisinit -ne 0 ] && MOinittime=0
[ MOwahl -eq 0 ] && MOisinit=1 continue
let "$SECONDS-MOinittime<30" && continue
WriteAT "$MOauflegen"
WriteAT "$MOinit" && MOisinit=1
MOinittime=$SECONDS
[ MOisinit -ne 1 ] && MOisinit=0
continue
}
ext -p L_c || continue
[ MOwahl -eq 0 ] && { ext -ic; continue; }
ext -iT100it60id10i1000 Ibuf
catv $.,Ibuf =Hbuf:
catv '/[' Hbuf '/]'
GetMOmsgNr Hbuf && let "Hbuf&4" && let "++MOring>=3" &&
MOring=0 MOringtime=0 MUdata= AnrufZ=dialin
continue
}
MUanrufen $Telnu || MOisinit=2
[ $AnrufZ == c2written ] && AnrufZ=0 MOisinit=2
[ $AnrufZ == mucfgokay ] && AnrufZ=0 MOisinit=2 MUdata="@MUeedata:"
[ $AnrufZ != c1written ] && continue
AnrufZ=0 MkMUhtm
cat $Fc2 > $Fmuhtm
MUdata="@MUdata:"
MOisinit=2
done
sem -"d${SemBishrun}d${SemCgirun}d${SemCfg}d${SemHtm}d${SemSigbish}d${SemSigcgi}"
ext -
exit 0
RANDOM=1007
D=/usr/tmp
mkdirs $D
set Buf:05000
local f=0000 r=00000
for f to 1000 repeat
do
catv Buf >$D/$f
done
echo created
to 100 repeat
do
print -n .
for f to 1000 repeat
do
let "r=$RANDOM%5000"
catv /r =$r,,0 <>$D/$f
done
done
echo %nwritten
[ $# -gt 0 ] && exit 0
for f to 1000 repeat
do
remove $D/$f
done
echo deleted
Zeile() {
return 0
}
UseNot() {
expr "$Z" :: '^[ %t]%{0,}%%' &|
expr "$Z" :: '\[a-z]*section[{[]' &|
expr "$Z" :: '\[a-z]*section%*[{[]' &|
expr "$Z" :: '\chapter[{[]' && return 0
return 1
}
set Z:.300
set F:.50
set W:.50
V=v
> words.txt
for F in kap/*.tex mod/*.tex
do
[ -s "$F" ] || continue
print -u2 "%t$F"
< "$F"
while readl Z
do
UseNot && continue
if [ $V == V ]
then
expr "$Z" :: '\end{verbatim}' && V=v
continue
else
expr "$Z" :: '\begin{verbatim}' || goend
V=V continue
fi
while ifset Z
do
expr " $Z " :W ' %([a-zA-ZäöüßÄÖÜ][a-zA-Z0-9äöüßÄÖÜ]%{1,}%)[ ,.!:]' || break
expr " $Z " :Z ' [a-zA-ZäöüßÄÖÜ][a-zA-Z0-9äöüßÄÖÜ]%{1,}[ ,.!:]' = ''
catv W /%n
done
done
><
done
><
sortl -owords.txt words.txt
cat words.txt | uniq > words.txt
exit 0
Zeile() {
return 0
}
UseNot() {
expr "$Z" :: '^[ %t]%{0,}%%' &|
expr "$Z" :: '\[a-z]*section[{[]' &|
expr "$Z" :: '\[a-z]*section%*[{[]' &|
expr "$Z" :: '\chapter[{[]' && return 0
return 1
}
set Z:.300
set F:.50
set W:.50
V=v
> words.txt
for F in kap/*.tex mod/*.tex
do
[ -s "$F" ] || continue
print -u2 "%t$F"
< "$F"
while readl Z
do
UseNot && continue
if [ $V == V ]
then
expr "$Z" :: '\end{verbatim}' && V=v
continue
else
expr "$Z" :: '\begin{verbatim}' || goend
V=V continue
fi
while ifset Z
do
expr " $Z " :W ' %([a-zA-ZäöüßÄÖÜ][a-zA-Z0-9äöüßÄÖÜ]%{1,}%)[ ,.!:]' || break
expr " $Z " :Z ' [a-zA-ZäöüßÄÖÜ][a-zA-Z0-9äöüßÄÖÜ]%{1,}[ ,.!:]' = ''
catv W /%n
done
done
><
done
><
sortl -owords.txt words.txt
cat words.txt | uniq > words.txt
exit 0
Escape() {
local c=. h=... spez="${{1}"
expr "${{1}" :spez '[a-zA-Z_0-9&=.-]' += ''
ifset spez || return 0
conv '-d%' spez
[ $. -ge 0 ] && expr "${{1}" :$1 '%%' += '%25'
while ifset spez
do
catv 1,spez =c
conv "-d$c" spez
base -b c +16 h
expr "${{1}" :$1 "$c" += '%'$h
done
return 0
}
CkPasswd() {
[ 0${#1} -lt 3 -o 0${#1} -gt 15 ] && return 1
expr "$1" :: '[^!-~]' && return 1
return 0
}
RxTxRun() {
[ $# -eq 0 ] && {
extern $ps_cmd | grep -qm 'rxtx.bish[ %t]%{1,}run'
return
}
[ "$1" == sigterm ] && {
local pid
extern $ps_cmd | pid=$( grep -m 'rxtx.bish[ %t]%{1,}run' ) || return
catv pid /%n | read - pid -
expr "$pid" :: '^[0-9]%{1,}$' || return
kill $pid
}
return
}
CkChStation() {
local sta="$2" gid=0000 aid=0000 buf:.200
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
buf="$(- grep -m "^$gid $aid " $Fstation )" || return
expr "$buf" :buf "^$gid $aid "'%(.*%)$' || return
cmpv buf sta && return 0
cat $Fstation | {
> $Fstation
while readl buf
do
expr "$buf" :: "^$gid $aid " || { catv buf /%n; continue; }
print -r "$gid $aid $sta"
done
><
}
return 0
}
AddStation() {
local gid=0000 aid=0000
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
print -r "$gid $aid $2" >> $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
return 0
}
CkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 min=0000
local bez; prints vs50 bez
mkdirs $2
[ -e $ali ] || : > $ali
< $ali
while read dali bez
do
[ "$bez" == "$3" ] && { ><; $1=$2/$dali; return 0; }
let "min==0&&dali-dali0>1" && let "min=dali0+1"
dali0=$dali
done
><
let "++dali, min==0" && $1=$2/$dali
let "min>0" && $1=$2/$min
return 1
}
MkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 w=0
local bez; prints vs50 bez
mkdirs $2 $1
expr "$1" :dali0 '/%([0-9]%{1,4}%)$'
[ -s $ali ] || { catv dali0 ". $3" /%n > $ali; return 0; }
cat < $ali | {
> $ali
while read dali bez
do
[ dali -gt dali0 -a w -eq 0 ] && w=1 catv dali0 ". $3" /%n
catv dali ". " bez /%n
done
[ w -eq 0 ] && catv dali0 ". $3" /%n
><
}
return 0
}
FormInfoRead() {
local g=g a=a i=i n=000 nam=.................... tmp=../tmp/newtmp
local ctv=0000 ctv0=0000 sta=....................
local grp; prints vs50 grp
local anl; prints vs50 anl
expr "$1" :: '^[0-9]%{2,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>5000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
> $tmp
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
I[0-9]*)
Hbuf=$Hbuf
[ ${#Hbuf} -eq 0 ] && goend
[ $nam == I$Gid ] && grp="$Hbuf" unset g
[ $nam == I$Aid ] && anl="$Hbuf" unset a
[ $nam == I$Iid ] && sta="$Hbuf" unset i
[ $nam == I$Cid ] && ctv="$Hbuf"
;;
W[0-9]*)
conv "-t${CR}${ESC}t$NL${CA}"'t `' Hbuf
;;
P[0-9]*)
expr "$Hbuf" :: '^®[^®]%{3,}®$' && { conv -d® Hbuf; goend; }
CkPasswd "$Hbuf" || { ><; remove $tmp; PutErrHtm "Password wrong!"; }
catv Hbuf | extern ./mailcode -en -c "$MC64" | catv 0 =Hbuf:
;;
esac
expr "$nam" :: '^[IWP][0-9]%{1,3}$' || continue
catv 1,3,nam "/ " Hbuf RN
done
><
[ -n "$g$a$i" ] && { remove $tmp
PutErrHtm "Group, System and Sys-ID are essential!"; }
expr "$grp" :: '^[!* ]' && { remove $tmp; PutErrHtm "!* not allowed: »$grp«"; }
CkGA Gdir $Ddb "$grp" || MkGA $Gdir $Ddb "$grp" && MkGrpArr $Fgrpajs
CkGA Adir $Gdir "$anl" || MkGA $Adir $Gdir "$anl" && AddStation $Adir "$sta"
[ -s $Adir/i ] && ctv0="$(- grep -m "^$Cid " $Adir/i )" && {
expr "$ctv0" :ctv0 '^[0-9]%{1,} %([0-9]%{1,}%)' || ctv0=0
[ ctv -ne ctv0 -a CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
}
cat $tmp > $Adir/i
remove $tmp
CkChStation $Adir "$sta" || PutErrHtm "Change to »$sta« failed."
return 0
}
GetGrpDir() {
[ -s $Ddb/$Fali ] || return 1
local id=0000 inh
case $1 in
first)
catv 5000,0 =Hbuf: < $Ddb/$Fali
expr "$Hbuf" :Hbuf '%([0-9]%{1,} %)[^%n]*%n' + '%1'
set +f
for id in $Hbuf
do
: $Ddb/$id/[1-9]*/i
[ "$]" -gt 0 ] && { set -f; $2=$Ddb/$id; return 0; }
done
set -f
;;
get)
< $Ddb/$Fali
while read id inh
do
cmpv $2 inh || continue
$2=$Ddb/$id; ><; return 0
done
><
;;
esac
return 1
}
GetAnlDir() {
local id=0000 inh
[ -s $2/$Fali ] || return 1
< $2/$Fali
while read id inh
do
cmpv $1 inh || continue
$1=$2/$id; ><; return 0
done
><
return 1
}
MkGrpArr() {
local r=0 n=000 i=000 id=0000 grp
Lock lockga
[ -e $Ddb/$Fali ] || : > $Ddb/$Fali
[ $# -ge 2 ] && r=1
[ $# -lt 2 ] && Newgrparr=1
> $1
< $Ddb/$Fali
while readl grp
do let ++n; done
echo "var GrpAn$2= $n;"
[ n -gt 0 ] && echo "var GrpArr$2= new Array($n);"
[ n -eq 0 ] && echo "var GrpArr$2= new Array(1);%nGrpArr${2}[0]= %"%";"
i=0
seek 0 0
set +f
while read id grp
do
[ $# -ge 2 ] && {
grp=' '
: $Ddb/$id/[1-9]*/fail
[ $] -gt 0 ] && r=0 grp='! '
}
print -r "GrpArr${2}[$i]= %"$grp%";"
let ++i
done
><<
set -f
Lock lockga del
return $r
}
SetPass() {
local pw="$2"
WrLog "Password operation: $1" "change"
[ 0${#1} -lt 1 -o 0${#2} -lt 3 -a 0${#2} -gt 0 ] &&
PutErrHtm "User/Pass length not accepted."
[ 0${#2} -eq 0 ] && pw='`{!@#$%^vI*")7Q'
expr "$1" :: '[^a-zA-Z0-9_]' && PutErrHtm "User name contains wrong chars."
expr "$1" :: '^[a-zA-Z]' || PutErrHtm "User name must begin with [a-zA-Z]."
cd ../adm
htpasswd -bm .wmspw "$1" "$pw" 2>/dev/null ||
PutErrHtm "Password operation failed."
cd -
return 0
}
PutTxt2Htm() {
catv Doctype '/<head><title>TXT2HTML</title>%n' Meta
print -r '</head>
<body class="main"><div class="stat1"><form><b>
<input class="butt" type="button" value="Back" onClick="window.back();">
</b></form></div>'
print -rn '<div class="stat"><pre><b>'
cat "$1"
print -r '</b></pre></div></body></html>'
return 0
}
FormAdmBakRead() {
local boundary="$CONTENT_TYPE" arch=../tmp/db.tar
local sz:010 bp6:010 z:.500
expr "$boundary" =:boundary 'boundary=%(..*%)' || return 1
let "bp6=${#boundary}+8"
catv 1000,0 | {
while readl z
do
ifset z || break
done
catv 0 > $arch
catv ,.
}
[ $. -le 0 ] && { remove -s $arch; return 2; }
cat >> $arch
fstat -sv sz $arch
[ sz -lt bp6 ] && { remove -s $arch; return 3; }
catv -$bp6:,,0 =z: < $arch
expr "$z" :: "^%r%n--$boundary--%r%n%$" || { remove -s $arch; return 4; }
let "sz-=bp6"
fstat +s $sz $arch || { remove -s $arch; return 5; }
return 0
}
FormAdmRead() {
local ja=---- mo=-- ta=-- st=-- mi=-- se=00 ip=999.888.777.666
local tp=T md=0 rt=0 ct=0 ctb=0 as=0 sig=0
local nam=.................... user=................
expr "$1" :: '^[0-9]%{1,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>2000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Shut) : > ../tmp/rxtx
sleep -m 800
RxTxRun && RxTxRun sigterm
[ "$OsTyp" == FreeBSD ] && {
echo "Content-type: text/plain%n"
extern ../adm/syscmd.bish shutdown "shutdown -h now"
sleep 10
return 2
}
;;
RxTx) rt=1 ;;
Auto) as=1 ;;
Term) sig=1 ;;
Modem) md=1 ;;
Puls) tp=P ;;
Conn) ct=1 ;;
Build) ctb=1 ;;
MInit) cmpv MOinitapp Hbuf || MOinitapp="$Hbuf" Uvars MOinitapp ;;
Day) ta=$Hbuf ;;
Mon) mo=$Hbuf ;;
Year) ja=$Hbuf ;;
Hour) st=$Hbuf ;;
Min) mi=$Hbuf ;;
IP)
CheckIP "$Hbuf" || PutErrHtm "IP address: »$Hbuf«"
ip=$Hbuf
;;
User)
for ip in admin new vbm root adm cie sam selotronic cfg config pass
do cmpv -i ip Hbuf && PutErrHtm "User name not applicable."; done
user="$Hbuf" ;;
Pass) [ -n "$user" ] && SetPass "$user" "$Hbuf" ;;
AdmPw) [ -n "$Hbuf" ] && SetPass admin "$Hbuf" ;;
NewPw) [ -n "$Hbuf" ] && SetPass new "$Hbuf" ;;
AdmLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne AdmLogSz ] && AdmLogSz=$Hbuf Uvars AdmLogSz
;;
SysLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne SysLogSz ] && SysLogSz=$Hbuf Uvars SysLogSz
;;
esac
done
[ "$TPwahl" != "$tp" ] && TPwahl=$tp Uvars TPwahl
[ MOwahl -ne md ] && MOwahl=$md Uvars MOwahl
[ RxTxAuto -ne as ] && RxTxAuto=$as Uvars RxTxAuto
[ ConnTest -ne ct ] && ConnTest=$ct Uvars ConnTest
[ CTbuild -ne ctb ] && CTbuild=$ctb Uvars CTbuild
if RxTxRun
then
[ rt -gt 0 ] && goend
: > ../tmp/rxtx
sleep -m 800
[ sig -gt 0 ] && RxTxRun && RxTxRun sigterm
else
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
remove -s ../tmp/rxtx
[ rt -eq 0 ] && goend
extern ../adm/rxtx.bish
sleep -m 200
fi
expr "$ta$mo$ja$st$mi$se" :: '^[0-9]%{7,14}$' && {
: $ta $mo $ja $st $mi
[ 0$} -eq 5 ] && extern ../adm/syscmd.bish date $ta $mo $ja $st $mi
}
return 0
}
AdmAction() {
local id=0000 nam=.......... obj=..............................
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
file) obj="$Hbuf" ;;
act)
case "$Hbuf" in
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj ;;
trun) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
: > $obj ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
bak)
cat uvars.bish > $Ddb/uvars.bish
extern tar chf $obj $Ddb
WrLog "File:$obj" "created" ;;
down) WrLog "File:$obj" "downloaded"
expr "$obj" :obj '^%.%./%(..*%)$'
echo "Location: http://$SERVER_ADDR:$SERVER_PORT/$obj%n"
return 0 ;;
upda) extern tar xepf $obj || PutErrHtm "Backup Update failed"
WrLog "File:$obj" "database updated from file"
[ -s $Ddb/uvars.bish ] && cat $Ddb/uvars.bish > uvars.bish
;;
esac
;;
esac
done
echo "Content-type: text/html%n"
MkAdmHtm
return 0
}
MkAdmHtm() {
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
catv Doctype '/<head><title>VBM admin</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" type="text/javascript">
function GrpSel(sel) { return; }
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><b><font size="+2">'"VBM Administration"'</font>
</b><br><br>
'
extern /bin/date -u +'%A, %e. %b. %Y %X %Z'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Files</u></center>%c'
for 6 titel file act action iv script in %
ADMLOG $Fadmlog log Display 2 adm %
ADMLOG $Fadmlog src Source 2 adm %
ADMLOG $Fadmlog trun Truncate 2 adm %
SYSIDTXT $Fstation log Display 2 adm %
SYSIDTXT $Fstation src Source 2 adm %
CONNTEST $Fconntest log Display 2 adm %
CONNTEST $Fconntest src Source 2 adm %
PASSWORD ../adm/.wmspw src Source 2 adm %
BACKUP ../tmp/db.tar bak Create 0 adm %
BACKUP ../tmp/db.tar down Download 2 adm %
BACKUP ../tmp/db.tar del Delete 3 adm %
BACKUP ../tmp/db.tar upda !Update! 2 adm
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s14- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=admact' %
'&file='"$Hbuf" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
unset titel titel0 file act action iv script exist s
local w=00 n=- siz=000 max=000 nam=........ typ=........
local txt=.............................. val=..............................
local ja=2002 mo=12 ta=31 st=24 mi=60 se=60 rxtx=0 puls=0
systime val
ctime ja mo ta st mi se $val
[ "$TPwahl" != T ] && puls=1
RxTxRun && rxtx=1
echo '</b></pre></div>
<div class="dctlm"><form name="af" action="/cgi/adm.cgi" method="POST"><pre><b>%c'
for 8 txt w nam typ val siz max n in %
" Shutdown " 24 Shut checkbox "0" 0 0 ' ' %
" RxTx daemon run " 24 RxTx checkbox "$rxtx" 0 0 ' ' %
" RxTx SIGTERM " 24 Term checkbox "0" 0 0 ' ' %
" RxTx auto start " 24 Auto checkbox "$RxTxAuto" 0 0 ' ' %
" Connect test " 24 Conn checkbox "$ConnTest" 0 0 ' ' %
" Build Conn test " 24 Build checkbox "$CTbuild" 0 0 ' ' %
" Modem mode " 24 Modem checkbox "$MOwahl" 0 0 ' ' %
" Pulse dial " 24 Puls checkbox "$puls" 0 0 ' ' %
"Modem init append " 24 MInit text "$MOinitapp" 22 30 ' ' %
"DD MM YYYY hh mm " 24 Day text "$ta" 2 2 '-' %
" " '' Mon text "$mo" 2 2 '-' %
" " '' Year text "$ja" 4 4 '-' %
" " '' Hour text "" 2 2 '-' %
" " '' Min text "" 2 2 ' ' %
" IP " 24 IP text "$VBMip" 15 0 ' ' %
" User + Pass " 24 User text "" 15 15 '-' %
" " '' Pass password "" 15 15 ' ' %
" Admin Pass " 24 AdmPw password "" 15 15 ' ' %
" New Pass " 24 NewPw password "" 15 15 ' ' %
" AdmLogSize max " 24 AdmLs text "$AdmLogSz" 6 6 ' ' %
" SysLogSize max " 24 SysLs text "$SysLogSz" 4 4 '-'
do
case $typ in
text|password)
se= [ max -eq 0 ] && max=$siz se='onFocus="this.form.'"$nam"'.blur();"'
prints s${w}ss$n "$txt" '<input name="'"$nam"'" type="'"$typ"'"' %
'value="'"$val"'" size="'"$siz"'" maxlength="'"$max"'"'"$se"'>'
;;
checkbox)
[ val -gt 0 ] && val=checked
prints s${w}ss$n "$txt" '<input class="butt" name="'"$nam" %
'" type="'"$typ"'"'" $val>"
;;
esac
done
echo '</b></pre></form>'
print -r '<form action="/cgi/adm.cgi" method="POST" enctype="multipart/form-data">
<br><center><b><input class="butt" type="SUBMIT" value=" Upload Backup file: ">
<input class="butt" type="FILE" name="UpLd"
size="40" maxlength="30000000" accept="*/*">'
echo '</b></center></form></div><br><tt><font color="#d0d0d0">'
uname
echo "- $SERVER_SOFTWARE=$SERVER_ADDR:$SERVER_PORT - $REMOTE_ADDR<br> "
echo '</font></tt></body></html>'
return 0
}
MkInfoFrameset() {
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
print -r '</head>
<frameset rows="*,77" bordercolor="#ffd700" border="2">
<frame name="Info" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="InfoButtons" src="/htm/infobuttons.htm"
scrolling="no" frameborder="0" marginwidth="30" marginheight="10">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
Ee2Muc() {
local ft=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
local V=00 v=00 sn=..............................
Hbuf="$(- extern /bin/date -u +'%A, %e.%b.%Y %X' )"
fstat -mv ft "$1"
ctime ja mo ta st mi se $ft
< "$1"
catv $((962<<1)),2,0 =ft:
catv $((965<<1)),16,0 =sn:
><
base -w ft +10 ft
let "V=ft>>8, v=ft&255"
base -W sn +w sn
conv -d sn
expr "$sn" :: '[^JY0-9.-]' && sn=YY000000-000.000
prints s-48s- "Konfiguration file MU1000C :" "$RN"
prints s-48s- "Work.-No. : $sn" "$RN"
prints s50s50s50- "$RN" "$RN" "$RN"
prints s-48s- "Project : VBM" "$RN"
prints s-48s- "Firmware : Version $V.$v" "$RN"
prints s-48s- "Pfad : data.muc" "$RN"
prints s-48s- "Version : 1.23" "$RN"
prints s-48s- "Prüfungsdatum: $ta.$mo.$ja $st:$mi" "$RN"
prints s-48s- "Memo :" "$RN"
prints s-48s- "VBM created" "$RN"
prints s-48s- "$Hbuf" "$RN"
to $((100-13)) repeat
do
prints s50- "$RN"
done
base -W +w < "$1"
return 0
}
MkStatTbl() {
local kat=00000 num=00000 typ=00000 nam:.20 inh:.200
echo "<div class=%"$2%">"
[ "0${#5}" -gt 0 ] && echo "<h1><u>$5</u></h1>"
[ $1 -gt 1 ] && echo "<pre><b>%c"
while read kat num typ nam inh
do
conv '-t` '"$Tconv" nam inh
expr "$nam" :nam '<' += '<'
expr "$inh" :inh '<' += '<'
[ "$nam" != - ] && nam="$nam "
[ "$nam" == - ] && nam=
expr "$typ" :: 't' && catv '/<ul>%n'
expr "$typ" :: 'n' && catv /%n
catv ".$3" nam inh ".$4" /%n
expr "$typ" :: 'N' && catv /%n
expr "$typ" :: 'T' && catv '/</ul>%n'
done
[ $1 -gt 1 ] && echo '</b></pre>'
[ $1 -eq 1 ] && echo '<form><b><input class="butt" type="button" value="Back" onClick="window.back();"></b></form>%c'
echo "</div>"
return 0
}
MkStatHtm() {
base -10 Tconv +b Tconv
local n=000 class=stat1 fa='<h3>' fb='</h3>'
local title=........................................
catv Doctype '/<head><title>MU-Status</title>%n' Meta
print -r '</head><body class="main">'
for n to 20 repeat
do
ifset TblTitle$n || break
title="$TblTitle[n]"
[ "$title" == '-' ] && continue
[ "$title" == ' ' ] && title=
class=stat fa= fb=
[ n -eq 1 ] && class=stat1 fa='<h3>' fb='</h3>'
grep "^$n"'[ %t]' $1 | MkStatTbl $n $class "$fa" "$fb" "$title"
done
echo '</body></html>'
return 0
}
XmsgExit() {
RxTxMsg="FAIL: $1" Uvars RxTxMsg
echo "Status: 204 No Content%n"
exit 0
return 0
}
CallSys() {
local pw:9.16 nam=.......... adir=....................
local iph=.............................. ipw=....................
RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ RxTxAuto -gt 0 ] && {
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
XmsgExit "RxTx process still not running."
}
XmsgExit "RxTx process not running."
}
RxTxMsg="RXTX:" Uvars RxTxMsg
Hbuf="$1"
conv '-t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) adir="$Hbuf" ;;
pass) pw="$Hbuf" ;;
act)
[ "$Hbuf" == quit ] && {
[ MUcall -gt 0 -a MUcall -le 9 ] && MUcall=-1 Uvars MUcall
return 0
}
[ MUcall -gt 0 -a MUcall -le 9 -o MUcall -lt 0 %
-o MUcall -ge 30 -a MUcall -le 39 ] && XmsgExit ""
GetIval Hbuf $Fid "$adir" || XmsgExit "Phone number not found."
iph="$Hbuf"
CkTelnu "$iph" || XmsgExit "Phone wrong: »$iph«"
GetIval Hbuf $Pid "$adir" || XmsgExit "Password not found."
ipw="$Hbuf"
expr "$pw" :: '^%t%t%t' || {
expr "$pw" :: '^...' || XmsgExit "Password wrong"
expr "$ipw" :: '^...' || XmsgExit "iPassword wrong: »$ipw«"
catv ipw | extern ./mailcode -dns -c "$MC64" | catv 0 =ipw:
cmpv ipw pw || XmsgExit "Password does not match"
MUcall=02
}
MUdir=$adir Uvars MUdir
Telnu=$iph Uvars Telnu
[ MUcall -ne 2 ] && MUcall=01
Uvars MUcall
;;
esac
done
return 0
}
MkCtlhHtm() {
local code="$MUcall" msg:.50
msg=STAT
[ code -ge 20 -a code -le 29 ] && msg=FAIL
[ code -ge 11 -a code -le 12 ] && msg=OKAY
let "code+=0"
case "$code" in
-1) msg="$msg: [$code] User quit.";;
0) msg="$msg: [$code] Default state.";;
11) msg="$msg: [$code] RxTx got data.";;
12) msg="$msg: [$code] RxTx configured.";;
16) msg="$msg: [$code] Connection tested.";;
17) msg="$msg: [$code] Modem initialized.";;
18) msg="$msg: [$code] Data received.";;
20) msg="$msg: [$code] RxTx error.";;
21) msg="$msg: [$code] RxTx get data failed.";;
22) msg="$msg: [$code] RxTx config failed.";;
26) msg="$msg: [$code] Connect test failed.";;
28) msg="$msg: [$code] Dial in failed.";;
29) msg="$msg: [$code] RING event broken.";;
30) msg="$msg: [$code] RxTx daemon exited.";;
36) msg="$msg: [$code] Testing connection.";;
37) msg="$msg: [$code] Modem initialization.";;
38) msg="$msg: [$code] Incoming call.";;
39) msg="$msg: [$code] RING event.";;
*) msg="$msg: RxTx code: »$code«";;
esac
expr "$RxTxMsg" :: '^FAIL:' && {
catv .FAIL =msg
[ "$RxTxMsg" != "FAIL: " ] && msg="$RxTxMsg"
RxTxMsg="RXTX:" Uvars RxTxMsg
}
print -r '<html><head><title></title></head><body><form>
<input name="CtlhInp" type="hidden" value="'"$msg"'">
</form><script language="JavaScript" type="text/javascript">
parent.frames[0].focus();
</script></body></html>'
return 0
}
MkCtlFrameset() {
catv Doctype '/<head><title>VBM System-Directory</title>%n' Meta
print -r '</head>
<frameset cols="100%,*" bordercolor="#d0d0d0" border="0">
<frame name="Ctlv" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="Ctlh" src="/cgi/main.cgi?req=ctlh"
scrolling="no" frameborder="0" marginwidth="0" marginheight="0">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
CtlAction() {
local id=0000 nam=.......... obj=..............................
local gid=0000 grp=$obj$obj anl=$obj$obj adir=$obj
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) obj="$Hbuf" adir="$obj"
[ -d "$obj" ] || PutErrHtm "Directory not found: »$obj«" ;;
file) obj="$Hbuf" expr "$obj" :adir '/[^/]%{1,}$' = '' ;;
grp) grp="$Hbuf" ;;
anl) anl="$Hbuf" ;;
act)
case "$Hbuf" in
delete)
expr "$obj" :id '%([0-9]*%)$'
expr "$obj" :Hbuf '[0-9]*$' = $Fali
grep -v "^$id " $Hbuf | cat > $Hbuf
extern rm -rf $obj
WrLog "System:$obj [$grp : $anl]" "removed"
expr "$obj" :gid '%([0-9]*%)/[0-9]*$'
grep -v "^$gid $id " $Fstation | cat > $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
[ -s $Hbuf ] && break
expr "$obj" :Hbuf '[0-9]*/[0-9]*$' = $Fali
grep -v "^$gid " $Hbuf | cat > $Hbuf
expr "$obj" :Hbuf '/[0-9]*$' = ''
extern rm -rf $Hbuf
WrLog "Group:$Hbuf [$grp]" "removed"
;;
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj
expr "$obj" :: '/conn$' &&
[ CTbuild -ne 1 ] && CTbuild=1 Uvars CTbuild
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
set) : > $obj
[ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
stat) echo "Content-type: text/html%n"
MkStatHtm $obj
return 0 ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
down) echo "Content-type: application/octet-stream%n"
Ee2Muc $obj
return 0 ;;
esac
;;
esac
done
echo "Status: 204 No Content%n"
return 0
}
PutFileDate() {
[ -f "$1" ] || { echo "</b>--.--.---- --:-- -----<b>%c"; return 0; }
local ft=0000000000 sz=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
fstat -msv ft sz "$1"
ctime ja mo ta st mi se $ft
catv ta /. mo /. ja '/ ' st /: mi
prints s8- $sz
ft=1 [ sz -gt 0 ] && ft=2
return $ft
}
MkCtlHtm() {
[ -d "$3" ] || PutErrHtm nohdr "Directory not found: »$3«"
[ -f "$3/i" ] || PutErrHtm nohdr "File not found: »$3/i«"
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
local grp=$titel$titel anl=$titel$titel gid=0000 aid=0000
expr "$3" :aid '%([0-9]%{1,}%)$'
expr "$3" :gid '%([0-9]%{1,}%)/[0-9]%{1,}$'
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" src="/js/ctl.js" type="text/javascript">
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><form><b><font size="+2">'"$1 : $2 "'</font>
<input class="butt" type="button" value="Delete"
onClick="DelSys('''"$3"''','''"$1"''','''"$2"''');">
<input class="butt" type="button" value="Rename"
onClick="void(prompt(''Rename dummy. Group : System.\r\nDelimiter is » : «'','''"$1 : $2"'''));">
</b></form>
'
extern /bin/date -u +'%A, %e. %b. %Y %X'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Flags and Files</u></center>%c'
Hbuf="$1" Escape Hbuf; grp="$Hbuf"
Hbuf="$2" Escape Hbuf; anl="$Hbuf"
for 6 titel file act action iv script in %
FAIL $3/fail del Unset 3 main %
FAIL $3/fail set Set 0 main %
FAIL $3/fail src Source 2 main %
OKAY $3/okay del Unset 3 main %
OKAY $3/okay set Set 0 main %
CFGLOCK $3/lock del Unset 3 new %
CFGLOCK $3/lock set Set 0 new %
CONNTEST $3/conn log Display 2 main %
CONNTEST $3/conn src Source 2 main %
CONNTEST $3/conn del Delete 3 adm %
INFOSET $3/i log Display 2 main %
INFOSET $3/i src Source 2 main %
STATE $3/stat stat Display 2 main %
STATE $3/stat src Source 2 main %
CONFIG $3/eepr down Download 2 main %
LOG $3/log log Display 2 main %
LOG $3/log src Source 2 main %
LOG $3/log del Delete 2 new
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s11- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=ctlact' %
'&file='"$Hbuf"'&grp='"$grp"'&anl='"$anl" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
echo '</b></pre></div>
<div class="dctl"><form><br>Password<b>
<input name="ConfPass" type="password" value="" size="15" maxlength="15">
<input class="butt" type="button" value="Call (configure)"
onClick="CallSys(1,'''"$3"''',this.form.ConfPass.value);">
<input class="butt" type="button" value="Call (get data)"
onClick="CallSys(1,'''"$3"''',''\t\t\t'');">
<a href="javascript:void(LedAction(1))">
<img name="led" align="middle" src="/img/ledge0.jpg" width="21" height="21"
hspace="5" vspace="5" border="0"></a>
<br><br>
<input class="butt" type="button" value="Compose configuration"'
[ -s "$3/eepr" ] &&
echo 'onClick="top.location.href=''/cgi/muee.cgi?eemain.'"$gid.$aid"''';">'
[ -s "$3/eepr" ] ||
echo 'onClick="alert(''This system directory contains no config data.'');">'
echo '
<input class="butt" type="button" value="Reload"
onClick="top.location.reload();">
<input class="butt" type="button" value="Close"
onClick="top.close();">
<input class="butt" type="button" value="Help"
onClick="Help(''#sysctl'');">
</b></form></div>
</body></html>'
return 0
}
PutSysTblTxt() {
case "$1" in
head)
print -r '
<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">
<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<font color="#ff9966" size="-1">State</font>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System name</font>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System type</font>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">Site location</font>
</td></tr></table>
<font color="#000000"><hr noshade width="100%" size="1"></font>'
;;
tail)
print -r '
<br><br><br>
<font color="#000000" size="-2">
> Click on state to show system state informations<br>
> Click on system text to show system informations<br>
</font>'
;;
esac
return 0
}
PutSysTbl() {
local ctlhref="javascript:MkWinAnlCtl('$2','$3');"
local newhref="javascript:MkWinAnlNew('$2','$3');"
local _3='<font size="-1">'"$3"'</font>'
local _4='<font size="-1">'"$4"'</font>'
local _5='<font size="-1">'"$5"'</font>'
local color='/img/ok.jpg'
[ "$1" == '!' ] && color='/img/fail.jpg'
print -r '<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<a class="aanl" href="'"$ctlhref"'">
<img src="'"$color"'" border="0" width="29" height="32"></a>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_3 "'</a></b>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_4 "'</a></b>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_5 "'</a></b>
</td></tr>'
return 0
}
MkAnlHtm() {
local ali=$1/$Fali id=0000 fail=' ' faila=0 ifile=................
local ginh=........................................
local ainh=........................................
local oinh=........................................
local tinh=........................................
local gdir="$1"
[ -z "$1" ] && gdir=.. ali=./null
[ -d "$gdir" ] || PutErrHtm nohdr "Directory not found: »$gdir«"
[ -f "$ali" ] || PutErrHtm nohdr "File not found: »$ali«"
catv Doctype '/<head><title>VBM SysTable</title>%n' Meta
print -r %
'<script language="JavaScript" src="/js/anl.js" type="text/javascript"></script>
</head><body class="main">'
PutSysTblTxt head
print -r %
'<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">'
< $ali
while read id -
do
ifile=$gdir/$id/i
[ -s $ifile ] || continue
fail=' '
[ -f $gdir/$id/okay ] && fail='+'
[ -f $gdir/$id/fail ] && fail='!'
local g=g a=a o=o t=t
5< $ifile
while read -u5 id Hbuf && [ -n "$g$a$o$t" ]
do
[ id -eq Gid ] && ginh="$Hbuf" unset g
[ id -eq Aid ] && ainh="$Hbuf" unset a
[ id -eq Oid ] && oinh="$Hbuf" unset o
[ id -eq Tid ] && tinh="$Hbuf" unset t
done
><
PutSysTbl "$fail" "$ginh" "$ainh" "$tinh" "$oinh"
done
><
[ -z "$1" ] &| expr "$ifile" :: '^%.%.%.' && {
echo --
MkGrpArr $Fgrpajs
Failall=0
MkGrpArr $Fgrpaejs Err && Failall=1
Uvars Failall
}
print -r '</table>'
PutSysTblTxt tail
print -r '
<script language="JavaScript" type="text/javascript">
if ('"0$Update"'>0) parent.frames[2].location.reload();
window.setTimeout(''parent.frames[2].SetSel("anl"); parent.frames[2].SetSelOpt("'"$ginh"'",'"$Failall"');'',1500);
</script>
</body></html>'
[ Update -ne 0 ] && Update=0 Uvars Update
return 0
}
GetInfoZ() {
local id=000 s=0
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
$2=''
return 1
}
MkInfoHtm() {
[ -s $Finfobase ] || PutErrHtm nohdr "File not found: »$Finfobase«"
local n=00 name=........
local typ=.... id=000 len=00 max=00 flg=...
local dflt=....................
local text=...........................................................
catv Doctype '/<head><title>VBM-MU-Dataset</title>%n' Meta %
'/<script language="JavaScript" type="text/javascript">%n' %
'/function GrpSel(sel) {%n' %
'/ document.forms[0].I' Gid '/.value=%n' %
'/ sel.options[sel.selectedIndex].text.slice(2);%n' %
'/}%n' %
'/</script>%n' %
'/</head>%n' %
'/<body class="main" text="#ffd700">%n' %
'/<form name="FormInfo" action="/cgi/new.cgi" method="POST">%n' %
'/<pre><b>%n'
[ "$1" == exist ] && 5< $2
< $Finfobase
while read typ id len max flg dflt text
do
ifset typ || continue
expr "$typ" :: '^#' && continue
conv '-t` ' text dflt
[ ${#text} -gt 1 ] && prints sns36s- "" "$text" " "
[ "$max" == '=' ] && max=$len
[ "$max" == '-' ] && let "max=len+len"
let ++n
[ "$dflt" == ' ' ] && dflt=
Hbuf="$dflt"
[ "$1" == exist ] && {
GetInfoZ 5 Hbuf $id
[ id -eq Pid ] && Hbuf="®$Hbuf®"
}
case $typ in
itxt) name=I$id
catv ".<input name=%"$name%" type=%"TEXT%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
ptxt) name=P$id
catv ".<input name=%"$name%" type=%"PASSWORD%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
wtxt) name=W$id
conv "-t${CA}${NL}t$ESC$CR"'t` ' Hbuf
catv ".<textarea name=%"$name%" cols=%"$len%" rows=%"$max%"" %
". wrap=%"soft%">" Hbuf ".</textarea>"
;;
esac
done
><
[ "$1" == exist ] && ><
catv '/%n</b></pre></form>%n'
ifdef Newgrparr &&
echo '<script language="JavaScript" type="text/javascript">
window.setTimeout("parent.frames[2].location.reload();", 1500);
</script>'
catv '/</body></html>%n'
return 0
}
. ./functions.bish
catv /%0 =5119,,Hbuf
. ./cvars.bish
. ./uvars.bish
GetIds
VBMip=$SERVER_ADDR
[ "$REQUEST_METHOD" == GET ] && {
[ -s $Fgrpajs ] || MkGrpArr $Fgrpajs
[ -s $Fgrpaejs ] || MkGrpArr $Fgrpaejs Err && nop
case "$QUERY_STRING" in
main)
[ RxTxAuto -gt 0 ] && RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
sleep -m 600
RxTxRun || PutErrHtm "Start of RxTx daemon failed."
}
GetGrpDir first Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm "$Gdir"
;;
admin)
echo "Content-type: text/html%n"
MkAdmHtm
;;
req=admact&?*)
expr "$QUERY_STRING" :Hbuf '^req=admact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
AdmAction "$Hbuf"
Lock lockdb del
;;
new)
echo "Content-type: text/html%n"
MkInfoHtm new
;;
update)
MkGrpArr $Fgrpajs
local _Fail=0
MkGrpArr $Fgrpaejs Err && _Fail=1
[ _Fail -ne Failall ] && Failall=$_Fail Uvars Failall
[ Update -eq 0 ] && Update=1 Uvars Update
echo "Status: 204 No Content%n"
;;
req=infofset&?*)
expr "$QUERY_STRING" :Gdir 'req=infofset&' = 'req=info&' || Gdir=GX
echo "Content-type: text/html%n"
MkInfoFrameset "$Gdir"
;;
req=info&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
req=callsys&?*)
expr "$QUERY_STRING" :Gdir '^req=callsys&%(..*%)$' || Gdir=
CallSys "$Gdir"
echo "Status: 204 No Content%n"
;;
req=ctlfset&?*)
expr "$QUERY_STRING" :Gdir 'req=ctlfset&' = 'req=ctl&' || Gdir=GX
echo "Content-type: text/html%n"
MkCtlFrameset "$Gdir"
;;
req=ctlh)
echo "Content-type: text/html%n"
MkCtlhHtm
;;
req=ctl&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
Grp="$Gdir" Anl="$Adir"
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkCtlHtm "$Grp" "$Anl" $Adir
;;
req=ctlact&?*)
expr "$QUERY_STRING" :Hbuf '^req=ctlact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
CtlAction "$Hbuf"
Lock lockdb del
;;
selinhaltget=?*)
expr "$QUERY_STRING" :Hbuf '^[^=]%{1,}=%(..*%)$' || Hbuf=SGX
FormConv Hbuf
Gdir="$Hbuf"
GetGrpDir get Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm $Gdir
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
exit 0
}
[ "$REQUEST_METHOD" == POST ] && {
[ "$CONTENT_LENGTH" -eq 0 ] && PutErrHtm "No content"
case "$REQUEST_URI" in
*adm.cgi)
Lock lockdb
if expr "$CONTENT_TYPE" =:: 'boundary=.'
then
FormAdmBakRead "$CONTENT_LENGTH" || { Gdir=$?
Lock lockdb del
PutErrHtm "Backup Upload failed [$Gdir]"
}
else
FormAdmRead "$CONTENT_LENGTH" || echo "Status: 205 Reset Content%n"
fi
Lock lockdb del
echo "Content-type: text/html%n"
MkAdmHtm
;;
*new.cgi)
[ "$CONTENT_LENGTH" -gt 5000 ] && PutErrHtm "Content too large"
Lock lockdb
FormInfoRead "$CONTENT_LENGTH"
Lock lockdb del
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
*main.cgi)
PutErrHtm "Sorry!"
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
}
exit 0
set -f
HTMa='<html>
<head>
<title>Downloads selotronic.schellong.biz</title>
</head>
<body>
<br><br>
<pre><b>
'
HTMb='
</b></pre>
</body>
</html>
'
PutFileSzDateName() {
local ft=0000000000 sz=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
fstat -msv ft sz "$1"
ctime ja mo ta st mi se $ft
prints s10- $sz
catv "/ " ta /. mo /. ja '/ ' st /: mi "/ "
return 0
}
dir="$DOCUMENT_ROOT/cie"
catv 20,0 =KW:
expr "$KW" :KW '^[^=]%{1,}=%(.*%)' || KW=0
[ "$KW" == selotronik -o "$KW" == selo ] || {
echo "Status: 204 No Content%n"
exit 0
}
catv "/Content-type: text/html%n%n" HTMa
for F in $( list -f $dir | sortl )
do
print -n " "
PutFileSzDateName "$dir/$F"
print -rn '<a href="http://selotronic.schellong.biz/'"$F%">"
echo "$F"'</a>'
done
catv HTMb
exit 0
html0='<HTML>
<HEAD>
<TITLE>repeat</TITLE>
<META NAME="Author" CONTENT="Helmut Schellong">
</HEAD>
<frameset cols="17%,83%" bordercolor="#ffff00" border="10" frameborder="10" framespacing="0">
<frame name="links" frameborder="10" marginwidth="10" marginheight="30" src="cie.cgi?l">
<frameset rows="70%,30%" bordercolor="#ffff00" border="10" frameborder="10" framespacing="0">
<frame name="roben" frameborder="10" scrolling="yes" src="cie.cgi?ro">
<frame name="runten" frameborder="10" marginwidth="15" marginheight="15" src="cie.cgi?ru">
</frameset>
</frameset>
<BODY TEXT="#000000" BGCOLOR="#CDAA7D" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<h1 align="center"><br><br>
<a href="cie.cgi?nof" target="_top">NoFrames-Version</a>
</h1>
</BODY>
</HTML>
'
htmlRO='<HTML>
<HEAD>
<TITLE>repeat_sec</TITLE>
<META NAME="Author" CONTENT="Helmut Schellong">
<META HTTP-EQUIV="refresh" CONTENT="~sec~">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#eeeee0" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<br><br>
<br><br>
<hr width="90%" size="4" noshade align="center">
<h2 align="center">~date~</h2>
<hr width="90%" size="4" noshade align="center">
<center>
<table bgcolor="#~bgcolor~" width="28%" cellpadding="8" border="3" align="center" valign="center">
<tr><td align="center" valign="center">
<font color="#ffffff">
<h4>~oldcnt~</h4>
<h1>~newcnt~</h1>
</font>
</td><td bgcolor="#000000">
<table width="77" height="44" border="0" cellspacing="6" cellpadding=0>
<tr><td bgcolor="#~bgc1~" width="15" height="15"> </td>
<td bgcolor="#~bgc2~" width="15" height="15"> </td>
<td bgcolor="#~bgc1~" rowspan="2" width="15" height="36" align="center" valign="center"><font color="#ffffff"><b>B<br>2</b></font></td></tr>
<tr><td bgcolor="#~bgc3~" width="15" height="15"> </td>
<td bgcolor="#~bgc4~" width="15" height="15"> </td></tr>
</table>
</td></tr></table>
</center>
<hr width="90%" size="4" noshade align="center">
</BODY>
</HTML>
'
htmlL='<HTML>
<HEAD>
<TITLE>repeat_sec</TITLE>
</HEAD>
<BODY TEXT="#ffffff" BGCOLOR="#cdaa7d" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<h2 align="center">
<p>Sekunden</p>
<a href="cie.cgi?2">2</a><br>
<a href="cie.cgi?3">3</a><br>
<a href="cie.cgi?4">4</a><br>
<a href="cie.cgi?5">5</a><br>
<a href="cie.cgi?7">7</a><br>
<a href="cie.cgi?10">10</a><br>
<a href="cie.cgi?30">30</a><br>
<a href="cie.cgi?60">60</a><br>
<a href="cie.cgi?300">300</a><br>
</h2>
</BODY>
</HTML>
'
htmlRU='<HTML>
<HEAD>
<TITLE>repeat_sec</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#dddddd" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<h3 align="justify">
Images, Java und JavaScript sind abschaltbar, deshalb
ist diese Demo ohne Grafiken und ohne JavaScript konstruiert.
Die kleinen Tabellenspalten ändern sich in Abhängigkeit der
Sekunden der Uhrzeit.
Die Farbe der großen Tabelle geht auf ROT, wenn sich der
globale Zählerstand meiner WebSite geändert hat.
Es wird nur der Rahmen rechts oben zyklisch geladen.
</h3>
</BODY>
</HTML>
'
htmlE='<HTML> <HEAD> <TITLE>ERROR</TITLE> </HEAD>
<BODY TEXT="#ffffff" BGCOLOR="#ffff00">
<h1 align="center">*** ERROR ***</h1>
</BODY> </HTML>
'
set -f
tz -2
TZ='CET-1CETDST,M3.5.0/2,M10.5.0/2'
export TZ
arg="$QUERY_STRING"
deroot="$DOCUMENT_ROOT/de"
expr "$deroot" :deroot '/de/de' '/de'
ok=0 sec=4
expr "$arg" :: '^l$' && ok=l
expr "$arg" :: '^ro$' && ok=ro
expr "$arg" :: '^ru$' && ok=ru
expr "$arg" :: '^nof$' && ok=nof
expr "$arg" :sec '^%([1-9][0-9]%{0,2%}%)$' && ok=1
ifset arg || ok=start
datf="$deroot/tmp/count.dat"
secf="$deroot/tmp/ciesec.dat"
cntf="$deroot/tmp/ciecnt.dat"
echo "Content-type: text/html%n"
case "$ok" in
start) catv html0 ;;
l) catv htmlL ;;
1) catv sec > $secf; catv htmlL ;;
ru) catv htmlRU ;;
ro|nof)
date="$( extern /bin/date +' %A, %e. %B %Y %X %Z KW%V TJ%j' )"
[ -s $secf ] && catv 3,0 =sec: < $secf
newcnt=22222
oldcnt=$newcnt
[ -s $cntf ] && catv 10,0 =oldcnt: < $cntf
[ -s $datf ] && {
catv 4,0 =newcnt: < $datf
base -L newcnt +10 newcnt
catv newcnt > $cntf
}
expr "$date" :sek ':%([0-9][0-9]%) '
bgc1=ff0000 bgc2=00ff00 bgc3=ffff00 bgc4=0000ff
let "sek&1" && bgc1=0000ff bgc4=ff0000
let "sek&7" || bgc2=00ddff
let "sek>35" && bgc3=808080
bgcolor=0000ff
let "newcnt!=oldcnt" && bgcolor=ff0000
for xy in sec date bgcolor oldcnt newcnt %
bgc1 bgc2 bgc3 bgc4
do
expr "$htmlRO" :htmlRO "~$xy~" += "${{xy}"
done
catv htmlRO
;;
*) catv htmlE ;;
esac
exit 0
arg="$QUERY_STRING"
doc=$DOCUMENT_ROOT/de/coltaB.htm
expr "$doc" :doc '/de/de/' '/de/'
echo "Content-type: text/html%n"
d='[0-9]'
d13='[0-9]%{1,3%}'
expr "$arg" :: %
"^[mp]-$d%%{1,2%%}-[a-z]%%{3,5%%}-$d13-$d13-$d13%$" || {
exit 0
}
conv -t'- ' arg
for 6 pm inc col r g b in $arg ; do done
[ $pm == m ] && inc=-$inc
[ $col == red ] && let r+=inc
[ $col == green ] && let g+=inc
[ $col == blue ] && let b+=inc
let "r<0" && r=0
let "g<0" && g=0
let "b<0" && b=0
((r>255)) && r=255
((g>255)) && g=255
((b>255)) && b=255
R=$r G=$g B=$b
prints vsf02sf02sf02 col $((16#,r)) $((16#,g)) $((16#,b))
conv -u col
< $doc
while readl Z
do
expr "$Z" :Z "$d13,$d13,$d13;%%(..*%%)#[0-9a-fA-F]%%{6%%}" %
"$R,$G,$B;%%1#$col" && print -r "$Z" && break
print -r "$Z"
done
while readl Z
do
expr "$Z" =:: '<table .* bgcolor *= *"#[0-9a-fA-F]%{6%}"' &&
expr "$Z" =:Z '%( bgcolor *= *"#%)......' "%%1$col" &&
print -r "$Z" && break
print -r "$Z"
done
while readl Z
do
expr "$Z" :: "[mp]-$d%%{1,2%%}-[a-z]%%{3,5%%}-$d13-$d13-$d13" &&
expr "$Z" :Z '%(-[a-z]%{3,5%}%)'"-$d13-$d13-$d13" + %
"%%1-$R-$G-$B" &&
expr "$Z" :Z '"[^"?]*/%([^/"?]%{1,%}?[^?"]%{1,%}"%)' + '"%1'
print -r "$Z"
done
><
expr "$REMOTE_ADDR" :: '127%.0%.0%.' || exec ./icnt.cgi 99.20.i0
exit 0
js1='var vdati= "Datum+Zeit";
var ldati= vdati;
var DHTM=0, DOM=0, MS=0, NS=0, OP=0;
function fdati()
{
parent.frames[1].document.forms[0].submit();
vdati= parent.frames[1].document.forms[0].dati.value;
ldati= ''<center><font color="#0000ff" size="+2"><b>'' + vdati + ''</b></font></center>'';
if (window.opera) OP=1;
if (document.getElementById) DOM=1, DHTM=1;
if (!OP && document.all) MS=1, DHTM=1;
if (!OP && document.layers) NS=1, DHTM=1;
if (DOM)
document.getElementById("divdati").firstChild.nodeValue= vdati;
else
if (MS) document.all.divdati.innerTEXT= vdati;
else
if (NS) {
document.laydati.document.open();
document.laydati.document.write(ldati);
document.laydati.document.close();
}
window.setTimeout("fdati()", 9000);
}
/*function fsubm()*/
/*{*/
/*parent.frames[1].document.forms[0].submit();*/
/*window.setTimeout("fsubm()", 9000);*/
/*}*/
'
js2='window.setTimeout("fdati()", 800);
/*window.setTimeout("fsubm()", 9000);*/
'
htmlU='<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY TEXT="#ffffff" BGCOLOR="#eeeeee" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<form name="form_dati" action="/de/cgi/dati.cgi" method="POST">
<input type="HIDDEN" name="dati" value="~dati~" maxlength="80">
</form>
</BODY>
</HTML>
'
set -f
tz -2
TZ='CET-1CETDST,M3.5.0/2,M10.5.0/2'
export TZ
prints vs1000 html
arg="$QUERY_STRING"
deroot="$DOCUMENT_ROOT/de"
expr "$deroot" :deroot '/de/de' '/de'
ok=0
expr "$arg" :: '^u$' && ok=u
expr "$arg" :: '^nof$' && ok=nof
expr "$arg" :: '^c1$' && ok=c1
expr "$arg" :: '^c2$' && ok=c2
ifset arg || ok=start
[ "$REQUEST_METHOD" == POST ] && ok=u
[ "$ok" == c1 -o "$ok" == c2 ] && echo "Content-type: text/javascript%n"
[ "$ok" != c1 -a "$ok" != c2 ] && echo "Content-type: text/html%n"
case "$ok" in
u)
date="$( extern /bin/date +' %A, %e. %B %Y %X %Z KW%V TJ%j' )"
expr "$htmlU" :html '~dati~' = "$date"
catv html
;;
c1) catv js1 ;;
c2) catv js2 ;;
esac
exit 0
html0='<HTML>
<HEAD>
<TITLE>repeat</TITLE>
<META NAME="Author" CONTENT="Helmut Schellong">
</HEAD>
<frameset cols="100%,*" border="0" frameborder="0" framespacing="0">
<frame name="oben" src="Dati0.cgi?o" scrolling="yes" frameborder="0" marginwidth="0" marginheight="0">
<frame name="unten" src="Dati0.cgi?u" scrolling="no" frameborder="0" marginwidth="0" marginheight="0">
</frameset>
<BODY TEXT="#000000" BGCOLOR="#CDAA7D" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<h1 align="center"><br><br>
<a href="Dati0.cgi?nof" target="_top">NoFrames-Version</a>
</h1>
</BODY>
</HTML>
'
js1='var vdati= "Datum+Zeit";
var col= ''<font color="#0000FF">''
function fdati()
{
parent.frames[1].document.forms[0].submit();
vdati= col +''<h2 align="center">''+ parent.frames[1].document.forms[0].dati.value +"</h2></font>";
if (document.layers) {
document.nsdati.document.open();
document.nsdati.document.write(vdati);
document.nsdati.document.close();
}
if (document.all) {
document.all.iedati.innerHTML= vdati;
}
window.setTimeout("fdati()", 9000);
}
/*function fsubm()*/
/*{*/
/*parent.frames[1].document.forms[0].submit();*/
/*window.setTimeout("fsubm()", 9000);*/
/*}*/
'
js2='window.setTimeout("fdati()", 800);
/*window.setTimeout("fsubm()", 9000);*/
'
htmlO='<HTML>
<HEAD>
<TITLE>repeat_sec</TITLE>
<META NAME="Author" CONTENT="Helmut Schellong">
<script language="JavaScript1.2" src="Dati0.cgi?c1" type="text/javascript"></script>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#cdaa7d" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<div id="iedati"></div><layer id="nsdati"></layer>
<script language="JavaScript1.2" src="Dati0.cgi?c2" type="text/javascript"></script>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
X<br>
</BODY>
</HTML>
'
htmlU='<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY TEXT="#ffffff" BGCOLOR="#eeeeee" LINK="#4F94CD" VLINK="#36648B" ALINK="#FFD700">
<form name="form_dati" action="Dati0.cgi" method="POST">
<input type="HIDDEN" name="dati" value="~dati~" maxlength="80">
</form>
</BODY>
</HTML>
'
set -f
tz -2
TZ='CET-1CETDST,M3.5.0/2,M10.5.0/2'
export TZ
prints vs1000 html
arg="$QUERY_STRING"
deroot="$DOCUMENT_ROOT/de"
expr "$deroot" :deroot '/de/de' '/de'
ok=0
expr "$arg" :: '^o$' && ok=o
expr "$arg" :: '^u$' && ok=u
expr "$arg" :: '^nof$' && ok=nof
expr "$arg" :: '^c1$' && ok=c1
expr "$arg" :: '^c2$' && ok=c2
ifset arg || ok=start
[ "$REQUEST_METHOD" == POST ] && ok=u
[ "$ok" == c1 -o "$ok" == c2 ] && echo "Content-type: text/javascript%n"
[ "$ok" != c1 -a "$ok" != c2 ] && echo "Content-type: text/html%n"
case "$ok" in
start) catv html0 ;;
o) catv htmlO ;;
u|nof)
date="$( extern /bin/date +' %A, %e. %B %Y %X %Z KW%V TJ%j' )"
expr "$htmlU" :html '~dati~' = "$date"
catv html
;;
c1) catv js1 ;;
c2) catv js2 ;;
esac
exit 0
. ./functions.bish
. ./cvars.bish
. ./uvars.bish
prints vs70 Nn
catv /%0 =2047,,Hbuf
. ./initee.bish
EEconvertTxt() {
local b=10 len=00000 blen=00$5 dflt="$8" min="$9" max="${10}"
EEmin=''
let "blen<<=1"
len=$blen
[ MUspsw -eq 1 -a "${11}" != '"' ] && dflt="${11}"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ MUspsw -eq 2 -a "${14}" != '"' ] && dflt="${14}"
case $6 in
x) b=16 ;;
b) b=2 ;;
esac
[ $7 == b ] && b=2
case $4 in
w) base -w $2 +$b $2
[ $6 == i -a $2 -gt 32767 ] && let "$2-=65536" ;;
L) base -L $2 +$b $2 ;;
S) base -W $2 +w $2
[ $6 == 0 ] && $2="${{2}" let "--len"
[ $6 == m ] && expr "${{2}" :$2 ' %{1,}$' = ''
InputLen=$len
return 0 ;;
esac
if [ $max != '"' ]
then
len=${#max}
[ ${#min} -gt len ] && len=${#min}
[ $6 == x -a $7 == b ] && let "len<<=2"
[ b -ne 10 ] && goend
local v=........
EEmin=$min EEmax=$max EEdflt=$dflt
for v in EEmin EEmax EEdflt
do
case $7 in
.1) expr "${{v}" :$v '.$' '.&' ;;
.2) let "${{#v}==1" && $v="${{v}0"
expr "${{v}" :$v '..$' '.&' ;;
1) let "$v/=10" ;;
m) let "$v/=60" ;;
=) ;;
*) EEmin='' goend 2 ;;
esac
expr "${{v}" :: '^%.' && $v="0${{v}"
done
else
case $b in
16) let "len<<=1";;
2) let "len<<=3";;
10) len=${#dflt};;
esac
fi
[ b -ne 10 ] && prints vsf0$len $2 "${{2}"
case $7 in
.1) let "++len"; expr "${{2}" :$2 '.$' '.&' ;;
.2) let "++len, ${{#2}==1" && $2="${{2}0"
expr "${{2}" :$2 '..$' '.&' ;;
1) let "--len, $2/=10" ;;
m) let "--len, $2/=60" ;;
b) ;;
a) let "$2=512-$2"; len=4 ;;
bb) let "b=$2&255, $2>>=8"
prints vssf02 $2 ${{2}. $b
len="${{#2}" ;;
J) let "$2<100" && let "$2+=2000"
let "$2>2079" && let "$2-=100"
len=4 ;;
esac
expr "${{2}" :: '^%.' && $2="0${{2}"
[ $6 == i ] && expr "${{2}" :: '^[-+]' || let "++len"
InputLen=$len
return 0
}
EEconvertEye() {
[ $15 == ro ] && return 1
local var=........ val="$2" _7=$7
local b=10 len=000 blen=00$5
let "blen<<=1, len=blen-1"
expr "$2" :var '^%([^:]%{1,}%):'
expr "$val" :val '^[^:]%{1,}:' = ''
[ $7 == .1 -o $7 == .2 -o $7 == 1 -o $7 == m -o $7 == a -o $7 == J ] &&
expr "$val" :val '[^0-9-]' += ''
[ $7 == = -a $4 != S ] && _7=$6
case $_7 in
u) expr "$val" :val '[^0-9]' += '' ;;
i) expr "$val" :val '[^0-9-]' += '' ;;
b) expr "$val" :val '[^01]' += ''
b=2 ;;
x) expr "$val" :val '[^0-9a-fA-F]' += ''
b=16 ;;
1) let "val*=10" ;;
m) let "val*=60" ;;
a) let "val=512-val" ;;
bb) expr "$val" :val '%(%d%.%d%{1,2}%)'
expr "$val" :val '%(%d%)%.%(%d%{1,2}%)' '(%1<<8)+%2'
let "val=$val" ;;
J) let "val-=1900, val>=100" && let "val-=100"
let "val<0" && val=80
let "val>99" && val=79 ;;
esac
case $4 in
w) base -$b val +w $var; return 0 ;;
L) base -$b val +L $var; return 0 ;;
S) [ $6 == 0 ] && {
catv $len,val =val:
prints vs-F000$blen val "$val"
}
[ $6 == m -a ${#val} -lt blen ] && prints vs-$blen val "$val"
base -w val +W $var ;;
esac
return 0
}
EEconvertHtm() {
local adr=00000 txt="${18}" min=$9 max=${10} unit
let "adr=$3"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ ${16} != '"' ] && unit=" ${16}"
local onfoc
[ $6 == u -a $min == 0 -a $max == 1 ] && onfoc=" onFocus=%"Toggle01(this)%""
ifset EEmin || EEmax= EEdflt=
ifset EEmin && EEmin="</b><font color=%"#bbbbbb%"> [$EEmin " %
EEmax=" $EEmax]</font><b>"
conv '-t` ' txt
prints s25ss "$txt" %
" <input name=%"A$adr%" value=%"$2%" size=%"$InputLen%"" %
" maxlength=%"$InputLen%"$onfoc>$unit$EEmin$EEdflt$EEmax"
return 0
}
MkMucFile() {
local n=00000 sz=00000 o0=00000 o=00000 zv="$RN" c=.. boundary
cat > $Fmucupld
< $Fmucupld
while readl Hbuf
do
expr "$Hbuf" :boundary '%(-%{2,}[^-]%{1,}%)"%{0,1}$' && break
let "++n>0" && { >< ; return 1; }
done
while readl Hbuf
do
ifset Hbuf || break
done
n=0
> $1
while catv +0,50,0 =Hbuf:
do
let "${#Hbuf}!=50" && break
catv 48,2,Hbuf =c:
cmpv zv c || break
catv Hbuf
let "++n>=100" && break
done
let "n!=100" && { ><< ; return 2; }
catv /%r%n boundary /--%r%n =boundary:
catv /%r%r =c:
seek + 0 o0
while seek + 0 o; catv +0,1000,0 =Hbuf:
do
conv "-T$c" Hbuf
let "o+=$., $.<0" && continue
catv $o,${#boundary},0 =Hbuf:
cmpv Hbuf boundary || { let "++o"; seek $o 0; continue; }
catv $o0,$((o-o0)),0
let "o+=${#boundary}"
catv $o,,0
break
done
><<
fstat -sv sz $1
let "sz!=5000+2048" && return 3
catv 5000,2048,0 < $1 | base -W +w > $Fmueebin
return 0
}
ChangeMUee() {
local rub=00 offs=000000 nam=........ sp=00 sw=00 spsw=0
local adr=00000 typ=.... len=00000 flg=........ gid=0000 aid=0000
local val=.....................................
local f=............................................
catv 0 =1000,Hbuf:
conv '-t& ' Hbuf
< $Feebase
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Rubrik) $1="$Hbuf"
for 3 rub gid aid in $Hbuf; do break; done
let "offs=(rub-1)*6"
catv $offs,5,BasePos =offs:
seek $offs 0
readl Hbuf
3<> $Ddb/$gid/$aid/eepr
;;
A[0-9]*) val="$Hbuf"
conv -DA nam
while readl Hbuf
do
expr "$Hbuf" :: '^@' || break 2
expr "$Hbuf" :: '^@%d' || continue
conv -D@ Hbuf
for 16 adr typ len f f f f f f f f f flg f f f in $Hbuf
do break; done
let "len<<=1, adr=$adr, adr<<=1, (nam<<1)==adr" || continue
EEconvertEye eye "Hbuf:$val" $Hbuf || continue 2
[ $flg == SP ] && sp=$val
[ $flg == SW ] && sw=$val
catv $len,Hbuf =$adr,,3
continue 2
done
;;
esac
done
><<
[ sw -eq 1 ] && sp=0 spsw=2
[ sp -eq 1 ] && spsw=1
[ MUspsw -ne spsw ] && { MUspsw=$spsw Uvars MUspsw; CopyCmuee; }
return 0
}
MkEErfHtm() {
local r=0 e=0 rub=$1 offs=000000 feepr=$Ddb/$2/$3/eepr
local adr=00000 len=00000 siga=..........
let "rub<1" && rub=1
catv $(([rub-1]*6)),5,BasePos =offs:
< $Feebase
seek $offs 0
readl Hbuf
seek + 0 offs
><
expr "$Hbuf" :: '^!' && r=e conv -D! Hbuf
catv Doctype '/<html><head><title></title>%n' Meta
echo '<script language="JavaScript">%
function Toggle01(i)%
{%
var inh= i.value;%
if (inh=="0" || inh=="" || inh==" ")%
i.value= "1";%
else i.value= "0";%
i.blur();%
}%
</script>%012%c'
siga=siga.js
[ MUspsw -eq 2 ] && siga=sigabm.js
[ $r == e ] &&
echo '<script language="JavaScript" %
src="/js/'"$siga"'" type="text/javascript"></script>%
<script language="JavaScript" %
src="/js/sig.js" type="text/javascript"></script>%
%012%c'
echo '</head>%012<body class="main" text="#ffd700">%012%c'
[ $r == e ] && echo '<script language="JavaScript">Wr("'"$Hbuf"'");</script>%012%c'
catv '.<form name="Vis" action="/cgi/eepr.cgi" method="POST"><pre><b>' /%n %
'.<input name="Rubrik" type="HIDDEN" value="'"$rub $2 $3"'">' /%n
[ $r == e ] && catv '.<input name="Signal" type="HIDDEN">' /%n
[ $r == 0 ] && catv '.<h2>' Hbuf '.</h2>' /%n%n
< $Feebase
seek $offs 0
while readl Hbuf
do
expr "$Hbuf" :e '^@%(.%)' || break
[ "$e" == : ] && {
conv -D@D: Hbuf
prints s27s "" "</b><font color=%"#ffffff%">$Hbuf</font><b>"
continue
}
conv -D@ Hbuf
for 3 adr len len in $Hbuf; do break; done
let "len<<=1" "adr=$adr" "adr<<=1"
catv $adr,$len,3 =Nn: 3<> $feepr
EEconvertTxt txt Nn $Hbuf
EEconvertHtm htm "$Nn" $Hbuf
done
echo '</b></pre></form>%012%c'
[ $r == e ] && echo '<script language="JavaScript">Dflt(0);</script>%012%c'
echo '</body></html>%012%c'
><
return 0
}
MkEElfHtm() {
local n=00 offs=000000
catv Doctype '/<html><head><title>VBM EE-Rubriken</title>%n' Meta
echo '<base target="EErf">%n</head>%n<body class="main" text="#ffd700"><b>'
< $Feebase
for offs in $BasePos
do
seek $offs 0
readl Hbuf
let "++n"
catv '.<a class="elf" href="/cgi/muee.cgi?eerf.' n "..$1" %
'.">' Hbuf '.</a><br><br>' /%n
done
echo '</b></body></html>'
><
return 0
}
MkEeFrameset() {
catv Doctype '/<head><title>VBM eemain</title>%n' Meta
print -r '</head>
<frameset rows="*,77" bordercolor="#ffd700" border="2">
<frameset cols="20%,*" bordercolor="#ffd700" border="2">
<frame name="EElf" src="/cgi/muee.cgi?eelf.'"$1"'" scrolling="auto"
frameborder="0" marginwidth="10" marginheight="30">
<frame name="EErf" src="/cgi/muee.cgi?eerf.0.'"$1"'" scrolling="yes"
frameborder="0" marginwidth="20" marginheight="0">
</frameset>
<frame name="EEbuttons" src="/htm/eebuttons.htm" scrolling="no"
frameborder="0" marginwidth="30" marginheight="10">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
[ "$REQUEST_METHOD" == POST ] && {
expr "$REQUEST_URI" :: '/eepr%.cgi$' || PutErrHtm "Sorry!"
local sz="$CONTENT_LENGTH"
if [ sz -ge 2048 ]
then
PutErrHtm "Not implemented."
echo "Status: 205 Reset Content%n"
else
ChangeMUee Nn
echo "Content-type: text/html%n"
MkEErfHtm $Nn
fi
exit 0
}
[ "$REQUEST_METHOD" == GET ] && {
local n="$QUERY_STRING"
case "$n" in
defaults__)
CopyCmuee
echo "Content-type: text/html%n"
cat ../eemain.htm
;;
eelf.?*)
expr "$n" :n '^eelf.%(..*%)$'
echo "Content-type: text/html%n"
MkEElfHtm $n
;;
eerf.?*)
expr "$n" :n '^eerf.%(..*%)$'
expr "$n" :n '[^0-9]' += ' '
echo "Content-type: text/html%n"
MkEErfHtm $n
;;
eemain.?*)
expr "$n" :n '^eemain.%(..*%)$'
echo "Content-type: text/html%n"
MkEeFrameset $n
;;
*)
echo "Status: 205 Reset Content%n" ;;
esac
}
exit 0
hl=-----------------------------------------------------
2>&1
echo "Content-Type: text/plain%n"
ver
echo $hl
autor
echo $hl
pwd
echo $hl
env
echo $hl
extern ls -lA
echo $hl
><
exit 0
echo "Content-Type: text/plain%n"
ver
autor
pwd
echo ---------------------------------------------
env
exit 0
echo "Content-Type: text/plain%n"
2>&1
extern ./bish4 -c "echo ./bish4:; ver; autor; echo"
><
ver
autor
pwd
echo ---------------------------------------------
env
exit 0
set -f
arg="$QUERY_STRING"
ok=0
expr "$arg" :zn '^%([0-9]%{1,4%}%.[0-9]%{1,3%}%):.' && {
expr "$arg" :nam ':%(..*%)$' || nam=
expr "$nam" =:nam '%%2f' += '/'
Url="$nam"
expr "$nam" :nam '%([^/][^/]*%)$' || nam=
expr "$nam" :erw '%.%([^/.]%{1,%}%)$' || erw=
ifset nam && ok=1
}
[ ok -eq 0 ] && {
echo "Content-type: text/plain%n"
echo "%n*** FEHLER *** bei '$arg'"
exit 0
}
HTTP_REFERER="$HTTP_REFERER::$Url"
export HTTP_REFERER
expr "$REMOTE_ADDR" :: '127%.0%.0%.' || extern ./icnt.cgi $zn.i0
ifset erw || erw=bin
conv -l erw
ct=text/plain
case "$erw" in
html|htm|shtml|shtm) ct=text/html ;;
txt|bish|pl|text) ct="text/plain" ;;
exe|bin|zip|gz|tar|drv|z|obj|o)
ct="application/octet-stream" ;;
gif) ct=image/gif ;;
jpg|jpeg) ct=image/jpeg ;;
*) ct=text/plain ;;
esac
catv ."Content-type: " ct /"%nLocation: $Url%n%n"
exit 0
Escape() {
local c=. h=... spez="${{1}"
expr "${{1}" :spez '[a-zA-Z_0-9&=.-]' += ''
ifset spez || return 0
conv '-d%' spez
[ $. -ge 0 ] && expr "${{1}" :$1 '%%' += '%25'
while ifset spez
do
catv 1,spez =c
conv "-d$c" spez
base -b c +16 h
expr "${{1}" :$1 "$c" += '%'$h
done
return 0
}
CkPasswd() {
[ 0${#1} -lt 3 -o 0${#1} -gt 15 ] && return 1
expr "$1" :: '[^!-~]' && return 1
return 0
}
RxTxRun() {
[ $# -eq 0 ] && {
extern $ps_cmd | grep -qm 'rxtx.bish[ %t]%{1,}run'
return
}
[ "$1" == sigterm ] && {
local pid
extern $ps_cmd | pid=$( grep -m 'rxtx.bish[ %t]%{1,}run' ) || return
catv pid /%n | read - pid -
expr "$pid" :: '^[0-9]%{1,}$' || return
kill $pid
}
return
}
CkChStation() {
local sta="$2" gid=0000 aid=0000 buf:.200
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
buf="$(- grep -m "^$gid $aid " $Fstation )" || return
expr "$buf" :buf "^$gid $aid "'%(.*%)$' || return
cmpv buf sta && return 0
cat $Fstation | {
> $Fstation
while readl buf
do
expr "$buf" :: "^$gid $aid " || { catv buf /%n; continue; }
print -r "$gid $aid $sta"
done
><
}
return 0
}
AddStation() {
local gid=0000 aid=0000
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
print -r "$gid $aid $2" >> $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
return 0
}
CkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 min=0000
local bez; prints vs50 bez
mkdirs $2
[ -e $ali ] || : > $ali
< $ali
while read dali bez
do
[ "$bez" == "$3" ] && { ><; $1=$2/$dali; return 0; }
let "min==0&&dali-dali0>1" && let "min=dali0+1"
dali0=$dali
done
><
let "++dali, min==0" && $1=$2/$dali
let "min>0" && $1=$2/$min
return 1
}
MkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 w=0
local bez; prints vs50 bez
mkdirs $2 $1
expr "$1" :dali0 '/%([0-9]%{1,4}%)$'
[ -s $ali ] || { catv dali0 ". $3" /%n > $ali; return 0; }
cat < $ali | {
> $ali
while read dali bez
do
[ dali -gt dali0 -a w -eq 0 ] && w=1 catv dali0 ". $3" /%n
catv dali ". " bez /%n
done
[ w -eq 0 ] && catv dali0 ". $3" /%n
><
}
return 0
}
FormInfoRead() {
local g=g a=a i=i n=000 nam=.................... tmp=../tmp/newtmp
local ctv=0000 ctv0=0000 sta=....................
local grp; prints vs50 grp
local anl; prints vs50 anl
expr "$1" :: '^[0-9]%{2,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>5000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
> $tmp
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
I[0-9]*)
Hbuf=$Hbuf
[ ${#Hbuf} -eq 0 ] && goend
[ $nam == I$Gid ] && grp="$Hbuf" unset g
[ $nam == I$Aid ] && anl="$Hbuf" unset a
[ $nam == I$Iid ] && sta="$Hbuf" unset i
[ $nam == I$Cid ] && ctv="$Hbuf"
;;
W[0-9]*)
conv "-t${CR}${ESC}t$NL${CA}"'t `' Hbuf
;;
P[0-9]*)
expr "$Hbuf" :: '^®[^®]%{3,}®$' && { conv -d® Hbuf; goend; }
CkPasswd "$Hbuf" || { ><; remove $tmp; PutErrHtm "Password wrong!"; }
catv Hbuf | extern ./mailcode -en -c "$MC64" | catv 0 =Hbuf:
;;
esac
expr "$nam" :: '^[IWP][0-9]%{1,3}$' || continue
catv 1,3,nam "/ " Hbuf RN
done
><
[ -n "$g$a$i" ] && { remove $tmp
PutErrHtm "Group, System and Sys-ID are essential!"; }
expr "$grp" :: '^[!* ]' && { remove $tmp; PutErrHtm "!* not allowed: »$grp«"; }
CkGA Gdir $Ddb "$grp" || MkGA $Gdir $Ddb "$grp" && MkGrpArr $Fgrpajs
CkGA Adir $Gdir "$anl" || MkGA $Adir $Gdir "$anl" && AddStation $Adir "$sta"
[ -s $Adir/i ] && ctv0="$(- grep -m "^$Cid " $Adir/i )" && {
expr "$ctv0" :ctv0 '^[0-9]%{1,} %([0-9]%{1,}%)' || ctv0=0
[ ctv -ne ctv0 -a CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
}
cat $tmp > $Adir/i
remove $tmp
CkChStation $Adir "$sta" || PutErrHtm "Change to »$sta« failed."
return 0
}
GetGrpDir() {
[ -s $Ddb/$Fali ] || return 1
local id=0000 inh
case $1 in
first)
catv 5000,0 =Hbuf: < $Ddb/$Fali
expr "$Hbuf" :Hbuf '%([0-9]%{1,} %)[^%n]*%n' + '%1'
set +f
for id in $Hbuf
do
: $Ddb/$id/[1-9]*/i
[ "$]" -gt 0 ] && { set -f; $2=$Ddb/$id; return 0; }
done
set -f
;;
get)
< $Ddb/$Fali
while read id inh
do
cmpv $2 inh || continue
$2=$Ddb/$id; ><; return 0
done
><
;;
esac
return 1
}
GetAnlDir() {
local id=0000 inh
[ -s $2/$Fali ] || return 1
< $2/$Fali
while read id inh
do
cmpv $1 inh || continue
$1=$2/$id; ><; return 0
done
><
return 1
}
MkGrpArr() {
local r=0 n=000 i=000 id=0000 grp
Lock lockga
[ -e $Ddb/$Fali ] || : > $Ddb/$Fali
[ $# -ge 2 ] && r=1
[ $# -lt 2 ] && Newgrparr=1
> $1
< $Ddb/$Fali
while readl grp
do let ++n; done
echo "var GrpAn$2= $n;"
[ n -gt 0 ] && echo "var GrpArr$2= new Array($n);"
[ n -eq 0 ] && echo "var GrpArr$2= new Array(1);%nGrpArr${2}[0]= %"%";"
i=0
seek 0 0
set +f
while read id grp
do
[ $# -ge 2 ] && {
grp=' '
: $Ddb/$id/[1-9]*/fail
[ $] -gt 0 ] && r=0 grp='! '
}
print -r "GrpArr${2}[$i]= %"$grp%";"
let ++i
done
><<
set -f
Lock lockga del
return $r
}
SetPass() {
local pw="$2"
WrLog "Password operation: $1" "change"
[ 0${#1} -lt 1 -o 0${#2} -lt 3 -a 0${#2} -gt 0 ] &&
PutErrHtm "User/Pass length not accepted."
[ 0${#2} -eq 0 ] && pw='`{!@#$%^vI*")7Q'
expr "$1" :: '[^a-zA-Z0-9_]' && PutErrHtm "User name contains wrong chars."
expr "$1" :: '^[a-zA-Z]' || PutErrHtm "User name must begin with [a-zA-Z]."
cd ../adm
htpasswd -bm .wmspw "$1" "$pw" 2>/dev/null ||
PutErrHtm "Password operation failed."
cd -
return 0
}
PutTxt2Htm() {
catv Doctype '/<head><title>TXT2HTML</title>%n' Meta
print -r '</head>
<body class="main"><div class="stat1"><form><b>
<input class="butt" type="button" value="Back" onClick="window.back();">
</b></form></div>'
print -rn '<div class="stat"><pre><b>'
cat "$1"
print -r '</b></pre></div></body></html>'
return 0
}
FormAdmBakRead() {
local boundary="$CONTENT_TYPE" arch=../tmp/db.tar
local sz:010 bp6:010 z:.500
expr "$boundary" =:boundary 'boundary=%(..*%)' || return 1
let "bp6=${#boundary}+8"
catv 1000,0 | {
while readl z
do
ifset z || break
done
catv 0 > $arch
catv ,.
}
[ $. -le 0 ] && { remove -s $arch; return 2; }
cat >> $arch
fstat -sv sz $arch
[ sz -lt bp6 ] && { remove -s $arch; return 3; }
catv -$bp6:,,0 =z: < $arch
expr "$z" :: "^%r%n--$boundary--%r%n%$" || { remove -s $arch; return 4; }
let "sz-=bp6"
fstat +s $sz $arch || { remove -s $arch; return 5; }
return 0
}
FormAdmRead() {
local ja=---- mo=-- ta=-- st=-- mi=-- se=00 ip=999.888.777.666
local tp=T md=0 rt=0 ct=0 ctb=0 as=0 sig=0
local nam=.................... user=................
expr "$1" :: '^[0-9]%{1,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>2000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Shut) : > ../tmp/rxtx
sleep -m 800
RxTxRun && RxTxRun sigterm
[ "$OsTyp" == FreeBSD ] && {
echo "Content-type: text/plain%n"
extern ../adm/syscmd.bish shutdown "shutdown -h now"
sleep 10
return 2
}
;;
RxTx) rt=1 ;;
Auto) as=1 ;;
Term) sig=1 ;;
Modem) md=1 ;;
Puls) tp=P ;;
Conn) ct=1 ;;
Build) ctb=1 ;;
MInit) cmpv MOinitapp Hbuf || MOinitapp="$Hbuf" Uvars MOinitapp ;;
Day) ta=$Hbuf ;;
Mon) mo=$Hbuf ;;
Year) ja=$Hbuf ;;
Hour) st=$Hbuf ;;
Min) mi=$Hbuf ;;
IP)
CheckIP "$Hbuf" || PutErrHtm "IP address: »$Hbuf«"
ip=$Hbuf
;;
User)
for ip in admin new vbm root adm cie sam selotronic cfg config pass
do cmpv -i ip Hbuf && PutErrHtm "User name not applicable."; done
user="$Hbuf" ;;
Pass) [ -n "$user" ] && SetPass "$user" "$Hbuf" ;;
AdmPw) [ -n "$Hbuf" ] && SetPass admin "$Hbuf" ;;
NewPw) [ -n "$Hbuf" ] && SetPass new "$Hbuf" ;;
AdmLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne AdmLogSz ] && AdmLogSz=$Hbuf Uvars AdmLogSz
;;
SysLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne SysLogSz ] && SysLogSz=$Hbuf Uvars SysLogSz
;;
esac
done
[ "$TPwahl" != "$tp" ] && TPwahl=$tp Uvars TPwahl
[ MOwahl -ne md ] && MOwahl=$md Uvars MOwahl
[ RxTxAuto -ne as ] && RxTxAuto=$as Uvars RxTxAuto
[ ConnTest -ne ct ] && ConnTest=$ct Uvars ConnTest
[ CTbuild -ne ctb ] && CTbuild=$ctb Uvars CTbuild
if RxTxRun
then
[ rt -gt 0 ] && goend
: > ../tmp/rxtx
sleep -m 800
[ sig -gt 0 ] && RxTxRun && RxTxRun sigterm
else
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
remove -s ../tmp/rxtx
[ rt -eq 0 ] && goend
extern ../adm/rxtx.bish
sleep -m 200
fi
expr "$ta$mo$ja$st$mi$se" :: '^[0-9]%{7,14}$' && {
: $ta $mo $ja $st $mi
[ 0$} -eq 5 ] && extern ../adm/syscmd.bish date $ta $mo $ja $st $mi
}
return 0
}
AdmAction() {
local id=0000 nam=.......... obj=..............................
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
file) obj="$Hbuf" ;;
act)
case "$Hbuf" in
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj ;;
trun) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
: > $obj ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
bak)
cat uvars.bish > $Ddb/uvars.bish
extern tar chf $obj $Ddb
WrLog "File:$obj" "created" ;;
down) WrLog "File:$obj" "downloaded"
expr "$obj" :obj '^%.%./%(..*%)$'
echo "Location: http://$SERVER_ADDR:$SERVER_PORT/$obj%n"
return 0 ;;
upda) extern tar xepf $obj || PutErrHtm "Backup Update failed"
WrLog "File:$obj" "database updated from file"
[ -s $Ddb/uvars.bish ] && cat $Ddb/uvars.bish > uvars.bish
;;
esac
;;
esac
done
echo "Content-type: text/html%n"
MkAdmHtm
return 0
}
MkAdmHtm() {
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
catv Doctype '/<head><title>VBM admin</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" type="text/javascript">
function GrpSel(sel) { return; }
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><b><font size="+2">'"VBM Administration"'</font>
</b><br><br>
'
extern /bin/date -u +'%A, %e. %b. %Y %X %Z'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Files</u></center>%c'
for 6 titel file act action iv script in %
ADMLOG $Fadmlog log Display 2 adm %
ADMLOG $Fadmlog src Source 2 adm %
ADMLOG $Fadmlog trun Truncate 2 adm %
SYSIDTXT $Fstation log Display 2 adm %
SYSIDTXT $Fstation src Source 2 adm %
CONNTEST $Fconntest log Display 2 adm %
CONNTEST $Fconntest src Source 2 adm %
PASSWORD ../adm/.wmspw src Source 2 adm %
BACKUP ../tmp/db.tar bak Create 0 adm %
BACKUP ../tmp/db.tar down Download 2 adm %
BACKUP ../tmp/db.tar del Delete 3 adm %
BACKUP ../tmp/db.tar upda !Update! 2 adm
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s14- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=admact' %
'&file='"$Hbuf" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
unset titel titel0 file act action iv script exist s
local w=00 n=- siz=000 max=000 nam=........ typ=........
local txt=.............................. val=..............................
local ja=2002 mo=12 ta=31 st=24 mi=60 se=60 rxtx=0 puls=0
systime val
ctime ja mo ta st mi se $val
[ "$TPwahl" != T ] && puls=1
RxTxRun && rxtx=1
echo '</b></pre></div>
<div class="dctlm"><form name="af" action="/cgi/adm.cgi" method="POST"><pre><b>%c'
for 8 txt w nam typ val siz max n in %
" Shutdown " 24 Shut checkbox "0" 0 0 ' ' %
" RxTx daemon run " 24 RxTx checkbox "$rxtx" 0 0 ' ' %
" RxTx SIGTERM " 24 Term checkbox "0" 0 0 ' ' %
" RxTx auto start " 24 Auto checkbox "$RxTxAuto" 0 0 ' ' %
" Connect test " 24 Conn checkbox "$ConnTest" 0 0 ' ' %
" Build Conn test " 24 Build checkbox "$CTbuild" 0 0 ' ' %
" Modem mode " 24 Modem checkbox "$MOwahl" 0 0 ' ' %
" Pulse dial " 24 Puls checkbox "$puls" 0 0 ' ' %
"Modem init append " 24 MInit text "$MOinitapp" 22 30 ' ' %
"DD MM YYYY hh mm " 24 Day text "$ta" 2 2 '-' %
" " '' Mon text "$mo" 2 2 '-' %
" " '' Year text "$ja" 4 4 '-' %
" " '' Hour text "" 2 2 '-' %
" " '' Min text "" 2 2 ' ' %
" IP " 24 IP text "$VBMip" 15 0 ' ' %
" User + Pass " 24 User text "" 15 15 '-' %
" " '' Pass password "" 15 15 ' ' %
" Admin Pass " 24 AdmPw password "" 15 15 ' ' %
" New Pass " 24 NewPw password "" 15 15 ' ' %
" AdmLogSize max " 24 AdmLs text "$AdmLogSz" 6 6 ' ' %
" SysLogSize max " 24 SysLs text "$SysLogSz" 4 4 '-'
do
case $typ in
text|password)
se= [ max -eq 0 ] && max=$siz se='onFocus="this.form.'"$nam"'.blur();"'
prints s${w}ss$n "$txt" '<input name="'"$nam"'" type="'"$typ"'"' %
'value="'"$val"'" size="'"$siz"'" maxlength="'"$max"'"'"$se"'>'
;;
checkbox)
[ val -gt 0 ] && val=checked
prints s${w}ss$n "$txt" '<input class="butt" name="'"$nam" %
'" type="'"$typ"'"'" $val>"
;;
esac
done
echo '</b></pre></form>'
print -r '<form action="/cgi/adm.cgi" method="POST" enctype="multipart/form-data">
<br><center><b><input class="butt" type="SUBMIT" value=" Upload Backup file: ">
<input class="butt" type="FILE" name="UpLd"
size="40" maxlength="30000000" accept="*/*">'
echo '</b></center></form></div><br><tt><font color="#d0d0d0">'
uname
echo "- $SERVER_SOFTWARE=$SERVER_ADDR:$SERVER_PORT - $REMOTE_ADDR<br> "
echo '</font></tt></body></html>'
return 0
}
MkInfoFrameset() {
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
print -r '</head>
<frameset rows="*,77" bordercolor="#ffd700" border="2">
<frame name="Info" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="InfoButtons" src="/htm/infobuttons.htm"
scrolling="no" frameborder="0" marginwidth="30" marginheight="10">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
Ee2Muc() {
local ft=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
local V=00 v=00 sn=..............................
Hbuf="$(- extern /bin/date -u +'%A, %e.%b.%Y %X' )"
fstat -mv ft "$1"
ctime ja mo ta st mi se $ft
< "$1"
catv $((962<<1)),2,0 =ft:
catv $((965<<1)),16,0 =sn:
><
base -w ft +10 ft
let "V=ft>>8, v=ft&255"
base -W sn +w sn
conv -d sn
expr "$sn" :: '[^JY0-9.-]' && sn=YY000000-000.000
prints s-48s- "Konfiguration file MU1000C :" "$RN"
prints s-48s- "Work.-No. : $sn" "$RN"
prints s50s50s50- "$RN" "$RN" "$RN"
prints s-48s- "Project : VBM" "$RN"
prints s-48s- "Firmware : Version $V.$v" "$RN"
prints s-48s- "Pfad : data.muc" "$RN"
prints s-48s- "Version : 1.23" "$RN"
prints s-48s- "Prüfungsdatum: $ta.$mo.$ja $st:$mi" "$RN"
prints s-48s- "Memo :" "$RN"
prints s-48s- "VBM created" "$RN"
prints s-48s- "$Hbuf" "$RN"
to $((100-13)) repeat
do
prints s50- "$RN"
done
base -W +w < "$1"
return 0
}
MkStatTbl() {
local kat=00000 num=00000 typ=00000 nam:.20 inh:.200
echo "<div class=%"$2%">"
[ "0${#5}" -gt 0 ] && echo "<h1><u>$5</u></h1>"
[ $1 -gt 1 ] && echo "<pre><b>%c"
while read kat num typ nam inh
do
conv '-t` '"$Tconv" nam inh
expr "$nam" :nam '<' += '<'
expr "$inh" :inh '<' += '<'
[ "$nam" != - ] && nam="$nam "
[ "$nam" == - ] && nam=
expr "$typ" :: 't' && catv '/<ul>%n'
expr "$typ" :: 'n' && catv /%n
catv ".$3" nam inh ".$4" /%n
expr "$typ" :: 'N' && catv /%n
expr "$typ" :: 'T' && catv '/</ul>%n'
done
[ $1 -gt 1 ] && echo '</b></pre>'
[ $1 -eq 1 ] && echo '<form><b><input class="butt" type="button" value="Back" onClick="window.back();"></b></form>%c'
echo "</div>"
return 0
}
MkStatHtm() {
base -10 Tconv +b Tconv
local n=000 class=stat1 fa='<h3>' fb='</h3>'
local title=........................................
catv Doctype '/<head><title>MU-Status</title>%n' Meta
print -r '</head><body class="main">'
for n to 20 repeat
do
ifset TblTitle$n || break
title="$TblTitle[n]"
[ "$title" == '-' ] && continue
[ "$title" == ' ' ] && title=
class=stat fa= fb=
[ n -eq 1 ] && class=stat1 fa='<h3>' fb='</h3>'
grep "^$n"'[ %t]' $1 | MkStatTbl $n $class "$fa" "$fb" "$title"
done
echo '</body></html>'
return 0
}
XmsgExit() {
RxTxMsg="FAIL: $1" Uvars RxTxMsg
echo "Status: 204 No Content%n"
exit 0
return 0
}
CallSys() {
local pw:9.16 nam=.......... adir=....................
local iph=.............................. ipw=....................
RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ RxTxAuto -gt 0 ] && {
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
XmsgExit "RxTx process still not running."
}
XmsgExit "RxTx process not running."
}
RxTxMsg="RXTX:" Uvars RxTxMsg
Hbuf="$1"
conv '-t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) adir="$Hbuf" ;;
pass) pw="$Hbuf" ;;
act)
[ "$Hbuf" == quit ] && {
[ MUcall -gt 0 -a MUcall -le 9 ] && MUcall=-1 Uvars MUcall
return 0
}
[ MUcall -gt 0 -a MUcall -le 9 -o MUcall -lt 0 %
-o MUcall -ge 30 -a MUcall -le 39 ] && XmsgExit ""
GetIval Hbuf $Fid "$adir" || XmsgExit "Phone number not found."
iph="$Hbuf"
CkTelnu "$iph" || XmsgExit "Phone wrong: »$iph«"
GetIval Hbuf $Pid "$adir" || XmsgExit "Password not found."
ipw="$Hbuf"
expr "$pw" :: '^%t%t%t' || {
expr "$pw" :: '^...' || XmsgExit "Password wrong"
expr "$ipw" :: '^...' || XmsgExit "iPassword wrong: »$ipw«"
catv ipw | extern ./mailcode -dns -c "$MC64" | catv 0 =ipw:
cmpv ipw pw || XmsgExit "Password does not match"
MUcall=02
}
MUdir=$adir Uvars MUdir
Telnu=$iph Uvars Telnu
[ MUcall -ne 2 ] && MUcall=01
Uvars MUcall
;;
esac
done
return 0
}
MkCtlhHtm() {
local code="$MUcall" msg:.50
msg=STAT
[ code -ge 20 -a code -le 29 ] && msg=FAIL
[ code -ge 11 -a code -le 12 ] && msg=OKAY
let "code+=0"
case "$code" in
-1) msg="$msg: [$code] User quit.";;
0) msg="$msg: [$code] Default state.";;
11) msg="$msg: [$code] RxTx got data.";;
12) msg="$msg: [$code] RxTx configured.";;
16) msg="$msg: [$code] Connection tested.";;
17) msg="$msg: [$code] Modem initialized.";;
18) msg="$msg: [$code] Data received.";;
20) msg="$msg: [$code] RxTx error.";;
21) msg="$msg: [$code] RxTx get data failed.";;
22) msg="$msg: [$code] RxTx config failed.";;
26) msg="$msg: [$code] Connect test failed.";;
28) msg="$msg: [$code] Dial in failed.";;
29) msg="$msg: [$code] RING event broken.";;
30) msg="$msg: [$code] RxTx daemon exited.";;
36) msg="$msg: [$code] Testing connection.";;
37) msg="$msg: [$code] Modem initialization.";;
38) msg="$msg: [$code] Incoming call.";;
39) msg="$msg: [$code] RING event.";;
*) msg="$msg: RxTx code: »$code«";;
esac
expr "$RxTxMsg" :: '^FAIL:' && {
catv .FAIL =msg
[ "$RxTxMsg" != "FAIL: " ] && msg="$RxTxMsg"
RxTxMsg="RXTX:" Uvars RxTxMsg
}
print -r '<html><head><title></title></head><body><form>
<input name="CtlhInp" type="hidden" value="'"$msg"'">
</form><script language="JavaScript" type="text/javascript">
parent.frames[0].focus();
</script></body></html>'
return 0
}
MkCtlFrameset() {
catv Doctype '/<head><title>VBM System-Directory</title>%n' Meta
print -r '</head>
<frameset cols="100%,*" bordercolor="#d0d0d0" border="0">
<frame name="Ctlv" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="Ctlh" src="/cgi/main.cgi?req=ctlh"
scrolling="no" frameborder="0" marginwidth="0" marginheight="0">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
CtlAction() {
local id=0000 nam=.......... obj=..............................
local gid=0000 grp=$obj$obj anl=$obj$obj adir=$obj
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) obj="$Hbuf" adir="$obj"
[ -d "$obj" ] || PutErrHtm "Directory not found: »$obj«" ;;
file) obj="$Hbuf" expr "$obj" :adir '/[^/]%{1,}$' = '' ;;
grp) grp="$Hbuf" ;;
anl) anl="$Hbuf" ;;
act)
case "$Hbuf" in
delete)
expr "$obj" :id '%([0-9]*%)$'
expr "$obj" :Hbuf '[0-9]*$' = $Fali
grep -v "^$id " $Hbuf | cat > $Hbuf
extern rm -rf $obj
WrLog "System:$obj [$grp : $anl]" "removed"
expr "$obj" :gid '%([0-9]*%)/[0-9]*$'
grep -v "^$gid $id " $Fstation | cat > $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
[ -s $Hbuf ] && break
expr "$obj" :Hbuf '[0-9]*/[0-9]*$' = $Fali
grep -v "^$gid " $Hbuf | cat > $Hbuf
expr "$obj" :Hbuf '/[0-9]*$' = ''
extern rm -rf $Hbuf
WrLog "Group:$Hbuf [$grp]" "removed"
;;
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj
expr "$obj" :: '/conn$' &&
[ CTbuild -ne 1 ] && CTbuild=1 Uvars CTbuild
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
set) : > $obj
[ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
stat) echo "Content-type: text/html%n"
MkStatHtm $obj
return 0 ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
down) echo "Content-type: application/octet-stream%n"
Ee2Muc $obj
return 0 ;;
esac
;;
esac
done
echo "Status: 204 No Content%n"
return 0
}
PutFileDate() {
[ -f "$1" ] || { echo "</b>--.--.---- --:-- -----<b>%c"; return 0; }
local ft=0000000000 sz=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
fstat -msv ft sz "$1"
ctime ja mo ta st mi se $ft
catv ta /. mo /. ja '/ ' st /: mi
prints s8- $sz
ft=1 [ sz -gt 0 ] && ft=2
return $ft
}
MkCtlHtm() {
[ -d "$3" ] || PutErrHtm nohdr "Directory not found: »$3«"
[ -f "$3/i" ] || PutErrHtm nohdr "File not found: »$3/i«"
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
local grp=$titel$titel anl=$titel$titel gid=0000 aid=0000
expr "$3" :aid '%([0-9]%{1,}%)$'
expr "$3" :gid '%([0-9]%{1,}%)/[0-9]%{1,}$'
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" src="/js/ctl.js" type="text/javascript">
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><form><b><font size="+2">'"$1 : $2 "'</font>
<input class="butt" type="button" value="Delete"
onClick="DelSys('''"$3"''','''"$1"''','''"$2"''');">
<input class="butt" type="button" value="Rename"
onClick="void(prompt(''Rename dummy. Group : System.\r\nDelimiter is » : «'','''"$1 : $2"'''));">
</b></form>
'
extern /bin/date -u +'%A, %e. %b. %Y %X'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Flags and Files</u></center>%c'
Hbuf="$1" Escape Hbuf; grp="$Hbuf"
Hbuf="$2" Escape Hbuf; anl="$Hbuf"
for 6 titel file act action iv script in %
FAIL $3/fail del Unset 3 main %
FAIL $3/fail set Set 0 main %
FAIL $3/fail src Source 2 main %
OKAY $3/okay del Unset 3 main %
OKAY $3/okay set Set 0 main %
CFGLOCK $3/lock del Unset 3 new %
CFGLOCK $3/lock set Set 0 new %
CONNTEST $3/conn log Display 2 main %
CONNTEST $3/conn src Source 2 main %
CONNTEST $3/conn del Delete 3 adm %
INFOSET $3/i log Display 2 main %
INFOSET $3/i src Source 2 main %
STATE $3/stat stat Display 2 main %
STATE $3/stat src Source 2 main %
CONFIG $3/eepr down Download 2 main %
LOG $3/log log Display 2 main %
LOG $3/log src Source 2 main %
LOG $3/log del Delete 2 new
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s11- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=ctlact' %
'&file='"$Hbuf"'&grp='"$grp"'&anl='"$anl" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
echo '</b></pre></div>
<div class="dctl"><form><br>Password<b>
<input name="ConfPass" type="password" value="" size="15" maxlength="15">
<input class="butt" type="button" value="Call (configure)"
onClick="CallSys(1,'''"$3"''',this.form.ConfPass.value);">
<input class="butt" type="button" value="Call (get data)"
onClick="CallSys(1,'''"$3"''',''\t\t\t'');">
<a href="javascript:void(LedAction(1))">
<img name="led" align="middle" src="/img/ledge0.jpg" width="21" height="21"
hspace="5" vspace="5" border="0"></a>
<br><br>
<input class="butt" type="button" value="Compose configuration"'
[ -s "$3/eepr" ] &&
echo 'onClick="top.location.href=''/cgi/muee.cgi?eemain.'"$gid.$aid"''';">'
[ -s "$3/eepr" ] ||
echo 'onClick="alert(''This system directory contains no config data.'');">'
echo '
<input class="butt" type="button" value="Reload"
onClick="top.location.reload();">
<input class="butt" type="button" value="Close"
onClick="top.close();">
<input class="butt" type="button" value="Help"
onClick="Help(''#sysctl'');">
</b></form></div>
</body></html>'
return 0
}
PutSysTblTxt() {
case "$1" in
head)
print -r '
<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">
<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<font color="#ff9966" size="-1">State</font>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System name</font>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System type</font>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">Site location</font>
</td></tr></table>
<font color="#000000"><hr noshade width="100%" size="1"></font>'
;;
tail)
print -r '
<br><br><br>
<font color="#000000" size="-2">
> Click on state to show system state informations<br>
> Click on system text to show system informations<br>
</font>'
;;
esac
return 0
}
PutSysTbl() {
local ctlhref="javascript:MkWinAnlCtl('$2','$3');"
local newhref="javascript:MkWinAnlNew('$2','$3');"
local _3='<font size="-1">'"$3"'</font>'
local _4='<font size="-1">'"$4"'</font>'
local _5='<font size="-1">'"$5"'</font>'
local color='/img/ok.jpg'
[ "$1" == '!' ] && color='/img/fail.jpg'
print -r '<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<a class="aanl" href="'"$ctlhref"'">
<img src="'"$color"'" border="0" width="29" height="32"></a>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_3 "'</a></b>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_4 "'</a></b>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_5 "'</a></b>
</td></tr>'
return 0
}
MkAnlHtm() {
local ali=$1/$Fali id=0000 fail=' ' faila=0 ifile=................
local ginh=........................................
local ainh=........................................
local oinh=........................................
local tinh=........................................
local gdir="$1"
[ -z "$1" ] && gdir=.. ali=./null
[ -d "$gdir" ] || PutErrHtm nohdr "Directory not found: »$gdir«"
[ -f "$ali" ] || PutErrHtm nohdr "File not found: »$ali«"
catv Doctype '/<head><title>VBM SysTable</title>%n' Meta
print -r %
'<script language="JavaScript" src="/js/anl.js" type="text/javascript"></script>
</head><body class="main">'
PutSysTblTxt head
print -r %
'<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">'
< $ali
while read id -
do
ifile=$gdir/$id/i
[ -s $ifile ] || continue
fail=' '
[ -f $gdir/$id/okay ] && fail='+'
[ -f $gdir/$id/fail ] && fail='!'
local g=g a=a o=o t=t
5< $ifile
while read -u5 id Hbuf && [ -n "$g$a$o$t" ]
do
[ id -eq Gid ] && ginh="$Hbuf" unset g
[ id -eq Aid ] && ainh="$Hbuf" unset a
[ id -eq Oid ] && oinh="$Hbuf" unset o
[ id -eq Tid ] && tinh="$Hbuf" unset t
done
><
PutSysTbl "$fail" "$ginh" "$ainh" "$tinh" "$oinh"
done
><
[ -z "$1" ] &| expr "$ifile" :: '^%.%.%.' && {
echo --
MkGrpArr $Fgrpajs
Failall=0
MkGrpArr $Fgrpaejs Err && Failall=1
Uvars Failall
}
print -r '</table>'
PutSysTblTxt tail
print -r '
<script language="JavaScript" type="text/javascript">
if ('"0$Update"'>0) parent.frames[2].location.reload();
window.setTimeout(''parent.frames[2].SetSel("anl"); parent.frames[2].SetSelOpt("'"$ginh"'",'"$Failall"');'',1500);
</script>
</body></html>'
[ Update -ne 0 ] && Update=0 Uvars Update
return 0
}
GetInfoZ() {
local id=000 s=0
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
$2=''
return 1
}
MkInfoHtm() {
[ -s $Finfobase ] || PutErrHtm nohdr "File not found: »$Finfobase«"
local n=00 name=........
local typ=.... id=000 len=00 max=00 flg=...
local dflt=....................
local text=...........................................................
catv Doctype '/<head><title>VBM-MU-Dataset</title>%n' Meta %
'/<script language="JavaScript" type="text/javascript">%n' %
'/function GrpSel(sel) {%n' %
'/ document.forms[0].I' Gid '/.value=%n' %
'/ sel.options[sel.selectedIndex].text.slice(2);%n' %
'/}%n' %
'/</script>%n' %
'/</head>%n' %
'/<body class="main" text="#ffd700">%n' %
'/<form name="FormInfo" action="/cgi/new.cgi" method="POST">%n' %
'/<pre><b>%n'
[ "$1" == exist ] && 5< $2
< $Finfobase
while read typ id len max flg dflt text
do
ifset typ || continue
expr "$typ" :: '^#' && continue
conv '-t` ' text dflt
[ ${#text} -gt 1 ] && prints sns36s- "" "$text" " "
[ "$max" == '=' ] && max=$len
[ "$max" == '-' ] && let "max=len+len"
let ++n
[ "$dflt" == ' ' ] && dflt=
Hbuf="$dflt"
[ "$1" == exist ] && {
GetInfoZ 5 Hbuf $id
[ id -eq Pid ] && Hbuf="®$Hbuf®"
}
case $typ in
itxt) name=I$id
catv ".<input name=%"$name%" type=%"TEXT%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
ptxt) name=P$id
catv ".<input name=%"$name%" type=%"PASSWORD%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
wtxt) name=W$id
conv "-t${CA}${NL}t$ESC$CR"'t` ' Hbuf
catv ".<textarea name=%"$name%" cols=%"$len%" rows=%"$max%"" %
". wrap=%"soft%">" Hbuf ".</textarea>"
;;
esac
done
><
[ "$1" == exist ] && ><
catv '/%n</b></pre></form>%n'
ifdef Newgrparr &&
echo '<script language="JavaScript" type="text/javascript">
window.setTimeout("parent.frames[2].location.reload();", 1500);
</script>'
catv '/</body></html>%n'
return 0
}
. ./functions.bish
catv /%0 =5119,,Hbuf
. ./cvars.bish
. ./uvars.bish
GetIds
VBMip=$SERVER_ADDR
[ "$REQUEST_METHOD" == GET ] && {
[ -s $Fgrpajs ] || MkGrpArr $Fgrpajs
[ -s $Fgrpaejs ] || MkGrpArr $Fgrpaejs Err && nop
case "$QUERY_STRING" in
main)
[ RxTxAuto -gt 0 ] && RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
sleep -m 600
RxTxRun || PutErrHtm "Start of RxTx daemon failed."
}
GetGrpDir first Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm "$Gdir"
;;
admin)
echo "Content-type: text/html%n"
MkAdmHtm
;;
req=admact&?*)
expr "$QUERY_STRING" :Hbuf '^req=admact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
AdmAction "$Hbuf"
Lock lockdb del
;;
new)
echo "Content-type: text/html%n"
MkInfoHtm new
;;
update)
MkGrpArr $Fgrpajs
local _Fail=0
MkGrpArr $Fgrpaejs Err && _Fail=1
[ _Fail -ne Failall ] && Failall=$_Fail Uvars Failall
[ Update -eq 0 ] && Update=1 Uvars Update
echo "Status: 204 No Content%n"
;;
req=infofset&?*)
expr "$QUERY_STRING" :Gdir 'req=infofset&' = 'req=info&' || Gdir=GX
echo "Content-type: text/html%n"
MkInfoFrameset "$Gdir"
;;
req=info&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
req=callsys&?*)
expr "$QUERY_STRING" :Gdir '^req=callsys&%(..*%)$' || Gdir=
CallSys "$Gdir"
echo "Status: 204 No Content%n"
;;
req=ctlfset&?*)
expr "$QUERY_STRING" :Gdir 'req=ctlfset&' = 'req=ctl&' || Gdir=GX
echo "Content-type: text/html%n"
MkCtlFrameset "$Gdir"
;;
req=ctlh)
echo "Content-type: text/html%n"
MkCtlhHtm
;;
req=ctl&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
Grp="$Gdir" Anl="$Adir"
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkCtlHtm "$Grp" "$Anl" $Adir
;;
req=ctlact&?*)
expr "$QUERY_STRING" :Hbuf '^req=ctlact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
CtlAction "$Hbuf"
Lock lockdb del
;;
selinhaltget=?*)
expr "$QUERY_STRING" :Hbuf '^[^=]%{1,}=%(..*%)$' || Hbuf=SGX
FormConv Hbuf
Gdir="$Hbuf"
GetGrpDir get Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm $Gdir
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
exit 0
}
[ "$REQUEST_METHOD" == POST ] && {
[ "$CONTENT_LENGTH" -eq 0 ] && PutErrHtm "No content"
case "$REQUEST_URI" in
*adm.cgi)
Lock lockdb
if expr "$CONTENT_TYPE" =:: 'boundary=.'
then
FormAdmBakRead "$CONTENT_LENGTH" || { Gdir=$?
Lock lockdb del
PutErrHtm "Backup Upload failed [$Gdir]"
}
else
FormAdmRead "$CONTENT_LENGTH" || echo "Status: 205 Reset Content%n"
fi
Lock lockdb del
echo "Content-type: text/html%n"
MkAdmHtm
;;
*new.cgi)
[ "$CONTENT_LENGTH" -gt 5000 ] && PutErrHtm "Content too large"
Lock lockdb
FormInfoRead "$CONTENT_LENGTH"
Lock lockdb del
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
*main.cgi)
PutErrHtm "Sorry!"
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
}
exit 0
. ./functions.bish
. ./cvars.bish
. ./uvars.bish
prints vs70 Nn
catv /%0 =2047,,Hbuf
. ./initee.bish
EEconvertTxt() {
local b=10 len=00000 blen=00$5 dflt="$8" min="$9" max="${10}"
EEmin=''
let "blen<<=1"
len=$blen
[ MUspsw -eq 1 -a "${11}" != '"' ] && dflt="${11}"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ MUspsw -eq 2 -a "${14}" != '"' ] && dflt="${14}"
case $6 in
x) b=16 ;;
b) b=2 ;;
esac
[ $7 == b ] && b=2
case $4 in
w) base -w $2 +$b $2
[ $6 == i -a $2 -gt 32767 ] && let "$2-=65536" ;;
L) base -L $2 +$b $2 ;;
S) base -W $2 +w $2
[ $6 == 0 ] && $2="${{2}" let "--len"
[ $6 == m ] && expr "${{2}" :$2 ' %{1,}$' = ''
InputLen=$len
return 0 ;;
esac
if [ $max != '"' ]
then
len=${#max}
[ ${#min} -gt len ] && len=${#min}
[ $6 == x -a $7 == b ] && let "len<<=2"
[ b -ne 10 ] && goend
local v=........
EEmin=$min EEmax=$max EEdflt=$dflt
for v in EEmin EEmax EEdflt
do
case $7 in
.1) expr "${{v}" :$v '.$' '.&' ;;
.2) let "${{#v}==1" && $v="${{v}0"
expr "${{v}" :$v '..$' '.&' ;;
1) let "$v/=10" ;;
m) let "$v/=60" ;;
=) ;;
*) EEmin='' goend 2 ;;
esac
expr "${{v}" :: '^%.' && $v="0${{v}"
done
else
case $b in
16) let "len<<=1";;
2) let "len<<=3";;
10) len=${#dflt};;
esac
fi
[ b -ne 10 ] && prints vsf0$len $2 "${{2}"
case $7 in
.1) let "++len"; expr "${{2}" :$2 '.$' '.&' ;;
.2) let "++len, ${{#2}==1" && $2="${{2}0"
expr "${{2}" :$2 '..$' '.&' ;;
1) let "--len, $2/=10" ;;
m) let "--len, $2/=60" ;;
b) ;;
a) let "$2=512-$2"; len=4 ;;
bb) let "b=$2&255, $2>>=8"
prints vssf02 $2 ${{2}. $b
len="${{#2}" ;;
J) let "$2<100" && let "$2+=2000"
let "$2>2079" && let "$2-=100"
len=4 ;;
esac
expr "${{2}" :: '^%.' && $2="0${{2}"
[ $6 == i ] && expr "${{2}" :: '^[-+]' || let "++len"
InputLen=$len
return 0
}
EEconvertEye() {
[ $15 == ro ] && return 1
local var=........ val="$2" _7=$7
local b=10 len=000 blen=00$5
let "blen<<=1, len=blen-1"
expr "$2" :var '^%([^:]%{1,}%):'
expr "$val" :val '^[^:]%{1,}:' = ''
[ $7 == .1 -o $7 == .2 -o $7 == 1 -o $7 == m -o $7 == a -o $7 == J ] &&
expr "$val" :val '[^0-9-]' += ''
[ $7 == = -a $4 != S ] && _7=$6
case $_7 in
u) expr "$val" :val '[^0-9]' += '' ;;
i) expr "$val" :val '[^0-9-]' += '' ;;
b) expr "$val" :val '[^01]' += ''
b=2 ;;
x) expr "$val" :val '[^0-9a-fA-F]' += ''
b=16 ;;
1) let "val*=10" ;;
m) let "val*=60" ;;
a) let "val=512-val" ;;
bb) expr "$val" :val '%(%d%.%d%{1,2}%)'
expr "$val" :val '%(%d%)%.%(%d%{1,2}%)' '(%1<<8)+%2'
let "val=$val" ;;
J) let "val-=1900, val>=100" && let "val-=100"
let "val<0" && val=80
let "val>99" && val=79 ;;
esac
case $4 in
w) base -$b val +w $var; return 0 ;;
L) base -$b val +L $var; return 0 ;;
S) [ $6 == 0 ] && {
catv $len,val =val:
prints vs-F000$blen val "$val"
}
[ $6 == m -a ${#val} -lt blen ] && prints vs-$blen val "$val"
base -w val +W $var ;;
esac
return 0
}
EEconvertHtm() {
local adr=00000 txt="${18}" min=$9 max=${10} unit
let "adr=$3"
[ MUspsw -eq 1 -a "${12}" != '"' ] && min="${12}" max="${13}"
[ ${16} != '"' ] && unit=" ${16}"
local onfoc
[ $6 == u -a $min == 0 -a $max == 1 ] && onfoc=" onFocus=%"Toggle01(this)%""
ifset EEmin || EEmax= EEdflt=
ifset EEmin && EEmin="</b><font color=%"#bbbbbb%"> [$EEmin " %
EEmax=" $EEmax]</font><b>"
conv '-t` ' txt
prints s25ss "$txt" %
" <input name=%"A$adr%" value=%"$2%" size=%"$InputLen%"" %
" maxlength=%"$InputLen%"$onfoc>$unit$EEmin$EEdflt$EEmax"
return 0
}
MkMucFile() {
local n=00000 sz=00000 o0=00000 o=00000 zv="$RN" c=.. boundary
cat > $Fmucupld
< $Fmucupld
while readl Hbuf
do
expr "$Hbuf" :boundary '%(-%{2,}[^-]%{1,}%)"%{0,1}$' && break
let "++n>0" && { >< ; return 1; }
done
while readl Hbuf
do
ifset Hbuf || break
done
n=0
> $1
while catv +0,50,0 =Hbuf:
do
let "${#Hbuf}!=50" && break
catv 48,2,Hbuf =c:
cmpv zv c || break
catv Hbuf
let "++n>=100" && break
done
let "n!=100" && { ><< ; return 2; }
catv /%r%n boundary /--%r%n =boundary:
catv /%r%r =c:
seek + 0 o0
while seek + 0 o; catv +0,1000,0 =Hbuf:
do
conv "-T$c" Hbuf
let "o+=$., $.<0" && continue
catv $o,${#boundary},0 =Hbuf:
cmpv Hbuf boundary || { let "++o"; seek $o 0; continue; }
catv $o0,$((o-o0)),0
let "o+=${#boundary}"
catv $o,,0
break
done
><<
fstat -sv sz $1
let "sz!=5000+2048" && return 3
catv 5000,2048,0 < $1 | base -W +w > $Fmueebin
return 0
}
ChangeMUee() {
local rub=00 offs=000000 nam=........ sp=00 sw=00 spsw=0
local adr=00000 typ=.... len=00000 flg=........ gid=0000 aid=0000
local val=.....................................
local f=............................................
catv 0 =1000,Hbuf:
conv '-t& ' Hbuf
< $Feebase
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Rubrik) $1="$Hbuf"
for 3 rub gid aid in $Hbuf; do break; done
let "offs=(rub-1)*6"
catv $offs,5,BasePos =offs:
seek $offs 0
readl Hbuf
3<> $Ddb/$gid/$aid/eepr
;;
A[0-9]*) val="$Hbuf"
conv -DA nam
while readl Hbuf
do
expr "$Hbuf" :: '^@' || break 2
expr "$Hbuf" :: '^@%d' || continue
conv -D@ Hbuf
for 16 adr typ len f f f f f f f f f flg f f f in $Hbuf
do break; done
let "len<<=1, adr=$adr, adr<<=1, (nam<<1)==adr" || continue
EEconvertEye eye "Hbuf:$val" $Hbuf || continue 2
[ $flg == SP ] && sp=$val
[ $flg == SW ] && sw=$val
catv $len,Hbuf =$adr,,3
continue 2
done
;;
esac
done
><<
[ sw -eq 1 ] && sp=0 spsw=2
[ sp -eq 1 ] && spsw=1
[ MUspsw -ne spsw ] && { MUspsw=$spsw Uvars MUspsw; CopyCmuee; }
return 0
}
MkEErfHtm() {
local r=0 e=0 rub=$1 offs=000000 feepr=$Ddb/$2/$3/eepr
local adr=00000 len=00000 siga=..........
let "rub<1" && rub=1
catv $(([rub-1]*6)),5,BasePos =offs:
< $Feebase
seek $offs 0
readl Hbuf
seek + 0 offs
><
expr "$Hbuf" :: '^!' && r=e conv -D! Hbuf
catv Doctype '/<html><head><title></title>%n' Meta
echo '<script language="JavaScript">%
function Toggle01(i)%
{%
var inh= i.value;%
if (inh=="0" || inh=="" || inh==" ")%
i.value= "1";%
else i.value= "0";%
i.blur();%
}%
</script>%012%c'
siga=siga.js
[ MUspsw -eq 2 ] && siga=sigabm.js
[ $r == e ] &&
echo '<script language="JavaScript" %
src="/js/'"$siga"'" type="text/javascript"></script>%
<script language="JavaScript" %
src="/js/sig.js" type="text/javascript"></script>%
%012%c'
echo '</head>%012<body class="main" text="#ffd700">%012%c'
[ $r == e ] && echo '<script language="JavaScript">Wr("'"$Hbuf"'");</script>%012%c'
catv '.<form name="Vis" action="/cgi/eepr.cgi" method="POST"><pre><b>' /%n %
'.<input name="Rubrik" type="HIDDEN" value="'"$rub $2 $3"'">' /%n
[ $r == e ] && catv '.<input name="Signal" type="HIDDEN">' /%n
[ $r == 0 ] && catv '.<h2>' Hbuf '.</h2>' /%n%n
< $Feebase
seek $offs 0
while readl Hbuf
do
expr "$Hbuf" :e '^@%(.%)' || break
[ "$e" == : ] && {
conv -D@D: Hbuf
prints s27s "" "</b><font color=%"#ffffff%">$Hbuf</font><b>"
continue
}
conv -D@ Hbuf
for 3 adr len len in $Hbuf; do break; done
let "len<<=1" "adr=$adr" "adr<<=1"
catv $adr,$len,3 =Nn: 3<> $feepr
EEconvertTxt txt Nn $Hbuf
EEconvertHtm htm "$Nn" $Hbuf
done
echo '</b></pre></form>%012%c'
[ $r == e ] && echo '<script language="JavaScript">Dflt(0);</script>%012%c'
echo '</body></html>%012%c'
><
return 0
}
MkEElfHtm() {
local n=00 offs=000000
catv Doctype '/<html><head><title>VBM EE-Rubriken</title>%n' Meta
echo '<base target="EErf">%n</head>%n<body class="main" text="#ffd700"><b>'
< $Feebase
for offs in $BasePos
do
seek $offs 0
readl Hbuf
let "++n"
catv '.<a class="elf" href="/cgi/muee.cgi?eerf.' n "..$1" %
'.">' Hbuf '.</a><br><br>' /%n
done
echo '</b></body></html>'
><
return 0
}
MkEeFrameset() {
catv Doctype '/<head><title>VBM eemain</title>%n' Meta
print -r '</head>
<frameset rows="*,77" bordercolor="#ffd700" border="2">
<frameset cols="20%,*" bordercolor="#ffd700" border="2">
<frame name="EElf" src="/cgi/muee.cgi?eelf.'"$1"'" scrolling="auto"
frameborder="0" marginwidth="10" marginheight="30">
<frame name="EErf" src="/cgi/muee.cgi?eerf.0.'"$1"'" scrolling="yes"
frameborder="0" marginwidth="20" marginheight="0">
</frameset>
<frame name="EEbuttons" src="/htm/eebuttons.htm" scrolling="no"
frameborder="0" marginwidth="30" marginheight="10">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
[ "$REQUEST_METHOD" == POST ] && {
expr "$REQUEST_URI" :: '/eepr%.cgi$' || PutErrHtm "Sorry!"
local sz="$CONTENT_LENGTH"
if [ sz -ge 2048 ]
then
PutErrHtm "Not implemented."
echo "Status: 205 Reset Content%n"
else
ChangeMUee Nn
echo "Content-type: text/html%n"
MkEErfHtm $Nn
fi
exit 0
}
[ "$REQUEST_METHOD" == GET ] && {
local n="$QUERY_STRING"
case "$n" in
defaults__)
CopyCmuee
echo "Content-type: text/html%n"
cat ../eemain.htm
;;
eelf.?*)
expr "$n" :n '^eelf.%(..*%)$'
echo "Content-type: text/html%n"
MkEElfHtm $n
;;
eerf.?*)
expr "$n" :n '^eerf.%(..*%)$'
expr "$n" :n '[^0-9]' += ' '
echo "Content-type: text/html%n"
MkEErfHtm $n
;;
eemain.?*)
expr "$n" :n '^eemain.%(..*%)$'
echo "Content-type: text/html%n"
MkEeFrameset $n
;;
*)
echo "Status: 205 Reset Content%n" ;;
esac
}
exit 0
Escape() {
local c=. h=... spez="${{1}"
expr "${{1}" :spez '[a-zA-Z_0-9&=.-]' += ''
ifset spez || return 0
conv '-d%' spez
[ $. -ge 0 ] && expr "${{1}" :$1 '%%' += '%25'
while ifset spez
do
catv 1,spez =c
conv "-d$c" spez
base -b c +16 h
expr "${{1}" :$1 "$c" += '%'$h
done
return 0
}
CkPasswd() {
[ 0${#1} -lt 3 -o 0${#1} -gt 15 ] && return 1
expr "$1" :: '[^!-~]' && return 1
return 0
}
RxTxRun() {
[ $# -eq 0 ] && {
extern $ps_cmd | grep -qm 'rxtx.bish[ %t]%{1,}run'
return
}
[ "$1" == sigterm ] && {
local pid
extern $ps_cmd | pid=$( grep -m 'rxtx.bish[ %t]%{1,}run' ) || return
catv pid /%n | read - pid -
expr "$pid" :: '^[0-9]%{1,}$' || return
kill $pid
}
return
}
CkChStation() {
local sta="$2" gid=0000 aid=0000 buf:.200
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
buf="$(- grep -m "^$gid $aid " $Fstation )" || return
expr "$buf" :buf "^$gid $aid "'%(.*%)$' || return
cmpv buf sta && return 0
cat $Fstation | {
> $Fstation
while readl buf
do
expr "$buf" :: "^$gid $aid " || { catv buf /%n; continue; }
print -r "$gid $aid $sta"
done
><
}
return 0
}
AddStation() {
local gid=0000 aid=0000
expr "$1" :gid '%([0-9]*%)/[0-9]*$'
expr "$1" :aid '[0-9]*/%([0-9]*%)$'
print -r "$gid $aid $2" >> $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
return 0
}
CkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 min=0000
local bez; prints vs50 bez
mkdirs $2
[ -e $ali ] || : > $ali
< $ali
while read dali bez
do
[ "$bez" == "$3" ] && { ><; $1=$2/$dali; return 0; }
let "min==0&&dali-dali0>1" && let "min=dali0+1"
dali0=$dali
done
><
let "++dali, min==0" && $1=$2/$dali
let "min>0" && $1=$2/$min
return 1
}
MkGA() {
local ali=$2/$Fali dali=0000 dali0=0000 w=0
local bez; prints vs50 bez
mkdirs $2 $1
expr "$1" :dali0 '/%([0-9]%{1,4}%)$'
[ -s $ali ] || { catv dali0 ". $3" /%n > $ali; return 0; }
cat < $ali | {
> $ali
while read dali bez
do
[ dali -gt dali0 -a w -eq 0 ] && w=1 catv dali0 ". $3" /%n
catv dali ". " bez /%n
done
[ w -eq 0 ] && catv dali0 ". $3" /%n
><
}
return 0
}
FormInfoRead() {
local g=g a=a i=i n=000 nam=.................... tmp=../tmp/newtmp
local ctv=0000 ctv0=0000 sta=....................
local grp; prints vs50 grp
local anl; prints vs50 anl
expr "$1" :: '^[0-9]%{2,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>5000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
> $tmp
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
I[0-9]*)
Hbuf=$Hbuf
[ ${#Hbuf} -eq 0 ] && goend
[ $nam == I$Gid ] && grp="$Hbuf" unset g
[ $nam == I$Aid ] && anl="$Hbuf" unset a
[ $nam == I$Iid ] && sta="$Hbuf" unset i
[ $nam == I$Cid ] && ctv="$Hbuf"
;;
W[0-9]*)
conv "-t${CR}${ESC}t$NL${CA}"'t `' Hbuf
;;
P[0-9]*)
expr "$Hbuf" :: '^®[^®]%{3,}®$' && { conv -d® Hbuf; goend; }
CkPasswd "$Hbuf" || { ><; remove $tmp; PutErrHtm "Password wrong!"; }
catv Hbuf | extern ./mailcode -en -c "$MC64" | catv 0 =Hbuf:
;;
esac
expr "$nam" :: '^[IWP][0-9]%{1,3}$' || continue
catv 1,3,nam "/ " Hbuf RN
done
><
[ -n "$g$a$i" ] && { remove $tmp
PutErrHtm "Group, System and Sys-ID are essential!"; }
expr "$grp" :: '^[!* ]' && { remove $tmp; PutErrHtm "!* not allowed: »$grp«"; }
CkGA Gdir $Ddb "$grp" || MkGA $Gdir $Ddb "$grp" && MkGrpArr $Fgrpajs
CkGA Adir $Gdir "$anl" || MkGA $Adir $Gdir "$anl" && AddStation $Adir "$sta"
[ -s $Adir/i ] && ctv0="$(- grep -m "^$Cid " $Adir/i )" && {
expr "$ctv0" :ctv0 '^[0-9]%{1,} %([0-9]%{1,}%)' || ctv0=0
[ ctv -ne ctv0 -a CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
}
cat $tmp > $Adir/i
remove $tmp
CkChStation $Adir "$sta" || PutErrHtm "Change to »$sta« failed."
return 0
}
GetGrpDir() {
[ -s $Ddb/$Fali ] || return 1
local id=0000 inh
case $1 in
first)
catv 5000,0 =Hbuf: < $Ddb/$Fali
expr "$Hbuf" :Hbuf '%([0-9]%{1,} %)[^%n]*%n' + '%1'
set +f
for id in $Hbuf
do
: $Ddb/$id/[1-9]*/i
[ "$]" -gt 0 ] && { set -f; $2=$Ddb/$id; return 0; }
done
set -f
;;
get)
< $Ddb/$Fali
while read id inh
do
cmpv $2 inh || continue
$2=$Ddb/$id; ><; return 0
done
><
;;
esac
return 1
}
GetAnlDir() {
local id=0000 inh
[ -s $2/$Fali ] || return 1
< $2/$Fali
while read id inh
do
cmpv $1 inh || continue
$1=$2/$id; ><; return 0
done
><
return 1
}
MkGrpArr() {
local r=0 n=000 i=000 id=0000 grp
Lock lockga
[ -e $Ddb/$Fali ] || : > $Ddb/$Fali
[ $# -ge 2 ] && r=1
[ $# -lt 2 ] && Newgrparr=1
> $1
< $Ddb/$Fali
while readl grp
do let ++n; done
echo "var GrpAn$2= $n;"
[ n -gt 0 ] && echo "var GrpArr$2= new Array($n);"
[ n -eq 0 ] && echo "var GrpArr$2= new Array(1);%nGrpArr${2}[0]= %"%";"
i=0
seek 0 0
set +f
while read id grp
do
[ $# -ge 2 ] && {
grp=' '
: $Ddb/$id/[1-9]*/fail
[ $] -gt 0 ] && r=0 grp='! '
}
print -r "GrpArr${2}[$i]= %"$grp%";"
let ++i
done
><<
set -f
Lock lockga del
return $r
}
SetPass() {
local pw="$2"
WrLog "Password operation: $1" "change"
[ 0${#1} -lt 1 -o 0${#2} -lt 3 -a 0${#2} -gt 0 ] &&
PutErrHtm "User/Pass length not accepted."
[ 0${#2} -eq 0 ] && pw='`{!@#$%^vI*")7Q'
expr "$1" :: '[^a-zA-Z0-9_]' && PutErrHtm "User name contains wrong chars."
expr "$1" :: '^[a-zA-Z]' || PutErrHtm "User name must begin with [a-zA-Z]."
cd ../adm
htpasswd -bm .wmspw "$1" "$pw" 2>/dev/null ||
PutErrHtm "Password operation failed."
cd -
return 0
}
PutTxt2Htm() {
catv Doctype '/<head><title>TXT2HTML</title>%n' Meta
print -r '</head>
<body class="main"><div class="stat1"><form><b>
<input class="butt" type="button" value="Back" onClick="window.back();">
</b></form></div>'
print -rn '<div class="stat"><pre><b>'
cat "$1"
print -r '</b></pre></div></body></html>'
return 0
}
FormAdmBakRead() {
local boundary="$CONTENT_TYPE" arch=../tmp/db.tar
local sz:010 bp6:010 z:.500
expr "$boundary" =:boundary 'boundary=%(..*%)' || return 1
let "bp6=${#boundary}+8"
catv 1000,0 | {
while readl z
do
ifset z || break
done
catv 0 > $arch
catv ,.
}
[ $. -le 0 ] && { remove -s $arch; return 2; }
cat >> $arch
fstat -sv sz $arch
[ sz -lt bp6 ] && { remove -s $arch; return 3; }
catv -$bp6:,,0 =z: < $arch
expr "$z" :: "^%r%n--$boundary--%r%n%$" || { remove -s $arch; return 4; }
let "sz-=bp6"
fstat +s $sz $arch || { remove -s $arch; return 5; }
return 0
}
FormAdmRead() {
local ja=---- mo=-- ta=-- st=-- mi=-- se=00 ip=999.888.777.666
local tp=T md=0 rt=0 ct=0 ctb=0 as=0 sig=0
local nam=.................... user=................
expr "$1" :: '^[0-9]%{1,4}$' || PutErrHtm "Length value: »$1«"
let "$1<=3||$1>2000" && PutErrHtm "Length value: »$1«"
catv $1,0 =Hbuf:
conv -'t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
Shut) : > ../tmp/rxtx
sleep -m 800
RxTxRun && RxTxRun sigterm
[ "$OsTyp" == FreeBSD ] && {
echo "Content-type: text/plain%n"
extern ../adm/syscmd.bish shutdown "shutdown -h now"
sleep 10
return 2
}
;;
RxTx) rt=1 ;;
Auto) as=1 ;;
Term) sig=1 ;;
Modem) md=1 ;;
Puls) tp=P ;;
Conn) ct=1 ;;
Build) ctb=1 ;;
MInit) cmpv MOinitapp Hbuf || MOinitapp="$Hbuf" Uvars MOinitapp ;;
Day) ta=$Hbuf ;;
Mon) mo=$Hbuf ;;
Year) ja=$Hbuf ;;
Hour) st=$Hbuf ;;
Min) mi=$Hbuf ;;
IP)
CheckIP "$Hbuf" || PutErrHtm "IP address: »$Hbuf«"
ip=$Hbuf
;;
User)
for ip in admin new vbm root adm cie sam selotronic cfg config pass
do cmpv -i ip Hbuf && PutErrHtm "User name not applicable."; done
user="$Hbuf" ;;
Pass) [ -n "$user" ] && SetPass "$user" "$Hbuf" ;;
AdmPw) [ -n "$Hbuf" ] && SetPass admin "$Hbuf" ;;
NewPw) [ -n "$Hbuf" ] && SetPass new "$Hbuf" ;;
AdmLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne AdmLogSz ] && AdmLogSz=$Hbuf Uvars AdmLogSz
;;
SysLs)
expr "$Hbuf" :: '^[0-9]%{1,}$' &&
[ Hbuf -ne SysLogSz ] && SysLogSz=$Hbuf Uvars SysLogSz
;;
esac
done
[ "$TPwahl" != "$tp" ] && TPwahl=$tp Uvars TPwahl
[ MOwahl -ne md ] && MOwahl=$md Uvars MOwahl
[ RxTxAuto -ne as ] && RxTxAuto=$as Uvars RxTxAuto
[ ConnTest -ne ct ] && ConnTest=$ct Uvars ConnTest
[ CTbuild -ne ctb ] && CTbuild=$ctb Uvars CTbuild
if RxTxRun
then
[ rt -gt 0 ] && goend
: > ../tmp/rxtx
sleep -m 800
[ sig -gt 0 ] && RxTxRun && RxTxRun sigterm
else
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
remove -s ../tmp/rxtx
[ rt -eq 0 ] && goend
extern ../adm/rxtx.bish
sleep -m 200
fi
expr "$ta$mo$ja$st$mi$se" :: '^[0-9]%{7,14}$' && {
: $ta $mo $ja $st $mi
[ 0$} -eq 5 ] && extern ../adm/syscmd.bish date $ta $mo $ja $st $mi
}
return 0
}
AdmAction() {
local id=0000 nam=.......... obj=..............................
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
file) obj="$Hbuf" ;;
act)
case "$Hbuf" in
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj ;;
trun) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
: > $obj ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
bak)
cat uvars.bish > $Ddb/uvars.bish
extern tar chf $obj $Ddb
WrLog "File:$obj" "created" ;;
down) WrLog "File:$obj" "downloaded"
expr "$obj" :obj '^%.%./%(..*%)$'
echo "Location: http://$SERVER_ADDR:$SERVER_PORT/$obj%n"
return 0 ;;
upda) extern tar xepf $obj || PutErrHtm "Backup Update failed"
WrLog "File:$obj" "database updated from file"
[ -s $Ddb/uvars.bish ] && cat $Ddb/uvars.bish > uvars.bish
;;
esac
;;
esac
done
echo "Content-type: text/html%n"
MkAdmHtm
return 0
}
MkAdmHtm() {
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
catv Doctype '/<head><title>VBM admin</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" type="text/javascript">
function GrpSel(sel) { return; }
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><b><font size="+2">'"VBM Administration"'</font>
</b><br><br>
'
extern /bin/date -u +'%A, %e. %b. %Y %X %Z'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Files</u></center>%c'
for 6 titel file act action iv script in %
ADMLOG $Fadmlog log Display 2 adm %
ADMLOG $Fadmlog src Source 2 adm %
ADMLOG $Fadmlog trun Truncate 2 adm %
SYSIDTXT $Fstation log Display 2 adm %
SYSIDTXT $Fstation src Source 2 adm %
CONNTEST $Fconntest log Display 2 adm %
CONNTEST $Fconntest src Source 2 adm %
PASSWORD ../adm/.wmspw src Source 2 adm %
BACKUP ../tmp/db.tar bak Create 0 adm %
BACKUP ../tmp/db.tar down Download 2 adm %
BACKUP ../tmp/db.tar del Delete 3 adm %
BACKUP ../tmp/db.tar upda !Update! 2 adm
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s14- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=admact' %
'&file='"$Hbuf" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
unset titel titel0 file act action iv script exist s
local w=00 n=- siz=000 max=000 nam=........ typ=........
local txt=.............................. val=..............................
local ja=2002 mo=12 ta=31 st=24 mi=60 se=60 rxtx=0 puls=0
systime val
ctime ja mo ta st mi se $val
[ "$TPwahl" != T ] && puls=1
RxTxRun && rxtx=1
echo '</b></pre></div>
<div class="dctlm"><form name="af" action="/cgi/adm.cgi" method="POST"><pre><b>%c'
for 8 txt w nam typ val siz max n in %
" Shutdown " 24 Shut checkbox "0" 0 0 ' ' %
" RxTx daemon run " 24 RxTx checkbox "$rxtx" 0 0 ' ' %
" RxTx SIGTERM " 24 Term checkbox "0" 0 0 ' ' %
" RxTx auto start " 24 Auto checkbox "$RxTxAuto" 0 0 ' ' %
" Connect test " 24 Conn checkbox "$ConnTest" 0 0 ' ' %
" Build Conn test " 24 Build checkbox "$CTbuild" 0 0 ' ' %
" Modem mode " 24 Modem checkbox "$MOwahl" 0 0 ' ' %
" Pulse dial " 24 Puls checkbox "$puls" 0 0 ' ' %
"Modem init append " 24 MInit text "$MOinitapp" 22 30 ' ' %
"DD MM YYYY hh mm " 24 Day text "$ta" 2 2 '-' %
" " '' Mon text "$mo" 2 2 '-' %
" " '' Year text "$ja" 4 4 '-' %
" " '' Hour text "" 2 2 '-' %
" " '' Min text "" 2 2 ' ' %
" IP " 24 IP text "$VBMip" 15 0 ' ' %
" User + Pass " 24 User text "" 15 15 '-' %
" " '' Pass password "" 15 15 ' ' %
" Admin Pass " 24 AdmPw password "" 15 15 ' ' %
" New Pass " 24 NewPw password "" 15 15 ' ' %
" AdmLogSize max " 24 AdmLs text "$AdmLogSz" 6 6 ' ' %
" SysLogSize max " 24 SysLs text "$SysLogSz" 4 4 '-'
do
case $typ in
text|password)
se= [ max -eq 0 ] && max=$siz se='onFocus="this.form.'"$nam"'.blur();"'
prints s${w}ss$n "$txt" '<input name="'"$nam"'" type="'"$typ"'"' %
'value="'"$val"'" size="'"$siz"'" maxlength="'"$max"'"'"$se"'>'
;;
checkbox)
[ val -gt 0 ] && val=checked
prints s${w}ss$n "$txt" '<input class="butt" name="'"$nam" %
'" type="'"$typ"'"'" $val>"
;;
esac
done
echo '</b></pre></form>'
print -r '<form action="/cgi/adm.cgi" method="POST" enctype="multipart/form-data">
<br><center><b><input class="butt" type="SUBMIT" value=" Upload Backup file: ">
<input class="butt" type="FILE" name="UpLd"
size="40" maxlength="30000000" accept="*/*">'
echo '</b></center></form></div><br><tt><font color="#d0d0d0">'
uname
echo "- $SERVER_SOFTWARE=$SERVER_ADDR:$SERVER_PORT - $REMOTE_ADDR<br> "
echo '</font></tt></body></html>'
return 0
}
MkInfoFrameset() {
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
print -r '</head>
<frameset rows="*,77" bordercolor="#ffd700" border="2">
<frame name="Info" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="InfoButtons" src="/htm/infobuttons.htm"
scrolling="no" frameborder="0" marginwidth="30" marginheight="10">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
Ee2Muc() {
local ft=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
local V=00 v=00 sn=..............................
Hbuf="$(- extern /bin/date -u +'%A, %e.%b.%Y %X' )"
fstat -mv ft "$1"
ctime ja mo ta st mi se $ft
< "$1"
catv $((962<<1)),2,0 =ft:
catv $((965<<1)),16,0 =sn:
><
base -w ft +10 ft
let "V=ft>>8, v=ft&255"
base -W sn +w sn
conv -d sn
expr "$sn" :: '[^JY0-9.-]' && sn=YY000000-000.000
prints s-48s- "Konfiguration file MU1000C :" "$RN"
prints s-48s- "Work.-No. : $sn" "$RN"
prints s50s50s50- "$RN" "$RN" "$RN"
prints s-48s- "Project : VBM" "$RN"
prints s-48s- "Firmware : Version $V.$v" "$RN"
prints s-48s- "Pfad : data.muc" "$RN"
prints s-48s- "Version : 1.23" "$RN"
prints s-48s- "Prüfungsdatum: $ta.$mo.$ja $st:$mi" "$RN"
prints s-48s- "Memo :" "$RN"
prints s-48s- "VBM created" "$RN"
prints s-48s- "$Hbuf" "$RN"
to $((100-13)) repeat
do
prints s50- "$RN"
done
base -W +w < "$1"
return 0
}
MkStatTbl() {
local kat=00000 num=00000 typ=00000 nam:.20 inh:.200
echo "<div class=%"$2%">"
[ "0${#5}" -gt 0 ] && echo "<h1><u>$5</u></h1>"
[ $1 -gt 1 ] && echo "<pre><b>%c"
while read kat num typ nam inh
do
conv '-t` '"$Tconv" nam inh
expr "$nam" :nam '<' += '<'
expr "$inh" :inh '<' += '<'
[ "$nam" != - ] && nam="$nam "
[ "$nam" == - ] && nam=
expr "$typ" :: 't' && catv '/<ul>%n'
expr "$typ" :: 'n' && catv /%n
catv ".$3" nam inh ".$4" /%n
expr "$typ" :: 'N' && catv /%n
expr "$typ" :: 'T' && catv '/</ul>%n'
done
[ $1 -gt 1 ] && echo '</b></pre>'
[ $1 -eq 1 ] && echo '<form><b><input class="butt" type="button" value="Back" onClick="window.back();"></b></form>%c'
echo "</div>"
return 0
}
MkStatHtm() {
base -10 Tconv +b Tconv
local n=000 class=stat1 fa='<h3>' fb='</h3>'
local title=........................................
catv Doctype '/<head><title>MU-Status</title>%n' Meta
print -r '</head><body class="main">'
for n to 20 repeat
do
ifset TblTitle$n || break
title="$TblTitle[n]"
[ "$title" == '-' ] && continue
[ "$title" == ' ' ] && title=
class=stat fa= fb=
[ n -eq 1 ] && class=stat1 fa='<h3>' fb='</h3>'
grep "^$n"'[ %t]' $1 | MkStatTbl $n $class "$fa" "$fb" "$title"
done
echo '</body></html>'
return 0
}
XmsgExit() {
RxTxMsg="FAIL: $1" Uvars RxTxMsg
echo "Status: 204 No Content%n"
exit 0
return 0
}
CallSys() {
local pw:9.16 nam=.......... adir=....................
local iph=.............................. ipw=....................
RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ RxTxAuto -gt 0 ] && {
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
XmsgExit "RxTx process still not running."
}
XmsgExit "RxTx process not running."
}
RxTxMsg="RXTX:" Uvars RxTxMsg
Hbuf="$1"
conv '-t& ' Hbuf
for Hbuf in $Hbuf
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) adir="$Hbuf" ;;
pass) pw="$Hbuf" ;;
act)
[ "$Hbuf" == quit ] && {
[ MUcall -gt 0 -a MUcall -le 9 ] && MUcall=-1 Uvars MUcall
return 0
}
[ MUcall -gt 0 -a MUcall -le 9 -o MUcall -lt 0 %
-o MUcall -ge 30 -a MUcall -le 39 ] && XmsgExit ""
GetIval Hbuf $Fid "$adir" || XmsgExit "Phone number not found."
iph="$Hbuf"
CkTelnu "$iph" || XmsgExit "Phone wrong: »$iph«"
GetIval Hbuf $Pid "$adir" || XmsgExit "Password not found."
ipw="$Hbuf"
expr "$pw" :: '^%t%t%t' || {
expr "$pw" :: '^...' || XmsgExit "Password wrong"
expr "$ipw" :: '^...' || XmsgExit "iPassword wrong: »$ipw«"
catv ipw | extern ./mailcode -dns -c "$MC64" | catv 0 =ipw:
cmpv ipw pw || XmsgExit "Password does not match"
MUcall=02
}
MUdir=$adir Uvars MUdir
Telnu=$iph Uvars Telnu
[ MUcall -ne 2 ] && MUcall=01
Uvars MUcall
;;
esac
done
return 0
}
MkCtlhHtm() {
local code="$MUcall" msg:.50
msg=STAT
[ code -ge 20 -a code -le 29 ] && msg=FAIL
[ code -ge 11 -a code -le 12 ] && msg=OKAY
let "code+=0"
case "$code" in
-1) msg="$msg: [$code] User quit.";;
0) msg="$msg: [$code] Default state.";;
11) msg="$msg: [$code] RxTx got data.";;
12) msg="$msg: [$code] RxTx configured.";;
16) msg="$msg: [$code] Connection tested.";;
17) msg="$msg: [$code] Modem initialized.";;
18) msg="$msg: [$code] Data received.";;
20) msg="$msg: [$code] RxTx error.";;
21) msg="$msg: [$code] RxTx get data failed.";;
22) msg="$msg: [$code] RxTx config failed.";;
26) msg="$msg: [$code] Connect test failed.";;
28) msg="$msg: [$code] Dial in failed.";;
29) msg="$msg: [$code] RING event broken.";;
30) msg="$msg: [$code] RxTx daemon exited.";;
36) msg="$msg: [$code] Testing connection.";;
37) msg="$msg: [$code] Modem initialization.";;
38) msg="$msg: [$code] Incoming call.";;
39) msg="$msg: [$code] RING event.";;
*) msg="$msg: RxTx code: »$code«";;
esac
expr "$RxTxMsg" :: '^FAIL:' && {
catv .FAIL =msg
[ "$RxTxMsg" != "FAIL: " ] && msg="$RxTxMsg"
RxTxMsg="RXTX:" Uvars RxTxMsg
}
print -r '<html><head><title></title></head><body><form>
<input name="CtlhInp" type="hidden" value="'"$msg"'">
</form><script language="JavaScript" type="text/javascript">
parent.frames[0].focus();
</script></body></html>'
return 0
}
MkCtlFrameset() {
catv Doctype '/<head><title>VBM System-Directory</title>%n' Meta
print -r '</head>
<frameset cols="100%,*" bordercolor="#d0d0d0" border="0">
<frame name="Ctlv" src="/cgi/main.cgi?'"$1"'"
scrolling="auto" frameborder="0" marginwidth="0" marginheight="0">
<frame name="Ctlh" src="/cgi/main.cgi?req=ctlh"
scrolling="no" frameborder="0" marginwidth="0" marginheight="0">
</frameset>
<body bgcolor="#39458f" text="#ffd700"
link="#ffd700" vlink="#ffd700" alink="#39458f">
<br>
<h1 align="center">Browser NoFrames!</h1>
</body>
</html>'
return 0
}
CtlAction() {
local id=0000 nam=.......... obj=..............................
local gid=0000 grp=$obj$obj anl=$obj$obj adir=$obj
for Hbuf in $1
do
expr "$Hbuf" :nam '^%([^=]%{1,}%)=' || continue
expr "$Hbuf" :Hbuf '^[^=]%{1,}=%(.*%)$' || continue
FormConv Hbuf
case "$nam" in
dir) obj="$Hbuf" adir="$obj"
[ -d "$obj" ] || PutErrHtm "Directory not found: »$obj«" ;;
file) obj="$Hbuf" expr "$obj" :adir '/[^/]%{1,}$' = '' ;;
grp) grp="$Hbuf" ;;
anl) anl="$Hbuf" ;;
act)
case "$Hbuf" in
delete)
expr "$obj" :id '%([0-9]*%)$'
expr "$obj" :Hbuf '[0-9]*$' = $Fali
grep -v "^$id " $Hbuf | cat > $Hbuf
extern rm -rf $obj
WrLog "System:$obj [$grp : $anl]" "removed"
expr "$obj" :gid '%([0-9]*%)/[0-9]*$'
grep -v "^$gid $id " $Fstation | cat > $Fstation
[ CTbuild -eq 0 ] && CTbuild=1 Uvars CTbuild
[ -s $Hbuf ] && break
expr "$obj" :Hbuf '[0-9]*/[0-9]*$' = $Fali
grep -v "^$gid " $Hbuf | cat > $Hbuf
expr "$obj" :Hbuf '/[0-9]*$' = ''
extern rm -rf $Hbuf
WrLog "Group:$Hbuf [$grp]" "removed"
;;
del) [ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
remove -s $obj
expr "$obj" :: '/conn$' &&
[ CTbuild -ne 1 ] && CTbuild=1 Uvars CTbuild
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
set) : > $obj
[ -f "$obj" ] || PutErrHtm "File not found: »$obj«"
echo "Content-type: text/html%n"
MkCtlHtm "$grp" "$anl" "$adir"
return 0 ;;
stat) echo "Content-type: text/html%n"
MkStatHtm $obj
return 0 ;;
log) echo "Content-type: text/html%n"
PutTxt2Htm $obj
return 0 ;;
src) echo "Content-type: text/plain%n"
cat $obj
return 0 ;;
down) echo "Content-type: application/octet-stream%n"
Ee2Muc $obj
return 0 ;;
esac
;;
esac
done
echo "Status: 204 No Content%n"
return 0
}
PutFileDate() {
[ -f "$1" ] || { echo "</b>--.--.---- --:-- -----<b>%c"; return 0; }
local ft=0000000000 sz=0000000000 ja=2002 mo=12 ta=31 st=24 mi=60 se=60
fstat -msv ft sz "$1"
ctime ja mo ta st mi se $ft
catv ta /. mo /. ja '/ ' st /: mi
prints s8- $sz
ft=1 [ sz -gt 0 ] && ft=2
return $ft
}
MkCtlHtm() {
[ -d "$3" ] || PutErrHtm nohdr "Directory not found: »$3«"
[ -f "$3/i" ] || PutErrHtm nohdr "File not found: »$3/i«"
local exist=1 iv=0 s=00 titel=.............................. script=........
local file=$titel act=........ action=$titel titel0=starttitel
local grp=$titel$titel anl=$titel$titel gid=0000 aid=0000
expr "$3" :aid '%([0-9]%{1,}%)$'
expr "$3" :gid '%([0-9]%{1,}%)/[0-9]%{1,}$'
catv Doctype '/<head><title>VBM-MU-Status/Control</title>%n' Meta
echo '<script language="JavaScript" src="/js/help.js" type="text/javascript">
</script>
<script language="JavaScript" src="/js/ctl.js" type="text/javascript">
</script>'
print -r '</head>
<body class="main">
<div class="dctl"><form><b><font size="+2">'"$1 : $2 "'</font>
<input class="butt" type="button" value="Delete"
onClick="DelSys('''"$3"''','''"$1"''','''"$2"''');">
<input class="butt" type="button" value="Rename"
onClick="void(prompt(''Rename dummy. Group : System.\r\nDelimiter is » : «'','''"$1 : $2"'''));">
</b></form>
'
extern /bin/date -u +'%A, %e. %b. %Y %X'
echo '</div><div class="dctlm"><pre><b>%c'
echo '<center><u>Flags and Files</u></center>%c'
Hbuf="$1" Escape Hbuf; grp="$Hbuf"
Hbuf="$2" Escape Hbuf; anl="$Hbuf"
for 6 titel file act action iv script in %
FAIL $3/fail del Unset 3 main %
FAIL $3/fail set Set 0 main %
FAIL $3/fail src Source 2 main %
OKAY $3/okay del Unset 3 main %
OKAY $3/okay set Set 0 main %
CFGLOCK $3/lock del Unset 3 new %
CFGLOCK $3/lock set Set 0 new %
CONNTEST $3/conn log Display 2 main %
CONNTEST $3/conn src Source 2 main %
CONNTEST $3/conn del Delete 3 adm %
INFOSET $3/i log Display 2 main %
INFOSET $3/i src Source 2 main %
STATE $3/stat stat Display 2 main %
STATE $3/stat src Source 2 main %
CONFIG $3/eepr down Download 2 main %
LOG $3/log log Display 2 main %
LOG $3/log src Source 2 main %
LOG $3/log del Delete 2 new
do
Hbuf="$file" Escape Hbuf
let "s=10-${#action}"
cmpv titel titel0 || {
echo %n
prints s11- "$titel: "
PutFileDate $file; exist=$?
echo ' %c'
}
if [ exist -eq iv -o iv -eq 3 -a exist -gt 0 ]
then
prints ssss$s- '<a class="actl" href="/cgi/'"$script"'.cgi?req=ctlact' %
'&file='"$Hbuf"'&grp='"$grp"'&anl='"$anl" %
'&act='"$act"'">'"$action"'</a>' ''
else
prints ss$s- '<font color="#b0b0b0">'"$action"'</font>' ''
fi
titel0=$titel
done
echo '</b></pre></div>
<div class="dctl"><form><br>Password<b>
<input name="ConfPass" type="password" value="" size="15" maxlength="15">
<input class="butt" type="button" value="Call (configure)"
onClick="CallSys(1,'''"$3"''',this.form.ConfPass.value);">
<input class="butt" type="button" value="Call (get data)"
onClick="CallSys(1,'''"$3"''',''\t\t\t'');">
<a href="javascript:void(LedAction(1))">
<img name="led" align="middle" src="/img/ledge0.jpg" width="21" height="21"
hspace="5" vspace="5" border="0"></a>
<br><br>
<input class="butt" type="button" value="Compose configuration"'
[ -s "$3/eepr" ] &&
echo 'onClick="top.location.href=''/cgi/muee.cgi?eemain.'"$gid.$aid"''';">'
[ -s "$3/eepr" ] ||
echo 'onClick="alert(''This system directory contains no config data.'');">'
echo '
<input class="butt" type="button" value="Reload"
onClick="top.location.reload();">
<input class="butt" type="button" value="Close"
onClick="top.close();">
<input class="butt" type="button" value="Help"
onClick="Help(''#sysctl'');">
</b></form></div>
</body></html>'
return 0
}
PutSysTblTxt() {
case "$1" in
head)
print -r '
<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">
<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<font color="#ff9966" size="-1">State</font>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System name</font>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">System type</font>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<font color="#ff9966" size="-1">Site location</font>
</td></tr></table>
<font color="#000000"><hr noshade width="100%" size="1"></font>'
;;
tail)
print -r '
<br><br><br>
<font color="#000000" size="-2">
> Click on state to show system state informations<br>
> Click on system text to show system informations<br>
</font>'
;;
esac
return 0
}
PutSysTbl() {
local ctlhref="javascript:MkWinAnlCtl('$2','$3');"
local newhref="javascript:MkWinAnlNew('$2','$3');"
local _3='<font size="-1">'"$3"'</font>'
local _4='<font size="-1">'"$4"'</font>'
local _5='<font size="-1">'"$5"'</font>'
local color='/img/ok.jpg'
[ "$1" == '!' ] && color='/img/fail.jpg'
print -r '<tr><td width="8%" bgcolor="#01669a" align="center" valign="center">
<a class="aanl" href="'"$ctlhref"'">
<img src="'"$color"'" border="0" width="29" height="32"></a>
</td>
<td width="33%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_3 "'</a></b>
</td>
<td width="17%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_4 "'</a></b>
</td>
<td width="42%" bgcolor="#01669a" align="CENTER" valign="CENTER">
<b><a class="aanl" href="'"$newhref"'">'" $_5 "'</a></b>
</td></tr>'
return 0
}
MkAnlHtm() {
local ali=$1/$Fali id=0000 fail=' ' faila=0 ifile=................
local ginh=........................................
local ainh=........................................
local oinh=........................................
local tinh=........................................
local gdir="$1"
[ -z "$1" ] && gdir=.. ali=./null
[ -d "$gdir" ] || PutErrHtm nohdr "Directory not found: »$gdir«"
[ -f "$ali" ] || PutErrHtm nohdr "File not found: »$ali«"
catv Doctype '/<head><title>VBM SysTable</title>%n' Meta
print -r %
'<script language="JavaScript" src="/js/anl.js" type="text/javascript"></script>
</head><body class="main">'
PutSysTblTxt head
print -r %
'<table width="100%" border="0" align="center" valign="center"
bgcolor="#01669a" cellpadding="2" cellspacing="2" cols="4">'
< $ali
while read id -
do
ifile=$gdir/$id/i
[ -s $ifile ] || continue
fail=' '
[ -f $gdir/$id/okay ] && fail='+'
[ -f $gdir/$id/fail ] && fail='!'
local g=g a=a o=o t=t
5< $ifile
while read -u5 id Hbuf && [ -n "$g$a$o$t" ]
do
[ id -eq Gid ] && ginh="$Hbuf" unset g
[ id -eq Aid ] && ainh="$Hbuf" unset a
[ id -eq Oid ] && oinh="$Hbuf" unset o
[ id -eq Tid ] && tinh="$Hbuf" unset t
done
><
PutSysTbl "$fail" "$ginh" "$ainh" "$tinh" "$oinh"
done
><
[ -z "$1" ] &| expr "$ifile" :: '^%.%.%.' && {
echo --
MkGrpArr $Fgrpajs
Failall=0
MkGrpArr $Fgrpaejs Err && Failall=1
Uvars Failall
}
print -r '</table>'
PutSysTblTxt tail
print -r '
<script language="JavaScript" type="text/javascript">
if ('"0$Update"'>0) parent.frames[2].location.reload();
window.setTimeout(''parent.frames[2].SetSel("anl"); parent.frames[2].SetSelOpt("'"$ginh"'",'"$Failall"');'',1500);
</script>
</body></html>'
[ Update -ne 0 ] && Update=0 Uvars Update
return 0
}
GetInfoZ() {
local id=000 s=0
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
while read -u$1 id $2
do
[ $id == $3 ] && return 0
done
seek 0 $1
$2=''
return 1
}
MkInfoHtm() {
[ -s $Finfobase ] || PutErrHtm nohdr "File not found: »$Finfobase«"
local n=00 name=........
local typ=.... id=000 len=00 max=00 flg=...
local dflt=....................
local text=...........................................................
catv Doctype '/<head><title>VBM-MU-Dataset</title>%n' Meta %
'/<script language="JavaScript" type="text/javascript">%n' %
'/function GrpSel(sel) {%n' %
'/ document.forms[0].I' Gid '/.value=%n' %
'/ sel.options[sel.selectedIndex].text.slice(2);%n' %
'/}%n' %
'/</script>%n' %
'/</head>%n' %
'/<body class="main" text="#ffd700">%n' %
'/<form name="FormInfo" action="/cgi/new.cgi" method="POST">%n' %
'/<pre><b>%n'
[ "$1" == exist ] && 5< $2
< $Finfobase
while read typ id len max flg dflt text
do
ifset typ || continue
expr "$typ" :: '^#' && continue
conv '-t` ' text dflt
[ ${#text} -gt 1 ] && prints sns36s- "" "$text" " "
[ "$max" == '=' ] && max=$len
[ "$max" == '-' ] && let "max=len+len"
let ++n
[ "$dflt" == ' ' ] && dflt=
Hbuf="$dflt"
[ "$1" == exist ] && {
GetInfoZ 5 Hbuf $id
[ id -eq Pid ] && Hbuf="®$Hbuf®"
}
case $typ in
itxt) name=I$id
catv ".<input name=%"$name%" type=%"TEXT%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
ptxt) name=P$id
catv ".<input name=%"$name%" type=%"PASSWORD%" value=%"$Hbuf%"" %
". size=%"$len%" maxlength=%"$max%"> "
;;
wtxt) name=W$id
conv "-t${CA}${NL}t$ESC$CR"'t` ' Hbuf
catv ".<textarea name=%"$name%" cols=%"$len%" rows=%"$max%"" %
". wrap=%"soft%">" Hbuf ".</textarea>"
;;
esac
done
><
[ "$1" == exist ] && ><
catv '/%n</b></pre></form>%n'
ifdef Newgrparr &&
echo '<script language="JavaScript" type="text/javascript">
window.setTimeout("parent.frames[2].location.reload();", 1500);
</script>'
catv '/</body></html>%n'
return 0
}
. ./functions.bish
catv /%0 =5119,,Hbuf
. ./cvars.bish
. ./uvars.bish
GetIds
VBMip=$SERVER_ADDR
[ "$REQUEST_METHOD" == GET ] && {
[ -s $Fgrpajs ] || MkGrpArr $Fgrpajs
[ -s $Fgrpaejs ] || MkGrpArr $Fgrpaejs Err && nop
case "$QUERY_STRING" in
main)
[ RxTxAuto -gt 0 ] && RxTxRun || {
[ MUcall -ne 0 ] && MUcall=00 Uvars MUcall
[ -e ../tmp/rxtx ] && remove ../tmp/rxtx
extern ../adm/rxtx.bish
sleep -m 600
RxTxRun || PutErrHtm "Start of RxTx daemon failed."
}
GetGrpDir first Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm "$Gdir"
;;
admin)
echo "Content-type: text/html%n"
MkAdmHtm
;;
req=admact&?*)
expr "$QUERY_STRING" :Hbuf '^req=admact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
AdmAction "$Hbuf"
Lock lockdb del
;;
new)
echo "Content-type: text/html%n"
MkInfoHtm new
;;
update)
MkGrpArr $Fgrpajs
local _Fail=0
MkGrpArr $Fgrpaejs Err && _Fail=1
[ _Fail -ne Failall ] && Failall=$_Fail Uvars Failall
[ Update -eq 0 ] && Update=1 Uvars Update
echo "Status: 204 No Content%n"
;;
req=infofset&?*)
expr "$QUERY_STRING" :Gdir 'req=infofset&' = 'req=info&' || Gdir=GX
echo "Content-type: text/html%n"
MkInfoFrameset "$Gdir"
;;
req=info&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
req=callsys&?*)
expr "$QUERY_STRING" :Gdir '^req=callsys&%(..*%)$' || Gdir=
CallSys "$Gdir"
echo "Status: 204 No Content%n"
;;
req=ctlfset&?*)
expr "$QUERY_STRING" :Gdir 'req=ctlfset&' = 'req=ctl&' || Gdir=GX
echo "Content-type: text/html%n"
MkCtlFrameset "$Gdir"
;;
req=ctlh)
echo "Content-type: text/html%n"
MkCtlhHtm
;;
req=ctl&?*)
expr "$QUERY_STRING" :Gdir '&group=%([^&=]*%)' || Gdir=GX
expr "$QUERY_STRING" :Adir '&anl=%([^&=]*%)$' || Adir=AX
FormConv Gdir
FormConv Adir
Grp="$Gdir" Anl="$Adir"
GetGrpDir get Gdir || PutErrHtm "Not found: »$Gdir«"
GetAnlDir Adir $Gdir || PutErrHtm "Not found: »$Adir«"
echo "Content-type: text/html%n"
MkCtlHtm "$Grp" "$Anl" $Adir
;;
req=ctlact&?*)
expr "$QUERY_STRING" :Hbuf '^req=ctlact&%(..*%)$'
expr "$Hbuf" :Hbuf '&' += ' '
Lock lockdb
CtlAction "$Hbuf"
Lock lockdb del
;;
selinhaltget=?*)
expr "$QUERY_STRING" :Hbuf '^[^=]%{1,}=%(..*%)$' || Hbuf=SGX
FormConv Hbuf
Gdir="$Hbuf"
GetGrpDir get Gdir || Gdir=
echo "Content-type: text/html%n"
MkAnlHtm $Gdir
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
exit 0
}
[ "$REQUEST_METHOD" == POST ] && {
[ "$CONTENT_LENGTH" -eq 0 ] && PutErrHtm "No content"
case "$REQUEST_URI" in
*adm.cgi)
Lock lockdb
if expr "$CONTENT_TYPE" =:: 'boundary=.'
then
FormAdmBakRead "$CONTENT_LENGTH" || { Gdir=$?
Lock lockdb del
PutErrHtm "Backup Upload failed [$Gdir]"
}
else
FormAdmRead "$CONTENT_LENGTH" || echo "Status: 205 Reset Content%n"
fi
Lock lockdb del
echo "Content-type: text/html%n"
MkAdmHtm
;;
*new.cgi)
[ "$CONTENT_LENGTH" -gt 5000 ] && PutErrHtm "Content too large"
Lock lockdb
FormInfoRead "$CONTENT_LENGTH"
Lock lockdb del
echo "Content-type: text/html%n"
MkInfoHtm exist $Adir/i
;;
*main.cgi)
PutErrHtm "Sorry!"
;;
*) echo "Status: 205 Reset Content%n" ;;
esac
}
exit 0
set -f
deroot="$DOCUMENT_ROOT/de"
expr "$deroot" :deroot '/de/de' '/de'
arg="$QUERY_STRING"
ok=0
expr "$arg" :kn '^%([0-9]%{1,2%}%)%..%{3,250%}' && {
expr "$arg" :Ref '^[0-9]%{1,2%}%.%(..*%)$'
Frfr=$deroot/tmp/${kn}_rfr.txt
[ -e "$Frfr" ] || : >> $Frfr
}
FormConv() {
local h=0000 z=00
conv -'t+ ' $1
while expr "${{1}" :h '%%%([a-fA-F0-9]%{2%}%)'
do
base -16 h +b z
expr "${{1}" :$1 '%%'$h += "$z"
done
return 0
}
Lock() {
local n=0000 lockf=$deroot/tmp/lockrfr
[ "$1" == del ] && { remove -s $lockf; return 0; }
while [ -e $lockf ]
do
sleep -m 20
let "++n>=200" && { remove -s $lockf; echo "Status: 204 No Content%n"; exit 0; }
done
: > $lockf
return 0
}
FormConv Ref
expr "$Ref" :: '.?.*%w=%w' || [ -f "$Frfr" ] && ok=1
[ ok -eq 0 ] && {
echo "Status: 204 No Content%n"
exit 0
}
LenRef=${#Ref}
systime TimRef
prints vs10 TimRef $TimRef
Nz=0000
N=0000000000
Set=0000000000
Tim=0000000000
MinSk=000000
Sk=000000
MinTim=$((16#7fffffff))
MinN=$MinTim
prints vs300 Z
Lock
< $Frfr
while seek + 0 Sk; readl Z
do
let "++Nz"
[ ${#Z} -lt 24 ] && continue
catv 0,10,Z =Tim:
catv 11,10,Z =N:
let "N<MinN" && MinN=$N MinSk=$Sk MinTim=$Tim
let "Tim<MinTim&&N<=MinN" && MinSk=$Sk MinTim=$Tim
let "${#Z}!=24+LenRef" && continue
catv 24,,Z =Z:
cmpv Z Ref || continue
let "Set=N+1"
break
done
><
[ Set -gt 0 ] && {
prints vs10 Set $Set
catv TimRef '/ ' Set '/ ' =$Sk,24,0 <>$Frfr
Lock del
echo "Status: 204 No Content%n"
exit 0
}
[ Nz -ge 200 ] && cat $Frfr | { >$Frfr; catv $MinSk,0; readl Z; cat; ><; }
Set=' 1'
catv TimRef '/ ' Set '/ ' Ref /%n >> $Frfr
Lock del
echo "Status: 204 No Content%n"
exit 0
set -f
SetVar() {
[ -s ./selfv.bish ] || return
local nam=$1 buf=....................................
cat ./selfv.bish | {
> ./selfv.bish
while readl buf
do
expr "$buf" :: "^$nam=" || { catv buf /%n; continue; }
catv nam "/='" $nam "/'%n"
done
><
}
return 0
}
HTM='<html>
<head>
<title>Download selfhtml8 von schellong.de</title>
</head>
<body text="#ffd700" bgcolor="#39458f">
<br><br>
<h1 align="center">Verwenden Sie bitte einen anderen Link.</h1>
<br>
<h3 align="center">Das Tranfervolumen pro Zeiteinheit ist momentan überschritten.</h3>
<br><br>
<pre><b>
Transfer-Summe: ~kbist___~ [KB]
Ist: ~kp5ma___~ [KB pro 5min]
Max: ~kp5m____~ [KB pro 5min]
Wieder bereit in: ~bereit__~ [min]
</b></pre>
</body>
</html>
'
deroot="$DOCUMENT_ROOT/de"
expr "$deroot" :deroot '/de/de' '/de'
HTTP_REFERER=http://www.schellong.de/
QS="$QUERY_STRING"
[ $# == 1 -a "$1" == get ] && QS=get
Zip=$deroot/selfhtml80.zip
systime t
[ -s ./selfv.bish ] ||
echo "Tt='1011508099'%nNn='755'%nSperre='1'%nSelfN='0'" > ./selfv.bish
. ./selfv.bish
expr "$QS" :: '^[+=]%{0,1}[0-9]%{1,}$' && {
expr "$QS" :Nn '^=' = '' && SetVar Nn
expr "$QS" :: '^+' && { let "Nn+=QS-SelfN"; SetVar Nn; }
expr "$QS" :: '^[0-9]' && SelfN=$QS SetVar SelfN
QS=info
}
let "Nn>300000" && { Tt=$t Nn=0 Sperre=0 SelfN=0
echo "Tt='$t'%nNn='0'%nSperre='0'%nSelfN='0'" > ./selfv.bish
}
kp5m=$(( (7*1024*1024) / [(3600/300)*24*30] ))
ka=$(( Nn*[(7185598+834+4096)/1024] ))
kp5ma=$(( ka / {(t+300-Tt)/300} ))
bereit=$(( {(ka/kp5m)-[(t+300-Tt)/300]}*5 ))
if [ kp5ma -gt kp5m -a "$QS" != test -o "$QS" == info ]
then
prints vs10 kp5m "$kp5m"
prints vs10 kp5ma "$kp5ma"
prints vs10 ka "$ka"
prints vs10 bereit "$bereit"
expr "$HTM" :HTM '~kp5m____~' = "$kp5m"
expr "$HTM" :HTM '~kp5ma___~' = "$kp5ma"
expr "$HTM" :HTM '~kbist___~' = "$ka"
expr "$HTM" :HTM '~bereit__~' = "$bereit"
if [ "$QS" != get ]
then
catv "/Content-type: text/html%n%n" HTM
else
umask 073
catv HTM > $deroot/self.htm
[ -e $Zip ] && remove $Zip
link $deroot/self.htm $Zip
exit 0
fi
[ "$QS" == info ] && exit 0
[ Sperre -eq 0 ] && Sperre=1 SetVar Sperre
else
[ Sperre -ne 0 ] && Sperre=0 SetVar Sperre
if [ "$QS" != get ]
then
echo "Location: http://www.schellong.de/selfhtml80.zip%n"
else
umask 073
[ -e $Zip ] && remove $Zip
link $deroot/01GETselfhtml80.zip $Zip
exit 0
fi
[ "$QS" == test ] && exit 0
fi
exit 0