3 [ "$SCRIPT" ] || SCRIPT="$(basename $0)"
4 [ "$PROGRAM" ] || PROGRAM='scanner'
5 [ "$DIGITS" ] || DIGITS='3'
11 [ PATH="\$PATH:/a/b" ] [ PROGRAM='$PROGRAM' ] [ DIGITS='$DIGITS' ] \\
15 PROGRAM='~/abgabe/scanner/scanner' DIGITS='6' \\
16 $SCRIPT 202f2a31 ## \$(echo -n ' /*1' | xxd -ps)
17 $SCRIPT 2009 ## \$(echo -ne ' \\t' | xxd -ps)
18 $SCRIPT 203a3d ## := ## if0x1 # \\t\\r
19 $SCRIPT 202f2a ## /* ## if39 ## \\f\\b
20 $SCRIPT 202f2a31 ## /*1 # 0x1 ### 0123
23 scanner < 202f2a31.0.0 \\
24 | diff -u 202f2a31.0.1 - \\
25 || (echo >&2 ERROR ; false)
28 sha1sum hexcharset.retval.fileno
30 Warning: first character in hexcharset behaves slightly differently.
36 HEX=$(echo "$HEX" | xxd -r -ps | xxd -ps | head -1)
37 NUM=$(echo "$HEX" | xxd -r -ps | wc -c)
41 echo >&2 "ERROR: charset too small"
47 echo >&2 "ERROR: charset too big"
51 if ! ( echo | $PROGRAM )
53 echo >&2 "ERROR: program failed"
57 MAX=$((NUM**(DIGITS)-1))
58 SRC=$(seq 0 $((NUM-1)) | sed -e "1iobase=$NUM" | bc | tr -d '\n')
63 for i in $(seq $MAX | sed -e "1iobase=$NUM" | bc)
65 echo $i | tr "$SRC" "$(echo $HEX | xxd -r -ps)" > $HEX.i.0
67 cat $HEX.i.0 | $PROGRAM >$HEX.i.1 2>$HEX.i.2
70 cat $HEX.i.0 >> $HEX.$RET.0
71 cat $HEX.i.1 >> $HEX.$RET.1
72 cat $HEX.i.2 >> $HEX.$RET.2
82 # find -iname "$HEX.*.*" -ls
85 # multiple string args
87 ## Georg Schiesser <e0307201/AT/student.tuwien.ac.at> @ UBVL 2010S # GPLv2
88 ## vim: filetype=sh shiftwidth=8 tabstop=8 noexpandtab nopaste: