- Pascal Terjan filed bug #2154627

(http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl
  uses strcasecmp() in multiple places where it causes failures when the
  Turkish locale is used. This is because 'i' and 'I' isn't the same letter so
  strcasecmp() on those letters are different in Turkish than in English (or
  just about all other languages). I thus introduced a totally new internal
  function in libcurl (called Curl_ascii_equal) for doing case insentive
  comparisons for english-(ascii?) style strings that thus will make "file"
  and "FILE" match even if the Turkish locale is selected.
This commit is contained in:
Daniel Stenberg 2008-10-15 21:43:48 +00:00
parent be760bed7e
commit a579d67064
18 changed files with 118 additions and 77 deletions

View file

@ -1501,11 +1501,11 @@ static ParameterError add2list(struct curl_slist **list,
static int ftpfilemethod(struct Configurable *config, const char *str)
{
if(curlx_strequal("singlecwd", str))
if(curlx_ascii_equal("singlecwd", str))
return CURLFTPMETHOD_SINGLECWD;
if(curlx_strequal("nocwd", str))
if(curlx_ascii_equal("nocwd", str))
return CURLFTPMETHOD_NOCWD;
if(curlx_strequal("multicwd", str))
if(curlx_ascii_equal("multicwd", str))
return CURLFTPMETHOD_MULTICWD;
warnf(config, "unrecognized ftp file method '%s', using default\n", str);
return CURLFTPMETHOD_MULTICWD;
@ -1513,9 +1513,9 @@ static int ftpfilemethod(struct Configurable *config, const char *str)
static int ftpcccmethod(struct Configurable *config, const char *str)
{
if(curlx_strequal("passive", str))
if(curlx_ascii_equal("passive", str))
return CURLFTPSSL_CCC_PASSIVE;
if(curlx_strequal("active", str))
if(curlx_ascii_equal("active", str))
return CURLFTPSSL_CCC_ACTIVE;
warnf(config, "unrecognized ftp CCC method '%s', using default\n", str);
return CURLFTPSSL_CCC_PASSIVE;
@ -1765,7 +1765,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
if(curlx_strnequal(aliases[j].lname, word, fnam)) {
longopt = TRUE;
numhits++;
if(curlx_strequal(aliases[j].lname, word)) {
if(curlx_ascii_equal(aliases[j].lname, word)) {
parse = aliases[j].letter;
hit = j;
numhits = 1; /* a single unique hit */
@ -2450,7 +2450,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'f': /* crypto engine */
GetStr(&config->engine, nextarg);
if (config->engine && curlx_strequal(config->engine,"list"))
if (config->engine && curlx_ascii_equal(config->engine,"list"))
config->list_engines = TRUE;
break;
case 'g': /* CA info PEM file */