libdb/dist/validate/s_chk_message_id

60 lines
1.5 KiB
Bash

#!/bin/sh -
#
# $Id$
#
# Check ID generated for globalization support.
# TODO: Verify the positional parameters (like "%d") in the two strings
# to the macro.
# Get the list of all message ID
MSG_DIR="../../src/ ../../util/ ../../lang/dbm/"
grep -E "DB_STR\([^ ,]*" $MSG_DIR -r -h -o | sed "s/\"//g" | \
sed "s/DB_STR(//g" > msg_id_unsorted
grep -E "DB_STR_A\([^ ,]*" $MSG_DIR -r -h -o | sed "s/\"//g" | \
sed "s/DB_STR_A(//g" >> msg_id_unsorted
sort msg_id_unsorted > msg_id_list
rm msg_id_unsorted
maxline=`cat msg_id_list | wc -l`
# The exception for duplicate messages
rep_dup_msg_id=`grep -E "\"[0-9]{4}" -r ../../dist/gen_msg.awk -o | \
sed "s/\"//g"`
lastnum=""
for (( i = 1; i <= $maxline ; i++ ))
do
curnum=`sed -n -e $i"p" msg_id_list`
# "DB_STR(id" and "DB_STR_A(id" are from macros defination,
# should not be regarded as invalid message id.
if [ "$curnum" == "id" ]; then
continue
fi
# The message id should be 4 digit number.
if [ `echo $curnum | wc -c` -ne 5 ]; then
echo "[ERROR] size of message id should be 4: $curnum"
exit 1
fi
if [[ ! -z $(echo $curnum | sed 's/[0-9]//g') ]]; then
echo "[ERROR] message id should be digit number only: $curnum"
exit 1
fi
# There shouldn't be duplicate message id.
if [ "$curnum" == "$lastnum" ]; then
if [ "$curnum" == "$rep_dup_msg_id" ]; then
echo "[EXPECTED] duplicate message id: $curnum"
else
echo "[ERROR] duplicate message id: $curnum"
exit 1
fi
fi
lastnum=$curnum
done
rm -f msg_id_list
exit 0