diff options
author | tjr <tjr@FreeBSD.org> | 2002-05-15 02:40:57 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-05-15 02:40:57 +0000 |
commit | 03ace5aac10519fc578007af6604cb7e897f7d1c (patch) | |
tree | 04517cad6909becbd1f9cf5e08dd4f927edff9f7 /usr.bin/asa | |
parent | 134bb77c23716f360ff5ae37d60b5e6068cf6095 (diff) | |
download | FreeBSD-src-03ace5aac10519fc578007af6604cb7e897f7d1c.zip FreeBSD-src-03ace5aac10519fc578007af6604cb7e897f7d1c.tar.gz |
Add the POSIX.2 asa utility, which interprets FORTRAN carriage-control
characters.
PR: 36130
Approved by: mike
Obtained from: NetBSD
Diffstat (limited to 'usr.bin/asa')
-rw-r--r-- | usr.bin/asa/Makefile | 6 | ||||
-rw-r--r-- | usr.bin/asa/asa.1 | 90 | ||||
-rw-r--r-- | usr.bin/asa/asa.c | 125 |
3 files changed, 221 insertions, 0 deletions
diff --git a/usr.bin/asa/Makefile b/usr.bin/asa/Makefile new file mode 100644 index 0000000..c2a221a --- /dev/null +++ b/usr.bin/asa/Makefile @@ -0,0 +1,6 @@ +# $NetBSD: Makefile,v 1.2 1995/03/25 18:04:51 glass Exp $ +# $FreeBSD$ + +PROG= asa + +.include <bsd.prog.mk> diff --git a/usr.bin/asa/asa.1 b/usr.bin/asa/asa.1 new file mode 100644 index 0000000..39cfc36 --- /dev/null +++ b/usr.bin/asa/asa.1 @@ -0,0 +1,90 @@ +.\" $NetBSD: asa.1,v 1.11 2002/02/08 01:36:18 ross Exp $ +.\" +.\" Copyright (c) 1993 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. +.\" +.\" $FreeBSD$ +.\" +.Dd September 23, 1993 +.Dt ASA 1 +.Os +.Sh NAME +.Nm asa +.Nd interpret carriage-control characters +.Sh SYNOPSIS +.Nm +.Op Ar +.Sh DESCRIPTION +The +.Nm +utility reads files sequentially, mapping +.Tn FORTRAN +carriage-control characters to line-printer control sequences, +and writes them to the standard output. +.Pp +The first character of each line is interpreted as a carriage-control +character. The following characters are interpreted as follows: +.Bl -tag -width "\*[Lt]space\*[Gt]" +.It \*[Lt]space\*[Gt] +Output the rest of the line without change. +.It 0 +Output a \*[Lt]newline\*[Gt] character before printing the rest of the line. +.It 1 +Output a \*[Lt]formfeed\*[Gt] character before printing the rest of the line. +.It + +The trailing \*[Lt]newline\*[Gt] of the previous line is replaced by a \*[Lt]carriage-return\*[Gt] +before printing the rest of the line. +.El +.Pp +Lines beginning with characters other than the above are treated as if they +begin with \*[Lt]space\*[Gt]. +.Sh EXIT STATUS +The +.Nm +utility exit 0 on success, and \*[Gt]0 if an error occurs. +.Sh EXAMPLES +To view a file containing the output of a +.Tn FORTRAN +program: +.Dl asa file +.Pp +To format the output of a +.Tn FORTRAN +program and redirect it to a line-printer: +.Dl a.out | asa | lpr +.Sh SEE ALSO +.Xr f77 1 +.Sh STANDARDS +The +.Nm +utility conforms to +.St -p1003.2-92 +and to +.St -xcu5 . +.Sh AUTHORS +J.T. Conklin, Winning Strategies, Inc. diff --git a/usr.bin/asa/asa.c b/usr.bin/asa/asa.c new file mode 100644 index 0000000..8194193 --- /dev/null +++ b/usr.bin/asa/asa.c @@ -0,0 +1,125 @@ +/* $NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem 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> +#if 0 +#ifndef lint +__RCSID("$NetBSD: asa.c,v 1.11 1997/09/20 14:55:00 lukem Exp $"); +#endif +#endif +__FBSDID("$FreeBSD$"); + +#include <stdio.h> +#include <stdlib.h> +#include <err.h> + +static void asa __P((FILE *)); +int main __P((int, char *[])); + +int +main (argc, argv) + int argc; + char **argv; +{ + FILE *fp; + + /* skip progname */ + argv++; + + fp = stdin; + do { + if (*argv) { + if (!(fp = fopen(*argv, "r"))) { + warn ("%s", *argv); + continue; + } + } + asa (fp); + if (fp != stdin) + (void)fclose(fp); + } while (*argv++); + + exit (0); +} + +static void +asa(f) + FILE *f; +{ + char *buf; + size_t len; + + if ((buf = fgetln (f, &len)) != NULL) { + if (buf[len - 1] == '\n') + buf[--len] = '\0'; + /* special case the first line */ + switch (buf[0]) { + case '0': + putchar ('\n'); + break; + case '1': + putchar ('\f'); + break; + } + + if (len > 1 && buf[0] && buf[1]) { + printf("%.*s", (int)(len - 1), buf + 1); + } + + while ((buf = fgetln(f, &len)) != NULL) { + if (buf[len - 1] == '\n') + buf[--len] = '\0'; + switch (buf[0]) { + default: + case ' ': + putchar ('\n'); + break; + case '0': + putchar ('\n'); + putchar ('\n'); + break; + case '1': + putchar ('\f'); + break; + case '+': + putchar ('\r'); + break; + } + + if (len > 1 && buf[0] && buf[1]) { + printf("%.*s", (int)(len - 1), buf + 1); + } + } + + putchar ('\n'); + } +} |