diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2006-10-24 10:27:23 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2006-10-24 10:27:23 +0000 |
commit | 7ea93e912bf0ef51cec2ce4e86557eef4039ce57 (patch) | |
tree | 95b8f156c4468f8cf6c920da9fe26d0cbde4edd6 /sys/kern | |
parent | 2f764f809fabf65bf551a6ab8412f74c7bcb3f32 (diff) | |
download | src-7ea93e912bf0ef51cec2ce4e86557eef4039ce57.tar.gz src-7ea93e912bf0ef51cec2ce4e86557eef4039ce57.zip |
Better naming of fattime conversion functions, they do convert to timespec
after all.
Add 'utc' argument to control if fattimestamps are on UTC or local timezone
calendar.
Notes
Notes:
svn path=/head/; revision=163646
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_fattime.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/kern/subr_fattime.c b/sys/kern/subr_fattime.c index 2a280e52e862..c3669ada2b81 100644 --- a/sys/kern/subr_fattime.c +++ b/sys/kern/subr_fattime.c @@ -48,9 +48,8 @@ * a century ago, already then. Ironically "NT" was an abbreviation of * "New Technology". Anyway... * - * The functions below always assume UTC time, and the calling code - * must apply the local timezone offset as appropriate. Unless special - * conditions apply, the utc_offset() function be used for this. + * The 'utc' argument determines if the resulting FATTIME timestamp + * should b on the UTC or local timezone calendar. * * The conversion functions below cut time into four-year leap-second * cycles rather than single years and uses table lookups inside those @@ -136,12 +135,14 @@ static const struct { void -timet2fattime(struct timespec *tsp, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp) +timespec2fattime(struct timespec *tsp, int utc, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp) { time_t t1; unsigned t2, l, m; t1 = tsp->tv_sec; + if (!utc) + t1 -= utc_offset(); if (dhp != NULL) *dhp = (tsp->tv_sec & 1) * 100 + tsp->tv_nsec / 10000000; @@ -214,7 +215,7 @@ static const uint16_t daytab[64] = { }; void -fattime2timet(unsigned dd, unsigned dt, unsigned dh, struct timespec *tsp) +fattime2timespec(unsigned dd, unsigned dt, unsigned dh, int utc, struct timespec *tsp) { unsigned day; @@ -245,6 +246,8 @@ fattime2timet(unsigned dd, unsigned dt, unsigned dh, struct timespec *tsp) day += T1980; tsp->tv_sec += DAY * day; + if (!utc) + tsp->tv_sec += utc_offset(); } #ifdef TEST_DRIVER |