projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added test-refile.
[mmh]
/
sbr
/
dtime.c
diff --git
a/sbr/dtime.c
b/sbr/dtime.c
index
aa34621
..
6acfaeb
100644
(file)
--- a/
sbr/dtime.c
+++ b/
sbr/dtime.c
@@
-12,6
+12,10
@@
#include <h/tws.h>
#include <time.h>
#include <h/tws.h>
#include <time.h>
+#if !defined(HAVE_STRUCT_TM_TM_GMTOFF)
+extern long timezone;
+#endif
+
/*
* The number of days in the year, accounting for leap years
*/
/*
* The number of days in the year, accounting for leap years
*/
@@
-99,8
+103,14
@@
dlocaltime (time_t *clock)
if (tm->tm_isdst)
tw.tw_flags |= TW_DST;
if (tm->tm_isdst)
tw.tw_flags |= TW_DST;
+#ifdef HAVE_STRUCT_TM_TM_GMTOFF
+ tw.tw_zone = tm->tm_gmtoff / 60;
+ if (tm->tm_isdst) /* if DST is in effect */
+ tw.tw_zone -= 60; /* reset to normal offset */
+#else
tzset();
tw.tw_zone = -(timezone / 60);
tzset();
tw.tw_zone = -(timezone / 60);
+#endif
tw.tw_flags &= ~TW_SDAY;
tw.tw_flags |= TW_SEXP;
tw.tw_flags &= ~TW_SDAY;
tw.tw_flags |= TW_SEXP;
@@
-270,7
+280,10
@@
dasctime (struct tws *tw, int flags)
/*
/*
- * Get the timezone for given offset
+ * Get the timezone for given offset.
+ * This used to return a three-letter abbreviation for some offset
+ * values. But not many. Until there's a good way to do that,
+ * return the string representation of the numeric offset.
*/
char *
*/
char *
@@
-287,11
+300,6
@@
dtimezone (int offset, int flags)
hours = offset / 60;
}
hours = offset / 60;
}
- if (!(flags & TW_ZONE) && mins == 0) {
- tzset();
- return ((flags & TW_DST) ? tzname[1] : tzname[0]);
- }
-
#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
if (flags & TW_DST)
hours += 1;
#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
if (flags & TW_DST)
hours += 1;