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