1#! /bin/sh 2. "${srcdir=.}/init.sh"; path_prepend_ . ../src 3 4# Test recognition of GFC internal format strings. 5 6cat <<\EOF > f-gf-1.data 7# Valid: no argument 8"abc%%" 9# Valid: void argument 10"abc%C" 11# Valid: one locus argument 12"abc%L" 13# Valid: one character argument 14"abc%c" 15# Valid: one string argument 16"abc%s" 17# Valid: one integer argument 18"abc%i" 19# Valid: one integer argument 20"abc%d" 21# Valid: one integer argument 22"abc%u" 23# Valid: one argument with size specifier 24"abc%li" 25# Valid: one argument with size specifier 26"abc%ld" 27# Valid: one argument with size specifier 28"abc%lu" 29# Invalid: one argument with invalid size specifier 30"abc%lli" 31# Invalid: one argument with invalid size specifier 32"abc%llu" 33# Invalid: one argument with invalid size specifier 34"abc%ls" 35# Invalid: unterminated 36"abc%" 37# Invalid: unknown format specifier 38"abc%y" 39# Invalid: precision 40"abc%.*s" 41# Valid: three arguments 42"abc%d%u%u" 43# Valid: a numbered argument 44"abc%1$d" 45# Invalid: zero 46"abc%0$d" 47# Invalid: unterminated number 48"abc%1" 49# Valid: three arguments, two with same number 50"abc%1$i,%2$c,%1$d" 51# Invalid: argument with conflicting types 52"abc%1$i,%2$c,%1$u" 53# Valid: multiple uses of void argument 54"abc%Cdef%dghi%C" 55# Invalid: argument with conflicting types 56"abc%1$i,%2$c,%1$C" 57# Valid: mixing of numbered and unnumbered arguments 58"abc%d%2$u" 59# Invalid: missing non-final argument 60"abc%2$u%3$s" 61# Valid: non-final argument is void 62"abc%C%2$u%3$s" 63# Valid: permutation 64"abc%2$ddef%1$d" 65# Valid: multiple uses of same argument 66"abc%2$udef%1$sghi%2$u" 67EOF 68 69: ${XGETTEXT=xgettext} 70n=0 71while read comment; do 72 read string 73 n=`expr $n + 1` 74 cat <<EOF > f-gf-1-$n.in 75gettext(${string}); 76EOF 77 ${XGETTEXT} -L GCC-source -o f-gf-1-$n.po f-gf-1-$n.in || Exit 1 78 test -f f-gf-1-$n.po || Exit 1 79 fail= 80 if echo "$comment" | grep 'Valid:' > /dev/null; then 81 if grep gfc-internal-format f-gf-1-$n.po > /dev/null; then 82 : 83 else 84 fail=yes 85 fi 86 else 87 if grep gfc-internal-format f-gf-1-$n.po > /dev/null; then 88 fail=yes 89 else 90 : 91 fi 92 fi 93 if test -n "$fail"; then 94 echo "Format string recognition error:" 1>&2 95 cat f-gf-1-$n.in 1>&2 96 echo "Got:" 1>&2 97 cat f-gf-1-$n.po 1>&2 98 Exit 1 99 fi 100 rm -f f-gf-1-$n.in f-gf-1-$n.po 101done < f-gf-1.data 102 103Exit 0 104