#! /bin/sh # Test checking of Shell format strings. tmpfiles="" trap 'rm -fr $tmpfiles' 1 2 3 15 tmpfiles="$tmpfiles f-sh-2.data" cat <<\EOF > f-sh-2.data # Invalid: invalid msgstr msgid "abc$file" msgstr "xyz$file$" # Valid: same arguments, permutation msgid "abc$file in $dir" msgstr "xyz$dir o $file" # Invalid: missing argument msgid "abc$dir/$file" msgstr "xyz$file" # Invalid: added argument msgid "abc$file" msgstr "xyz$file in $dir" # Valid: braces or not, doesn't matter msgid "abc$file" msgstr "xyz${file}" # Invalid: different default value msgid "abc$file" msgstr "xyz${file-/tmpdir}" EOF : ${MSGFMT=msgfmt} n=0 while read comment; do read msgid_line read msgstr_line n=`expr $n + 1` tmpfiles="$tmpfiles f-sh-2-$n.po f-sh-2-$n.mo" cat < f-sh-2-$n.po #, sh-format ${msgid_line} ${msgstr_line} EOF fail= if echo "$comment" | grep 'Valid:' > /dev/null; then if ${MSGFMT} --check-format -o f-sh-2-$n.mo f-sh-2-$n.po; then : else fail=yes fi else ${MSGFMT} --check-format -o f-sh-2-$n.mo f-sh-2-$n.po 2> /dev/null if test $? = 1; then : else fail=yes fi fi if test -n "$fail"; then echo "Format string checking error:" 1>&2 cat f-sh-2-$n.po 1>&2 exit 1 fi rm -f f-sh-2-$n.po f-sh-2-$n.mo done < f-sh-2.data rm -fr $tmpfiles exit 0