On Sunday 30 September 2012 17:18:32 Aris Adamantiadis wrote:
> > Replacing ssize_t by int32_t is an ABI breakage under 64 bits platforms
> > Replacing ssize_t by int64_t is an ABI breakage under 32 bits platforms
> >
> > The definition of ssize_t is : the same bit count as size_t, but signed.
> >
> > Christophe
>
> Hi,
>
> I did not follow the whole thread, but based on your description, why not:
> #if (sizeof(size_t)==4)
> typedef u_int32_t ssh_ssize_t
> #else
> typedef u_int64_t ssh_ssize_t
> #endif
>
> I also wonder if ssize_t is the appropriate type for the return of such
> functions. The libc use int for read(2) for a reason.
> When did we introduce them in libssh ? if it's a recent patch we could
> simply go back to an int.
The cound is what ssh_string_len() returns. This is a 32bit unsigned int. So
we need a type which can hold the value and also -1 for the error return code.
So and int64_t would be the correct return type here.
As ssize_t is always int64 on unix cause we build with lfs support. It should
not really be an ABI breakage.
-- andreas
--
Andreas Schneider GPG-ID: F33E3FC6
www.cryptomilk.org [email protected]