@@ -760,18 +760,17 @@ } - (OFString*)tryReadTillDelimiter: (OFString*)delimiter encoding: (of_string_encoding_t)encoding { - const char *delimiterUTF8String; + const char *delimiterCString; size_t i, j, delimiterLength, bufferLength, retLength; char *retCString, *buffer, *newCache; OFString *ret; - /* FIXME: Convert delimiter to specified charset */ - delimiterUTF8String = [delimiter UTF8String]; - delimiterLength = [delimiter UTF8StringLength]; + delimiterCString = [delimiter cStringUsingEncoding: encoding]; + delimiterLength = [delimiter lengthOfBytesUsingEncoding: encoding]; j = 0; if (delimiterLength == 0) @throw [OFInvalidArgumentException exceptionWithClass: [self class] @@ -778,11 +777,11 @@ selector: _cmd]; /* Look if there's something in our cache */ if (!waitingForDelimiter && cache != NULL) { for (i = 0; i < cacheLength; i++) { - if (cache[i] != delimiterUTF8String[j++]) + if (cache[i] != delimiterCString[j++]) j = 0; if (j == delimiterLength || cache[i] == '\0') { if (cache[i] == '\0') delimiterLength = 1; @@ -833,11 +832,11 @@ bufferLength = [self lowlevelReadIntoBuffer: buffer length: of_pagesize]; /* Look if there's a delimiter or \0 */ for (i = 0; i < bufferLength; i++) { - if (buffer[i] != delimiterUTF8String[j++]) + if (buffer[i] != delimiterCString[j++]) j = 0; if (j == delimiterLength || buffer[i] == '\0') { if (buffer[i] == '\0') delimiterLength = 1;