1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 23*7c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 24*7c478bd9Sstevel@tonic-gate 25*7c478bd9Sstevel@tonic-gate 26*7c478bd9Sstevel@tonic-gate /* 27*7c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 28*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 29*7c478bd9Sstevel@tonic-gate */ 30*7c478bd9Sstevel@tonic-gate 31*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 32*7c478bd9Sstevel@tonic-gate 33*7c478bd9Sstevel@tonic-gate #include <locale.h> 34*7c478bd9Sstevel@tonic-gate #include <stdio.h> 35*7c478bd9Sstevel@tonic-gate #include <stdlib.h> 36*7c478bd9Sstevel@tonic-gate #include <sys/types.h> 37*7c478bd9Sstevel@tonic-gate 38*7c478bd9Sstevel@tonic-gate #define nchars 128 /* number of chars in char set */ 39*7c478bd9Sstevel@tonic-gate #define nlines 7 /* number of lines in a banner character */ 40*7c478bd9Sstevel@tonic-gate #define pposs 85 /* number of print positions */ 41*7c478bd9Sstevel@tonic-gate /* on a line (must be multiple of 4) */ 42*7c478bd9Sstevel@tonic-gate /* followed by end of string character */ 43*7c478bd9Sstevel@tonic-gate #define pospch 8 /* number of char positions per banner char */ 44*7c478bd9Sstevel@tonic-gate #define chpln 10 /* number of banner characters per line */ 45*7c478bd9Sstevel@tonic-gate 46*7c478bd9Sstevel@tonic-gate struct bann { 47*7c478bd9Sstevel@tonic-gate char alpha[nlines][pposs]; 48*7c478bd9Sstevel@tonic-gate }; 49*7c478bd9Sstevel@tonic-gate static struct bann buffer, *bp = &buffer; 50*7c478bd9Sstevel@tonic-gate static char ctbl[nchars][nlines] = { 51*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 52*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 53*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 54*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 55*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 56*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 57*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 58*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 59*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 60*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 61*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 62*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 63*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 64*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 65*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 66*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 67*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 68*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 69*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 70*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 71*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 72*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 73*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 74*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 75*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 76*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 77*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 78*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 79*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 80*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 81*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 82*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* below 040 */ 83*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000, /* */ 84*7c478bd9Sstevel@tonic-gate 034, 034, 034, 010, 0, 034, 034, /* ! */ 85*7c478bd9Sstevel@tonic-gate 0167, 0167, 042, 0, 0, 0, 0, /* " */ 86*7c478bd9Sstevel@tonic-gate 024, 024, 0177, 024, 0177, 024, 024, /* # */ 87*7c478bd9Sstevel@tonic-gate 076, 0111, 0110, 076, 011, 0111, 076, /* $ */ 88*7c478bd9Sstevel@tonic-gate 0161, 0122, 0164, 010, 027, 045, 0107, /* % */ 89*7c478bd9Sstevel@tonic-gate 030, 044, 030, 070, 0105, 0102, 071, /* & */ 90*7c478bd9Sstevel@tonic-gate 034, 034, 010, 020, 0, 0, 0, /* ' */ 91*7c478bd9Sstevel@tonic-gate 014, 020, 040, 040, 040, 020, 014, /* ( */ 92*7c478bd9Sstevel@tonic-gate 030, 4, 2, 2, 2, 4, 030, /* ) */ 93*7c478bd9Sstevel@tonic-gate 0, 042, 024, 0177, 024, 042, 0, /* * */ 94*7c478bd9Sstevel@tonic-gate 0, 010, 010, 076, 010, 010, 0, /* + */ 95*7c478bd9Sstevel@tonic-gate 0, 0, 0, 034, 034, 010, 020, /* , */ 96*7c478bd9Sstevel@tonic-gate 0, 0, 0, 076, 0, 0, 0, /* - */ 97*7c478bd9Sstevel@tonic-gate 0, 0, 0, 0, 034, 034, 034, /* . */ 98*7c478bd9Sstevel@tonic-gate 1, 2, 4, 010, 020, 040, 0100, /* / */ 99*7c478bd9Sstevel@tonic-gate 034, 042, 0101, 0101, 0101, 042, 034, /* 0 */ 100*7c478bd9Sstevel@tonic-gate 010, 030, 050, 010, 010, 010, 076, /* 1 */ 101*7c478bd9Sstevel@tonic-gate 076, 0101, 1, 076, 0100, 0100, 0177, /* 2 */ 102*7c478bd9Sstevel@tonic-gate 076, 0101, 1, 076, 1, 0101, 076, /* 3 */ 103*7c478bd9Sstevel@tonic-gate 0100, 0102, 0102, 0102, 0177, 2, 2, /* 4 */ 104*7c478bd9Sstevel@tonic-gate 0177, 0100, 0100, 0176, 1, 0101, 076, /* 5 */ 105*7c478bd9Sstevel@tonic-gate 076, 0101, 0100, 0176, 0101, 0101, 076, /* 6 */ 106*7c478bd9Sstevel@tonic-gate 0177, 0102, 04, 010, 020, 020, 020, /* 7 */ 107*7c478bd9Sstevel@tonic-gate 076, 0101, 0101, 076, 0101, 0101, 076, /* 8 */ 108*7c478bd9Sstevel@tonic-gate 076, 0101, 0101, 077, 1, 0101, 076, /* 9 */ 109*7c478bd9Sstevel@tonic-gate 010, 034, 010, 0, 010, 034, 010, /* : */ 110*7c478bd9Sstevel@tonic-gate 034, 034, 0, 034, 034, 010, 020, /* ; */ 111*7c478bd9Sstevel@tonic-gate 4, 010, 020, 040, 020, 010, 4, /* < */ 112*7c478bd9Sstevel@tonic-gate 0, 0, 076, 0, 076, 0, 0, /* = */ 113*7c478bd9Sstevel@tonic-gate 020, 010, 4, 2, 4, 010, 020, /* > */ 114*7c478bd9Sstevel@tonic-gate 076, 0101, 1, 016, 010, 0, 010, /* ? */ 115*7c478bd9Sstevel@tonic-gate 076, 0101, 0135, 0135, 0136, 0100, 076, /* @ */ 116*7c478bd9Sstevel@tonic-gate 010, 024, 042, 0101, 0177, 0101, 0101, /* A */ 117*7c478bd9Sstevel@tonic-gate 0176, 0101, 0101, 0176, 0101, 0101, 0176, /* B */ 118*7c478bd9Sstevel@tonic-gate 076, 0101, 0100, 0100, 0100, 0101, 076, /* C */ 119*7c478bd9Sstevel@tonic-gate 0176, 0101, 0101, 0101, 0101, 0101, 0176, /* D */ 120*7c478bd9Sstevel@tonic-gate 0177, 0100, 0100, 0174, 0100, 0100, 0177, /* E */ 121*7c478bd9Sstevel@tonic-gate 0177, 0100, 0100, 0174, 0100, 0100, 0100, /* F */ 122*7c478bd9Sstevel@tonic-gate 076, 0101, 0100, 0117, 0101, 0101, 076, /* G */ 123*7c478bd9Sstevel@tonic-gate 0101, 0101, 0101, 0177, 0101, 0101, 0101, /* H */ 124*7c478bd9Sstevel@tonic-gate 034, 010, 010, 010, 010, 010, 034, /* I */ 125*7c478bd9Sstevel@tonic-gate 1, 1, 1, 1, 0101, 0101, 076, /* J */ 126*7c478bd9Sstevel@tonic-gate 0102, 0104, 0110, 0160, 0110, 0104, 0102, /* K */ 127*7c478bd9Sstevel@tonic-gate 0100, 0100, 0100, 0100, 0100, 0100, 0177, /* L */ 128*7c478bd9Sstevel@tonic-gate 0101, 0143, 0125, 0111, 0101, 0101, 0101, /* M */ 129*7c478bd9Sstevel@tonic-gate 0101, 0141, 0121, 0111, 0105, 0103, 0101, /* N */ 130*7c478bd9Sstevel@tonic-gate 0177, 0101, 0101, 0101, 0101, 0101, 0177, /* O */ 131*7c478bd9Sstevel@tonic-gate 0176, 0101, 0101, 0176, 0100, 0100, 0100, /* P */ 132*7c478bd9Sstevel@tonic-gate 076, 0101, 0101, 0101, 0105, 0102, 075, /* Q */ 133*7c478bd9Sstevel@tonic-gate 0176, 0101, 0101, 0176, 0104, 0102, 0101, /* R */ 134*7c478bd9Sstevel@tonic-gate 076, 0101, 0100, 076, 1, 0101, 076, /* S */ 135*7c478bd9Sstevel@tonic-gate 0177, 010, 010, 010, 010, 010, 010, /* T */ 136*7c478bd9Sstevel@tonic-gate 0101, 0101, 0101, 0101, 0101, 0101, 076, /* U */ 137*7c478bd9Sstevel@tonic-gate 0101, 0101, 0101, 0101, 042, 024, 010, /* V */ 138*7c478bd9Sstevel@tonic-gate 0101, 0111, 0111, 0111, 0111, 0111, 066, /* W */ 139*7c478bd9Sstevel@tonic-gate 0101, 042, 024, 010, 024, 042, 0101, /* X */ 140*7c478bd9Sstevel@tonic-gate 0101, 042, 024, 010, 010, 010, 010, /* Y */ 141*7c478bd9Sstevel@tonic-gate 0177, 2, 4, 010, 020, 040, 0177, /* Z */ 142*7c478bd9Sstevel@tonic-gate 076, 040, 040, 040, 040, 040, 076, /* [ */ 143*7c478bd9Sstevel@tonic-gate 0100, 040, 020, 010, 004, 002, 001, /* \ */ 144*7c478bd9Sstevel@tonic-gate 076, 2, 2, 2, 2, 2, 076, /* ] */ 145*7c478bd9Sstevel@tonic-gate 010, 024, 042, 0, 0, 0, 0, /* ^ */ 146*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 0177, /* _ */ 147*7c478bd9Sstevel@tonic-gate 034, 034, 010, 04, 0, 0, 0, /* ` */ 148*7c478bd9Sstevel@tonic-gate 0, 014, 022, 041, 077, 041, 041, /* A */ 149*7c478bd9Sstevel@tonic-gate 0, 076, 041, 076, 041, 041, 076, /* B */ 150*7c478bd9Sstevel@tonic-gate 0, 036, 041, 040, 040, 041, 036, /* C */ 151*7c478bd9Sstevel@tonic-gate 0, 076, 041, 041, 041, 041, 076, /* D */ 152*7c478bd9Sstevel@tonic-gate 0, 077, 040, 076, 040, 040, 077, /* E */ 153*7c478bd9Sstevel@tonic-gate 0, 077, 040, 076, 040, 040, 040, /* F */ 154*7c478bd9Sstevel@tonic-gate 0, 036, 041, 040, 047, 041, 036, /* G */ 155*7c478bd9Sstevel@tonic-gate 0, 041, 041, 077, 041, 041, 041, /* H */ 156*7c478bd9Sstevel@tonic-gate 0, 004, 004, 004, 004, 004, 004, /* I */ 157*7c478bd9Sstevel@tonic-gate 0, 001, 001, 001, 001, 041, 036, /* J */ 158*7c478bd9Sstevel@tonic-gate 0, 041, 042, 074, 044, 042, 041, /* K */ 159*7c478bd9Sstevel@tonic-gate 0, 040, 040, 040, 040, 040, 077, /* L */ 160*7c478bd9Sstevel@tonic-gate 0, 041, 063, 055, 041, 041, 041, /* M */ 161*7c478bd9Sstevel@tonic-gate 0, 041, 061, 051, 045, 043, 041, /* N */ 162*7c478bd9Sstevel@tonic-gate 0, 036, 041, 041, 041, 041, 036, /* O */ 163*7c478bd9Sstevel@tonic-gate 0, 076, 041, 041, 076, 040, 040, /* P */ 164*7c478bd9Sstevel@tonic-gate 0, 036, 041, 041, 045, 042, 035, /* Q */ 165*7c478bd9Sstevel@tonic-gate 0, 076, 041, 041, 076, 042, 041, /* R */ 166*7c478bd9Sstevel@tonic-gate 0, 036, 040, 036, 001, 041, 036, /* S */ 167*7c478bd9Sstevel@tonic-gate 0, 037, 004, 004, 004, 004, 004, /* T */ 168*7c478bd9Sstevel@tonic-gate 0, 041, 041, 041, 041, 041, 036, /* U */ 169*7c478bd9Sstevel@tonic-gate 0, 041, 041, 041, 041, 022, 014, /* V */ 170*7c478bd9Sstevel@tonic-gate 0, 041, 041, 041, 055, 063, 041, /* W */ 171*7c478bd9Sstevel@tonic-gate 0, 041, 022, 014, 014, 022, 041, /* X */ 172*7c478bd9Sstevel@tonic-gate 0, 021, 012, 004, 004, 004, 004, /* Y */ 173*7c478bd9Sstevel@tonic-gate 0, 077, 002, 004, 010, 020, 077, /* Z */ 174*7c478bd9Sstevel@tonic-gate 034, 040, 040, 0140, 040, 040, 034, /* { */ 175*7c478bd9Sstevel@tonic-gate 010, 010, 010, 0, 010, 010, 010, /* | */ 176*7c478bd9Sstevel@tonic-gate 034, 2, 2, 3, 2, 2, 034, /* } */ 177*7c478bd9Sstevel@tonic-gate 060, 0111, 06, 0, 0, 0, 0, /* ~ */ 178*7c478bd9Sstevel@tonic-gate 0, 000, 000, 000, 000, 000, 000 /* DEL */ 179*7c478bd9Sstevel@tonic-gate }; 180*7c478bd9Sstevel@tonic-gate static char blank = ' '; 181*7c478bd9Sstevel@tonic-gate static char plot = '#'; 182*7c478bd9Sstevel@tonic-gate static int msk = 0100; /* ? */ 183*7c478bd9Sstevel@tonic-gate 184*7c478bd9Sstevel@tonic-gate static void banner(char *s, struct bann *bufp); 185*7c478bd9Sstevel@tonic-gate static void banfil(char *c, struct bann *p); 186*7c478bd9Sstevel@tonic-gate static void banset(char c, struct bann *p); 187*7c478bd9Sstevel@tonic-gate static void banprt(struct bann *ptr); 188*7c478bd9Sstevel@tonic-gate static char convert(unsigned char c); 189*7c478bd9Sstevel@tonic-gate 190*7c478bd9Sstevel@tonic-gate int 191*7c478bd9Sstevel@tonic-gate main(int argc, char **argv) 192*7c478bd9Sstevel@tonic-gate { 193*7c478bd9Sstevel@tonic-gate int i; 194*7c478bd9Sstevel@tonic-gate /* 195*7c478bd9Sstevel@tonic-gate * if invoked with no arguments, prints error comment 196*7c478bd9Sstevel@tonic-gate * if invoked with an argument, prints it in banner form. 197*7c478bd9Sstevel@tonic-gate */ 198*7c478bd9Sstevel@tonic-gate (void) setlocale(LC_ALL, ""); 199*7c478bd9Sstevel@tonic-gate #if !defined(TEXT_DOMAIN) 200*7c478bd9Sstevel@tonic-gate #define TEXT_DOMAIN "SYS_TEST" 201*7c478bd9Sstevel@tonic-gate #endif 202*7c478bd9Sstevel@tonic-gate (void) textdomain(TEXT_DOMAIN); 203*7c478bd9Sstevel@tonic-gate if (argc < 2) { 204*7c478bd9Sstevel@tonic-gate (void) printf(gettext 205*7c478bd9Sstevel@tonic-gate ("Usage: banner \"up to 10 char arg string\" . . .\n")); 206*7c478bd9Sstevel@tonic-gate exit(1); 207*7c478bd9Sstevel@tonic-gate } 208*7c478bd9Sstevel@tonic-gate for (i = 1; i < argc; ++i) { 209*7c478bd9Sstevel@tonic-gate banner(argv[i], bp); 210*7c478bd9Sstevel@tonic-gate banprt(bp); 211*7c478bd9Sstevel@tonic-gate (void) printf("\n"); 212*7c478bd9Sstevel@tonic-gate } 213*7c478bd9Sstevel@tonic-gate return (0); 214*7c478bd9Sstevel@tonic-gate } 215*7c478bd9Sstevel@tonic-gate 216*7c478bd9Sstevel@tonic-gate static void 217*7c478bd9Sstevel@tonic-gate banner(char *s, struct bann *bufp) 218*7c478bd9Sstevel@tonic-gate { 219*7c478bd9Sstevel@tonic-gate char *p, *q; 220*7c478bd9Sstevel@tonic-gate unsigned char c; 221*7c478bd9Sstevel@tonic-gate struct bann *r; 222*7c478bd9Sstevel@tonic-gate p = s; 223*7c478bd9Sstevel@tonic-gate r = bufp; 224*7c478bd9Sstevel@tonic-gate banset(blank, bufp); 225*7c478bd9Sstevel@tonic-gate while ((c = *s++) != 0 && ((ptrdiff_t)s-(ptrdiff_t)p) <= chpln) { 226*7c478bd9Sstevel@tonic-gate if ((c & 0300)) { /* 8th bit is on */ 227*7c478bd9Sstevel@tonic-gate c = convert(c); 228*7c478bd9Sstevel@tonic-gate } 229*7c478bd9Sstevel@tonic-gate q = ctbl[c]; 230*7c478bd9Sstevel@tonic-gate banfil(q, r); 231*7c478bd9Sstevel@tonic-gate r = (struct bann *)((char *)r + pospch); 232*7c478bd9Sstevel@tonic-gate } 233*7c478bd9Sstevel@tonic-gate } 234*7c478bd9Sstevel@tonic-gate 235*7c478bd9Sstevel@tonic-gate static void 236*7c478bd9Sstevel@tonic-gate banfil(char *c, struct bann *p) 237*7c478bd9Sstevel@tonic-gate { 238*7c478bd9Sstevel@tonic-gate int i, j; 239*7c478bd9Sstevel@tonic-gate for (i = 0; i < nlines; i++) { 240*7c478bd9Sstevel@tonic-gate for (j = 0; j < pospch; j++) { 241*7c478bd9Sstevel@tonic-gate if (((c[i]<<j)&msk) != 0) p->alpha[i][j] = plot; 242*7c478bd9Sstevel@tonic-gate } 243*7c478bd9Sstevel@tonic-gate } 244*7c478bd9Sstevel@tonic-gate } 245*7c478bd9Sstevel@tonic-gate 246*7c478bd9Sstevel@tonic-gate static void 247*7c478bd9Sstevel@tonic-gate banset(char c, struct bann *p) 248*7c478bd9Sstevel@tonic-gate { 249*7c478bd9Sstevel@tonic-gate int i, j; 250*7c478bd9Sstevel@tonic-gate for (i = 0; i < nlines; i++) 251*7c478bd9Sstevel@tonic-gate for (j = 0; j < pposs-1; j++) 252*7c478bd9Sstevel@tonic-gate p->alpha[i][j] = c; 253*7c478bd9Sstevel@tonic-gate } 254*7c478bd9Sstevel@tonic-gate 255*7c478bd9Sstevel@tonic-gate static void 256*7c478bd9Sstevel@tonic-gate banprt(struct bann *ptr) 257*7c478bd9Sstevel@tonic-gate { 258*7c478bd9Sstevel@tonic-gate int i, j; 259*7c478bd9Sstevel@tonic-gate for (i = 0; i < nlines; i++) { 260*7c478bd9Sstevel@tonic-gate ptr->alpha[i][pposs-1] = '\0'; 261*7c478bd9Sstevel@tonic-gate for (j = pposs-2; j >= 0; j--) { 262*7c478bd9Sstevel@tonic-gate if (ptr->alpha[i][j] != blank)break; 263*7c478bd9Sstevel@tonic-gate ptr->alpha[i][j] = '\0'; 264*7c478bd9Sstevel@tonic-gate } 265*7c478bd9Sstevel@tonic-gate (void) printf("%s\n", ptr->alpha[i]); 266*7c478bd9Sstevel@tonic-gate } 267*7c478bd9Sstevel@tonic-gate } 268*7c478bd9Sstevel@tonic-gate 269*7c478bd9Sstevel@tonic-gate static char 270*7c478bd9Sstevel@tonic-gate convert(unsigned char c) 271*7c478bd9Sstevel@tonic-gate { 272*7c478bd9Sstevel@tonic-gate if (c >= 0xc0 && c <= 0xc6) 273*7c478bd9Sstevel@tonic-gate return ('A'); 274*7c478bd9Sstevel@tonic-gate if (c >= 0xc8 && c <= 0xcb) 275*7c478bd9Sstevel@tonic-gate return ('E'); 276*7c478bd9Sstevel@tonic-gate if (c == 0xc7) 277*7c478bd9Sstevel@tonic-gate return ('C'); 278*7c478bd9Sstevel@tonic-gate if (c >= 0xcc && c <= 0xcf) 279*7c478bd9Sstevel@tonic-gate return ('I'); 280*7c478bd9Sstevel@tonic-gate if (c == 0xd0) 281*7c478bd9Sstevel@tonic-gate return ('D'); 282*7c478bd9Sstevel@tonic-gate if (c == 0xd1) 283*7c478bd9Sstevel@tonic-gate return ('N'); 284*7c478bd9Sstevel@tonic-gate if (c >= 0xd2 && c <= 0xd6) 285*7c478bd9Sstevel@tonic-gate return ('O'); 286*7c478bd9Sstevel@tonic-gate if (c == 0xd7) 287*7c478bd9Sstevel@tonic-gate return ('X'); 288*7c478bd9Sstevel@tonic-gate if (c == 0xd8) 289*7c478bd9Sstevel@tonic-gate return ('O'); 290*7c478bd9Sstevel@tonic-gate if (c >= 0xd9 && c <= 0xdc) 291*7c478bd9Sstevel@tonic-gate return ('U'); 292*7c478bd9Sstevel@tonic-gate if (c == 0xdd) 293*7c478bd9Sstevel@tonic-gate return ('Y'); 294*7c478bd9Sstevel@tonic-gate if (c == 0xde) 295*7c478bd9Sstevel@tonic-gate return ('P'); 296*7c478bd9Sstevel@tonic-gate if (c == 0xdf) 297*7c478bd9Sstevel@tonic-gate return ('B'); 298*7c478bd9Sstevel@tonic-gate if (c >= 0xe0 && c <= 0xe6) 299*7c478bd9Sstevel@tonic-gate return ('a'); 300*7c478bd9Sstevel@tonic-gate if (c == 0xe7) 301*7c478bd9Sstevel@tonic-gate return ('c'); 302*7c478bd9Sstevel@tonic-gate if (c >= 0xe8 && c <= 0xeb) 303*7c478bd9Sstevel@tonic-gate return ('e'); 304*7c478bd9Sstevel@tonic-gate if (c >= 0xec && c <= 0xef) 305*7c478bd9Sstevel@tonic-gate return ('i'); 306*7c478bd9Sstevel@tonic-gate if (c == 0xf0) 307*7c478bd9Sstevel@tonic-gate return ('d'); 308*7c478bd9Sstevel@tonic-gate if (c == 0xf1) 309*7c478bd9Sstevel@tonic-gate return ('n'); 310*7c478bd9Sstevel@tonic-gate if (c >= 0xf2 && c <= 0xf6) 311*7c478bd9Sstevel@tonic-gate return ('o'); 312*7c478bd9Sstevel@tonic-gate if (c >= 0xf9 && c <= 0xfc) 313*7c478bd9Sstevel@tonic-gate return ('u'); 314*7c478bd9Sstevel@tonic-gate if (c == 0xfd) 315*7c478bd9Sstevel@tonic-gate return ('y'); 316*7c478bd9Sstevel@tonic-gate if (c == 0xfe) 317*7c478bd9Sstevel@tonic-gate return ('p'); 318*7c478bd9Sstevel@tonic-gate if (c == 0xff) 319*7c478bd9Sstevel@tonic-gate return ('y'); 320*7c478bd9Sstevel@tonic-gate return (c & 0177); 321*7c478bd9Sstevel@tonic-gate } 322