Bug 77322 - en_US locale means [A-Z] matches *some* lower case letters
en_US locale means [A-Z] matches *some* lower case letters
Status: CLOSED NOTABUG
Product: Red Hat Linux
Classification: Retired
Component: glibc (Show other bugs)
8.0
i686 Linux
medium Severity medium
: ---
: ---
Assigned To: Jakub Jelinek
Brian Brock
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-11-04 23:24 EST by luke
Modified: 2007-04-18 12:48 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2002-11-04 23:24:18 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)

  None (edit)
Description luke 2002-11-04 23:24:12 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.5) Gecko/20011012

Description of problem:
The default locale with Red Hat, in 8.0 and 7.2 (perhaps others),
appears to be en_US.  Not the old C locale, anyway.
In this locale, file glob patterns like [A-Z] match most lower
case letters as well as the upper case letters!
Setting LC_COLLATE=C is a workaround.

Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1.mkdir c; cd c
2.> a; > b
3.echo [A-Z]
	

Actual Results:  Output from echo: b

Expected Results:  Output should have been [A-Z], since there should have been
no match.
If the odd new collation sequence rules for en_US were in place, so
that [A-Z] also matches lower case, then expected result would have been
"a b"
Just getting "b" is completely broken.
This has been confirmed under RH 8.0 and 7.2.
I'm unsure whether this is a bug in glibc or bash.

Additional info:

I think it's also unfortunate that the dramatic change from a case-
sensitive to a case-insensitive default locale was not more widely
announced.

That change is likely to break *many* existing shell scripts.

The above bug is likely to break even more.
Comment 1 Jakub Jelinek 2002-11-05 04:11:08 EST
This is not a bug, the bug was when regex weren't doing this.
In en_US collation, a comes before A which comes before b before B etc.
If your script depends on C collation, you have to say so.
Comment 2 luke 2002-11-05 18:18:49 EST
I agree.

The change could have been better publicised though.  Below are some
consequences for Red Hat itself.

I set LC_COLLATE=C and then in /usr/bin did this:

grep A-Z `file *  2> /dev/null  | grep text | sed 's/:.*//'`

to find some examples of (Red Hat?) scripts in /usr/bin that should
therefore be changed to use expressions like [:upper:].  These are
listed below.

The man page for regex(3) is also wrong now:

       [4]     [set]   Matches one of the characters in the  set.
                       If the first character in the set is ^, it
                       matches a character  NOT  in  the  set.  A
                       shorthand  S-E is used to specify a set of
                       characters S up to E, inclusive. The  spe-
                       cial  characters  ]  and - have no special
                       meaning if they appear as the first  chars
                       in the set.
                               examples:       match:
                               [a-z]           any lowercase alpha
                               [^]-]           any char except ] and -
                               [^A-Z]          any char except
                                               uppercase alpha
                               [a-zA-Z0-9]     any alphanumeric

Let me know if you'd prefer me to submit a fresh bug report, for
these consequences of the correct implementation of collation semantics.

aclocal:
if (! &search && /(^|\s+)(AM_[A-Z0-9_]+)/)
aclocal:
if (! &search && /(^|\s+)(AM_[A-Z0-9_]+)/)
as86_encap:     [A-Za-z_]* ) PREFIX="$1"
audiofile-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
autoconf:  sed -n "s/^[^#]*\\(${pattern}[_A-Za-z0-9]*\\).*/\\1/p" $tmpout |
autoheader:    sym="`echo ${func} | sed 's/[^a-zA-Z0-9_]/_/g' | tr
'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
autoheader:    sym="`echo ${header} | sed 's/[^a-zA-Z0-9_]/_/g' | tr
'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
autoheader:   sym="`echo ${lib} | sed 's/[^a-zA-Z0-9_]/_/g' | tr
'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
automake:$RULE_PATTERN = "^([\$a-zA-Z_.][-.a-zA-Z0-9_(){}/\$]*) *:([^=].*|)\$";
automake:$SUFFIX_RULE_PATTERN = "^\\.([a-zA-Z]+)\\.([a-zA-Z]+)\$";
automake:$MACRO_PATTERN = "^([A-Za-z][A-Za-z0-9_]*)[ \t]*([:+]?)=[ \t]*(.*)\$";
automake:$GNITS_VERSION_PATTERN = '[0-9]+\.[0-9]+([a-z]|\.[0-9]+)?(-[A-Za-z0-9]+)?';
automake:$IF_PATTERN = "^if[ \t]+\([A-Za-z][A-Za-z0-9_]*\)[ \t]*\(#.*\)?\$";
automake:        if $VERSION !~ /(\d+)\.(\d+)([a-z]?)-?([A-Za-z0-9]+)?/;
automake:
    elsif (/([0-9]+)\.([0-9]+)([a-z]?)(-[A-Za-z0-9]+)?/)
automake:    ($xname = $name) =~ tr/A-Za-z0-9_/_/c;
automake:
    ($xname = $one_file) =~ tr/A-Za-z0-9_/_/c;
automake:
    ($xlib = $onelib) =~ tr/A-Za-z0-9_/_/c;
automake:
    ($xlib = $onelib) =~ tr/A-Za-z0-9_/_/c;
automake:
($canonical = $infobase) =~ tr/A-Za-z0-9_/_/c;
automake:
    elsif ($one_dep =~ /^\// || $one_dep =~ /^[A-Za-z]:\\/)
autoscan:
while (s/\W([a-zA-Z_]\w*)\s*\(/ /) {
autoscan:
while (s/\W([a-zA-Z_]\w*)\W/ /) {
autoscan:
while (s/\W([a-zA-Z_]\w*)\s*=/ /) {
autoscan:
while (s/\W-l([a-zA-Z_]\w*)\W/ /) {
autoscan:
while (s/\W([a-zA-Z_][\w\+\.-]*)\W/ /) {
autoscan:
while (s/\W([a-zA-Z_]\w*)\W/ /) {
c2ph:eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift;
c2ph:eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift;
composeglyphs:     if(/^Start([a-zA-Z0-9]*).*/) {
composeglyphs:          elsif(/^N  *([a-zA-Z0-9\.]*)/) { $characterName=$1 ; }
composeglyphs:          if(/^CC  *([a-zA-Z0-9\.]*)  *([0-9]*)/) { 
composeglyphs:          elsif(/^PCC  *([a-zA-Z0-9.]*)  *(-?[0-9]*)  *(-?[0-9]*)/) {
composeglyphs:#     elsif (/^ *([-_$a-zA-Z0-9]*) *([-_$a-zA-Z0-9]*)* ([0-9]*) *$/) {
curl-config:    -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
cvsbug:/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
cvsbug:/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
cvsbug:/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
cvsbug:/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
cvsbug:/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
cvsbug:/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
dsirc:  $a =~ tr/A-Z/a-z/;
dsirc:  $b =~ tr/A-Z/a-z/;
dsirc:    $t =~ tr/A-Z/a-z/;
dsirc:  $n =~ tr/A-Z/a-z/;
dsirc:    $n =~ tr/A-Z/a-z/;
dsirc:  $what =~ tr/a-z/A-Z/;
dsirc:
$n =~ tr/A-Z/a-z/;
dsirc:  $var =~ tr/a-z/A-Z/;
dsirc:    $val =~ tr/A-Z/a-z/;
dsirc:    $val =~ tr/A-Z/a-z/;
dsirc:  $ctcp =~ tr/a-z/A-Z/;
dsirc:  $cmd =~ tr/a-z/A-Z/;
dsirc:    $cmd =~ tr/a-z/A-Z/;
dsirc:
$a =~ tr/a-z/A-Z/;
dsirc:      $newarg =~ tr/a-z/A-Z/;
dsirc:    $s =~ tr/a-z/A-Z/;
dsirc:
$n =~ tr/A-Z/a-z/;
dsirc:
$n =~ tr/A-Z/a-z/;
dsirc:
$newarg =~ tr/A-Z/a-z/;
dsirc:
$newarg =~ tr/A-Z/a-z/;
dsirc:      $newarg =~ tr/a-z/A-Z/;
dsirc:  $cmd =~ tr/a-z/A-Z/;
dsirc:  $cmd =~ tr/A-Z/a-z/;
dsirc:  $var =~ tr/a-z/A-Z/;
dsirc:  $type =~ tr/A-Z/a-z/;
dsirc:  $type =~ tr/A-Z/a-z/;
dsirc:  $chnl =~ tr/A-Z/a-z/;
dsirc:    $c =~ tr/A-Z/a-z/;
dsirc:    $c =~ tr/A-Z/a-z/;
dsirc:
$n =~ tr/A-Z/a-z/;
dsirc:    $cmd =~ tr/a-z/A-Z/;
dsirc:
$channel =~ tr/A-Z/a-z/;
dsirc:
$newarg =~ tr/A-Z/a-z/;
esd-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
fax:
case "$1" in [A-Z]*=*) eval $1 ; shift ;; *) break ;; esac
fax:
	[A-Za-z]*) 
fixsgml:pat = re.compile("(<\w*)([A-Z])")
fixsgml:pat = re.compile("(</\w*)([A-Z])")
fontimport:         -e 's@.*mode=\([a-zA-Z0-9_]*\).*@\1@; q'
freetype-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
gconf-config-1:  -*=*) af_optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
gdk-pixbuf-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
gimptool:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
glib-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
glibcbug:/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
glibcbug:/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
glibcbug:/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
glibcbug:/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
glibcbug:/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
glibcbug:/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
gnome-bug:/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
gnome-bug:/^X-Gnome-CC:/s;<[ A-Za-z0-9]+>;;
gnome-bug:/^>Gnome-Libs-Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
gnome-bug:/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
gnome-bug:/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
gnome-bug:/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
gnome-bug:/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
gnome-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
gnome-config:    		up_name=`echo $1 | tr '[a-z]' '[A-Z]'`
gnome-convert:    s#([-a-zA-Z._0-9]+\@[-a-zA-Z._0-9]+)#<A HREF="mailto:$1">$1</A>#g;
gnome-convert:        s:>+(\S+\@[-a-zA-Z._0-9]*):<A HREF=\"mailto\:$1\">$1</A>:;
gnome-convert:        s#(\S+\@[-a-zA-Z._0-9]*)#<A HREF="mailto:$1">$1</A>#;
gnome-convert:
    s#([a-zA-Z]*\.[a-zA-Z.]*)#<A HREF="$1">$1</A>#g;
gnome-doc:    $id =~ s/[^A-Za-z0-9]/-/g;
gnome-doc:    $id =~ s/[^A-Za-z0-9]/-/g;
gnome-doc:    if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
gnome-doc:
$prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
gnome-doc:
$prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
gnome-doc:
$prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
gnome-doc:
$prototype =~ m/^(\w+\s+\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/)  {
gnome-upgrade.py:  /bin/mv ~/.gtkrc ~/.gtkrc.PREUPGRADE && cat
~/.gtkrc.PREUPGRADE | sed -e 's/themes\/[a-zA-Z0-9]*/themes\/Raleigh/g' > ~/.gtkrc
gnome-upgrade.py:    session_re = re.compile ('^ *(\[[A-Za-z0-9]+\]) *$\n',
re.MULTILINE | re.DOTALL)
gnome-upgrade.py:    session_name_re = re.compile ('\[([A-Za-z0-9]+)\]')
gtk-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
h2ph: 	} elsif(/^\s*(typedef\s*)?enum\s*(\s+[a-zA-Z_]\w*\s*)?\{/) {
h2ph:
    /^\s?(typedef\s?)?enum\s?([a-zA-Z_]\w*)?\s?\{(.*)\}\s?([a-zA-Z_]\w*)?\s?;/;
h2ph:
	my ($enum_name, $enum_value) = $enum =~ /^([a-zA-Z_]\w*)(=.+)?$/;
h2ph:
s/^([_A-Z]\w*(\[[^\]]+\])?((\.|->)[_A-Z]\w*(\[[^\]]+\])?)+)//i && do {
h2ph:
s/^([_a-zA-Z]\w*)//
&& do {
ifnames:    if (sym ~ /^[A-Za-z_]/) {
ifnames:      sub(/[^A-Za-z_0-9].*/, "", $0)
ifnames:      for (i = split($0, field, /[^A-Za-z_0-9]+/);  1 <= i;  i--) {
imlib-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
latex2html:unless ($ISO_LANGUAGE =~ /^[A-Z.]+$/) {
latex2html:if($ACCENT_IMAGES && $ACCENT_IMAGES !~ /^[a-zA-Z,]+$/) {
latex2html:
    s/\\verb()(\;SPM\w+\;|[^a-zA-Z*\s])/"<verb$1".++$id.">$2"/e ||
latex2html:   
s/\\newedcommand(<<\d+>>)([A-Za-z]+|[^A-Za-z])\1(\[\d+\])?(\[[^]]*\])?(<<\d+>>)[\w\W\n]*\5($comment_mark\d*)?//gm;
latex2html:    } elsif ($contents =~ /^\s*\\([a-zA-Z]+)\b/s) { 
latex2html:    if ($contents =~/;SPM([a-zA-Z]+);/) { $has_special_chars=1 };
latex2html:
	/\\((boldsymbol|bm)|(math|text)(bf|rm|it|tt)|times|[{}@#^_])(\b|[^A-Za-z]|$)/)) {
latex2html:    $mathcontents =~ s/\^(\\[a-zA-Z]+|.)/<SUP>$1<\/SUP>/g;
latex2html:    $mathcontents =~ s/_(\\[a-zA-Z]+|.)/<SUB>$1<\/SUB>/g;
latex2html:    $mathcontents =~
s/(^|\s|[,;:'\?\.\[\]\(\)\+\-\=\!>]|[^\\<]\/|\d)(<(I|TT|B)>)?([a-zA-Z]([a-zA-Z
]*[a-zA-Z])?)(<\/\3>)?/
latex2html:    $mathcontents =~ s/\\times($|\b|[^A-Za-z])/ x $1/g;
latex2html:    $mathcontents =~ s/\\times($|\b|[^A-Za-z])/ x $1/g;
latex2html:    $mathcontents =~ s/;<I>SPM([a-zA-Z]+)<\/I>;/;SPM$1;/go;
latex2html:    elsif ( $fontinfo =~ /[a-zA-Z]+(\d+)\b/ ) { $size = $1.'pt' }
latex2html:    elsif ( $fontinfo =~ /[a-zA-Z]+(\d+)\b/ ) { $size = $1.'pt' }
latex2html:        elsif (/latex2htmlLength ([a-zA-Z]+)=(\-?[\d\.]+)pt/) {
latex2html:
    $alt =~ s/^(\\vbox\{)?\#[A-Za-z]*\s*//;
latex2html:
    $alt =~ s/\n?\#[A-Za-z]*\s*\}?$//s;
latex2html:
	$after =~ s/^\s*\\([a-zA-Z]+|.)/$nextcmd = $1;''/eo;
latex2html:
$after =~ s/^\s*\\([a-zA-Z]+|.)/$nextcmd = $1;''/eo;
latex2html:
	$after =~ s/^\s*(\\[a-zA-Z]+|.)/$arg = $1;''/e;
latex2html:
if ($before=~/(^|[^\\])\\[a-zA-Z]+$/ && /^$/ && $after=~/^[a-zA-Z]/) ||
latex2html:
    ($before=~/(^|[^\\])\\[a-zA-Z]+$/ && /^[a-zA-Z]/);
latex2html:
if /(^|[^\\])\\[a-zA-Z]+$/ && $after=~/^[a-zA-Z]/;
latex2html:#
    s/(^|,)\s*([a-zA-Z]+)\s*\=\s*"?([\#\%\w\d]+)"?\s*/$attributes{$2}="$3";''/eg;
latex2html:#
    s/(^|,)\s*([a-zA-Z]+)\s*\=\s*(\"([^"]*)\"|\'([^\']*)\'|([#%\w\d]*))\s*/
latex2html:#
    s/(^|,)\s*([a-zA-Z]+)\s*\=\s*(\"([^"]*)\"|\'([^\']*)\'|([#%&@;:+-\/\w\d]*))\s*/
latex2html:
    s/(^|,)\s*([a-zA-Z]+)\s*\=\s*(\"([^"]*)\"|\'([^\']*)\'|([^<>,=\s]*))\s*/
latex2html:
	$KEY =~ tr/a-z/A-Z/;
latex2html:#
		    $atts =~ tr/A-Z/a-z/;
latex2html:#
			$atts =~ tr/A-Z/a-z/;
latex2html:#
		    $atts =~ tr/A-Z/a-z/;
latex2html:
    $KEY =~ tr/a-z/A-Z/;
latex2html:
    $atts =~ tr/A-Z/a-z/;
latex2html:
	$KEY =~ tr/a-z/A-Z/;
latex2html:
	    $KEY =~ tr/a-z/A-Z/;
latex2html:
	    $atts =~ tr/A-Z/a-z/;
latex2html:    $preamble =~ s/\\par([^A-Za-z]|$)/\n$1/g;
latex2html:    tr/A-Z/a-z/;
latex2html:    s/<\/(TT|[^PTH][A-Z]+)><\1>//g;
latex2html:    s/<([A-Z]+)[^>]*>\s*<\/\1>\s*//g;
latex2html:    s/^\s*(\\([a-zA-Z]+|.)|[&;]\w+;(#\w+;)?|.)/$tok=$1;''/e;
latex2html:    if (s/^\s*\\lq(\b|$|[^A-Za-z])/$1/) {
latex2html:    if ($cmd=~s/^\\([a-zA-Z]+)//s) { $cmd = $1 };
latex2html:    $_[0] =~
s/\\item[\s\r]*(\b(\[(([^\[\]]|\[[^]]*\])*)\])?|[^a-zA-Z\s])/
latex2html:#   grep (do {tr/a-z/A-Z/ unless /(^\\)|(tex2html)/}, @words);
latex2html:
my $padding = ($after =~ /^[a-zA-Z]/s)? ($cmd =~ /\W$/ ? '':' '):'';
latex2html:
if $use_label =~ (/<\/([A-Z]+)>($math_verbatim_rx.*)<\1>/);
latex2html:    return($text) unless ($text =~
/<\/([A-Z]+)>(\s*$math_verbatim_rx.*)(<\1( [^>]*)?>)/);
latex2html:
    if $use_label =~ (/<\/([A-Z]+)>($math_verbatim_rx.*)<\1>/);
latex2html:  	    $number =~ tr/a-z/A-Z/;
latex2html:    if (!(s/^\s*\\if([a-zA-Z]+)//)) {
latex2html:    if (s/^\\([ij])([^a-zA-Z]|$)/$2/) {
latex2html:    while ($text =~ /(\\[a-zA-Z]+|[&;]SPM\w+;|<[^>]+>)+/m ) {
latex2html:
    eval "\$next =~ tr/a-z$sclower/A-Z$scupper/";
latex2html:
    eval "\$next =~ tr/a-z$sclower/A-Z$scupper/";
latex2html:    while ($text =~ /(\\[a-zA-Z]+|[&;]SPM\w+;)/ ) {
latex2html:
$next =~ tr /a-z/A-Z/ if ($next);
latex2html:    $text =~ tr /a-z/A-Z/ if ($text);
latex2html:    while ($text =~ /(\\[a-zA-Z]+|[&;]SPM\w+;)/ ) {
latex2html:
$next =~ tr /A-Z/a-z/ if ($next);
latex2html:    $text =~ tr /A-Z/a-z/ if ($text);
latex2html:    $_ =~ tr/A-Z/a-z/;
latex2html:    $letters = 'a-zA-Z';
latex2html:#    $single_cmd_atletter_rx =
"\\\\([a-zA-Z\\\@]+\\*?|[$cmd_delims]|\\\\)";
latex2html:#    $single_cmd_atother_rx = "\\\\([a-zA-Z]+\\*?|[$cmd_delims]|\\\\)";
latex2html:    $next_token_rx = "^[\\s%]*(\\\\[A-Za-z]+|\\\\[^a-zA-Z]|.)";
latex2html:    # Eg. \\(\@|...|\+)|\\(abc|...|xyz)(([^a-zA-Z \t])|[ \t]+)
libIDL-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libart-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libefs-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libglade-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libgtop-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libmikmod-config:
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
libtool:global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([ABCDGISTW][ABCDGISTW]*\\)[ 	][ 
]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
libtool:  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
libtool:
  [\\/]* | [A-Za-z]:[\\/]*) ;;
libtool:      -L[A-Z][A-Z]*:*)
libtool:
[\\/]* | [A-Za-z]:[\\/]*) ;;
libtool:
[\\/]* | [A-Za-z]:[\\/]*) ;;
libtool:
[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
libtool:
	[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
libtool:
		[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
libtool:
      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
libtool:
    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
libtool:
  [\\/]* | [A-Za-z]:[\\/]*)
libtool:
[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
libtool:      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
libtool:
  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
libtool:    [\\/]* | [A-Za-z]:[\\/]*) ;;
licensecheck:  header=`head -30 $file| sed 's/	/ /g;s/$/ /g' | tr -d -c '
A-Za-z.,/@1-9()'`
lsdev:    next if /^[ \t]*[A-Z]/;
mailserver:set BARLC=(`echo "$FOO" | tr A-Z a-z`)
mailshar:
| tr '[A-Z]' '[a-z]'`" in
mailstat:   -e '/^  Folder/s/\/msg\.[-0-9A-Za-z_][-0-9A-Za-z_]*	/\/	/' \
mailstat:   -e '/^  Folder/s/\/new\/[-0-9A-Za-z_][-0-9A-Za-z_.,+:%@]*	/\/	/' \
mailstat:   -e '/^  Folder/s/\/msg\.[-0-9A-Za-z_][-0-9A-Za-z_]*	/\/	/' \
mailstat:   -e '/^  Folder/s/\/new\/[-0-9A-Za-z_][-0-9A-Za-z_.,+:%@]*	/\/	/' \
mm-config:        -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
oaf-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
orbit-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
pcre-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
pl2pm:
@export = m/sub\s+([A-Za-z]\w*)/g;
ppmshadow:            $opt =~ tr/A-Z/a-z/;
ps2epsi: -e '/^%%[A-Za-z][A-Za-z]*[^!-~]*$/d' -e '/^%%[A-Za-z][A-Za-z]*: /d'
${infile}
pstruct:eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift;
pstruct:eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_]+=)(.*)/ && shift;
qtdoc:  fname=`echo $1 | tr '[A-Z]' '[a-z]'`
remsync:    $email =~ tr/A-Z/a-z/;
remsync:    $remote =~ tr/A-Z/a-z/;
remsync:
    $here_email_received =~ tr/A-Z/a-z/;
remsync:
    $remote_received =~ tr/A-Z/a-z/;
remsync:
	$here_email =~ tr/A-Z/a-z/;
remsync:
	$string =~ tr/A-Z/a-z/;
remsync:    tr/A-Z/a-z/;
s2p:
s/[^a-zA-Z0-9]/_/g;
s2p:    $label =~ s/[^a-zA-Z0-9]/_/g;
s2p:    substr($label,0,1) =~ y/a-z/A-Z/
s2p:
    s/ABCDEFGHIJKLMNOPQRSTUVWXYZ/A-Z/g;
s2p:
    $delim = '' if $ch =~ /^[(){}A-Za-mo-z]$/;
scrollkeeper-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
splain:
$header =~ s/[A-Z]<(.*?)>/$1/g;
splain:            ( [A-Za-z]+ )       
switchdesk-helper:DESKTOP=`echo $1 |tr a-z A-Z`
sync-plan:
$pilotname =~ s/[^A-Za-z0-9]+/_/g;
texexec:      { if (!/^[a-zA-Z\s]/oi)
texi2html:
	  $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
texi2html:
	  $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
texi2html:
	    $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
texi2html:  if ($a =~ /^[A-Za-z]/)
texi2html:    if ($b =~ /^[A-Za-z]/)
texi2html:  elsif ($b =~ /^[A-Za-z]/)
texi2html:      if ($letter =~ /^[A-Za-z]/)
texi2html:  $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./;
texi2html:
	$entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
texi2html:      $clean_entry =~ s/^.*? // if ($clean_entry =~
/^([A-Z]|\d+)\.[\d\.]* /);
texutil:#        $copied =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$ASCII{$1}/gio ;
texutil:#        $string =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$2/gio ;
texutil:#    $string =~ s/\\[a-zA-Z]*| |\{|\}//gio ;
texutil:        $copied =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$ASCII{$1}/gio ;
texutil:        $string =~ s/([\^\"\`\'\~\,])([a-zA-Z])/$2/gio ;
texutil:    $string =~ s/\\[a-zA-Z]*| |\{|\}//gio ;
texutil:    $Key =~ s/^([^a-zA-Z])/ $1/go ;
unicode-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
winemaker:  $name =~ tr/a-zA-Z0-9_/_/c;
winemaker:      if (($opt_lower == $OPT_LOWER_ALL and $dentry =~ /[A-Z]/) or 
winemaker:  if ($filename =~ /^([a-zA-Z]:)?[\/]/ or $filename =~
/^[a-zA-Z]:[\/]?/) {
xdelta-config:  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
xml-config:    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
xmlizer:pat = re.compile("(<\w*)([A-Z])")
xmlizer:pat = re.compile("(</\w*)([A-Z])")


Regards,

luke

Note You need to log in before you can comment on or make changes to this bug.