Tor Arntsen <[email protected]> writes:

> On Mon, Jun 7, 2010 at 06:35, Peter Stuge <[email protected]> wrote:
>> Guenter wrote:
>>> we can cast to int until year 2038
>>
>> I don't mind that cast, but it could be nice to add /* XXX: Y2k38 */
>> nearby.
>
> Hm, one of those unfortunate API problems.. it's a parameter to a
> public function. The correct fix is of course to change
> seconds_to_next to time_t *.

No, time_t should only be used for absolute time values, not time
intervals.  The "standard" type in C for time intervals is 'double'
(return value of 'difftime') but since we only use the variable for
whole seconds, an 'unsigned' should be fine.

> No can do here though. In those cases I personally prefer to fix the
> internal types, and copy from/to the API parameter explictly - it
> makes things pretty obvious then. But that's just me.

Yup, me too.

Isn't a better approach something like this:

        *seconds_to_next = (int) difftime (session->keepalive_last_sent, now)
            + session->keepalive_interval;

Or possibly just

        *seconds_to_next = (int) (session->keepalive_last_sent - now)
            + session->keepalive_interval;

?

/Simon
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to