xref: /illumos-gate/usr/src/cmd/sgs/tools/chkmsg.sh (revision 581cede61ac9c14d8d4ea452562a567189eead78)
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# ident	"%Z%%M%	%I%	%E% SMI"
28
29TOOLDIR="${SRC}/cmd/sgs/tools/"
30
31#
32# remove the temporary files
33#
34rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST
35rm -f MSG_INTL_LIST MSG_ORIG_LIST
36
37while getopts "m:" Arg
38do
39	case $Arg in
40	m)	nawk -f ${TOOLDIR}/catalog.awk $OPTARG ;;
41	\?)	echo "usage: chkmsg -m msgfile source-files" ; exit 1 ;;
42	esac
43done
44shift `expr $OPTIND - 1`
45
46if [ $# -eq 0 ]; then
47	echo "usage: chkmsg -m msgfile source-files"
48	exit 1
49fi
50
51#
52# Sort the MSG_INTL() and MSG_ORIG() entries.  Note, messages can come in _32
53# and _64 flavors - if so strip the suffix and uniquify the output.
54#
55if [ -s CATA_MSG_INTL_LIST ] ; then
56	sed -e "s/_32$//" -e "s/_64$//" CATA_MSG_INTL_LIST | sort | uniq > _TMP
57	mv _TMP CATA_MSG_INTL_LIST
58fi
59if [ -s CATA_MSG_ORIG_LIST ] ; then
60	sed -e "s/_32$//" -e "s/_64$//" CATA_MSG_ORIG_LIST | sort | uniq > _TMP
61	mv _TMP CATA_MSG_ORIG_LIST
62fi
63
64#
65# Generate the lists for the source files and sort them
66#
67nawk -f  ${TOOLDIR}/getmessage.awk	$*
68
69if [ -s MSG_INTL_LIST ] ; then
70	sed -e "s/_32$//" -e "s/_64$//" MSG_INTL_LIST | sort | uniq > _TMP
71	mv _TMP MSG_INTL_LIST
72fi
73if [ -s MSG_ORIG_LIST ] ; then
74	sed -e "s/_32$//" -e "s/_64$//" MSG_ORIG_LIST | sort | uniq > _TMP
75	mv _TMP MSG_ORIG_LIST
76fi
77
78#
79# Start checking
80#
81Error=0
82
83#
84# Check MESG_INTL message
85#
86comm -23 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null
87if [ -s _TMP ]; then
88    echo
89    echo "messages exist between _START_ and _END_ but do not use MSG_INTL()"
90    cat _TMP | sed "s/^/	/"
91    Error=1
92fi
93rm -f _TMP
94
95comm -13 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null
96if [ -s _TMP ]; then
97    echo
98    echo "use of MSG_INTL() but messages do not exist between _START_ and _END_"
99    cat _TMP | sed "s/^/	/"
100    Error=1
101fi
102rm -f _TMP
103
104#
105# Check MESG_ORIG message
106#
107comm -23 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null
108if [ -s _TMP ]; then
109    echo
110    echo "messages exist after _END_ but do not use MSG_ORIG()"
111    cat _TMP | sed "s/^/	/"
112    Error=1
113fi
114rm -f _TMP
115
116comm -13 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null
117if [ -s _TMP ]; then
118    echo
119    echo "use of MSG_ORIG() but messages do not exist after _END_"
120    cat _TMP | sed "s/^/	/"
121    Error=1
122fi
123rm -f _TMP
124
125#
126# remove the temporary files
127#
128rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST
129rm -f MSG_INTL_LIST MSG_ORIG_LIST
130
131exit $Error
132