guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Have string ports honor ‘%default- port-encoding’


From: Ludovic Courtès
Subject: Re: [PATCH] Have string ports honor ‘%default- port-encoding’
Date: Tue, 05 Jan 2010 10:14:14 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Hello,

Mike Gran <address@hidden> writes:

> When you write...
>
> +  /* Create a copy of STR in the encoding of Z.  */
> +  buf = scm_to_stringn (str, &str_len, pt->encoding,
> +            SCM_FAILED_CONVERSION_ERROR);
> +  /* FIXME: strdup doesn't do the right thing if BUF contains zeros, but we
> +    don't know the size in bytes of STR.  */
> +  c_str = scm_gc_strdup (buf, "strport");
> +  free (buf);
>
> ... isn't the returned value str_len the length in bytes of buf?

The (undocumented) ‘scm_to_stringn ()’ returns the number of characters,
AFAICS.

> I think you could avoid the strdup call, since it could fail, for
> example, for UTF-32 strings of more than one character.

Yes, that sucks.  Probably we need a function to known the number of
bytes of a string.  Thoughts?

> Also, in the big scheme of things, I wonder if the name "string port"
> is misleading now.  Strings can contain the whole codepoint range.  
> But string ports can't store the whole range depending on their encoding.
> (That's what the "UTF-8" hack was about.)

Yes, it’s tricky.  The problem is that currently we can send both
textual and binary data to a given port (unlike the R6RS port API, which
judiciously distinguishes textual and binary ports.)  Because of that, I
think string ports can’t just use a fixed encoding.

What do you think?

Thanks,
Ludo’.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]