Ian wrote:
> On 7 Dec 2012, at 17:49, corvid wrote:
> > FLTK does a small enough amount of str[n]casecmp()ing overall that...I'll go
> > ahead and do some analysis...
> 
> Go for it - one volunteer is worth a dozen...



fluid/factory.cxx:1121:    if (!strcasecmp(tn,t->type_name())) {r = t->make(); 
break;}
fluid/factory.cxx:1122:    if (!strcasecmp(tn,t->alt_type_name())) {r = 
t->make(); break;}

t->type_name()
t->alt_type_name()
where t is a Fl_Type *. It comes from the user_data from the Fl_Menu_Items
in New_Menu.
Looking at New_Menu, these are things like Fl_Function_type, Fl_Code_type, 
Fl_Decl_type.
Fl_Decl_type, for instance, is a Fl_Decl_Type, which is derived from Fl_Type.

In Fl_Type, type_name() and alt_type_name() are pure virtual.
In the derived classes, the former returns strings like "Function", "code", 
"Fl_Group", and the latter "fltk::PackedGroup", "fltk::TableGroup"...

So far, this strongly suggests that ASCII case comparison is correct here.

tn is the arg to Fl_Type_make()
A quick grep for invocations shows args like "class", "Function", "Fl_Window".

So these cases should use an ASCII comparison.




fluid/factory.cxx:1262:    if (!strcasecmp(name,table[i].name)) {v = 
table[i].value; return 1;}

table[i].name refers to the array just above it, which is full of names like 
"YELLOW", "BOTTOM_BCOL", "TOMATO", "ALIGN_BOTTOM_RIGHT".

name is the first arg to lookup_symbol.

So these are all about ASCII English as well. (I notice, though, that
lookup_symbol is called in places where the surrounding tests looked at
least superficially similar, and those were using strcmp(). That might
be right to be case-sensitive and not in others, and maybe not.)




fluid/fluid.cxx:1248:    if (!strcasecmp(absolute, absolute_history[i])) break;

This has to do with filenames when #if defined(WIN32) || defined(__APPLE__).
strcasecmp() is probably correct.




src/Fl_File_Chooser2.cxx:888:    if (strcasecmp(pathname, directory_) &&
src/Fl_File_Chooser2.cxx:920:      if (strncasecmp(filename, file, min_match) 
== 0) {
src/Fl_File_Chooser2.cxx:943:       if (strncasecmp(file, matchname, max_match) 
== 0)
src/Fl_File_Chooser2.cxx:1200:    if (strcasecmp(fileList->text(i), slash) == 
0) {
src/Fl_File_Chooser2.cxx:1574:    if (strcasecmp(fileList->text(i), slash) == 
0) {
src/Fl_File_Chooser2.cxx:1643:  return strncasecmp(a, b, alen);

These are about filenames when ifdef WIN32, and usually defined(__EMX__),
and sometimes ! defined (__CYGWIN__). Ordinary str(n)casecmp is probably
correct, although I wouldn't be surprised if these define tests are
supposed to be somewhat more consistent.




src/Fl_File_Icon2.cxx:518:        if (strncasecmp(lineptr + 2, "white", 5) == 
0) colors[ch] = FL_WHITE;
src/Fl_File_Icon2.cxx:519:        else if (strncasecmp(lineptr + 2, "black", 5) 
== 0) colors[ch] = FL_BLACK;
src/Fl_File_Icon2.cxx:520:        else if (strncasecmp(lineptr + 2, "none", 4) 
== 0) {

These have to do with parsing pixmaps, so ASCII comparison should be used.




src/Fl_Help_View.cxx:385:  return (strcasecmp(t0->name, t1->name));

Here we are comparing Fl_Help_Target names. Target is apparently the fltk
term for what I'm accustomed to calling an anchor. The html4 spec, at least,
says "String matching: Comparisons between fragment identifiers and
anchor names must be done by exact (case-sensitive) match." and
"Anchor names should be restricted to ASCII characters."




src/Fl_Help_View.cxx:649:         if (strcasecmp(buf, "HEAD") == 0)
src/Fl_Help_View.cxx:651:         else if (strcasecmp(buf, "BR") == 0)
src/Fl_Help_View.cxx:659:         else if (strcasecmp(buf, "HR") == 0)
src/Fl_Help_View.cxx:670:         else if (strcasecmp(buf, "CENTER") == 0 ||
src/Fl_Help_View.cxx:671:                  strcasecmp(buf, "P") == 0 ||
src/Fl_Help_View.cxx:672:                  strcasecmp(buf, "H1") == 0 ||
src/Fl_Help_View.cxx:673:                  strcasecmp(buf, "H2") == 0 ||
src/Fl_Help_View.cxx:674:                  strcasecmp(buf, "H3") == 0 ||
src/Fl_Help_View.cxx:675:                  strcasecmp(buf, "H4") == 0 ||
src/Fl_Help_View.cxx:676:                  strcasecmp(buf, "H5") == 0 ||
src/Fl_Help_View.cxx:677:                  strcasecmp(buf, "H6") == 0 ||
src/Fl_Help_View.cxx:678:                  strcasecmp(buf, "UL") == 0 ||
src/Fl_Help_View.cxx:679:                  strcasecmp(buf, "OL") == 0 ||
src/Fl_Help_View.cxx:680:                  strcasecmp(buf, "DL") == 0 ||
src/Fl_Help_View.cxx:681:                  strcasecmp(buf, "LI") == 0 ||
src/Fl_Help_View.cxx:682:                  strcasecmp(buf, "DD") == 0 ||
src/Fl_Help_View.cxx:683:                  strcasecmp(buf, "DT") == 0 ||
src/Fl_Help_View.cxx:684:                  strcasecmp(buf, "PRE") == 0)
src/Fl_Help_View.cxx:691:           else if (strcasecmp(buf, "DT") == 0)
src/Fl_Help_View.cxx:696:           else if (strcasecmp(buf, "PRE") == 0)
src/Fl_Help_View.cxx:703:            if (strcasecmp(buf, "LI") == 0)
src/Fl_Help_View.cxx:716:         else if (strcasecmp(buf, "A") == 0 &&
src/Fl_Help_View.cxx:722:         else if (strcasecmp(buf, "/A") == 0)
src/Fl_Help_View.cxx:727:         else if (strcasecmp(buf, "FONT") == 0)

Should be ASCII comparisons.




src/Fl_Help_View.cxx:734:             if (!strncasecmp(attr, "helvetica", 9) ||
src/Fl_Help_View.cxx:735:                 !strncasecmp(attr, "arial", 5) ||
src/Fl_Help_View.cxx:736:                 !strncasecmp(attr, "sans", 4)) font = 
FL_HELVETICA;
src/Fl_Help_View.cxx:737:              else if (!strncasecmp(attr, "times", 5) 
||
src/Fl_Help_View.cxx:738:                      !strncasecmp(attr, "serif", 5)) 
font = FL_TIMES;
src/Fl_Help_View.cxx:739:              else if (!strncasecmp(attr, "symbol", 
6)) font = FL_SYMBOL;

Should be ASCII comparisons, at least for the use made of font face in fltk.




src/Fl_Help_View.cxx:755:         else if (strcasecmp(buf, "/FONT") == 0)
src/Fl_Help_View.cxx:759:         else if (strcasecmp(buf, "U") == 0)
src/Fl_Help_View.cxx:761:         else if (strcasecmp(buf, "/U") == 0)
src/Fl_Help_View.cxx:763:         else if (strcasecmp(buf, "B") == 0 ||
src/Fl_Help_View.cxx:764:                  strcasecmp(buf, "STRONG") == 0)
src/Fl_Help_View.cxx:766:         else if (strcasecmp(buf, "TD") == 0 ||
src/Fl_Help_View.cxx:767:                  strcasecmp(buf, "TH") == 0)
src/Fl_Help_View.cxx:806:         else if (strcasecmp(buf, "I") == 0 ||
src/Fl_Help_View.cxx:807:                   strcasecmp(buf, "EM") == 0)
src/Fl_Help_View.cxx:809:         else if (strcasecmp(buf, "CODE") == 0 ||
src/Fl_Help_View.cxx:810:                  strcasecmp(buf, "TT") == 0)
src/Fl_Help_View.cxx:812:         else if (strcasecmp(buf, "KBD") == 0)
src/Fl_Help_View.cxx:814:         else if (strcasecmp(buf, "VAR") == 0)
src/Fl_Help_View.cxx:816:         else if (strcasecmp(buf, "/HEAD") == 0)
src/Fl_Help_View.cxx:818:         else if (strcasecmp(buf, "/H1") == 0 ||
src/Fl_Help_View.cxx:819:                  strcasecmp(buf, "/H2") == 0 ||
src/Fl_Help_View.cxx:820:                  strcasecmp(buf, "/H3") == 0 ||
src/Fl_Help_View.cxx:821:                  strcasecmp(buf, "/H4") == 0 ||
src/Fl_Help_View.cxx:822:                  strcasecmp(buf, "/H5") == 0 ||
src/Fl_Help_View.cxx:823:                  strcasecmp(buf, "/H6") == 0 ||
src/Fl_Help_View.cxx:824:                  strcasecmp(buf, "/B") == 0 ||
src/Fl_Help_View.cxx:825:                  strcasecmp(buf, "/STRONG") == 0 ||
src/Fl_Help_View.cxx:826:                  strcasecmp(buf, "/I") == 0 ||
src/Fl_Help_View.cxx:827:                  strcasecmp(buf, "/EM") == 0 ||
src/Fl_Help_View.cxx:828:                  strcasecmp(buf, "/CODE") == 0 ||
src/Fl_Help_View.cxx:829:                  strcasecmp(buf, "/TT") == 0 ||
src/Fl_Help_View.cxx:830:                  strcasecmp(buf, "/KBD") == 0 ||
src/Fl_Help_View.cxx:831:                  strcasecmp(buf, "/VAR") == 0)
src/Fl_Help_View.cxx:833:         else if (strcasecmp(buf, "/PRE") == 0)
src/Fl_Help_View.cxx:838:         else if (strcasecmp(buf, "IMG") == 0)
src/Fl_Help_View.cxx:1262:      if (strcasecmp(buf, "HEAD") == 0)
src/Fl_Help_View.cxx:1264:      else if (strcasecmp(buf, "/HEAD") == 0)
src/Fl_Help_View.cxx:1266:      else if (strcasecmp(buf, "TITLE") == 0)
src/Fl_Help_View.cxx:1276:      else if (strcasecmp(buf, "A") == 0)
src/Fl_Help_View.cxx:1284:      else if (strcasecmp(buf, "/A") == 0)
src/Fl_Help_View.cxx:1286:      else if (strcasecmp(buf, "BODY") == 0)
src/Fl_Help_View.cxx:1295:      else if (strcasecmp(buf, "BR") == 0)
src/Fl_Help_View.cxx:1303:      else if (strcasecmp(buf, "CENTER") == 0 ||
src/Fl_Help_View.cxx:1304:               strcasecmp(buf, "P") == 0 ||
src/Fl_Help_View.cxx:1305:               strcasecmp(buf, "H1") == 0 ||
src/Fl_Help_View.cxx:1306:               strcasecmp(buf, "H2") == 0 ||
src/Fl_Help_View.cxx:1307:               strcasecmp(buf, "H3") == 0 ||
src/Fl_Help_View.cxx:1308:               strcasecmp(buf, "H4") == 0 ||
src/Fl_Help_View.cxx:1309:               strcasecmp(buf, "H5") == 0 ||
src/Fl_Help_View.cxx:1310:               strcasecmp(buf, "H6") == 0 ||
src/Fl_Help_View.cxx:1311:               strcasecmp(buf, "UL") == 0 ||
src/Fl_Help_View.cxx:1312:               strcasecmp(buf, "OL") == 0 ||
src/Fl_Help_View.cxx:1313:               strcasecmp(buf, "DL") == 0 ||
src/Fl_Help_View.cxx:1314:               strcasecmp(buf, "LI") == 0 ||
src/Fl_Help_View.cxx:1315:               strcasecmp(buf, "DD") == 0 ||
src/Fl_Help_View.cxx:1316:               strcasecmp(buf, "DT") == 0 ||
src/Fl_Help_View.cxx:1317:               strcasecmp(buf, "HR") == 0 ||
src/Fl_Help_View.cxx:1318:               strcasecmp(buf, "PRE") == 0 ||
src/Fl_Help_View.cxx:1319:               strcasecmp(buf, "TABLE") == 0)
src/Fl_Help_View.cxx:1323:        newalign   = strcasecmp(buf, "CENTER") ? LEFT 
: CENTER;
src/Fl_Help_View.cxx:1327:          if (strcasecmp(buf, "UL") == 0 ||
src/Fl_Help_View.cxx:1328:            strcasecmp(buf, "OL") == 0 ||
src/Fl_Help_View.cxx:1329:            strcasecmp(buf, "DL") == 0)
src/Fl_Help_View.cxx:1334:          else if (strcasecmp(buf, "TABLE") == 0)
src/Fl_Help_View.cxx:1380:        else if (strcasecmp(buf, "DT") == 0)
src/Fl_Help_View.cxx:1385:        else if (strcasecmp(buf, "PRE") == 0)
src/Fl_Help_View.cxx:1403:            strcasecmp(buf, "DD") == 0 ||
src/Fl_Help_View.cxx:1404:            strcasecmp(buf, "DT") == 0 ||
src/Fl_Help_View.cxx:1405:            strcasecmp(buf, "P") == 0)
src/Fl_Help_View.cxx:1407:        else if (strcasecmp(buf, "HR") == 0)
src/Fl_Help_View.cxx:1421:        if (strcasecmp(buf, "CENTER") == 0)
src/Fl_Help_View.cxx:1426:      else if (strcasecmp(buf, "/CENTER") == 0 ||
src/Fl_Help_View.cxx:1427:               strcasecmp(buf, "/P") == 0 ||
src/Fl_Help_View.cxx:1428:               strcasecmp(buf, "/H1") == 0 ||
src/Fl_Help_View.cxx:1429:               strcasecmp(buf, "/H2") == 0 ||
src/Fl_Help_View.cxx:1430:               strcasecmp(buf, "/H3") == 0 ||
src/Fl_Help_View.cxx:1431:               strcasecmp(buf, "/H4") == 0 ||
src/Fl_Help_View.cxx:1432:               strcasecmp(buf, "/H5") == 0 ||
src/Fl_Help_View.cxx:1433:               strcasecmp(buf, "/H6") == 0 ||
src/Fl_Help_View.cxx:1434:               strcasecmp(buf, "/PRE") == 0 ||
src/Fl_Help_View.cxx:1435:               strcasecmp(buf, "/UL") == 0 ||
src/Fl_Help_View.cxx:1436:               strcasecmp(buf, "/OL") == 0 ||
src/Fl_Help_View.cxx:1437:               strcasecmp(buf, "/DL") == 0 ||
src/Fl_Help_View.cxx:1438:               strcasecmp(buf, "/TABLE") == 0)
src/Fl_Help_View.cxx:1444:          if (strcasecmp(buf, "/UL") == 0 ||
src/Fl_Help_View.cxx:1445:            strcasecmp(buf, "/OL") == 0 ||
src/Fl_Help_View.cxx:1446:            strcasecmp(buf, "/DL") == 0)
src/Fl_Help_View.cxx:1451:          else if (strcasecmp(buf, "/TABLE") == 0) 
src/Fl_Help_View.cxx:1456:        else if (strcasecmp(buf, "/PRE") == 0)
src/Fl_Help_View.cxx:1461:        else if (strcasecmp(buf, "/CENTER") == 0)
src/Fl_Help_View.cxx:1488:      else if (strcasecmp(buf, "TR") == 0)
src/Fl_Help_View.cxx:1527:      else if (strcasecmp(buf, "/TR") == 0 && row)
src/Fl_Help_View.cxx:1558:      else if ((strcasecmp(buf, "TD") == 0 ||
src/Fl_Help_View.cxx:1559:                  strcasecmp(buf, "TH") == 0) && row)
src/Fl_Help_View.cxx:1568:          if (strcasecmp(buf, "TH") == 0)
src/Fl_Help_View.cxx:1612:      else if ((strcasecmp(buf, "/TD") == 0 ||
src/Fl_Help_View.cxx:1613:                  strcasecmp(buf, "/TH") == 0) && row)
src/Fl_Help_View.cxx:1620:      else if (strcasecmp(buf, "FONT") == 0)
src/Fl_Help_View.cxx:1623:          if (!strncasecmp(attr, "helvetica", 9) ||
src/Fl_Help_View.cxx:1624:              !strncasecmp(attr, "arial", 5) ||
src/Fl_Help_View.cxx:1625:              !strncasecmp(attr, "sans", 4)) font = 
FL_HELVETICA;
src/Fl_Help_View.cxx:1626:            else if (!strncasecmp(attr, "times", 5) ||
src/Fl_Help_View.cxx:1627:                   !strncasecmp(attr, "serif", 5)) 
font = FL_TIMES;
src/Fl_Help_View.cxx:1628:            else if (!strncasecmp(attr, "symbol", 6)) 
font = FL_SYMBOL;
src/Fl_Help_View.cxx:1644:      else if (strcasecmp(buf, "/FONT") == 0)
src/Fl_Help_View.cxx:1646:      else if (strcasecmp(buf, "B") == 0 ||
src/Fl_Help_View.cxx:1647:               strcasecmp(buf, "STRONG") == 0)
src/Fl_Help_View.cxx:1649:      else if (strcasecmp(buf, "I") == 0 ||
src/Fl_Help_View.cxx:1650:               strcasecmp(buf, "EM") == 0)
src/Fl_Help_View.cxx:1652:      else if (strcasecmp(buf, "CODE") == 0 ||
src/Fl_Help_View.cxx:1653:               strcasecmp(buf, "TT") == 0)
src/Fl_Help_View.cxx:1655:      else if (strcasecmp(buf, "KBD") == 0)
src/Fl_Help_View.cxx:1657:      else if (strcasecmp(buf, "VAR") == 0)
src/Fl_Help_View.cxx:1659:      else if (strcasecmp(buf, "/B") == 0 ||
src/Fl_Help_View.cxx:1660:               strcasecmp(buf, "/STRONG") == 0 ||
src/Fl_Help_View.cxx:1661:               strcasecmp(buf, "/I") == 0 ||
src/Fl_Help_View.cxx:1662:               strcasecmp(buf, "/EM") == 0 ||
src/Fl_Help_View.cxx:1663:               strcasecmp(buf, "/CODE") == 0 ||
src/Fl_Help_View.cxx:1664:               strcasecmp(buf, "/TT") == 0 ||
src/Fl_Help_View.cxx:1665:               strcasecmp(buf, "/KBD") == 0 ||
src/Fl_Help_View.cxx:1666:               strcasecmp(buf, "/VAR") == 0)
src/Fl_Help_View.cxx:1668:      else if (strcasecmp(buf, "IMG") == 0)
src/Fl_Help_View.cxx:1955:      if (strcasecmp(buf, "BR") == 0 ||
src/Fl_Help_View.cxx:1956:        strcasecmp(buf, "HR") == 0)
src/Fl_Help_View.cxx:1961:      else if (strcasecmp(buf, "TABLE") == 0 && start 
> table)
src/Fl_Help_View.cxx:1963:      else if (strcasecmp(buf, "CENTER") == 0 ||
src/Fl_Help_View.cxx:1964:               strcasecmp(buf, "P") == 0 ||
src/Fl_Help_View.cxx:1965:               strcasecmp(buf, "H1") == 0 ||
src/Fl_Help_View.cxx:1966:             strcasecmp(buf, "H2") == 0 ||
src/Fl_Help_View.cxx:1967:             strcasecmp(buf, "H3") == 0 ||
src/Fl_Help_View.cxx:1968:             strcasecmp(buf, "H4") == 0 ||
src/Fl_Help_View.cxx:1969:             strcasecmp(buf, "H5") == 0 ||
src/Fl_Help_View.cxx:1970:             strcasecmp(buf, "H6") == 0 ||
src/Fl_Help_View.cxx:1971:             strcasecmp(buf, "UL") == 0 ||
src/Fl_Help_View.cxx:1972:             strcasecmp(buf, "OL") == 0 ||
src/Fl_Help_View.cxx:1973:             strcasecmp(buf, "DL") == 0 ||
src/Fl_Help_View.cxx:1974:             strcasecmp(buf, "LI") == 0 ||
src/Fl_Help_View.cxx:1975:             strcasecmp(buf, "DD") == 0 ||
src/Fl_Help_View.cxx:1976:             strcasecmp(buf, "DT") == 0 ||
src/Fl_Help_View.cxx:1977:             strcasecmp(buf, "PRE") == 0)
src/Fl_Help_View.cxx:1987:      else if (strcasecmp(buf, "DT") == 0)
src/Fl_Help_View.cxx:1992:      else if (strcasecmp(buf, "PRE") == 0)
src/Fl_Help_View.cxx:1998:      else if (strcasecmp(buf, "LI") == 0)
src/Fl_Help_View.cxx:2012:      else if (strcasecmp(buf, "/CENTER") == 0 ||
src/Fl_Help_View.cxx:2013:             strcasecmp(buf, "/P") == 0 ||
src/Fl_Help_View.cxx:2014:             strcasecmp(buf, "/H1") == 0 ||
src/Fl_Help_View.cxx:2015:             strcasecmp(buf, "/H2") == 0 ||
src/Fl_Help_View.cxx:2016:             strcasecmp(buf, "/H3") == 0 ||
src/Fl_Help_View.cxx:2017:             strcasecmp(buf, "/H4") == 0 ||
src/Fl_Help_View.cxx:2018:             strcasecmp(buf, "/H5") == 0 ||
src/Fl_Help_View.cxx:2019:             strcasecmp(buf, "/H6") == 0 ||
src/Fl_Help_View.cxx:2020:             strcasecmp(buf, "/PRE") == 0 ||
src/Fl_Help_View.cxx:2021:             strcasecmp(buf, "/UL") == 0 ||
src/Fl_Help_View.cxx:2022:             strcasecmp(buf, "/OL") == 0 ||
src/Fl_Help_View.cxx:2023:             strcasecmp(buf, "/DL") == 0)
src/Fl_Help_View.cxx:2030:      else if (strcasecmp(buf, "TR") == 0 || 
strcasecmp(buf, "/TR") == 0 ||
src/Fl_Help_View.cxx:2031:               strcasecmp(buf, "/TABLE") == 0)
src/Fl_Help_View.cxx:2051:      if (strcasecmp(buf, "/TABLE") == 0)
src/Fl_Help_View.cxx:2060:      else if (strcasecmp(buf, "TD") == 0 ||
src/Fl_Help_View.cxx:2061:               strcasecmp(buf, "TH") == 0)
src/Fl_Help_View.cxx:2098:        if (strcasecmp(buf, "TH") == 0)
src/Fl_Help_View.cxx:2114:      else if (strcasecmp(buf, "/TD") == 0 ||
src/Fl_Help_View.cxx:2115:               strcasecmp(buf, "/TH") == 0)
src/Fl_Help_View.cxx:2120:      else if (strcasecmp(buf, "B") == 0 ||
src/Fl_Help_View.cxx:2121:               strcasecmp(buf, "STRONG") == 0)
src/Fl_Help_View.cxx:2123:      else if (strcasecmp(buf, "I") == 0 ||
src/Fl_Help_View.cxx:2124:               strcasecmp(buf, "EM") == 0)
src/Fl_Help_View.cxx:2126:      else if (strcasecmp(buf, "CODE") == 0 ||
src/Fl_Help_View.cxx:2127:               strcasecmp(buf, "TT") == 0)
src/Fl_Help_View.cxx:2129:      else if (strcasecmp(buf, "KBD") == 0)
src/Fl_Help_View.cxx:2131:      else if (strcasecmp(buf, "VAR") == 0)
src/Fl_Help_View.cxx:2133:      else if (strcasecmp(buf, "/B") == 0 ||
src/Fl_Help_View.cxx:2134:             strcasecmp(buf, "/STRONG") == 0 ||
src/Fl_Help_View.cxx:2135:             strcasecmp(buf, "/I") == 0 ||
src/Fl_Help_View.cxx:2136:             strcasecmp(buf, "/EM") == 0 ||
src/Fl_Help_View.cxx:2137:             strcasecmp(buf, "/CODE") == 0 ||
src/Fl_Help_View.cxx:2138:             strcasecmp(buf, "/TT") == 0 ||
src/Fl_Help_View.cxx:2139:             strcasecmp(buf, "/KBD") == 0 ||
src/Fl_Help_View.cxx:2140:             strcasecmp(buf, "/VAR") == 0)
src/Fl_Help_View.cxx:2142:      else if (strcasecmp(buf, "IMG") == 0 && incell)
src/Fl_Help_View.cxx:2350:      if (strcasecmp(buf, "IMG") == 0)
src/Fl_Help_View.cxx:2415:  if (strcasecmp(buf, "CENTER") == 0)
src/Fl_Help_View.cxx:2417:  else if (strcasecmp(buf, "RIGHT") == 0)

More of the same. ASCII.




src/Fl_Help_View.cxx:2483:    if (strcasecmp(n, name) == 0)

Attribute names. ASCII.



src/Fl_Help_View.cxx:2547:      if (!strcasecmp(n, colors[i].name)) {

Colors. ASCII.




src/Fl_arg.cxx:306:  if (val) Fl::dnd_text_ops(strcasecmp(val, "true") == 0 ||
src/Fl_arg.cxx:307:                            strcasecmp(val, "on") == 0 ||
src/Fl_arg.cxx:308:                            strcasecmp(val, "yes") == 0);
src/Fl_arg.cxx:311:  if (val) Fl_Tooltip::enable(strcasecmp(val, "true") == 0 ||
src/Fl_arg.cxx:312:                              strcasecmp(val, "on") == 0 ||
src/Fl_arg.cxx:313:                              strcasecmp(val, "yes") == 0);
src/Fl_arg.cxx:316:  if (val) Fl::visible_focus(strcasecmp(val, "true") == 0 ||
src/Fl_arg.cxx:317:                             strcasecmp(val, "on") == 0 ||
src/Fl_arg.cxx:318:                             strcasecmp(val, "yes") == 0);

ASCII




src/filename_absolute.cxx:192:  if (!strcasecmp(from, cwd)) {

more WIN32 EMX stuff where I assume it's right.




src/filename_list.cxx:42:  return strcasecmp((*a)->d_name, (*b)->d_name);

defn of fl_casealphasort. Okay as it is.




src/fl_set_fonts_xft.cxx:137:        if (strncasecmp(style, "Italic", 6) == 0)
src/fl_set_fonts_xft.cxx:144:        if (strncasecmp(style, "Bold", 4) == 0)
src/fl_set_fonts_xft.cxx:151:        if (strncasecmp(style, "Oblique", 7) == 0)
src/fl_set_fonts_xft.cxx:158:        if (strncasecmp(style, "SuperBold", 9) == 
0)

Should use ASCII comparison.




src/fl_utf8.cxx:186: UTF-8 aware strncasecmp - converts to lower case Unicode 
and tests.
src/fl_utf8.cxx:194:int fl_utf_strncasecmp(const char *s1, const char *s2, int 
n)
src/fl_utf8.cxx:215: UTF-8 aware strcasecmp - converts to Unicode and tests.
src/fl_utf8.cxx:221:int fl_utf_strcasecmp(const char *s1, const char *s2)
src/fl_utf8.cxx:223:  return fl_utf_strncasecmp(s1, s2, 0x7fffffff);

It looks like ucs_table_0041 does ASCII mappings.
(I note that U+0130, capital i with dot, doesn't have a lowercase entry.)

_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to