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