From 7a234679bfe94891d10ebdccae9c90959a71244f Mon Sep 17 00:00:00 2001
From: Eivind Eklund <eivind@FreeBSD.org>
Date: Wed, 20 Sep 2000 11:37:28 +0000
Subject: Colorizing diff viewing tool

---
 textproc/Makefile           |  1 +
 textproc/cdiff/Makefile     | 33 ++++++++++++++++++++++
 textproc/cdiff/pkg-comment  |  1 +
 textproc/cdiff/pkg-descr    |  4 +++
 textproc/cdiff/pkg-plist    |  1 +
 textproc/cdiff/src/cdiff.1  | 67 +++++++++++++++++++++++++++++++++++++++++++++
 textproc/cdiff/src/cdiff.sh | 11 ++++++++
 7 files changed, 118 insertions(+)
 create mode 100644 textproc/cdiff/Makefile
 create mode 100644 textproc/cdiff/pkg-comment
 create mode 100644 textproc/cdiff/pkg-descr
 create mode 100644 textproc/cdiff/pkg-plist
 create mode 100644 textproc/cdiff/src/cdiff.1
 create mode 100644 textproc/cdiff/src/cdiff.sh

diff --git a/textproc/Makefile b/textproc/Makefile
index f19477c1c5f6..44f53afd8bc9 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -9,6 +9,7 @@
     SUBDIR += c2html
     SUBDIR += catdoc
     SUBDIR += cdif
+    SUBDIR += cdiff
     SUBDIR += chpp
     SUBDIR += cocoon
     SUBDIR += code2html
diff --git a/textproc/cdiff/Makefile b/textproc/cdiff/Makefile
new file mode 100644
index 000000000000..b2a251d72717
--- /dev/null
+++ b/textproc/cdiff/Makefile
@@ -0,0 +1,33 @@
+# New ports collection makefile for:		cdiff
+# Date created:					September 20th 2000
+# Whom:						des
+#
+# $FreeBSD$
+#
+# This port is self contained in the src directory.
+#
+
+PORTNAME=	cdiff
+PORTVERSION=	1.0
+CATEGORIES=	textproc
+MASTER_SITES=	# none
+DISTFILES=	# none
+
+MAINTAINER=	eivind@FreeBSD.org
+
+NO_BUILD=	yes
+NO_WRKSUBDIR=	yes
+USE_PERL5=	yes
+
+SRC=		${.CURDIR}/src
+
+MAN1=		cdiff.1
+
+do-fetch:
+	@${DO_NADA}
+
+do-install:
+	@${INSTALL_SCRIPT} ${SRC}/cdiff.sh ${PREFIX}/bin/cdiff
+	@${INSTALL_MAN} ${SRC}/cdiff.1 ${PREFIX}/man/man1
+
+.include <bsd.port.mk>
diff --git a/textproc/cdiff/pkg-comment b/textproc/cdiff/pkg-comment
new file mode 100644
index 000000000000..8865bd2b0878
--- /dev/null
+++ b/textproc/cdiff/pkg-comment
@@ -0,0 +1 @@
+Diff readability enhancher for color terminals
diff --git a/textproc/cdiff/pkg-descr b/textproc/cdiff/pkg-descr
new file mode 100644
index 000000000000..534557c26454
--- /dev/null
+++ b/textproc/cdiff/pkg-descr
@@ -0,0 +1,4 @@
+cdiff is a readability enhancer for context diffs
+and unified diffs on color terminals.
+
+It uses less(1) as a backend.
diff --git a/textproc/cdiff/pkg-plist b/textproc/cdiff/pkg-plist
new file mode 100644
index 000000000000..507ab3e21420
--- /dev/null
+++ b/textproc/cdiff/pkg-plist
@@ -0,0 +1 @@
+bin/cdiff
diff --git a/textproc/cdiff/src/cdiff.1 b/textproc/cdiff/src/cdiff.1
new file mode 100644
index 000000000000..8f4309741f5c
--- /dev/null
+++ b/textproc/cdiff/src/cdiff.1
@@ -0,0 +1,67 @@
+.\"-
+.\" Copyright (c) 2000 Eivind Eklund
+.\" 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
+.\"    in this position and unchanged.
+.\" 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. The name of the author may not be used to endorse or promote products
+.\"    derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+.\"
+.\"	$FreeBSD$
+.\"
+.Dd September 20, 2000
+.Dt CDIFF 1
+.Sh NAME
+.Nm cdiff
+.Nd show diffs with colors
+.Sh SYNOPSIS
+.Nm cdiff
+.Op Ar diff ...
+.Sh DESCRIPTION
+.Nm
+reads a unidiff or context diff from stdin or from a set of files, adds color
+codes, expands tabs to 8 spaces, and passes the results to
+.Xr less 1 .
+If used on a color terminal, it makes diffs much easier to read.
+.Sh AUTHORS
+.Nm
+was written by
+.An Eivind Eklund Aq eivind@FreeBSD.org .
+based on a sed line somebody passed around.  The code is (much) smaller than
+this man page.
+.Sh SEE ALSO
+.Xr diff 1 ,
+.Xr less 1 .
+.Sh BUGS
+.Nm
+assumes standard ANSI color escape sequences (as used by xterm and most other
+commonly used terminals), rather than using
+.Xr curses 3 .
+
+.Nm
+should really be a large and complex C program based on
+.Xr less 1
+and a diff library.  This would allow a more informative display, including
+collapsing pure deletions/insertions inside a single line to one line with
+colors for deleted/added material, avoiding the line-wrap problems in less
+due to less not knowing the effects or lengths of the color escape codes,
+and correct handling of shifted tabs (instead of just expanding them to
+spaces.)
diff --git a/textproc/cdiff/src/cdiff.sh b/textproc/cdiff/src/cdiff.sh
new file mode 100644
index 000000000000..690f28866cd0
--- /dev/null
+++ b/textproc/cdiff/src/cdiff.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+exec perl -pe '
+while (s/\t/" " x (8 - ((length($`)-1) % 8))/e) {}
+s/^(\+.*)$/\033[31m$1\033[m/o;
+s/^(-.*)$/\033[34m$1\033[m/o
+	if !s/^(--- \d+,\d+ ----.*)$/\033[1m$1\033[m/o;
+s/^(\*\*\* \d+,\d+ *\*\*\*.*)$/\033[1m$1\033[m/o;
+s/^(\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*)$/\033[1m$1\033[m/o;
+s/^(!.*)$/\033[35m$1\033[m/o;
+s/^(@@.*$)/\033[1m$1\033[m/o;
+' $@ | less -r
-- 
cgit debian/1.2.3+git2.25.1-1-2-gaceb0