42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
* @"" literal.
*/
if ((retCString = malloc(([self UTF8StringLength] * 3) + 1)) == NULL)
@throw [OFOutOfMemoryException exceptionWithRequestedSize:
([self UTF8StringLength] * 3) + 1];
for (i = 0; *string != '\0'; string++) {
if (isalnum((int)*string) || *string == '-' || *string == '_' ||
*string == '.' || *string == '~')
retCString[i++] = *string;
else {
uint8_t high, low;
high = *string >> 4;
low = *string & 0x0F;
|
>
>
>
>
>
>
|
|
>
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
* @"" literal.
*/
if ((retCString = malloc(([self UTF8StringLength] * 3) + 1)) == NULL)
@throw [OFOutOfMemoryException exceptionWithRequestedSize:
([self UTF8StringLength] * 3) + 1];
for (i = 0; *string != '\0'; string++) {
/*
* '+' is also listed in RFC 1738, however, '+' is sometimes
* interpreted as space in HTTP. Therefore always escape it to
* make sure it's always interpreted correctly.
*/
if (!(*string & 0x80) && (isalnum((int)*string) ||
*string == '$' || *string == '-' || *string == '_' ||
*string == '.' || *string == '!' || *string == '*' ||
*string == '(' || *string == ')' || *string == ','))
retCString[i++] = *string;
else {
uint8_t high, low;
high = *string >> 4;
low = *string & 0x0F;
|