Tcl Source Code

View Ticket
Login
Ticket UUID: 1387154
Title: Workaround for Cygwin timezone incompatibility
Type: Bug Version: obsolete: 8.4.12
Submitter: nobody Created on: 2005-12-21 14:41:40
Subsystem: 52. Portability Support Assigned To: kennykb
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2007-04-22 05:43:00
Resolution: Accepted Closed By: kennykb
    Closed on: 2007-04-21 22:43:00
Description:
From: [email protected]

Cygwin has an external variable called _timezone
instead of timezone, with a type of long instead of int.

To reproduce the problem, attempt to build tclsh from
source (tcl8.4.12) on Cygwin using gcc. My version of
Cygwin (according to uname -a):

CYGWIN_NT-5.1 frb3250bd1 1.5.18(0.132/4/2) 2005-07-02
20:30 i686 unknown unknown Cygwin

My version of gcc:

gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd
0.125)

My configuration command was

./configure \
    --prefix=$HOME \
    --bindir=$HOME/bin/i386/cygwin \
    --sbindir=$HOME/bin/i386/cygwin \
    --libexecdir=$HOME/lib/i386/cygwin \
    --libdir=$HOME/lib/i386/cygwin \
    --program-suffix=.exe

but I believe the problem is independent of the
specific configuration.

gcc then fails to compile generic/tclClock.c, giving
these error messages (slightly abbreviated):

../generic/tclClock.c: In function `FormatClock':
../generic/tclClock.c:314: warning: assignment makes
integer from pointer without a cast
../generic/tclClock.c:315: error: invalid lvalue in
assignment
../generic/tclClock.c:360: error: invalid lvalue in
assignment

This is a workaround which just defines timezone as
_timezone and introduces a TIMEZONE_t type, which is
long for Cygwin and int everywhere else.
User Comments: kennykb added on 2005-12-23 22:11:19:
Logged In: YES 
user_id=99768

Uhm, which configurator am I supposed to use in this exercise?

unix/configure or win/configure?

Oh my, am I glad this code isn't in the HEAD.  :)

nobody added on 2005-12-21 21:41:41:

File Added - 160686: diffs

Attachments: