Re: __TIME_MIN/__TIME_MAX
From: Jacques Vidrine (nectar_at_freebsd.org)
Date: 11/15/03
- Previous message: Bruce Evans: "Re: __TIME_MIN/__TIME_MAX"
- In reply to: Bruce Evans: "Re: __TIME_MIN/__TIME_MAX"
- Next in thread: Terry Lambert: "Re: __TIME_MIN/__TIME_MAX"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sat, 15 Nov 2003 07:04:04 -0600 To: Bruce Evans <bde@zeta.org.au>
Bruce Evans said the following on 11/15/03 2:17 AM:
> On Fri, 14 Nov 2003, Jacques Vidrine wrote:
>> So this kind of thing OK?
>>
>> long n;
>> time_t t;
>> errno = 0;
>> n = strtoul(...);
>> if (errno == ERANGE || (long)(t = n) != n)
>> /* out of range */;
>
>
> Not quite like that. strtoul() returns an unsigned long whose value may
> be lost by assigning it to a plain long. Mixtures of signed and unsigned
> types are tricky to handle as usual. Suppose we make n unsigned long
> and it has value ULONG_MAX, and time_t is long, then (t = n) == n,
> but t doesn't actually represent n (casting (t = n) to long or unsigned
> long doesn't help). So it seems to be necessary to be aware that time_t
> is signed and either use strtol() initially or check that t >= 0 if
> n is unsigned long. If time_t is actually signed then we may get a GCC
> warning for this check...
Doh, sorry, that's a typo. I meant strtol (which is what is currently
used in the relevant portion of libc--- strptime.c, BTW). Negative
values must be allowed here.
Cheers,
-- Jacques Vidrine NTT/Verio SME FreeBSD UNIX Heimdal nectar@celabo.org jvidrine@verio.net nectar@freebsd.org nectar@kth.se _______________________________________________ freebsd-arch@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-arch To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
- Previous message: Bruce Evans: "Re: __TIME_MIN/__TIME_MAX"
- In reply to: Bruce Evans: "Re: __TIME_MIN/__TIME_MAX"
- Next in thread: Terry Lambert: "Re: __TIME_MIN/__TIME_MAX"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|