-#!/bin/bash
+#!/bin/sh
_EXEC="${0}"
X11_FORK="${X11_FORK:-0}"
x11_read_values(){
local data chars m1 m2 m3 m4;
- read data;
- data="${data} "
while [ $# -gt 0 ]; do case $1 in
CARD8|BYTE)
- m1="${data%% *}" data="${data#* }"
+ read m1
printf "%i " $m1;
shift 1
;;
CARD16)
- m1="${data%% *}" data="${data#* }"
- m2="${data%% *}" data="${data#* }"
+ read m1; read m2;
printf "%i " $((256 * m1 + m2));
shift 1
;;
CARD32|VALUE|TIMESTAMP)
- m1="${data%% *}" data="${data#* }"
- m2="${data%% *}" data="${data#* }"
- m3="${data%% *}" data="${data#* }"
- m4="${data%% *}" data="${data#* }"
+ read m1; read m2; read m3; read m4;
printf "%i " $((16777216 * m1 + 65536 * m2 + 256 * m3 + m4));
shift 1
;;
STRING8) # Argument: Number of characters
chars="${2:-0}" m1='' m2=''
while [ $chars -gt 0 ]; do
- m1="$m1 ${data%% *}"
- data="${data#* }"
+ read m2;
+ m1="$m1 $m2"
chars=$((chars - 1))
done
printf "$(printf '\\%o' $m1)\n";
pad) # Argument: Number of octets, discards octets without output
chars="${2:-0}"
while [ $chars -gt 0 ]; do
- data="${data#* }"
+ read m1
chars=$((chars - 1))
done
shift 2
;;
FORMAT)
- m1="${data%% *}" data="${data#* }"
- m2="${data%% *}" data="${data#* }"
- m3="${data%% *}" data="${data#* }"
- data="${data#* * * * * }"
+ read m1; read m2; read m3;
+ read m4; read m4; read m4; read m4; read m4;
printf '%i %i %i\n' "$m1" "$m2" "$m3"
shift 1
;;
DEPTH)
- debug 'Data: %i\n' "${#data}"
- [ ${#data} -lt 100 ] && debug 'Data: %s\n' "$data"
- { read m1 m2 data; } <<-EOF
- $(printf '%i ' $data |x11_read_values CARD8 pad 1 CARD16 pad 4)
+ { read m1 m2; } <<-EOF
+ $(x11_read_values CARD8 pad 1 CARD16 pad 4)
EOF
debug 'Depth: %i, VTypes: %i\n' $m1 $m2
+ # x11_read_values pad $((m2 * 24))
+
debug 'DEPTH VID Vclass RGBbits ClrMaps MaskR MaskG MaskB\n'
while [ $m2 -gt 0 ]; do
- { read m3; read data; } <<-EOF
- $(printf '%i ' $data |x11_read_values CARD32 CARD8 CARD8 CARD16 CARD32 CARD32 CARD32 pad 4 -)
+ { read m3; } <<-EOF
+ $(x11_read_values CARD32 CARD8 CARD8 CARD16 CARD32 CARD32 CARD32 pad 4)
EOF
debug '%i %i %i %i %i %i %i %i\n' $m1 $m3
printf '%i %i %i %i %i %i %i %i\t' $m1 $m3
shift 1
;;
SCREEN)
- { read m1; read data; } <<-EOF
- $(printf '%i ' $data |x11_read_values \
+ { read m1; } <<-EOF
+ $(x11_read_values \
CARD32 CARD32 CARD32 CARD32 CARD32 CARD16 CARD16 \
- CARD16 CARD16 CARD16 CARD16 CARD32 CARD8 CARD8 CARD8 CARD8 -
+ CARD16 CARD16 CARD16 CARD16 CARD32 CARD8 CARD8 CARD8 CARD8
)
EOF
m2="${m1##* }"
#m1="${m1% *}"
debug 'Root: %i\nColormap: %i\nWhite: %i\nBlack: %i\nInput Mask: %i\nWidth: %i\nHeight: %i\nMMWidth: %i\nMMHeight: %i\nMaps min: %i\nMaps max: %i\nVisual: %i\nBacking-Stores: %i\nSave-Unders: %i\nRoot-depth: %i\nN Depth: %i\n' $m1
- # debug 'Depth / Visuals: %s\n' "$data"
while [ $m2 -gt 0 ]; do
- { read m3; read data; } <<-EOF
- $(printf '%i ' $data |x11_read_values DEPTH -)
+ { read m3; } <<-EOF
+ $(x11_read_values DEPTH)
EOF
m1="$m1 $m3"
m2=$((m2 - 1))
shift 1
;;
-)
- printf '\n'
- shift 1
+ m2=''
+ while read m1; do
+ m2="$m2 $m1"
+ done
+ printf '%i ' $m2
+ shift $#
;;
*)
debug 'Unknown value type: %s\n' "$1"
shift 1
;;
esac; done
-
- printf '%s\n' "$data"
}
x11_setup(){
case $m1 in
0): # Failed
debug 'X11: Setup Failed\nProtocol Version: %s\n' "$X11_VERSION"
- debug '%s\n' "$(printf '%i ' $data |x11_read_values STRING8 $m2)"
+ debug '%s\n' "$(printf '%i\n' $data |x11_read_values STRING8 $m2)"
return 1
;;
2): # Authenticate
debug 'X11: Setup Authenticate\n'
- debug '%s\n' "$(printf '%i ' $data |x11_read_values STRING8 $m2)"
+ debug '%s\n' "$(printf '%i\n' $data |x11_read_values STRING8 $m2)"
return 2
;;
1): # Success
m2 m3 X11_IMAGE_BO X11_BITMAP_BO \
X11_SCANLINE_UNIT X11_SCANLINE_PAD \
X11_MIN_KEYCODE X11_MAX_KEYCODE \
- junk data;
+ data;
} <<-EOF
- $( printf '%i ' $data |x11_read_values \
+ $( printf '%i\n' $data |x11_read_values \
CARD32 CARD32 CARD32 CARD32 \
CARD16 CARD16 \
CARD8 CARD8 CARD8 CARD8 \
CARD8 CARD8 \
CARD8 CARD8 \
- CARD32
+ pad 4 -
)
EOF
{ read X11_VENDOR; read data; } <<-EOF
- $( printf '%i ' $data |x11_read_values STRING8 $m1 pad $(( (4 - m1 % 4) % 4 )) )
+ $( printf '%i\n' $data |x11_read_values STRING8 $m1 pad $(( (4 - m1 % 4) % 4 )) - )
EOF
debug "Vendor (%i): %s\n" "$m1" "$X11_VENDOR"
while [ $m3 -gt 0 ]; do
{ read m1; read data; } <<-EOF
- $( printf '%i ' $data |x11_read_values FORMAT )
+ $( printf '%i\n' $data |x11_read_values FORMAT - )
EOF
X11_PIXMAP_FORMATS="${X11_PIXMAP_FORMATS}${m1}${BR}"
m3=$((m3 - 1))
debug "Pixmap Formats:\nDepth BPP SL pad\n%s" "$X11_PIXMAP_FORMATS"
while [ $m2 -gt 0 ]; do
{ read m1; read data; } <<-EOF
- $(printf '%i ' $data |x11_read_values SCREEN)
+ $(printf '%i\n' $data |x11_read_values SCREEN -)
EOF
X11_SCREENS="${X11_SCREENS}${m1}${BR}"
m2=$((m2 - 1))
}
x11_setup
+times
# cat <&3