freebsd-nq/usr.bin/col
Enji Cooper 430f7286a5 Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed
after r298107

Summary of changes:

- Replace all instances of FILES/TESTS with ${PACKAGE}FILES. This ensures that
  namespacing is kept with FILES appropriately, and that this shouldn't need
  to be repeated if the namespace changes -- only the definition of PACKAGE
  needs to be changed
- Allow PACKAGE to be overridden by callers instead of forcing it to always be
  `tests`. In the event we get to the point where things can be split up
  enough in the base system, it would make more sense to group the tests
  with the blocks they're a part of, e.g. byacc with byacc-tests, etc
- Remove PACKAGE definitions where possible, i.e. where FILES wasn't used
  previously.
- Remove unnecessary TESTSPACKAGE definitions; this has been elided into
  bsd.tests.mk
- Remove unnecessary BINDIRs used previously with ${PACKAGE}FILES;
  ${PACKAGE}FILESDIR is now automatically defined in bsd.test.mk.
- Fix installation of files under data/ subdirectories in lib/libc/tests/hash
  and lib/libc/tests/net/getaddrinfo
- Remove unnecessary .include <bsd.own.mk>s (some opportunistic cleanup)

Document the proposed changes in share/examples/tests/tests/... via examples
so it's clear that ${PACKAGES}FILES is the suggested way forward in terms of
replacing FILES. share/mk/bsd.README didn't seem like the appropriate method
of communicating that info.

MFC after: never probably
X-MFC with: r298107
PR: 209114
Relnotes: yes
Tested with: buildworld, installworld, checkworld; buildworld, packageworld
Sponsored by: EMC / Isilon Storage Division
2016-05-04 23:20:53 +00:00
..
tests Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed 2016-05-04 23:20:53 +00:00
col.1 For half and reverse line feeds, recognize both SUSv2-style escape-digit 2015-05-10 11:41:38 +00:00
col.c For half and reverse line feeds, recognize both SUSv2-style escape-digit 2015-05-10 11:41:38 +00:00
Makefile Add regression test about reverse line feed to col(1) 2015-05-02 12:08:28 +00:00
Makefile.depend Add META_MODE support. 2015-06-13 19:20:56 +00:00
README

#	@(#)README	8.1 (Berkeley) 6/6/93
#
# $FreeBSD$

col - filter out reverse line feeds.

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

In the 32V source code to col(1) the default behavior was to NOT compress
spaces into tabs.  There was a -h option which caused it to compress spaces
into tabs.  There was no -x flag.

The 32V documentation, however, was consistent with the SVID (actually, V7
at the time) and documented a -x flag (as defined above) while making no
mention of a -h flag.  Just before 4.3BSD went out, CSRG updated the manual
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.

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#
	#a#			##			#a\n#
		- last line always ends with at least one \n (or \E9)
	#1234567 8\n#		#1234567\t8\n#		#1234567 8\n#
		- single space not expanded to tab
     -f #a\E8b\n#		#ab\n#			# b\E9\ra\n#
		- can back up past first line (as far as you want) so you
		  *can* have a super script on the first line
	#\E9_\ba\E8\nb\n#	#\n_\bb\ba\n#		#\n_\ba\bb\n#
		- always print last character written to a position,
		  AT&T col claims to do this but doesn't.

If a character is to be placed on a line that has been flushed, a warning
is produced (the AT&T col is silent).   The -l flag (not in AT&T col) can
be used to increase the number of lines buffered to avoid the problem.

General algorithm: a limited number of lines are buffered in a linked
list.  When a printable character is read, it is put in the buffer of
the current line along with the column it's supposed to be in.  When
a line is flushed, the characters in the line are sorted according to
column and then printed.