tech-userlevel archive

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

Re: iconv(3) protype mismatch with POSIX

On 16.06.2016 05:28, David Holland wrote:
> On Sun, May 29, 2016 at 03:54:29AM +0200, Kamil Rytarowski wrote:
>  > This is an interesting exercise to use C11.. however:
>  > 1. Not all ports moved to gcc 4.9+,
>  > 2. pcc doesn't support it,
>  > 3. it won't work as a valid and acceptable C++ code.
>  > 4. Many software expects system headers to be C89, GNU89 etc, and
>  > doesn't request C11.
> None of that matters, it just needs to be wrapped in suitable ifdefs.

All of them matters to me and C11 in a public-header is no-go.

Also if we allow the POSIX version in our headers then the non-complaint
one is pointless, as no modern, popular and general-purpose OS is in
"our" camp with "improved" API.

I keep paying this debt all over again in new software that never
assumes pre-2007 or so version of iconv(3) in Linux. Our patches for it
in pkgsrc are pending for years (like in qt4) nobody bothered to even
upstream "better" iconv(3).

>  > How about the Solaris 11 move? Leave "extern" option for those who rally
>  > want it and SUS/POSIX for others.
> "extern" option?


iconv - code conversion function



#include <iconv.h>

extern size_t iconv(iconv_t cd, const char **restrict inbuf,
size_t *restrict inbytesleft, char **restrict outbuf,
size_t *restrict outbytesleft);

#include <iconv.h>

size_t iconv(iconv_t cd, char **restrict inbuf,
size_t *restrict inbytesleft, char **restrict outbuf,
size_t *restrict outbytesleft);

These calls with and without const should be ABI compatible.

Home | Main Index | Thread Index | Old Index