[27166] in Source-Commits

home help back first fref pref prev next nref lref last post

/svn/athena r25988 - in trunk/third/lam: . debian debian/patches debian/source

daemon@ATHENA.MIT.EDU (Alexander Chernyakhovsky)
Sun May 12 21:03:15 2013

Date: Sun, 12 May 2013 21:03:07 -0400
From: Alexander Chernyakhovsky <achernya@MIT.EDU>
Message-Id: <201305130103.r4D137U0024271@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: achernya
Date: 2013-05-12 21:03:07 -0400 (Sun, 12 May 2013)
New Revision: 25988

Added:
   trunk/third/lam/debian/control
   trunk/third/lam/debian/patches/
   trunk/third/lam/debian/patches/linux-compatibility.patch
   trunk/third/lam/debian/patches/series
   trunk/third/lam/debian/source/
   trunk/third/lam/debian/source/format
Removed:
   trunk/third/lam/debian/control.in
Modified:
   trunk/third/lam/Makefile
   trunk/third/lam/debian/changelog
   trunk/third/lam/debian/rules
   trunk/third/lam/lam.1
   trunk/third/lam/lam.c
Log:
In lam:
  * Import FreeBSD lam (Sun Nov 6 18:49:41 2011 +0000)
  * Switch to dh7
  * Switch to source format 3.0 (quilt)


Modified: trunk/third/lam/Makefile
===================================================================
--- trunk/third/lam/Makefile	2013-05-12 23:31:17 UTC (rev 25987)
+++ trunk/third/lam/Makefile	2013-05-13 01:03:07 UTC (rev 25988)
@@ -3,6 +3,7 @@
 SHELL=/bin/sh
 ATHBINDIR=/usr/bin
 ATHMANDIR=/usr/share/man
+LIBS=-lbsd
 
 all: lam
 

Modified: trunk/third/lam/debian/changelog
===================================================================
--- trunk/third/lam/debian/changelog	2013-05-12 23:31:17 UTC (rev 25987)
+++ trunk/third/lam/debian/changelog	2013-05-13 01:03:07 UTC (rev 25988)
@@ -1,9 +1,15 @@
 debathena-lam (10.0.4) UNRELEASED; urgency=low
 
+  [ Jonathon Reed ]
   * Bump debian/compat to 6
 
- -- Jonathan Reed <jdreed@mit.edu>  Sun, 01 Jul 2012 12:21:34 -0400
+  [ Alexander Chernyakhovsky ]
+  * Import FreeBSD lam (Sun Nov 6 18:49:41 2011 +0000)
+  * Switch to dh7
+  * Switch to source format 3.0 (quilt)
 
+ -- Jonathan Reed <jdreed@mit.edu>  Sun, 12 May 2013 21:02:49 -0400
+
 debathena-lam (10.0.3) unstable; urgency=low
 
   * Flesh out the description to avoid the Lintian error

Copied: trunk/third/lam/debian/control (from rev 25984, trunk/third/lam/debian/control.in)
===================================================================
--- trunk/third/lam/debian/control	                        (rev 0)
+++ trunk/third/lam/debian/control	2013-05-13 01:03:07 UTC (rev 25988)
@@ -0,0 +1,15 @@
+Source: debathena-lam
+Section: debathena/text
+Priority: extra
+Maintainer: Debathena Project <debathena@mit.edu>
+Build-Depends: debhelper (>= 7), libbsd-dev
+Standards-Version: 3.9.3
+
+Package: debathena-lam
+Architecture: any
+Provides: lam
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: "laminate" files by putting them into multi-column format
+ This utility combines files into columns, somewhat like paste(1).
+ Debathena provides it because it has traditionally been provided on
+ Athena and is not available in Debian.

Added: trunk/third/lam/debian/patches/linux-compatibility.patch
===================================================================
--- trunk/third/lam/debian/patches/linux-compatibility.patch	                        (rev 0)
+++ trunk/third/lam/debian/patches/linux-compatibility.patch	2013-05-13 01:03:07 UTC (rev 25988)
@@ -0,0 +1,18 @@
+--- a/lam.c
++++ b/lam.c
+@@ -39,7 +39,6 @@
+ #endif
+ #endif /* not lint */
+ #include <sys/cdefs.h>
+-__FBSDID("$FreeBSD$");
+ 
+ /*
+  *	lam - laminate files
+@@ -51,6 +50,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <bsd/string.h>
+ 
+ #define	MAXOFILES	20
+ #define	BIGBUFSIZ	5 * BUFSIZ

Added: trunk/third/lam/debian/patches/series
===================================================================
--- trunk/third/lam/debian/patches/series	                        (rev 0)
+++ trunk/third/lam/debian/patches/series	2013-05-13 01:03:07 UTC (rev 25988)
@@ -0,0 +1 @@
+linux-compatibility.patch

Modified: trunk/third/lam/debian/rules
===================================================================
--- trunk/third/lam/debian/rules	2013-05-12 23:31:17 UTC (rev 25987)
+++ trunk/third/lam/debian/rules	2013-05-13 01:03:07 UTC (rev 25988)
@@ -1,6 +1,3 @@
 #!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/class/makefile.mk
-
-DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(DEB_DESTDIR)
+%:
+	dh $@

Added: trunk/third/lam/debian/source/format
===================================================================
--- trunk/third/lam/debian/source/format	                        (rev 0)
+++ trunk/third/lam/debian/source/format	2013-05-13 01:03:07 UTC (rev 25988)
@@ -0,0 +1 @@
+3.0 (quilt)

Modified: trunk/third/lam/lam.1
===================================================================
--- trunk/third/lam/lam.1	2013-05-12 23:31:17 UTC (rev 25987)
+++ trunk/third/lam/lam.1	2013-05-13 01:03:07 UTC (rev 25988)
@@ -1,5 +1,3 @@
-.\"	$NetBSD: lam.1,v 1.2 1994/11/14 20:27:40 jtc Exp $
-.\"
 .\" Copyright (c) 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -11,7 +9,7 @@
 .\" 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. Neither the name of the University nor the names of 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.
 .\"
@@ -28,98 +26,117 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)lam.1	8.1 (Berkeley) 6/6/93
+.\" $FreeBSD$
 .\"
-.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.
+.Dd August 12, 2004
+.Dt LAM 1
+.Os
+.Sh NAME
+.Nm lam
+.Nd laminate files
+.Sh SYNOPSIS
+.Nm
+.Op Fl f Ar min . Ns Ar max
+.Op Fl s Ar sepstring
+.Op Fl t Ar c
+.Ar
+.Nm
+.Op Fl p Ar min . Ns Ar max
+.Op Fl s Ar sepstring
+.Op Fl t Ar c
+.Ar
+.Sh DESCRIPTION
 The
-.IR n -th
+.Nm
+utility copies the named files side by side onto the standard output.
+The
+.Em n-th
 input lines from the input
-.IR file s
+.Ar files
 are considered fragments of the single long
-.IR n -th
+.Em n-th
 output line into which they are assembled.
 The name `\fB\-\fP' means the standard input, and may be repeated.
-.PP
+.Pp
 Normally, each option affects only the
-.I file
+.Ar 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
+The options are described below:
+.Bl -tag -width indent
+.It Fl f Ar min . Ns Ar max
 Print line fragments according to the format string
-.IR min.max ,
+.Ar min . Ns Ar max ,
 where
-.I min
+.Ar min
 is the minimum field width and
-.I max
+.Ar max
 the maximum field width.
 If
-.I min
+.Ar 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,
+.It Fl p Ar min . Ns Ar max
+Like
+.Fl f ,
 but pad this file's field when end-of-file is reached
 and other files are still active.
-.IP \fB\-s\fP\ sepstring
+.It Fl s Ar sepstring
 Print
-.I sepstring
+.Ar sepstring
 before printing line fragments from the next file.
 This option may appear after the last file.
-.IP \fB\-t\fP\ c
+.It Fl t Ar c
 The input line terminator is
-.I c
+.Ar c
 instead of a newline.
 The newline normally appended to each output line is omitted.
-.PP
+.El
+.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
+.Xr pr 1 .
+.Sh EXAMPLES
 The command
-.IC
+.Bd -literal
 lam file1 file2 file3 file4
-.NC
+.Ed
+.Pp
 joins 4 files together along each line.
 To merge the lines from four different files use
-.IC
+.Bd -literal
 lam file1 \-S "\\
-.br
 " file2 file3 file4
-.NC
+.Ed
+.Pp
 Every 2 lines of a file may be joined on one line with
-.IC
+.Bd -literal
 lam \- \- < file
-.NC
+.Ed
+.Pp
 and a form letter with substitutions keyed by `@' can be done with
-.IC
+.Bd -literal
 lam \-t @ letter changes
-.NC
-.SH SEE ALSO
-join(1), pr(1), printf(3)
+.Ed
+.Sh SEE ALSO
+.Xr join 1 ,
+.Xr paste 1 ,
+.Xr pr 1 ,
+.Xr printf 3
+.Sh STANDARDS
+Some of the functionality of
+.Nm
+is standardized as the
+.Xr paste 1
+utility by
+.St -p1003.2 .
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Bx 4.2 .
+.Sh BUGS
+The
+.Nm
+utility does not recognize multibyte characters.

Modified: trunk/third/lam/lam.c
===================================================================
--- trunk/third/lam/lam.c	2013-05-12 23:31:17 UTC (rev 25987)
+++ trunk/third/lam/lam.c	2013-05-13 01:03:07 UTC (rev 25988)
@@ -1,5 +1,3 @@
-/*	$NetBSD: lam.c,v 1.2 1994/11/14 20:27:42 jtc Exp $	*/
-
 /*-
  * Copyright (c) 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -12,7 +10,7 @@
  * 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. Neither the name of the University nor the names of 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.
  *
@@ -30,7 +28,7 @@
  */
 
 #ifndef lint
-static char copyright[] =
+static const char copyright[] =
 "@(#) Copyright (c) 1993\n\
 	The Regents of the University of California.  All rights reserved.\n";
 #endif /* not lint */
@@ -39,50 +37,53 @@
 #if 0
 static char sccsid[] = "@(#)lam.c	8.1 (Berkeley) 6/6/93";
 #endif
-static char rcsid[] = "$NetBSD: lam.c,v 1.2 1994/11/14 20:27:42 jtc Exp $";
 #endif /* not lint */
+#include <sys/cdefs.h>
 
 /*
  *	lam - laminate files
  *	Author:  John Kunze, UCB
  */
 
+#include <ctype.h>
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <bsd/string.h>
 
 #define	MAXOFILES	20
 #define	BIGBUFSIZ	5 * BUFSIZ
 
-struct	openfile {		/* open file structure */
+static 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. */
+	const char *sepstring;	/* string to print before each line */
+	const 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;
+static int	morefiles;	/* set by getargs(), changed by gatherline() */
+static int	nofinalnl;	/* normally append \n to each output line */
+static char	line[BIGBUFSIZ];
+static char	*linep;
 
-void	 error(char *, char *);
-char	*gatherline(struct openfile *);
-void	 getargs(char *[]);
-char	*pad(struct openfile *);
+static char    *gatherline(struct openfile *);
+static void	getargs(char *[]);
+static char    *pad(struct openfile *);
+static void	usage(void);
 
 int
-main(argc, argv)
-	int argc;
-	char *argv[];
+main(int argc, char *argv[])
 {
-	register struct	openfile *ip;
+	struct	openfile *ip;
 
+	if (argc == 1)
+		usage();
 	getargs(argv);
 	if (!morefiles)
-		error("lam - laminate files", "");
+		usage();
 	for (;;) {
 		linep = line;
 		for (ip = input; ip->fp != NULL; ip++)
@@ -96,13 +97,11 @@
 	}
 }
 
-void
-getargs(av)
-	char *av[];
+static void
+getargs(char *av[])
 {
-	register struct	openfile *ip = input;
-	register char *p;
-	register char *c;
+	struct	openfile *ip = input;
+	char *p, *c;
 	static char fmtbuf[BUFSIZ];
 	char *fmtp = fmtbuf;
 	int P, S, F, T;
@@ -110,12 +109,12 @@
 	P = S = F = T = 0;		/* capitalized options */
 	while ((p = *++av) != NULL) {
 		if (*p != '-' || !p[1]) {
-			morefiles++;
+			if (++morefiles >= MAXOFILES)
+				errx(1, "too many input files");
 			if (*p == '-')
 				ip->fp = stdin;
 			else if ((ip->fp = fopen(p, "r")) == NULL) {
-				perror(p);
-				exit(1);
+				err(1, "%s", p);
 			}
 			ip->pad = P;
 			if (!ip->sepstring)
@@ -127,40 +126,46 @@
 			ip++;
 			continue;
 		}
-		switch (*(c = ++p) | 040) {
+		c = ++p;
+		switch (tolower((unsigned char)*c)) {
 		case 's':
 			if (*++p || (p = *++av))
 				ip->sepstring = p;
 			else
-				error("Need string after -%s", c);
+				usage();
 			S = (*c == 'S' ? 1 : 0);
 			break;
 		case 't':
 			if (*++p || (p = *++av))
 				ip->eol = *p;
 			else
-				error("Need character after -%s", c);
+				usage();
 			T = (*c == 'T' ? 1 : 0);
 			nofinalnl = 1;
 			break;
 		case 'p':
 			ip->pad = 1;
 			P = (*c == 'P' ? 1 : 0);
+			/* FALLTHROUGH */
 		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);
+				if (fmtp >= fmtbuf + sizeof(fmtbuf))
+					errx(1, "no more format space");
+				/* restrict format string to only valid width formatters */
+				if (strspn(p, "-.0123456789") != strlen(p))
+					errx(1, "invalid format string `%s'", p);
+				if (snprintf(fmtp, fmtbuf + sizeof(fmtbuf) - fmtp, "%%%ss", p)
+				    >= fmtbuf + sizeof(fmtbuf) - fmtp)
+					errx(1, "no more format space");
 				ip->format = fmtp;
 			}
 			else
-				error("Need string after -%s", c);
+				usage();
 			break;
 		default:
-			error("What do you mean by -%s?", c);
-			break;
+			usage();
 		}
 	}
 	ip->fp = NULL;
@@ -168,31 +173,28 @@
 		ip->sepstring = "";
 }
 
-char *
-pad(ip)
-	struct openfile *ip;
+static char *
+pad(struct openfile *ip)
 {
-	register char *p = ip->sepstring;
-	register char *lp = linep;
+	char *lp = linep;
 
-	while (*p)
-		*lp++ = *p++;
+	strlcpy(lp, ip->sepstring, line + sizeof(line) - lp);
+	lp += strlen(lp);
 	if (ip->pad) {
-		sprintf(lp, ip->format, "");
+		snprintf(lp, line + sizeof(line) - lp, ip->format, "");
 		lp += strlen(lp);
 	}
 	return (lp);
 }
 
-char *
-gatherline(ip)
-	struct openfile *ip;
+static char *
+gatherline(struct openfile *ip)
 {
 	char s[BUFSIZ];
-	register int c;
-	register char *p;
-	register char *lp = linep;
-	char *end = s + BUFSIZ;
+	int c;
+	char *p;
+	char *lp = linep;
+	char *end = s + sizeof(s) - 1;
 
 	if (ip->eof)
 		return (pad(ip));
@@ -207,28 +209,18 @@
 		morefiles--;
 		return (pad(ip));
 	}
-	p = ip->sepstring;
-	while (*p)
-		*lp++ = *p++;
-	sprintf(lp, ip->format, s);
+	strlcpy(lp, ip->sepstring, line + sizeof(line) - lp);
 	lp += strlen(lp);
+	snprintf(lp, line + sizeof(line) - lp, ip->format, s);
+	lp += strlen(lp);
 	return (lp);
 }
 
-void
-error(msg, s)
-	char *msg, *s;
+static void
+usage(void)
 {
-	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");
+	fprintf(stderr, "%s\n%s\n",
+"usage: lam [ -f min.max ] [ -s sepstring ] [ -t c ] file ...",
+"       lam [ -p min.max ] [ -s sepstring ] [ -t c ] file ...");
 	exit(1);
 }


home help back first fref pref prev next nref lref last post