diff options
Diffstat (limited to 'usr.bin/lam')
-rw-r--r-- | usr.bin/lam/Makefile | 5 | ||||
-rw-r--r-- | usr.bin/lam/lam.1 | 127 | ||||
-rw-r--r-- | usr.bin/lam/lam.c | 233 |
3 files changed, 0 insertions, 365 deletions
diff --git a/usr.bin/lam/Makefile b/usr.bin/lam/Makefile deleted file mode 100644 index a24fc92..0000000 --- a/usr.bin/lam/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# @(#)Makefile 8.1 (Berkeley) 6/6/93 - -PROG= lam - -.include <bsd.prog.mk> diff --git a/usr.bin/lam/lam.1 b/usr.bin/lam/lam.1 deleted file mode 100644 index 660e5dc..0000000 --- a/usr.bin/lam/lam.1 +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright (c) 1993 -.\" The Regents of the University of California. 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 the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. -.\" -.\" @(#)lam.1 8.1 (Berkeley) 6/6/93 -.\" -.TH LAM 1 "June 6, 1993" -.UC 4 -.SH NAME -lam \- laminate files -.SH SYNOPSIS -.B lam [ \-[fp] -min.max -.B ] [ \-s -sepstring -.B ] [ \-t -c -.B ] -file ... -.SH DESCRIPTION -.I Lam -copies the named files side by side onto the standard output. -The -.IR n -th -input lines from the input -.IR file s -are considered fragments of the single long -.IR n -th -output line into which they are assembled. -The name `\fB\-\fP' means the standard input, and may be repeated. -.PP -Normally, each option affects only the -.I file -after it. -If the option letter is capitalized it affects all subsequent files -until it appears again uncapitalized. -The options are described below. -.IP \fB\-f\fP\ min.max -Print line fragments according to the format string -.IR min.max , -where -.I min -is the minimum field width and -.I max -the maximum field width. -If -.I min -begins with a zero, zeros will be added to make up the field width, -and if it begins with a `\-', the fragment will be left-adjusted -within the field. -.IP \fB\-p\fP\ min.max -Like \fB\-f\fP, -but pad this file's field when end-of-file is reached -and other files are still active. -.IP \fB\-s\fP\ sepstring -Print -.I sepstring -before printing line fragments from the next file. -This option may appear after the last file. -.IP \fB\-t\fP\ c -The input line terminator is -.I c -instead of a newline. -The newline normally appended to each output line is omitted. -.PP -To print files simultaneously for easy viewing use -.IR pr (1). -.SH EXAMPLES -.de IC -.IP -.ss 36 -.ft B -.. -.de NC -.br -.ss 12 -.PP -.. -.PP -The command -.IC -lam file1 file2 file3 file4 -.NC -joins 4 files together along each line. -To merge the lines from four different files use -.IC -lam file1 \-S "\\ -.br -" file2 file3 file4 -.NC -Every 2 lines of a file may be joined on one line with -.IC -lam \- \- < file -.NC -and a form letter with substitutions keyed by `@' can be done with -.IC -lam \-t @ letter changes -.NC -.SH SEE ALSO -join(1), pr(1), printf(3) diff --git a/usr.bin/lam/lam.c b/usr.bin/lam/lam.c deleted file mode 100644 index 07d6abb..0000000 --- a/usr.bin/lam/lam.c +++ /dev/null @@ -1,233 +0,0 @@ -/*- - * Copyright (c) 1993 - * The Regents of the University of California. 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 the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)lam.c 8.1 (Berkeley) 6/6/93"; -#endif /* not lint */ - -/* - * lam - laminate files - * Author: John Kunze, UCB - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define MAXOFILES 20 -#define BIGBUFSIZ 5 * BUFSIZ - -struct openfile { /* open file structure */ - FILE *fp; /* file pointer */ - short eof; /* eof flag */ - short pad; /* pad flag for missing columns */ - char eol; /* end of line character */ - char *sepstring; /* string to print before each line */ - char *format; /* printf(3) style string spec. */ -} input[MAXOFILES]; - -int morefiles; /* set by getargs(), changed by gatherline() */ -int nofinalnl; /* normally append \n to each output line */ -char line[BIGBUFSIZ]; -char *linep; - -void error __P((char *, char *)); -char *gatherline __P((struct openfile *)); -void getargs __P((char *[])); -char *pad __P((struct openfile *)); - -int -main(argc, argv) - int argc; - char *argv[]; -{ - register struct openfile *ip; - - getargs(argv); - if (!morefiles) - error("lam - laminate files", ""); - for (;;) { - linep = line; - for (ip = input; ip->fp != NULL; ip++) - linep = gatherline(ip); - if (!morefiles) - exit(0); - fputs(line, stdout); - fputs(ip->sepstring, stdout); - if (!nofinalnl) - putchar('\n'); - } -} - -void -getargs(av) - char *av[]; -{ - register struct openfile *ip = input; - register char *p; - register char *c; - static char fmtbuf[BUFSIZ]; - char *fmtp = fmtbuf; - int P, S, F, T; - - P = S = F = T = 0; /* capitalized options */ - while ((p = *++av) != NULL) { - if (*p != '-' || !p[1]) { - morefiles++; - if (*p == '-') - ip->fp = stdin; - else if ((ip->fp = fopen(p, "r")) == NULL) { - perror(p); - exit(1); - } - ip->pad = P; - if (!ip->sepstring) - ip->sepstring = (S ? (ip-1)->sepstring : ""); - if (!ip->format) - ip->format = ((P || F) ? (ip-1)->format : "%s"); - if (!ip->eol) - ip->eol = (T ? (ip-1)->eol : '\n'); - ip++; - continue; - } - switch (*(c = ++p) | 040) { - case 's': - if (*++p || (p = *++av)) - ip->sepstring = p; - else - error("Need string after -%s", c); - S = (*c == 'S' ? 1 : 0); - break; - case 't': - if (*++p || (p = *++av)) - ip->eol = *p; - else - error("Need character after -%s", c); - T = (*c == 'T' ? 1 : 0); - nofinalnl = 1; - break; - case 'p': - ip->pad = 1; - P = (*c == 'P' ? 1 : 0); - case 'f': - F = (*c == 'F' ? 1 : 0); - if (*++p || (p = *++av)) { - fmtp += strlen(fmtp) + 1; - if (fmtp > fmtbuf + BUFSIZ) - error("No more format space", ""); - sprintf(fmtp, "%%%ss", p); - ip->format = fmtp; - } - else - error("Need string after -%s", c); - break; - default: - error("What do you mean by -%s?", c); - break; - } - } - ip->fp = NULL; - if (!ip->sepstring) - ip->sepstring = ""; -} - -char * -pad(ip) - struct openfile *ip; -{ - register char *p = ip->sepstring; - register char *lp = linep; - - while (*p) - *lp++ = *p++; - if (ip->pad) { - sprintf(lp, ip->format, ""); - lp += strlen(lp); - } - return (lp); -} - -char * -gatherline(ip) - struct openfile *ip; -{ - char s[BUFSIZ]; - register int c; - register char *p; - register char *lp = linep; - char *end = s + BUFSIZ; - - if (ip->eof) - return (pad(ip)); - for (p = s; (c = fgetc(ip->fp)) != EOF && p < end; p++) - if ((*p = c) == ip->eol) - break; - *p = '\0'; - if (c == EOF) { - ip->eof = 1; - if (ip->fp == stdin) - fclose(stdin); - morefiles--; - return (pad(ip)); - } - p = ip->sepstring; - while (*p) - *lp++ = *p++; - sprintf(lp, ip->format, s); - lp += strlen(lp); - return (lp); -} - -void -error(msg, s) - char *msg, *s; -{ - fprintf(stderr, "lam: "); - fprintf(stderr, msg, s); - fprintf(stderr, -"\nUsage: lam [ -[fp] min.max ] [ -s sepstring ] [ -t c ] file ...\n"); - if (strncmp("lam - ", msg, 6) == 0) - fprintf(stderr, "Options:\n\t%s\t%s\t%s\t%s\t%s", - "-f min.max field widths for file fragments\n", - "-p min.max like -f, but pad missing fragments\n", - "-s sepstring fragment separator\n", -"-t c input line terminator is c, no \\n after output lines\n", - "Capitalized options affect more than one file.\n"); - exit(1); -} |