[Help-gnutls] Re: Recognising error codes with an unsigned size_t

Simon Josefsson simon at josefsson.org
Thu Nov 13 09:33:48 CET 2008

Michael Weiser <michael at weiser.dinsnail.net> writes:

> Hello,
> I'm writing a small program using gnutls and its gnutls_record_{recv,send}()
> interface. They return a size_t which holds either the number of bytes
> transferred or a negative error code.

No, they return a ssize_t.

> But on Mac OS X size_t is an unsigned long which gives me grief when
> trying to recognise an error code as such.
> For a simple read() call this is straightforward to fix: Instead of
> 	if (bytes < 0)
> I now use
> 	if (bytes == -1)
> Obviously this doesn't work for gnutls error codes which may range from
> -1 to -65500. Something like
> 	if ((signed long)bytes < 0)
> seems just as wrong to me. Am I missing the obvious here?

I think you are using the wrong type for the 'bytes' variable, use
'ssize_t' which is guaranteed to be signed.  Then the '< 0' comparison
should work.


More information about the Gnutls-help mailing list