More encoding tidyups

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@9565 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2001-04-12 09:29:16 +00:00
parent 5c2f1a9a9d
commit 5e7105d2f7
4 changed files with 81 additions and 65 deletions

View file

@ -12,6 +12,8 @@
default cString encoding ... the default cString encoding must
consist of 7 or 8 bit characters, and must contain ASCII as a
subset. We really should think of a generalised test for that.
Use GetDefEncoding() throughout rather than defaultCStringEncoding.
* Source/GSString.m: Use GetDefEncoding() to get c string encoding.
2001-04-11 Nicola Pero <nicola@brainstorm.co.uk>

View file

@ -185,6 +185,15 @@
<code>NSISOLatin1StringEncoding</code> is assumed.
</p>
<p>
The default C string encoding must be a characterset containing
7 or 8 bit characters, and where the characters are a superset
of the 7-bit ASCII characterset. In particular, this means
that NSUTF8StringEncoding and NSUnicodeStringEncoding are not
permissable.
</p>
<hr>
<h3><a name ="method-2">localizedNameOfStringEncoding:</a></h3>

View file

@ -226,6 +226,8 @@ setup()
if (beenHere == NO)
{
extern NSStringEncoding GetDefEncoding();
beenHere = YES;
/*
@ -262,7 +264,7 @@ setup()
/*
* Cache the default string encoding.
*/
defEnc = [NSString defaultCStringEncoding];
defEnc = GetDefEncoding();
}
}

View file

@ -177,80 +177,83 @@ NSStringEncoding *GetAvailableEncodings()
NSStringEncoding
GetDefEncoding()
{
char *encoding;
unsigned int count;
NSStringEncoding ret;
NSStringEncoding tmp;
NSStringEncoding *availableEncodings;
availableEncodings = GetAvailableEncodings();
encoding = getenv("GNUSTEP_STRING_ENCODING");
if (encoding != 0)
if (defEnc == GSUndefinedEncoding)
{
count = 0;
while (str_encoding_table[count].enc
&& strcmp(str_encoding_table[count].ename,encoding))
char *encoding;
unsigned int count;
NSStringEncoding tmp;
NSStringEncoding *availableEncodings;
availableEncodings = GetAvailableEncodings();
encoding = getenv("GNUSTEP_STRING_ENCODING");
if (encoding != 0)
{
count++;
}
if (str_encoding_table[count].enc)
{
ret = str_encoding_table[count].enc;
if ((ret == NSUnicodeStringEncoding)
|| (ret == NSUTF8StringEncoding)
|| (ret == NSSymbolStringEncoding))
count = 0;
while (str_encoding_table[count].enc
&& strcmp(str_encoding_table[count].ename,encoding))
{
fprintf(stderr, "WARNING: %s - encoding not supported as "
"default c string encoding.\n", encoding);
fprintf(stderr, "NSISOLatin1StringEncoding set as default.\n");
ret = NSISOLatin1StringEncoding;
count++;
}
else /*encoding should be supported but is it implemented?*/
if (str_encoding_table[count].enc)
{
count = 0;
tmp = 0;
while (availableEncodings[count] != 0)
defEnc = str_encoding_table[count].enc;
if ((defEnc == NSUnicodeStringEncoding)
|| (defEnc == NSUTF8StringEncoding)
|| (defEnc == NSSymbolStringEncoding))
{
if (ret != availableEncodings[count])
{
tmp = 0;
}
else
{
tmp = ret;
break;
}
count++;
}
if (tmp == 0 && ret != NSISOLatin1StringEncoding)
{
fprintf(stderr, "WARNING: %s - encoding not yet "
"implemented.\n", encoding);
fprintf(stderr, "WARNING: %s - encoding not supported as "
"default c string encoding.\n", encoding);
fprintf(stderr,
"NSISOLatin1StringEncoding set as default.\n");
ret = NSISOLatin1StringEncoding;
defEnc = NSISOLatin1StringEncoding;
}
else /*encoding should be supported but is it implemented?*/
{
count = 0;
tmp = 0;
while (availableEncodings[count] != 0)
{
if (defEnc != availableEncodings[count])
{
tmp = 0;
}
else
{
tmp = defEnc;
break;
}
count++;
}
if (tmp == 0 && defEnc != NSISOLatin1StringEncoding)
{
fprintf(stderr,
"WARNING: %s - encoding not yet implemented.\n",
encoding);
fprintf(stderr,
"NSISOLatin1StringEncoding set as default.\n");
defEnc = NSISOLatin1StringEncoding;
}
}
}
else /* encoding not found */
{
fprintf(stderr,
"WARNING: %s - encoding not supported.\n", encoding);
fprintf(stderr, "NSISOLatin1StringEncoding set as default.\n");
defEnc = NSISOLatin1StringEncoding;
}
}
else /* encoding not found */
else /* environment var not found */
{
fprintf(stderr, "WARNING: %s - encoding not supported.\n", encoding);
fprintf(stderr, "NSISOLatin1StringEncoding set as default.\n");
ret = NSISOLatin1StringEncoding;
/* shouldn't be required. It really should be in UserDefaults - asf */
//fprintf(stderr, "WARNING: GNUSTEP_STRING_ENCODING environment");
//fprintf(stderr, " variable not found.\n");
//fprintf(stderr, "NSISOLatin1StringEncoding set as default.\n");
defEnc = NSISOLatin1StringEncoding;
}
}
else /* environment var not found */
{
/* shouldn't be required. It really should be in UserDefaults - asf */
//fprintf(stderr,"WARNING: GNUSTEP_STRING_ENCODING environment found\n");
//fprintf(stderr, "NSISOLatin1StringEncoding set as default.\n");
ret = NSISOLatin1StringEncoding;
}
// Cache the encoding
defEnc = ret;
return ret;
return defEnc;
}
NSString*
@ -621,7 +624,7 @@ chartouni(char c)
{
if (defEnc == GSUndefinedEncoding)
{
defEnc = [NSString defaultCStringEncoding];
defEnc = GetDefEncoding();
}
return encode_chartouni(c, defEnc);
}
@ -631,7 +634,7 @@ unitochar(unichar u)
{
if (defEnc == GSUndefinedEncoding)
{
defEnc = [NSString defaultCStringEncoding];
defEnc = GetDefEncoding();
}
return encode_unitochar(u, defEnc);
}
@ -641,7 +644,7 @@ strtoustr(unichar *u1, const char *s1, int size)
{
if (defEnc == GSUndefinedEncoding)
{
defEnc = [NSString defaultCStringEncoding];
defEnc = GetDefEncoding();
}
return encode_strtoustr(u1, s1, size, defEnc);
@ -652,7 +655,7 @@ ustrtostr(char *s2, unichar *u1, int size)
{
if (defEnc == GSUndefinedEncoding)
{
defEnc = [NSString defaultCStringEncoding];
defEnc = GetDefEncoding();
}
return encode_ustrtostr(s2, u1, size, defEnc);