Bug 77322 - en_US locale means [A-Z] matches *some* lower case letters
Summary: en_US locale means [A-Z] matches *some* lower case letters
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: glibc
Version: 8.0
Hardware: i686
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2002-11-05 04:24 UTC by luke
Modified: 2016-11-24 15:23 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2002-11-05 04:24:18 UTC
Embargoed:


Attachments (Terms of Use)

Description luke 2002-11-05 04:24:12 UTC
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 09:11:08 UTC
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 23:18:49 UTC
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.