# Timezone $B4X?t$,(B cygwin $B$G8+$D$+$j$^$;$s(B

**URL:** <https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931>\
**Category:** Development\
**Created:** [December 12, 2007, 9:29pm UTC](https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931 "2007-12-12T21:29:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![drenovac](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ea666f/32.png) [@drenovac](https://www.ruby-forum.com/u/drenovac)\
**Post date:** [December 12, 2007, 9:29pm UTC](https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931/1 "2007-12-12T21:29:43Z")

</div>

e$B%k%S3+H/\<T$N3’$5$s!"e(B

e$B:G?7$Ne(B HEAD e$B$Ge(B make  
e$B$7$h$&$H$7$?$i\<!$N$h$&$J%(%i!\<$K$J$j$^$7$?!#e(B

missing/strftime.c:465: undefined reference to `\_timezone’

strftime.c e$B$Oe(B 7e$B7nEv$?$j$+$iJQ99L5$7$G!"e(Bruby  
e$B$N$;$$$G$O$J$$$+$H;W$$$^$9!#e(B  
strftime.c e$B$r6/@)E\*$K%3%s%Q%$%k$9$k$H\<!$N%(%i!\<$K$J$j$^$9!#e(B  
./missing/strftime.c: In function `strftime’:  
./missing/strftime.c:193: error: ‘timezone’ redeclared as different kind  
of symbol  
/usr/include/cygwin/time.h:33: error: previous declaration of ‘timezone’  
was here

e$B860x$r9M$($^$9$H!“:#F|5W$7$V$j$Ke(B cygwin  
e$B$r99?7$7$?$3$H$,$”$j$^$9!#e(B  
e$B2?$,$I$&JQ$o$C$?$+$O$h$/J,$+$j$^$;$s$,!“e(Bcygwin e$B$Ne(B CVS  
e$B$rD4$Y$k$He(B  
[http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/include/cygwin/time.h?cvsroot=src](http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/include/cygwin/time.h?cvsroot=src)  
e$BEv$?$j$K:G6a$:$$$V$s?'!9JQ99$,$”$j$^$7$?!#e(B

e$B\<!$NJQ99$G%3%s%Q%$%k$O$H$j$“$($:$G$-$^$7$?$,!”$3$l$Oe(B  
e$B0l;~A\<CV$G!"%3%\_%C%H$O$7$J$$J}$,$$$$$H;W$$$^$9!#e(B

e$B59$7$/$\*4j$$$7$^$9!#e(B Martin.

# Index: strftime.c

— strftime.c (revision 14192)  
+++ strftime.c (working copy)  
@@ -190,7 +190,7 @@  
#ifndef HAVE\_TM\_ZONE  
#ifndef HAVE\_TM\_NAME  
#ifndef HAVE\_TZNAME

- 

```
  extern char *timezone();

```

- 

```
  /*extern char *timezone();*/
  struct timeval tv;
  struct timezone zone;

```

#else  
@@ -462,7 +462,7 @@  
#else  
gettimeofday(& tv, & zone);  
#ifdef **CYGWIN**

- 

```
                  strcpy(tbuf, timezone());

```

- 

```
                  /* strcpy(tbuf, timezone()); */ *tbuf = 0; /* 

```

mjd: quick and dirty fix \*/  
#else  
strcpy(tbuf, timezone(zone.tz\_minuteswest,  
timeptr-\>tm\_isdst \> 0));

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University  
#-#-# [http://www.sw.it.aoyama.ac.jp](http://www.sw.it.aoyama.ac.jp)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![drenovac](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ea666f/32.png) [@drenovac](https://www.ruby-forum.com/u/drenovac)\
**Post date:** [December 13, 2007, 10:23am UTC](https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931/2 "2007-12-13T10:23:58Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32577] Re: timezone e$B4X?t$,e(B cygwin  
e$B$G8+$D$+$j$^$;$se(B”  
on Thu, 13 Dec 2007 17:41:21 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$?$@!"e(Btimezonee$B$NJQ99$K$D$$$F$Oe(BPOSIXe$B$H$N8\_49@-$N$?$a$H;W$o$l$k$Ne(B  
|e$B$G!"La$5$l$k$3$H$O$J$$$G$7$g$&!#e(B

e$B$G$O!"%3%\_%C%H$7$F$/$@$5$$!#e(B

---

<div class="post-metadata">

**Author:** ![drenovac](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ea666f/32.png) [@drenovac](https://www.ruby-forum.com/u/drenovac)\
**Post date:** [December 13, 2007, 9:42am UTC](https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931/3 "2007-12-13T09:42:58Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 11 Dec 2007 16:24:21 +0900,  
Martin D. wrote in [ruby-dev:32536]:

> e$B860x$r9M$($^$9$H!“:#F|5W$7$V$j$Ke(B cygwin e$B$r99?7$7$?$3$H$,$”$j$^$9!#e(B  
> e$B2?$,$I$&JQ$o$C$?$+$O$h$/J,$+$j$^$;$s$,!“e(Bcygwin e$B$Ne(B CVS e$B$rD4$Y$k$He(B  
> [http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/include/cygwin/time.h?cvsroot=src](http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/include/cygwin/time.h?cvsroot=src)  
> e$BEv$?$j$K:G6a$:$$$V$s?'!9JQ99$,$”$j$^$7$?!#e(B

e$B$o$?$J$Y$5$s$K$h$k$H!“:G6a$OIQHK$KJQ99$,F~$C$F$$$k$N$G!”:#$O\<j$re(B  
e$B=P$5$J$$$[$&$,$$$$$@$m$&!"$@$=$&$G$9!#e(B

e$B$?$@!"e(Btimezonee$B$NJQ99$K$D$$$F$Oe(BPOSIXe$B$H$N8\_49@-$N$?$a$H;W$o$l$k$Ne(B  
e$B$G!"La$5$l$k$3$H$O$J$$$G$7$g$&!#e(B

# Index: configure.in

— configure.in (revision 14210)  
+++ configure.in (working copy)  
@@ -437,5 +437,4 @@ human\*) ac\_cv\_func\_getpgrp\_void=yes  
beos\*) ac\_cv\_func\_link=no;;  
cygwin\*) rb\_cv\_have\_daylight=no

- ac\_cv\_var\_tzname=no  
ac\_cv\_func\_\_setjmp=no  
ac\_cv\_func\_setitimer=no  
@@ -609,5 +608,5 @@ AC\_CHECK\_FUNCS(fmod killpg wait4 waitpid  
setsid telldir seekdir fchmod cosh sinh tanh log2 round  
setuid setgid daemon select\_large\_fdset setenv unsetenv\
- 

```
         mktime timegm clock_gettime)

```

- 

```
   mktime timegm clock_gettime gettimeofday)

```

AC\_ARG\_ENABLE(setreuid,  
[ --enable-setreuid use setreuid()/setregid() according  
to need even if obsolete.],  
@@ -635,4 +634,28 @@ if test “$rb\_cv\_have\_daylight” = yes; th  
AC\_DEFINE(HAVE\_DAYLIGHT)  
fi  
+AC\_DEFUN([RUBY\_CHECK\_VARTYPE], [dnl  
+AC\_CACHE\_CHECK([for external $1], rb\_cv\_var\_$1,

- [rb\_cv\_var\_$1=no
- AC\_TRY\_COMPILE([#define \_XOPEN\_SOURCE 1
- $2
- void \*t;],
- [t = &(&$1)[0];],
- [for t in $3; do
- 

```
 AC_TRY_COMPILE([#define _XOPEN_SOURCE 1

```

- 

```
   $2

```

- 

```
   extern $t $1;],

```

- 

```
   [void *t = &(&$1)[0];],

```

- 

```
   [rb_cv_var_$1=$t; break])

```

- done])])  
+if test “[$rb\_cv\_var\_]$1” != no; then
- AC\_DEFINE(HAVE\_VAR\_[]m4\_toupper($1))
- AC\_DEFINE(TYPEOF\_VAR\_[]m4\_toupper($1), $rb\_cv\_var\_$1)  
+fi])  
+RUBY\_CHECK\_VARTYPE(timezone, [#include \<time.h\>], [long int])  
+RUBY\_CHECK\_VARTYPE(altzone, [#include \<time.h\>], [long int])  
+if test “$rb\_cv\_var\_timezone” = no; then
- AC\_CHECK\_FUNCS(timezone)  
+fi
- 

AC\_CACHE\_CHECK(for negative time\_t for gmtime(3),  
rb\_cv\_negative\_time\_t,  
[AC\_TRY\_RUN([  
@@ -1214,5 +1237,5 @@ case “$target\_os” in  
AC\_CHECK\_LIB(signal, \_harderr)  
AC\_CHECK\_LIB(hmem, hmemset)

- AC\_CHECK\_FUNCS(select gettimeofday)

- AC\_CHECK\_FUNCS(select)  
AC\_CACHE\_CHECK(whether PD libc \_dtos18 fail to convert big number,  
rb\_cv\_missing\_\_dtos18,  
Index: missing/strftime.c  
===================================================================  
— missing/strftime.c (revision 14210)  
+++ missing/strftime.c (working copy)  
@@ -116,15 +116,20 @@ extern char \*strchr();  
#define range(low, item, hi) max(low, min(item, hi))

+#ifdef **CYGWIN**  
+#define DLL\_IMPORT \_\_declspec(dllimport)  
+#endif  
+#ifdef **WIN32**  
+#define DLL\_IMPORT \_\_declspec(dllimport)  
+#endif  
#if !defined(OS2) && !defined(MSDOS) && defined(HAVE\_TZNAME)  
-extern char \*tzname[2];  
-extern int daylight;  
-#ifdef SOLARIS  
-extern long timezone, altzone;  
-#else  
-#ifdef \_\_hpux  
-extern long timezone;  
-#else  
-extern int timezone, altzone;  
+extern DLL\_IMPORT char \*tzname[2];  
+#ifdef HAVE\_DAYLIGHT  
+extern DLL\_IMPORT int daylight;  
+#endif  
+#ifdef HAVE\_VAR\_TIMEZONE  
+extern DLL\_IMPORT TYPEOF\_VAR\_TIMEZONE timezone;  
#endif  
+#ifdef HAVE\_VAR\_ALTZONE  
+extern DLL\_IMPORT TYPEOF\_VAR\_ALTZONE altzone;  
#endif  
#endif  
@@ -190,14 +195,6 @@ strftime(char \*s, size\_t maxsize, const  
#ifndef HAVE\_TM\_ZONE  
#ifndef HAVE\_TM\_NAME  
-#ifndef HAVE\_TZNAME

- 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 \*/  
@@ -423,19 +420,16 @@ strftime(char _s, size\_t maxsize, const  
off = timeptr-\>tm\_gmtoff / 60;  
 #else /_ !HAVE\_TM\_ZONE \*/  
-#if HAVE\_TZNAME
- 

```
 /*

```

- 

```
  * Systems with tzname[] probably have timezone as

```

- 

```
  * secs west of GMT. Convert to mins east of GMT.

```

- 

```
  */

```

-#ifdef \_\_hpux  
+#ifdef HAVE\_GETTIMEOFDAY  
gettimeofday(&tv, &zone);  
off = -zone.tz\_minuteswest;  
#else  
+#if HAVE\_VAR\_TIMEZONE  
+#if HAVE\_VAR\_ALTZONE  
off = -(daylight ? timezone : altzone) / 60;  
+#else

- 

```
 off = -timezone / 60;

```

+#endif  
+#endif  
#endif  
-#else /\* !HAVE\_TZNAME \*/

- 

```
 gettimeofday(&tv, &zone);

```

- 

```
 off = -zone.tz_minuteswest;

```

-#endif /\* !HAVE\_TZNAME _/  
 #endif /_ !HAVE\_TM\_ZONE _/  
 #endif /_ !HAVE\_TM\_NAME \*/  
@@ -461,11 +455,13 @@ strftime(char _s, size\_t maxsize, const  
strcpy(tbuf, timeptr-\>tm\_name);  
 #else  
+#ifdef HAVE\_TIMEZONE  
gettimeofday(& tv, & zone);  
-#ifdef **CYGWIN**  
+#ifdef TIMEZONE\_VOID  
strcpy(tbuf, timezone());  
 #else  
strcpy(tbuf, timezone(zone.tz\_minuteswest,  
timeptr-\>tm\_isdst \> 0));  
-#endif  
+#endif /_ TIMEZONE\_VOID _/  
+#endif /_ HAVE\_TIMEZONE _/  
 #endif /_ HAVE\_TM\_NAME _/  
 #endif /_ HAVE\_TM\_ZONE \*/  
@@ -646,5 +642,5 @@ iso8601wknum(const struct tm \*timeptr)  
\*/

- int weeknum, jan1day, diff;

- int weeknum, jan1day;

---

<div class="post-metadata">

**Author:** ![drenovac](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ea666f/32.png) [@drenovac](https://www.ruby-forum.com/u/drenovac)\
**Post date:** [December 14, 2007, 8:49am UTC](https://www.ruby-forum.com/t/timezone-b4x-t-b-cygwin-b-g8-d-j-s-b/122931/4 "2007-12-14T08:49:43Z")

</div>

e$BCfED$5$s!"$3$s$K$A$O!#e(B

At 17:41 07/12/13, Nobuyoshi N. wrote:

> e$B$o$?$J$Y$5$s$K$h$k$H!“:G6a$OIQHK$KJQ99$,F~$C$F$$$k$N$G!”:#$O\<j$re(B  
> e$B=P$5$J$$$[$&$,$$$$$@$m$&!"$@$=$&$G$9!#e(B
> 
> e$B$?$@!"e(Btimezonee$B$NJQ99$K$D$$$F$Oe(BPOSIXe$B$H$N8\_49@-$N$?$a$H;W$o$l$k$Ne(B  
> e$B$G!"La$5$l$k$3$H$O$J$$$G$7$g$&!#e(B

e$B$\*$+$2$5$^$G$3$A$i$G$OLdBj$,D\>$j$^$7$?!#$"$j$,$H$&$4$6$$$^$9!#e(B

e$B59$7$/$\*4j$$$7$^$9!#e(B Martin.

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University  
#-#-# [http://www.sw.it.aoyama.ac.jp](http://www.sw.it.aoyama.ac.jp)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
