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