Hello,
--- Tim Waugh <[EMAIL PROTECTED]> wrote:
> On Thu, Apr 14, 2005 at 06:47:50PM +0100, Julian
> Foad wrote:
>
> > > I seem to remember that some of
> > >them are tweaked in various small ways.
> >
> > Eww. That's a recipe for breakage later.
>
> I might be wrong about it -- I really don't remember
> actually.
They are identical.
Here is an example helper function to remove that dup:
static off_t
mb_convert_offset (char* beg, off_t *offset) {
off_t bytes_left; /* return value 1 */
off_t converted_offset; /* return value 2 */
mbstate_t mbs;
memset (&mbs, '\0', sizeof (mbstate_t));
bytes_left = *offset;
converted_offset = 0;
while (bytes_left)
{
size_t mlen = mbrlen (beg + converted_offset,
bytes_left, &mbs);
if (mlen == (size_t) -1 || mlen == 0)
{
/* Incomplete character: treat as
single-byte. */
memset (&mbs, '\0', sizeof (mbstate_t));
converted_offset++; bytes_left--;
continue;
}
else if (mlen == (size_t) -2)
/* Offset points inside multibyte character:
* no good. */
break;
converted_offset += mlen;
bytes_left -= mlen;
}
*offset = converted_offset;
return bytes_left;
}
Then we can call it like this:
#ifdef MBS_SUPPORT
if (MB_CUR_MAX > 1 && !using_utf8)
bytes_left = mb_convert_offset (beg,
&offset);
#endif
beg += offset;
Claudio
---------------------------------------------------------------
Claudio Fontana - contacts
web: cmdftp.sourceforge.net/cfontana/
general purpose: sick_soul a yahoo d it
free sw development: sick_soul a users d sourceforge d net
___________________________________
Nuovo Yahoo! Messenger: E' molto pi� divertente: Audibles, Avatar, Webcam,
Giochi, Rubrica� Scaricalo ora!
http://it.messenger.yahoo.it