tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
mktime(3) return value
(Previously posted to netbsd-users@ but probably more appropriate here)
While looking at more of our old src/regress/lib/libc regression tests, I
noticed that mktime(3) doesn't seem to work correectly.
The following code snippet demonstrates the problem
{
time_t rc;
struct tm tms;
(void)memset(&tms, 0, sizeof(tms));
tms.tm_year = ~0;
errno = 0;
rc = mktime(&tms);
}
Given the rather absurd value of tms.tm_year, you would certainly expect an
error. mktime(3) does indeed set errno to EOVERFLOW, however it does set the
return value to (time_t)-1 as is documented in the man page:
The mktime() function returns the specified time since the Epoch
as a time_t type value. If the time cannot be represented, then
mktime() returns (time_t)-1 setting the global variable errno to
indicate the error.
(If it matters, the actual return value from mktime is 2,054,384,896 which is
0x7a736d00)
So, my question is simple:
Is the man page wrong about returning (time_t)-1? Or is the return value
actually a correct representation of tm_year = ~0 ?
-------------------------------------------------------------------------
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net |
| Kernel Developer | | pgoyette at netbsd.org |
-------------------------------------------------------------------------
Home |
Main Index |
Thread Index |
Old Index