[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Character conversion
(With exaggerated patience.) Yes, you are absolutely right.
However, HTTPAPI does not call that routine when translating a user's
data as it's sending it out. It calls a routine that allocates dynamic
memory, and extends the memory as needed to handle up to 16MB of output
data if the translation requires it.
HTTPAPI does not, however, use that routine throughout because it's less
efficient than reusing the same memory buffer, and for much of the HTTP
protocol, it's unnecessary.
You may have noticed that FTPAPI has two translation routines (both are
wrong.) ToASCII and ToASCIIF. The idea is that the _file_ data might
be translated to a different CCSID than the actual FTP protocol
requires, so it has two separate routines.
HTTPAPI has the same thing -- but the routine for _user_data_ ("file
data") doesn't have the problem that FTPAPI has. It expands the memory
buffer as needed.
Only the routine for _protocol_ data has the problem you describe -- and
I can't see why Kaj Julius would be using that routine. So either
there's a bug, as you say, in which case I need to know _where_ that bug
is, and how to reproduce it.
Or there's no bug, and Kaj is manually calling the routine to convert to
ASCII, but has picked the wrong routine.
So I need input from Kaj as to what he's doing.
You & I bickering is pointless... especially since we seem to be on
completely different topics. I'm talking about helping Kaj with
HTTPAPI, and you seem to be insisting that FTPAPI is wrong (as if that
somehow proves that HTTPAPI is also wrong) Please... this is taking up
my time. FTPAPI is wrong, no question about it... can we move on to
helping Kaj instead of dwelling on it?
On 11/15/2010 12:49 PM, Dennis Lovelady wrote:
> To elaborate: "common source" in this case means "common origin."
>
> Also, it occurs to me that I didn't point out the real problem here. In
> this case, toASCIIF contains the following statement:
>
> return iconv(wkDsFileASC: %addr(p_buffer): peBufSize
> : %addr(p_buffer): peBufSize) ;
>
> Note that peBufSize in this case is the amount of data in the buffer, rather
> than buffer size. Say we have 16 bytes in. Now iconv thinks we have a
> 16-byte output buffer. Fine, it will write as many characters as it can to
> the output (which is not enough in a SBCS->DBCS translation), and will be
> forced to stop early. All is successful as far as that goes, so it will
> return with zero, and the fact that the whole of the input was not processed
> is ignored.
>
> Maybe I'm wrong, though. How do _you_ say this will function?
>
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------