Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Jun 2009 03:29:14 +0000 (UTC)
From:      Edwin Groothuis <edwin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r194144 - head/tools/tools/termcap
Message-ID:  <200906140329.n5E3TEcZ033434@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: edwin
Date: Sun Jun 14 03:29:14 2009
New Revision: 194144
URL: http://svn.freebsd.org/changeset/base/194144

Log:
  Tool to compare two (roughly similar) termcap entries (like rxvt-mono
  and rxvt-unicode) so see which fields should don't need to be copied
  if the :tc=xxx: option is used.

Added:
  head/tools/tools/termcap/
  head/tools/tools/termcap/compare_termcap.pl   (contents, props changed)

Added: head/tools/tools/termcap/compare_termcap.pl
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/tools/termcap/compare_termcap.pl	Sun Jun 14 03:29:14 2009	(r194144)
@@ -0,0 +1,98 @@
+#!/usr/bin/perl -w
+
+#
+# Copyright (C) 2009 Edwin Groothuis.  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.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE AUTHORS 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 AUTHORS 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.
+# 
+# $FreeBSD$
+#
+
+use strict;
+use Data::Dumper;
+
+if ($#ARGV != 1) {
+	print <<EOF;
+Usage: $0 <term1> <term2>
+Compares the entries in the termcap.src for <term1> and <term2> and
+print the keys and definitions on the screen. This can be used to reduce
+the size of two similar termcap entries with the "tc" option.
+EOF
+	exit(0);
+}
+
+open(FIN, "termcap.src");
+my @lines = <FIN>;
+chomp(@lines);
+close(FIN);
+
+my %tcs = ();
+
+my $tc = "";
+foreach my $l (@lines) {
+	next if ($l =~ /^#/);
+	next if ($l eq "");
+
+	$tc .= $l;
+	next if ($l =~ /\\$/);
+
+	my @a = split(/:/, $tc);
+	next if ($#a < 0);
+	my @b = split(/\|/, $a[0]);
+	if ($#b >= 0) {
+		$tcs{$b[0]} = $tc;
+	} else {
+		$tcs{$a[0]} = $tc;
+	}
+	$tc = "";
+}
+
+die "Cannot find definitions for $ARGV[0]" if (!defined $tcs{$ARGV[0]});
+die "Cannot find definitions for $ARGV[1]" if (!defined $tcs{$ARGV[1]});
+
+my %tc = ();
+my %keys = ();
+
+for (my $i = 0; $i < 2; $i++) {
+	foreach my $tc (split(/:/, $tcs{$ARGV[$i]})) {
+		next if ($tc =~ /^\\/);
+		$tc{$i}{$tc} = 0 if (!defined $tc{$i}{$tc});
+		$tc{$i}{$tc}++;
+		$keys{$tc} = 0;
+	}
+}
+
+foreach my $key (sort(keys(%keys))) {
+	if (length($key) > 15) {
+		print "$key\n";
+		printf("%-15s %-3s %-3s\n", "",
+		    defined $tc{0}{$key} ? "+" : "",
+		    defined $tc{1}{$key} ? "+" : ""
+		    );
+	} else {
+		printf("%-15s %-3s %-3s\n", $key,
+		    defined $tc{0}{$key} ? "+" : "",
+		    defined $tc{1}{$key} ? "+" : ""
+		    );
+	}
+}
+



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906140329.n5E3TEcZ033434>