1 /* 2 * Copyright (c) 1993,94 Winning Strategies, Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by Winning Strategies, Inc. 16 * 4. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * $Header: /cvsroot/src/usr.bin/asa/asa.c,v 1.6 1994/11/14 21:51:30 jtc Exp $ 31 */ 32 33 #ifndef lint 34 static char *rcsid = "$Id: asa.c,v 1.6 1994/11/14 21:51:30 jtc Exp $"; 35 #endif 36 37 #include <stdio.h> 38 #include <stdlib.h> 39 #include <err.h> 40 41 static void asa(); 42 43 int 44 main (argc, argv) 45 int argc; 46 char **argv; 47 { 48 FILE *fp; 49 50 /* skip progname */ 51 argv++; 52 53 fp = stdin; 54 do { 55 if (*argv) { 56 if (!(fp = fopen(*argv, "r"))) { 57 warn ("%s", *argv); 58 continue; 59 } 60 } 61 asa (fp); 62 if (fp != stdin) 63 (void)fclose(fp); 64 } while (*argv++); 65 66 exit (0); 67 } 68 69 static void 70 asa(f) 71 FILE *f; 72 { 73 char *buf; 74 int len; 75 76 if ((buf = fgetln (f, &len)) != NULL) { 77 buf[len - 1] = '\0'; 78 /* special case the first line */ 79 switch (buf[0]) { 80 case '0': 81 putchar ('\n'); 82 break; 83 case '1': 84 putchar ('\f'); 85 break; 86 } 87 88 if (buf[0] && buf[1]) { 89 fputs (&buf[1], stdout); 90 } 91 92 while ((buf = fgetln(f, &len)) != NULL) { 93 buf[len - 1] = '\0'; 94 switch (buf[0]) { 95 default: 96 case ' ': 97 putchar ('\n'); 98 break; 99 case '0': 100 putchar ('\n'); 101 putchar ('\n'); 102 break; 103 case '1': 104 putchar ('\f'); 105 break; 106 case '+': 107 putchar ('\r'); 108 break; 109 } 110 111 if (buf[0] && buf[1]) { 112 fputs (&buf[1], stdout); 113 } 114 } 115 116 putchar ('\n'); 117 } 118 } 119