1#!/bin/ksh 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License, Version 1.0 only 7# (the "License"). You may not use this file except in compliance 8# with the License. 9# 10# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11# or http://www.opensolaris.org/os/licensing. 12# See the License for the specific language governing permissions 13# and limitations under the License. 14# 15# When distributing Covered Code, include this CDDL HEADER in each 16# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17# If applicable, add the following below this CDDL HEADER, with the 18# fields enclosed by brackets "[]" replaced with your own identifying 19# information: Portions Copyright [yyyy] [name of copyright owner] 20# 21# CDDL HEADER END 22# 23# 24# Copyright 1993-2003 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26# 27#ident "%Z%%M% %I% %E% SMI" 28 29opts="" 30while getopts guplmsLv arg 31do 32 if [ "$arg" = "?" ]; then 33 exit 1 34 fi 35 opts="$opts -$arg" 36done 37 38shift $(($OPTIND - 1)) 39 40if [ $# -le 3 ]; then 41 echo "$0: at least 3 arguments required." >&2 42 exit 1 43fi 44 45old="$1"; shift 46new="$1"; shift 47differ="$1"; shift 48 49errlog=/tmp/protocmp.err.$$ 50 51protocmp $opts "$@" 2>$errlog | 52 nawk -v old="$old" -v new="$new" -v differ="$differ" ' 53 /^\**$/ { 54 next; 55 } 56 /^\* Entries/ { 57 category++; 58 next; 59 } 60 /^\* filea ==/ { 61 filea = $NF; 62 next; 63 } 64 /^\* fileb ==/ { 65 fileb = $NF; 66 next; 67 } 68 { 69 buf[category, ++line[category]] = $0 70 } 71 END { 72 if (line[1] > 2) { 73 printf("\n%s\n\n", old); 74 for (i = 1; i <= line[1]; i++) { 75 print buf[1, i]; 76 } 77 } 78 if (line[2] > 2) { 79 printf("\n%s\n\n", new); 80 for (i = 1; i <= line[2]; i++) { 81 print buf[2, i]; 82 } 83 } 84 if (line[3] > 2) { 85 printf("\n%s\n\n", differ); 86 for (i = 1; i <= line[3]; i++) { 87 print buf[3, i]; 88 } 89 } 90 }' 91 92if [ -s $errlog ]; then 93 echo "\n====== protocmp ERRORS =====\n" 94 cat $errlog 95fi 96rm -f $errlog 97