Michael Weiser <[EMAIL PROTECTED]> 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.

/Simon


_______________________________________________
Help-gnutls mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gnutls

Reply via email to