1266992Smarkj# 2266992Smarkj# This file and its contents are supplied under the terms of the 3266992Smarkj# Common Development and Distribution License ("CDDL"), version 1.0. 4266992Smarkj# You may only use this file in accordance with the terms of version 5266992Smarkj# 1.0 of the CDDL. 6266992Smarkj# 7266992Smarkj# A full copy of the text of the CDDL should have accompanied this 8266992Smarkj# source. A copy of the CDDL is also available via the Internet at 9266992Smarkj# http://www.illumos.org/license/CDDL. 10266992Smarkj# 11266992Smarkj 12266992Smarkj# 13266992Smarkj# Copyright (c) 2013 Joyent, Inc. All rights reserved. 14266992Smarkj# 15266992Smarkj 16266992Smarkjlet width=8 17266992Smarkj 18266992Smarkjfunction outputchar 19266992Smarkj{ 20266992Smarkj banner $3 | /bin/nawk -v line=$1 -v pos=$2 -v width=$width '{ \ 21266992Smarkj for (i = 1; i <= length($0); i++) { \ 22266992Smarkj if (substr($0, i, 1) == " ") \ 23266992Smarkj continue; \ 24266992Smarkj printf("\t@letter%d[%d] = lquantize(%d, 0, 40, 1);\n", \ 25266992Smarkj line, NR, i + (pos * width)); 26266992Smarkj } \ 27266992Smarkj }' 28266992Smarkj} 29266992Smarkj 30266992Smarkjfunction outputstr 31266992Smarkj{ 32266992Smarkj let pos=0; 33266992Smarkj let line=0 34266992Smarkj 35266992Smarkj printf "#pragma D option aggpack\n#pragma D option aggsortkey\n" 36266992Smarkj 37266992Smarkj printf "BEGIN\n{\n" 38266992Smarkj for c in `echo "$1" | /bin/nawk '{ \ 39266992Smarkj for (i = 1; i <= length($0); i++) { \ 40266992Smarkj c = substr($0, i, 1); \ 41266992Smarkj printf("%s\n", c == " " ? "space" : \ 42266992Smarkj c == "\n" ? "newline" : c); \ 43266992Smarkj } \ 44266992Smarkj }'`; do 45266992Smarkj if [[ "$c" == "space" ]]; then 46266992Smarkj let line=line+1 47266992Smarkj let pos=0 48266992Smarkj continue 49266992Smarkj fi 50266992Smarkj 51266992Smarkj outputchar $line $pos $c 52266992Smarkj let pos=pos+1 53266992Smarkj done 54266992Smarkj 55266992Smarkj let i=0 56266992Smarkj 57266992Smarkj while [[ $i -le $line ]]; do 58266992Smarkj printf "\tprinta(@letter%d);\n" $i 59266992Smarkj let i=i+1 60266992Smarkj done 61266992Smarkj printf "\texit(0);\n}\n" 62266992Smarkj} 63266992Smarkj 64266992Smarkjdtrace -qs /dev/stdin -x encoding=utf8 <<EOF 65266992Smarkj`outputstr "why must i do this"` 66266992SmarkjEOF 67266992Smarkj 68266992Smarkjdtrace -qs /dev/stdin -x encoding=ascii -x aggzoom <<EOF 69266992Smarkj`outputstr "i am not well"` 70266992SmarkjEOF 71266992Smarkj 72266992Smarkjdtrace -qs /dev/stdin -x encoding=utf8 -x aggzoom <<EOF 73266992Smarkj`outputstr "send help"` 74266992SmarkjEOF 75266992Smarkj 76