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 29 opts="" 30 while getopts guplmsLv arg 31 do 32 if [ "$arg" = "?" ]; then 33 exit 1 34 fi 35 opts="$opts -$arg" 36 done 37 38 shift $(($OPTIND - 1)) 39 40 if [ $# -le 3 ]; then 41 echo "$0: at least 3 arguments required." >&2 42 exit 1 43 fi 44 45 old="$1"; shift 46 new="$1"; shift 47 differ="$1"; shift 48 49 errlog=/tmp/protocmp.err.$$ 50 51 protocmp $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 92 if [ -s $errlog ]; then 93 echo "\n====== protocmp ERRORS =====\n" 94 cat $errlog 95 fi 96 rm -f $errlog