1*a43f0be9SRui Paulo# 2*a43f0be9SRui Paulo# This file and its contents are supplied under the terms of the 3*a43f0be9SRui Paulo# Common Development and Distribution License ("CDDL"), version 1.0. 4*a43f0be9SRui Paulo# You may only use this file in accordance with the terms of version 5*a43f0be9SRui Paulo# 1.0 of the CDDL. 6*a43f0be9SRui Paulo# 7*a43f0be9SRui Paulo# A full copy of the text of the CDDL should have accompanied this 8*a43f0be9SRui Paulo# source. A copy of the CDDL is also available via the Internet at 9*a43f0be9SRui Paulo# http://www.illumos.org/license/CDDL. 10*a43f0be9SRui Paulo# 11*a43f0be9SRui Paulo 12*a43f0be9SRui Paulo# 13*a43f0be9SRui Paulo# Copyright (c) 2013 Joyent, Inc. All rights reserved. 14*a43f0be9SRui Paulo# 15*a43f0be9SRui Paulo 16*a43f0be9SRui Paulolet width=8 17*a43f0be9SRui Paulo 18*a43f0be9SRui Paulofunction outputchar 19*a43f0be9SRui Paulo{ 20*a43f0be9SRui Paulo banner $3 | /bin/nawk -v line=$1 -v pos=$2 -v width=$width '{ \ 21*a43f0be9SRui Paulo for (i = 1; i <= length($0); i++) { \ 22*a43f0be9SRui Paulo if (substr($0, i, 1) == " ") \ 23*a43f0be9SRui Paulo continue; \ 24*a43f0be9SRui Paulo printf("\t@letter%d[%d] = lquantize(%d, 0, 40, 1);\n", \ 25*a43f0be9SRui Paulo line, NR, i + (pos * width)); 26*a43f0be9SRui Paulo } \ 27*a43f0be9SRui Paulo }' 28*a43f0be9SRui Paulo} 29*a43f0be9SRui Paulo 30*a43f0be9SRui Paulofunction outputstr 31*a43f0be9SRui Paulo{ 32*a43f0be9SRui Paulo let pos=0; 33*a43f0be9SRui Paulo let line=0 34*a43f0be9SRui Paulo 35*a43f0be9SRui Paulo printf "#pragma D option aggpack\n#pragma D option aggsortkey\n" 36*a43f0be9SRui Paulo 37*a43f0be9SRui Paulo printf "BEGIN\n{\n" 38*a43f0be9SRui Paulo for c in `echo "$1" | /bin/nawk '{ \ 39*a43f0be9SRui Paulo for (i = 1; i <= length($0); i++) { \ 40*a43f0be9SRui Paulo c = substr($0, i, 1); \ 41*a43f0be9SRui Paulo printf("%s\n", c == " " ? "space" : \ 42*a43f0be9SRui Paulo c == "\n" ? "newline" : c); \ 43*a43f0be9SRui Paulo } \ 44*a43f0be9SRui Paulo }'`; do 45*a43f0be9SRui Paulo if [[ "$c" == "space" ]]; then 46*a43f0be9SRui Paulo let line=line+1 47*a43f0be9SRui Paulo let pos=0 48*a43f0be9SRui Paulo continue 49*a43f0be9SRui Paulo fi 50*a43f0be9SRui Paulo 51*a43f0be9SRui Paulo outputchar $line $pos $c 52*a43f0be9SRui Paulo let pos=pos+1 53*a43f0be9SRui Paulo done 54*a43f0be9SRui Paulo 55*a43f0be9SRui Paulo let i=0 56*a43f0be9SRui Paulo 57*a43f0be9SRui Paulo while [[ $i -le $line ]]; do 58*a43f0be9SRui Paulo printf "\tprinta(@letter%d);\n" $i 59*a43f0be9SRui Paulo let i=i+1 60*a43f0be9SRui Paulo done 61*a43f0be9SRui Paulo printf "\texit(0);\n}\n" 62*a43f0be9SRui Paulo} 63*a43f0be9SRui Paulo 64*a43f0be9SRui Paulodtrace -qs /dev/stdin -x encoding=utf8 <<EOF 65*a43f0be9SRui Paulo`outputstr "why must i do this"` 66*a43f0be9SRui PauloEOF 67*a43f0be9SRui Paulo 68*a43f0be9SRui Paulodtrace -qs /dev/stdin -x encoding=ascii -x aggzoom <<EOF 69*a43f0be9SRui Paulo`outputstr "i am not well"` 70*a43f0be9SRui PauloEOF 71*a43f0be9SRui Paulo 72*a43f0be9SRui Paulodtrace -qs /dev/stdin -x encoding=utf8 -x aggzoom <<EOF 73*a43f0be9SRui Paulo`outputstr "send help"` 74*a43f0be9SRui PauloEOF 75*a43f0be9SRui Paulo 76