diff options
author | Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> | 2019-02-01 22:55:37 +0000 |
---|---|---|
committer | Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> | 2019-02-03 18:22:05 -0600 |
commit | 5b57d28ffb6e1ef86b50f7d05d977826eae89bfe (patch) | |
tree | 154a22fe556b49e6927197336f8bf91b12eacd5e /usr.bin/asa/asa.c | |
download | userland-5b57d28ffb6e1ef86b50f7d05d977826eae89bfe.tar.gz userland-5b57d28ffb6e1ef86b50f7d05d977826eae89bfe.tar.bz2 userland-5b57d28ffb6e1ef86b50f7d05d977826eae89bfe.tar.xz userland-5b57d28ffb6e1ef86b50f7d05d977826eae89bfe.zip |
initial population
Diffstat (limited to 'usr.bin/asa/asa.c')
-rw-r--r-- | usr.bin/asa/asa.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/usr.bin/asa/asa.c b/usr.bin/asa/asa.c new file mode 100644 index 0000000..6c1efd6 --- /dev/null +++ b/usr.bin/asa/asa.c @@ -0,0 +1,116 @@ +/* $NetBSD: asa.c,v 1.17 2016/09/05 00:40:28 sevan Exp $ */ + +/* + * Copyright (c) 1993,94 Winning Strategies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +#ifndef lint +__RCSID("$NetBSD: asa.c,v 1.17 2016/09/05 00:40:28 sevan Exp $"); +#endif + +#include <err.h> +#include <stdio.h> +#include <stdlib.h> + +static void asa(FILE *); + +int +/*ARGSUSED*/ +main (int argc, char *argv[]) +{ + FILE *fp; + + /* skip progname */ + argv++; + + if (*argv == NULL) + asa(stdin); + else + do { + if ((fp = fopen(*argv, "r")) == NULL) { + warn("%s", *argv); + continue; + } + asa(fp); + (void)fclose(fp); + } while (*++argv != NULL); + + return 0; +} + +static void +asa(FILE *f) +{ + char *buf; + size_t len; + + if ((buf = fgetln(f, &len)) != NULL) { + if (len > 0 && buf[len - 1] == '\n') + buf[--len] = '\0'; + /* special case the first line */ + switch (buf[0]) { + case '0': + (void)putchar('\n'); + break; + case '1': + (void)putchar('\f'); + break; + } + + if (len > 1 && buf[0] && buf[1]) + (void)fwrite(buf + 1, 1, len - 1, stdout); + + while ((buf = fgetln(f, &len)) != NULL) { + if (len > 0 && buf[len - 1] == '\n') + buf[--len] = '\0'; + switch (buf[0]) { + default: + case ' ': + (void)putchar('\n'); + break; + case '0': + (void)putchar('\n'); + (void)putchar('\n'); + break; + case '1': + (void)putchar('\f'); + break; + case '+': + (void)putchar('\r'); + break; + } + + if (len > 1 && buf[0] && buf[1]) + (void)fwrite(buf + 1, 1, len - 1, stdout); + } + + (void)putchar('\n'); + } +} |