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) nawk -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 nawk -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