On Thu, Aug 28, 2008 at 9:50 AM, Mark Aufflick
<[EMAIL PROTECTED]> wrote:
> Hi all,
>
> If I Ns_Log() the data in a (char *) I can clearly see that it
> contains newlines, and I can also verify that it contains nulls with
> memchr.
>
> I have tried any number of ways to turn it into a tcl object, eg:
>
>            objPtr = Tcl_NewByteArrayObj(str, length);


This is the right way to do it.


> Whether the tcl code then does an ns_log, ns_return (which I
> know isn't supposed to be binary safe) or ns_write, i get all the
> newlines converted into \n (ie. two characters \ then n) and chunks of
> binary get converted to unicode characters.


In AOLserver 4.5, ns_write is the only command that accepts a binary data.

You also need to be careful you don't accidentally change it's type
once you've created it.

    set blob [myblobcmd]
    set length [string length $blob]
    # blob now garbled utf8 :-(


> I can see from Tcl_AppendToObj that that is supposed to happen there,
> but how can I output a byte array object without it being converted to
> utf8?


Something like...

    ns_startcontent -type application/octet-stream
    ns_conn write_encoded false
    ns_write $blob


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> 
with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to