2011-06-27 Tristan Gingold <gingold@adacore.com>
* vms-misc.c (vms_time_to_time_t): Adjust overflow detection. Add comment.
This commit is contained in:
parent
bd82534596
commit
62a35308be
@ -1,3 +1,8 @@
|
||||
2011-06-27 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* vms-misc.c (vms_time_to_time_t): Adjust overflow detection.
|
||||
Add comment.
|
||||
|
||||
2011-06-25 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_backend_post_process_headers): Don't
|
||||
|
@ -530,7 +530,10 @@ vms_get_module_name (const char *filename, bfd_boolean upcase)
|
||||
- 100ns granularity
|
||||
- epoch is Nov 17, 1858.
|
||||
Here has the constants and the routines used to convert VMS from/to UNIX time.
|
||||
The conversion routines don't assume 64 bits arithmetic. */
|
||||
The conversion routines don't assume 64 bits arithmetic.
|
||||
|
||||
Here we assume that the definition of time_t is the UNIX one, ie integer
|
||||
type, expressing seconds since the epoch. */
|
||||
|
||||
/* UNIX time granularity for VMS, ie 1s / 100ns. */
|
||||
#define VMS_TIME_FACTOR 10000000
|
||||
@ -546,6 +549,7 @@ vms_time_to_time_t (unsigned int hi, unsigned int lo)
|
||||
unsigned int tmp;
|
||||
unsigned int rlo;
|
||||
int i;
|
||||
time_t res;
|
||||
|
||||
/* First convert to seconds. */
|
||||
tmp = hi % VMS_TIME_FACTOR;
|
||||
@ -562,14 +566,18 @@ vms_time_to_time_t (unsigned int hi, unsigned int lo)
|
||||
lo = rlo;
|
||||
|
||||
/* Return 0 in case of overflow. */
|
||||
if (lo > VMS_TIME_OFFSET && hi > 1)
|
||||
if (hi > 1
|
||||
|| (hi == 1 && lo >= VMS_TIME_OFFSET))
|
||||
return 0;
|
||||
|
||||
/* Return 0 in case of underflow. */
|
||||
if (lo < VMS_TIME_OFFSET)
|
||||
if (hi == 0 && lo < VMS_TIME_OFFSET)
|
||||
return 0;
|
||||
|
||||
return lo - VMS_TIME_OFFSET;
|
||||
res = lo - VMS_TIME_OFFSET;
|
||||
if (res <= 0)
|
||||
return 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Convert a time_t to a VMS time. */
|
||||
|
Loading…
Reference in New Issue
Block a user