summaryrefslogtreecommitdiff
path: root/missing
diff options
context:
space:
mode:
Diffstat (limited to 'missing')
-rw-r--r--missing/strftime.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/missing/strftime.c b/missing/strftime.c
index 02fdc5ade4..5522226ec1 100644
--- a/missing/strftime.c
+++ b/missing/strftime.c
@@ -118,12 +118,16 @@ extern char *strchr();
#if !defined(OS2) && !defined(MSDOS) && defined(HAVE_TZNAME)
extern char *tzname[2];
extern int daylight;
-#if defined SOLARIS || defined __hpux
+#ifdef SOLARIS
extern long timezone, altzone;
#else
+#ifdef __hpux
+extern long timezone;
+#else
extern int timezone, altzone;
#endif
#endif
+#endif
#undef min /* just in case */
@@ -189,6 +193,11 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
extern char *timezone();
struct timeval tv;
struct timezone zone;
+#else
+#ifdef __hpux
+ struct timeval tv;
+ struct timezone zone;
+#endif
#endif /* HAVE_TZNAME */
#endif /* HAVE_TM_NAME */
#endif /* HAVE_TM_ZONE */
@@ -418,7 +427,12 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
* Systems with tzname[] probably have timezone as
* secs west of GMT. Convert to mins east of GMT.
*/
+#ifdef __hpux
+ gettimeofday(&tv, &zone);
+ off = -zone.tz_minuteswest;
+#else
off = -(daylight ? timezone : altzone) / 60;
+#endif
#else /* !HAVE_TZNAME */
gettimeofday(&tv, &zone);
off = -zone.tz_minuteswest;