-#!/bin/sh
+#!/bin/bash
_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
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)
+ EOF
+ debug 'Depth: %i, VTypes: %i\n' $m1 $m2
+ 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 -)
+ 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
+ m2=$((m2 - 1))
+ done
+ shift 1
+ ;;
+ SCREEN)
+ { read m1; read data; } <<-EOF
+ $(printf '%i ' $data |x11_read_values \
+ CARD32 CARD32 CARD32 CARD32 CARD32 CARD16 CARD16 \
+ 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 -)
+ EOF
+ m1="$m1 $m3"
+ m2=$((m2 - 1))
+ done
+ printf '%s\n' "$m1"
+ shift 1
+ ;;
+ -)
+ printf '\n'
+ shift 1
+ ;;
*)
debug 'Unknown value type: %s\n' "$1"
shift 1
m3=$((m3 - 1))
done
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)
+ EOF
+ X11_SCREENS="${X11_SCREENS}${m1}${BR}"
+ m2=$((m2 - 1))
+ done
;;
esac
}