]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing usr.bin/colrm 95/1095/1
authorThomas Cort <tcort@minix3.org>
Wed, 30 Oct 2013 17:02:09 +0000 (13:02 -0400)
committerThomas Cort <tcort@minix3.org>
Thu, 31 Oct 2013 12:30:30 +0000 (08:30 -0400)
No Minix-specific changes needed.

Change-Id: I3e1b8fd433ab976e1041575e9e654a5205277a29

distrib/sets/lists/minix/mi
releasetools/nbsd_ports
usr.bin/Makefile
usr.bin/colrm/Makefile [new file with mode: 0644]
usr.bin/colrm/colrm.1 [new file with mode: 0644]
usr.bin/colrm/colrm.c [new file with mode: 0644]

index 2365a245fecf878fd63eadd922d121f0ef7d6e32..4c271587cbca5824d51feb82220fb0febfcf7b5e 100644 (file)
 ./usr/bin/cmp                          minix-sys
 ./usr/bin/co                           minix-sys
 ./usr/bin/col                          minix-sys
+./usr/bin/colrm                                minix-sys
 ./usr/bin/column                       minix-sys
 ./usr/bin/colcrt                       minix-sys
 ./usr/bin/comm                         minix-sys
 ./usr/man/man1/cmp.1                   minix-sys
 ./usr/man/man1/co.1                    minix-sys
 ./usr/man/man1/col.1                   minix-sys
+./usr/man/man1/colrm.1                 minix-sys
 ./usr/man/man1/column.1                        minix-sys
 ./usr/man/man1/comm.1                  minix-sys
 ./usr/man/man1/command.1               minix-sys
index b5c23c096e090f559123da2ce1f87a84d6873b25..c18b5956577768b07786a1742855319057959be4 100644 (file)
 2009/04/11 12:10:02,usr.bin/chpass
 2012/10/17 12:00:00,usr.bin/cksum
 2012/10/17 12:00:00,usr.bin/col
+2012/10/17 12:00:00,usr.bin/colrm
 2013/10/16 12:00:00,usr.bin/column
 2012/10/17 12:00:00,usr.bin/comm
 2012/10/17 12:00:00,usr.bin/csplit
index 4e3f180a7312c39749c1fe4e1cf2488fe0d05649..5d226c90ea855fdb8369250a1e8967d68067bc1d 100644 (file)
@@ -6,8 +6,8 @@
 SUBDIR= asa \
        banner basename bdes \
        bzip2 bzip2recover \
-       cal chpass cksum \
-       col column comm csplit ctags cut \
+       cal chpass cksum col colrm \
+       column comm csplit ctags cut \
        dirname du \
        env expand \
        finger fold from \
diff --git a/usr.bin/colrm/Makefile b/usr.bin/colrm/Makefile
new file mode 100644 (file)
index 0000000..2edb484
--- /dev/null
@@ -0,0 +1,6 @@
+#      $NetBSD: Makefile,v 1.5 2009/04/14 22:15:18 lukem Exp $
+#      @(#)Makefile    8.1 (Berkeley) 6/6/93
+
+PROG=  colrm
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/colrm/colrm.1 b/usr.bin/colrm/colrm.1
new file mode 100644 (file)
index 0000000..2c28505
--- /dev/null
@@ -0,0 +1,78 @@
+.\"    $NetBSD: colrm.1,v 1.8 2012/05/12 14:52:57 reed Exp $
+.\"
+.\" Copyright (c) 1980, 1990, 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. 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.
+.\"
+.\"     @(#)colrm.1    8.1 (Berkeley) 6/6/93
+.\"
+.Dd June 6, 1993
+.Dt COLRM 1
+.Os
+.Sh NAME
+.Nm colrm
+.Nd remove columns from a file
+.Sh SYNOPSIS
+.Nm
+.Op Ar start Op Ar stop
+.Sh DESCRIPTION
+.Nm
+removes selected columns from the lines of a file.
+A column is defined as a single character in a line.
+Input is read from the standard input.
+Output is written to the standard output.
+.Pp
+If only the
+.Ar start
+column is specified, columns numbered less than the
+.Ar start
+column will be written.
+If both
+.Ar start
+and
+.Ar stop
+columns are specified, columns numbered less than the
+.Ar start
+column
+or greater than the
+.Ar stop
+column will be written.
+Column numbering starts with one, not zero.
+.Pp
+Tab characters increment the column count to the next multiple of eight.
+Backspace characters decrement the column count by one.
+.Sh SEE ALSO
+.Xr awk 1 ,
+.Xr column 1 ,
+.Xr cut 1 ,
+.Xr paste 1
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Bx 1 .
+It was completely rewritten for
+.Bx 4.4 .
diff --git a/usr.bin/colrm/colrm.c b/usr.bin/colrm/colrm.c
new file mode 100644 (file)
index 0000000..f97be62
--- /dev/null
@@ -0,0 +1,137 @@
+/*     $NetBSD: colrm.c,v 1.9 2011/08/30 21:35:09 joerg Exp $  */
+
+/*-
+ * Copyright (c) 1991, 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. 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.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1991, 1993\
+ The Regents of the University of California.  All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)colrm.c    8.2 (Berkeley) 5/4/95";
+#endif
+__RCSID("$NetBSD: colrm.c,v 1.9 2011/08/30 21:35:09 joerg Exp $");
+#endif /* not lint */
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define        TAB     8
+
+static void    check(FILE *);
+__dead static void     usage(void);
+
+int
+main(int argc, char *argv[])
+{
+       u_long column, start, stop;
+       int ch;
+       char *p;
+
+       while ((ch = getopt(argc, argv, "")) != -1)
+               switch(ch) {
+               case '?':
+               default:
+                       usage();
+               }
+       argc -= optind;
+       argv += optind;
+
+       start = stop = 0;
+       switch(argc) {
+       case 2:
+               stop = strtol(argv[1], &p, 10);
+               if (stop <= 0 || *p)
+                       errx(1, "illegal column -- %s", argv[1]);
+               /* FALLTHROUGH */
+       case 1:
+               start = strtol(argv[0], &p, 10);
+               if (start <= 0 || *p)
+                       errx(1, "illegal column -- %s", argv[0]);
+               break;
+       case 0:
+               break;
+       default:
+               usage();
+       }
+
+       if (stop && start > stop)
+               err(1, "illegal start and stop columns");
+
+       for (column = 0;;) {
+               switch (ch = getchar()) {
+               case EOF:
+                       check(stdin);
+                       break;
+               case '\b':
+                       if (column)
+                               --column;
+                       break;
+               case '\n':
+                       column = 0;
+                       break;
+               case '\t':
+                       column = (column + TAB) & ~(TAB - 1);
+                       break;
+               default:
+                       ++column;
+                       break;
+               }
+
+               if ((!start || column < start || (stop && column > stop)) &&
+                   putchar(ch) == EOF)
+                       check(stdout);
+       }
+}
+
+static void
+check(FILE *stream)
+{
+       if (feof(stream))
+               exit(0);
+       if (ferror(stream))
+               err(1, "%s", stream == stdin ? "stdin" : "stdout");
+}
+
+static void
+usage(void)
+{
+       (void)fprintf(stderr, "usage: colrm [start [stop]]\n");
+       exit(1);
+}