Blame test/localenl.sh

Packit Service f629e6
#! /bin/sh
Packit Service f629e6
# From arnold@f7.net  Sun Apr 22 20:15:25 2007
Packit Service f629e6
# Date: Thu, 19 Apr 2007 17:09:02 +0300
Packit Service f629e6
# From: Pekka Pessi <Pekka.Pessi@nokia.com>
Packit Service f629e6
# X-Face: #V(jdpv[lI!TNUU=2*oh:="#suS*ponXW"yr6G;~L}
Packit Service f629e6
#  :9||1pew85O,WjiYA"6C7bW^zt^+.{b#B{lEE+4$9lrXL(55g}dU>uZ\JfD\"IG#G{j`hZI;=DmT\H
Packit Service f629e6
#  pfDMyJ`i=:M;BM3R.`[>P^ER8+]i
Packit Service f629e6
# Subject: UTF-8 locale and \n in regexps
Packit Service f629e6
# To: bug-gawk@gnu.org
Packit Service f629e6
# Cc: Pekka.Pessi@nokia.com
Packit Service f629e6
# Message-id: <pvlkgoh2wx.fsf@nokia.com>
Packit Service f629e6
# MIME-version: 1.0
Packit Service f629e6
# Content-type: multipart/mixed; boundary="=-=-="
Packit Service f629e6
# 
Packit Service f629e6
# --=-=-=
Packit Service f629e6
# 
Packit Service f629e6
# Hello,
Packit Service f629e6
# 
Packit Service f629e6
# It looks like regexp with \n in [^] behaves badly if locale has
Packit Service f629e6
# an UTF-8 ctype.
Packit Service f629e6
# 
Packit Service f629e6
# It looks like if there is \n and an range without \n, like /\n[^x\n]foo/,
Packit Service f629e6
# and first \n ends an even-numbered line within the string, regexp
Packit Service f629e6
# does not match.
Packit Service f629e6
# 
Packit Service f629e6
# Please see the attached script for an demonstration.
Packit Service f629e6
# 
Packit Service f629e6
# --Pekka Pessi
Packit Service f629e6
# 
Packit Service f629e6
# 
Packit Service f629e6
# --=-=-=
Packit Service f629e6
# Content-Disposition: inline; filename=gawk-test
Packit Service f629e6
# 
Packit Service f629e6
#! /bin/sh
Packit Service f629e6
Packit Service f629e6
AWK=${AWK:-../gawk}
Packit Service f629e6
Packit Service f629e6
# April 2010: Remove UNKNOWN, causes spurious failures on some systems
Packit Service f629e6
for LC_ALL in C POSIX en_US.ISO-8859-1 en_US.UTF-8 #UNKNOWN 
Packit Service f629e6
do
Packit Service f629e6
export LC_ALL
Packit Service f629e6
cat <
Packit Service f629e6
line1
Packit Service f629e6
line2
Packit Service f629e6
line3
Packit Service f629e6
line4 
Packit Service f629e6
line5
Packit Service f629e6
line6
Packit Service f629e6
line7
Packit Service f629e6
line8
Packit Service f629e6
line9
Packit Service f629e6
EOF
Packit Service f629e6
$AWK --posix '
Packit Service f629e6
BEGIN { RS="\0"; }
Packit Service f629e6
{ 
Packit Service f629e6
  if (match($0, /\n[^2\n]*2/)) { got2=1; } else { print "no match 2"; }
Packit Service f629e6
  if (match($0, /\n[^3\n]*3/)) { got3=1; } else { print "no match 3"; }
Packit Service f629e6
  if (match($0, /\n[^4\n]*4/)) { got4=1; } else { print "no match 4"; }
Packit Service f629e6
  if (match($0, /\n[^5\t]*5/)) { got5=1; } else { print "no match 5"; }
Packit Service f629e6
  if (match($0, /\n[^6\n]*6/)) { got6=1; } else { print "no match 6"; }
Packit Service f629e6
  if (match($0, /\n[a-z]*7\n/)){ got7=1; } else { print "no match 7"; }
Packit Service f629e6
  if (match($0, /\n[^8\n]*8/)) { got8=1; } else { print "no match 8"; }
Packit Service f629e6
  if (match($0, /8.[^9\n]+9/)) { got9=1; } else { print "no match 9"; }
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
END { exit(!(got2 && got3 && got4 && got5 && got6 && got7 && got8 && got9)); }
Packit Service f629e6
' || { 
Packit Service f629e6
  echo LC_ALL=$LC_ALL FAILED
Packit Service f629e6
  exit 1
Packit Service f629e6
}
Packit Service f629e6
echo LC_ALL=$LC_ALL passed
Packit Service f629e6
done
Packit Service f629e6
# 
Packit Service f629e6
# --=-=-=--
Packit Service f629e6
#