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