From 6dd95f67c935acd7f6123c865c75c38d56418208 Mon Sep 17 00:00:00 2001 From: mikeh Date: Sun, 17 Jun 2001 04:24:16 +0000 Subject: [PATCH] Add the -p flag to force unknown control sequences to be passed through unchanged. Reviewed by: silence on -audit Obtained from: NetBSD MFC after: 3 weeks --- usr.bin/col/README | 6 +++--- usr.bin/col/col.1 | 8 +++++++- usr.bin/col/col.c | 11 ++++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/usr.bin/col/README b/usr.bin/col/README index f673f3ac0577..116a044a38f4 100644 --- a/usr.bin/col/README +++ b/usr.bin/col/README @@ -1,4 +1,6 @@ # @(#)README 8.1 (Berkeley) 6/6/93 +# +# $FreeBSD$ col - filter out reverse line feeds. @@ -6,6 +8,7 @@ Options are: -b do not print any backspaces (last character written is printed) -f allow half line feeds in output, by default characters between lines are pushed to the line below + -p force unknown control sequences to be passed through unchanged -x do not compress spaces into tabs. -l num keep (at least) num lines in memory, 128 are kept by default @@ -20,9 +23,6 @@ page to reflect the way the code worked. Suspecting that this was probably the wrong way to go, this version adopts the SVID defaults, and no longer documents the -h option. -The S5 -p flag is not supported because it isn't clear what it does (looks -like a kludge introduced for a particular printer). - Known differences between AT&T's col and this one (# is delimiter): Input AT&T col this col #\nabc\E7def\n# # def\nabc\r# # def\nabc\n# diff --git a/usr.bin/col/col.1 b/usr.bin/col/col.1 index 4576e77aa469..72c76d99edb9 100644 --- a/usr.bin/col/col.1 +++ b/usr.bin/col/col.1 @@ -43,7 +43,7 @@ .Nd filter reverse line feeds from input .Sh SYNOPSIS .Nm -.Op Fl bfhx +.Op Fl bfhpx .Op Fl l Ar num .Sh DESCRIPTION .Nm Col @@ -69,6 +69,12 @@ Normally characters printed on a half line boundary are printed on the following line. .It Fl h Don't output multiple spaces instead of tabs (default). +.It Fl p +Force unknown control sequences to be passed through unchanged. +Normally, +.Nm +will filter out any control sequences from the input other than those +recognized and interpreted by itself, which are listed below. .It Fl x Output multiple spaces instead of tabs. .It Fl l Ar num diff --git a/usr.bin/col/col.c b/usr.bin/col/col.c index aed79bde696a..609b788dce4c 100644 --- a/usr.bin/col/col.c +++ b/usr.bin/col/col.c @@ -110,6 +110,7 @@ int fine; /* if `fine' resolution (half lines) */ int max_bufd_lines; /* max # lines to keep in memory */ int nblank_lines; /* # blanks after last flushed line */ int no_backspaces; /* if not to output any backspaces */ +int pass_unknown_seqs; /* pass unknown control sequences */ #define PUTC(ch) \ do { \ @@ -138,7 +139,7 @@ main(argc, argv) max_bufd_lines = 128; compress_spaces = 1; /* compress spaces into tabs */ - while ((opt = getopt(argc, argv, "bfhl:x")) != -1) + while ((opt = getopt(argc, argv, "bfhl:px")) != -1) switch (opt) { case 'b': /* do not output backspaces */ no_backspaces = 1; @@ -153,6 +154,9 @@ main(argc, argv) if ((max_bufd_lines = atoi(optarg)) <= 0) errx(1, "bad -l argument %s", optarg); break; + case 'p': /* pass unknown control sequences */ + pass_unknown_seqs = 1; + break; case 'x': /* do not compress spaces into tabs */ compress_spaces = 0; break; @@ -220,7 +224,8 @@ main(argc, argv) cur_line -= 2; continue; } - continue; + if (!pass_unknown_seqs) + continue; } /* Must stuff ch in a line - are we at the right one? */ @@ -530,7 +535,7 @@ void usage() { - (void)fprintf(stderr, "usage: col [-bfhx] [-l nline]\n"); + (void)fprintf(stderr, "usage: col [-bfhpx] [-l nline]\n"); exit(1); }