Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/distrib/utils/sysinst Count the number of '%' characters in ...
details: https://anonhg.NetBSD.org/src/rev/d55eb1442d9a
branches: trunk
changeset: 584182:d55eb1442d9a
user: dsl <dsl%NetBSD.org@localhost>
date: Sat Sep 10 21:38:40 2005 +0000
description:
Count the number of '%' characters in every message and ensure the
translations have the same number as the english messages.
A quick nasty check that the messages uses as printf formats are sane.
diffstat:
distrib/utils/sysinst/Makefile.inc | 12 +++++-
distrib/utils/sysinst/msg_xlat.sh | 59 +++++++++++++++++++++++++++++++++----
2 files changed, 61 insertions(+), 10 deletions(-)
diffs (131 lines):
diff -r 395f247338c1 -r d55eb1442d9a distrib/utils/sysinst/Makefile.inc
--- a/distrib/utils/sysinst/Makefile.inc Sat Sep 10 21:29:36 2005 +0000
+++ b/distrib/utils/sysinst/Makefile.inc Sat Sep 10 21:38:40 2005 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.40 2005/08/26 15:44:43 xtraeme Exp $
+# $NetBSD: Makefile.inc,v 1.41 2005/09/10 21:38:40 dsl Exp $
#
# Makefile for sysinst
@@ -110,12 +110,18 @@
sed "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC} | \
awk -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" > ${.TARGET}
+sysinstmsgs.fmtcnt: msg.mi.${SYSINSTLANG} ${MSG_MD} msgtouch msg_defs.h
+ ${_MKTARGET_CREATE}
+ sed "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC:M*.${SYSINSTLANG}} | \
+ awk -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" | \
+ ${HOST_SH} ${MSG_XLAT_SH} -c > ${.TARGET}
+
.for LANG in ${LANGUAGES:N${SYSINSTLANG}}
-sysinstmsgs.${LANG}: msg.mi.${LANG} ${MSG_MD:S/.${SYSINSTLANG}$/.${LANG}/} msgtouch msg_defs.h
+sysinstmsgs.${LANG}: msg.mi.${LANG} ${MSG_MD:S/.${SYSINSTLANG}$/.${LANG}/} msgtouch msg_defs.h sysinstmsgs.fmtcnt
${_MKTARGET_CREATE}
sed "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC:M*.${LANG}} | \
awk -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" | \
- ${HOST_SH} ${MSG_XLAT_SH} > ${.TARGET}
+ ${HOST_SH} ${MSG_XLAT_SH} -f sysinstmsgs.fmtcnt > ${.TARGET}
DPSRCS+= sysinstmsgs.${LANG}
.endfor
diff -r 395f247338c1 -r d55eb1442d9a distrib/utils/sysinst/msg_xlat.sh
--- a/distrib/utils/sysinst/msg_xlat.sh Sat Sep 10 21:29:36 2005 +0000
+++ b/distrib/utils/sysinst/msg_xlat.sh Sat Sep 10 21:38:40 2005 +0000
@@ -1,5 +1,5 @@
#! /bin/sh
-# $NetBSD: msg_xlat.sh,v 1.5 2003/11/11 17:25:45 dsl Exp $
+# $NetBSD: msg_xlat.sh,v 1.6 2005/09/10 21:38:40 dsl Exp $
#-
# Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -16,11 +16,7 @@
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the NetBSD
-# Foundation, Inc. and its contributors.
-# 4. Neither the name of The NetBSD Foundation nor the names of its
+# 3. Neither the name of The NetBSD Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
@@ -37,6 +33,27 @@
# POSSIBILITY OF SUCH DAMAGE.
#
+usage()
+{
+ echo "usage: msg_xlat.sh [-ci] [-d msg_defs.h] [-f fmt_count]" >&2
+ exit 1
+}
+
+count_fmtargs=
+msg_defs=msg_defs.h
+while getopts cd:f:i f
+do
+ case $f in
+ c) count_fmtargs=1;;
+ d) msg_defs=$OPTARG;;
+ f) fmt_count=$OPTARG;;
+ i) IGNORE_MISSING_TRANSLATIONS=y;;
+ *) usage;;
+ esac
+done
+shift $(($OPTIND - 1))
+[ "$#" = 0 ] || usage
+
nl="
"
msg_long="((msg)(long)"
@@ -47,9 +64,21 @@
rval=0
+# save stdin while we read the other files
+exec 3<&0
+
+# Read existing list of format arg counts
+[ -n "$fmt_count" ] && {
+ exec <$fmt_count || exit 2
+ while read name count
+ do
+ eval count_$name=\$count
+ done
+}
+
# Read header file and set up map of message names to numbers
-exec 3<&0 <msg_defs.h
+exec <$msg_defs || exit 2
while read define MSG_name number rest
do
@@ -116,10 +145,26 @@
}
eval MSGTEXT_$number=\"\${msg}\"
# echo $number $msg
+ sv_name="$name"
+ sv_msg="$msg"
name=
msg=
+ [ -z "$count_fmtargs" -a -z "$fmt_count" ] && continue
+
+ IFS='%'
+ set -- - $sv_msg
+ [ -n "$count_fmtargs" ] && {
+ echo $number $#
+ continue
+ }
+ eval count=\${count_$number:-unknown}
+ [ "$count" = $# ] || {
+ echo "ERROR: Wrong number of format specifiers in \"$sv_name\", got $#, expected $count" >&2
+ [ -n "$IGNORE_MISSING_TRANSLATIONS" ] || rval=1
+ }
done
+[ -n "$count_fmtargs" ] && exit $rval
# Output the total number of messages and the offset of each in the file.
# Use ascii numbers because generating target-ordered binary numbers
Home |
Main Index |
Thread Index |
Old Index