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