1 #!/bin/sh
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 (the "License").
7 # You may not use this file except in compliance with the License.
8 #
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
13 #
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
19 #
20 # CDDL HEADER END
21 #
22
23 #
24 # Copyright 2006 Sun Microsystems, Inc. All rights reserved.
25 # Use is subject to license terms.
26 #
27
28 TOOLDIR="${SRC}/cmd/sgs/tools/"
29
30 #
31 # remove the temporary files
32 #
33 rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST
34 rm -f MSG_INTL_LIST MSG_ORIG_LIST
35
36 while getopts "m:" Arg
37 do
38 case $Arg in
39 m) /usr/xpg4/bin/awk -f ${TOOLDIR}/catalog.awk $OPTARG ;;
40 \?) echo "usage: chkmsg -m msgfile source-files" ; exit 1 ;;
41 esac
42 done
43 shift `expr $OPTIND - 1`
44
45 if [ $# -eq 0 ]; then
46 echo "usage: chkmsg -m msgfile source-files"
47 exit 1
48 fi
49
50 #
51 # Sort the MSG_INTL() and MSG_ORIG() entries. Note, messages can come in _32
52 # and _64 flavors - if so strip the suffix and uniquify the output.
53 #
54 if [ -s CATA_MSG_INTL_LIST ] ; then
55 sed -e "s/_32$//" -e "s/_64$//" CATA_MSG_INTL_LIST | sort | uniq > _TMP
56 mv _TMP CATA_MSG_INTL_LIST
57 fi
58 if [ -s CATA_MSG_ORIG_LIST ] ; then
59 sed -e "s/_32$//" -e "s/_64$//" CATA_MSG_ORIG_LIST | sort | uniq > _TMP
60 mv _TMP CATA_MSG_ORIG_LIST
61 fi
62
63 #
64 # Generate the lists for the source files and sort them
65 #
66 /usr/xpg4/bin/awk -f ${TOOLDIR}/getmessage.awk $*
67
68 if [ -s MSG_INTL_LIST ] ; then
69 sed -e "s/_32$//" -e "s/_64$//" MSG_INTL_LIST | sort | uniq > _TMP
70 mv _TMP MSG_INTL_LIST
71 fi
72 if [ -s MSG_ORIG_LIST ] ; then
73 sed -e "s/_32$//" -e "s/_64$//" MSG_ORIG_LIST | sort | uniq > _TMP
74 mv _TMP MSG_ORIG_LIST
75 fi
76
77 #
78 # Start checking
79 #
80 Error=0
81
82 #
83 # Check MESG_INTL message
84 #
85 comm -23 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null
86 if [ -s _TMP ]; then
87 echo
88 echo "messages exist between _START_ and _END_ but do not use MSG_INTL()"
89 cat _TMP | sed "s/^/ /"
90 Error=1
91 fi
92 rm -f _TMP
93
94 comm -13 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null
95 if [ -s _TMP ]; then
96 echo
97 echo "use of MSG_INTL() but messages do not exist between _START_ and _END_"
98 cat _TMP | sed "s/^/ /"
99 Error=1
100 fi
101 rm -f _TMP
102
103 #
104 # Check MESG_ORIG message
105 #
106 comm -23 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null
107 if [ -s _TMP ]; then
108 echo
109 echo "messages exist after _END_ but do not use MSG_ORIG()"
110 cat _TMP | sed "s/^/ /"
111 Error=1
112 fi
113 rm -f _TMP
114
115 comm -13 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null
116 if [ -s _TMP ]; then
117 echo
118 echo "use of MSG_ORIG() but messages do not exist after _END_"
119 cat _TMP | sed "s/^/ /"
120 Error=1
121 fi
122 rm -f _TMP
123
124 #
125 # remove the temporary files
126 #
127 rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST
128 rm -f MSG_INTL_LIST MSG_ORIG_LIST
129
130 exit $Error