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 29 TOOLDIR="${SRC}/cmd/sgs/tools/" 30 31 # 32 # remove the temporary files 33 # 34 rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST 35 rm -f MSG_INTL_LIST MSG_ORIG_LIST 36 37 while getopts "m:" Arg 38 do 39 case $Arg in 40 m) nawk -f ${TOOLDIR}/catalog.awk $OPTARG ;; 41 \?) echo "usage: chkmsg -m msgfile source-files" ; exit 1 ;; 42 esac 43 done 44 shift `expr $OPTIND - 1` 45 46 if [ $# -eq 0 ]; then 47 echo "usage: chkmsg -m msgfile source-files" 48 exit 1 49 fi 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 # 55 if [ -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 58 fi 59 if [ -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 62 fi 63 64 # 65 # Generate the lists for the source files and sort them 66 # 67 nawk -f ${TOOLDIR}/getmessage.awk $* 68 69 if [ -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 72 fi 73 if [ -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 76 fi 77 78 # 79 # Start checking 80 # 81 Error=0 82 83 # 84 # Check MESG_INTL message 85 # 86 comm -23 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null 87 if [ -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 92 fi 93 rm -f _TMP 94 95 comm -13 CATA_MSG_INTL_LIST MSG_INTL_LIST > _TMP 2> /dev/null 96 if [ -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 101 fi 102 rm -f _TMP 103 104 # 105 # Check MESG_ORIG message 106 # 107 comm -23 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null 108 if [ -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 113 fi 114 rm -f _TMP 115 116 comm -13 CATA_MSG_ORIG_LIST MSG_ORIG_LIST > _TMP 2> /dev/null 117 if [ -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 122 fi 123 rm -f _TMP 124 125 # 126 # remove the temporary files 127 # 128 rm -f CATA_MSG_INTL_LIST CATA_MSG_ORIG_LIST 129 rm -f MSG_INTL_LIST MSG_ORIG_LIST 130 131 exit $Error