From owner-svn-src-all@FreeBSD.ORG Sun Jun 14 03:29:14 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 86D061065672; Sun, 14 Jun 2009 03:29:14 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 74FCA8FC13; Sun, 14 Jun 2009 03:29:14 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n5E3TEin033435; Sun, 14 Jun 2009 03:29:14 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5E3TEcZ033434; Sun, 14 Jun 2009 03:29:14 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200906140329.n5E3TEcZ033434@svn.freebsd.org> From: Edwin Groothuis Date: Sun, 14 Jun 2009 03:29:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r194144 - head/tools/tools/termcap X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jun 2009 03:29:15 -0000 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 < +Compares the entries in the termcap.src for and 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 = ; +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} ? "+" : "" + ); + } +} +