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 28 opts="" 29 while getopts guplmsLv arg 30 do 31 if [ "$arg" = "?" ]; then 32 exit 1 33 fi 34 opts="$opts -$arg" 35 done 36 37 shift $(($OPTIND - 1)) 38 39 if [ $# -le 3 ]; then 40 echo "$0: at least 3 arguments required." >&2 41 exit 1 42 fi 43 44 old="$1"; shift 45 new="$1"; shift 46 differ="$1"; shift 47 48 errlog=/tmp/protocmp.err.$$ 49 50 protocmp $opts "$@" 2>$errlog | 51 /usr/xpg4/bin/awk -v old="$old" -v new="$new" -v differ="$differ" ' 52 /^\**$/ { 53 next; 54 } 55 /^\* Entries/ { 56 category++; 57 next; 58 } 59 /^\* filea ==/ { 60 filea = $NF; 61 next; 62 } 63 /^\* fileb ==/ { 64 fileb = $NF; 65 next; 66 } 67 { 68 buf[category, ++line[category]] = $0 69 } 70 END { 71 if (line[1] > 2) { 72 printf("\n%s\n\n", old); 73 for (i = 1; i <= line[1]; i++) { 74 print buf[1, i]; 75 } 76 } 77 if (line[2] > 2) { 78 printf("\n%s\n\n", new); 79 for (i = 1; i <= line[2]; i++) { 80 print buf[2, i]; 81 } 82 } 83 if (line[3] > 2) { 84 printf("\n%s\n\n", differ); 85 for (i = 1; i <= line[3]; i++) { 86 print buf[3, i]; 87 } 88 } 89 }' 90 91 if [ -s $errlog ]; then 92 echo "\n====== protocmp ERRORS =====\n" 93 cat $errlog 94 fi 95 rm -f $errlog