33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill#
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# This file and its contents are supplied under the terms of the
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# Common Development and Distribution License ("CDDL"), version 1.0.
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# You may only use this file in accordance with the terms of version
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# 1.0 of the CDDL.
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill#
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# A full copy of the text of the CDDL should have accompanied this
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# source. A copy of the CDDL is also available via the Internet at
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# http://www.illumos.org/license/CDDL.
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill#
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill#
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill# Copyright (c) 2013 Joyent, Inc. All rights reserved.
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill#
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrilllet width=8
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrillfunction outputchar
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill{
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill banner $3 | /bin/nawk -v line=$1 -v pos=$2 -v width=$width '{ \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill for (i = 1; i <= length($0); i++) { \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill if (substr($0, i, 1) == " ") \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill continue; \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf("\t@letter%d[%d] = lquantize(%d, 0, 40, 1);\n", \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill line, NR, i + (pos * width));
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill } \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill }'
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill}
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrillfunction outputstr
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill{
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let pos=0;
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let line=0
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf "#pragma D option aggpack\n#pragma D option aggsortkey\n"
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf "BEGIN\n{\n"
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill for c in `echo "$1" | /bin/nawk '{ \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill for (i = 1; i <= length($0); i++) { \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill c = substr($0, i, 1); \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf("%s\n", c == " " ? "space" : \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill c == "\n" ? "newline" : c); \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill } \
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill }'`; do
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill if [[ "$c" == "space" ]]; then
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let line=line+1
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let pos=0
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill continue
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill fi
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill outputchar $line $pos $c
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let pos=pos+1
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill done
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let i=0
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill while [[ $i -le $line ]]; do
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf "\tprinta(@letter%d);\n" $i
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill let i=i+1
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill done
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill printf "\texit(0);\n}\n"
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill}
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrilldtrace -qs /dev/stdin -x encoding=utf8 <<EOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill`outputstr "why must i do this"`
33093f5bcdc51014933497dd39374080c1ac5705Bryan CantrillEOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrilldtrace -qs /dev/stdin -x encoding=ascii -x aggzoom <<EOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill`outputstr "i am not well"`
33093f5bcdc51014933497dd39374080c1ac5705Bryan CantrillEOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrilldtrace -qs /dev/stdin -x encoding=utf8 -x aggzoom <<EOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill`outputstr "send help"`
33093f5bcdc51014933497dd39374080c1ac5705Bryan CantrillEOF
33093f5bcdc51014933497dd39374080c1ac5705Bryan Cantrill