fix issue with tcl time/date library

this seems to be an issue with conflocting behaviour of different
tcl library versions
This commit is contained in:
2024-11-14 09:04:10 +01:00
parent f3d95891ad
commit 68f2042d8f
2 changed files with 22 additions and 18 deletions

View File

@ -117,7 +117,7 @@ static int LookupWord _ANSI_ARGS_((char *buff));
static int TclDatelex _ANSI_ARGS_((void));
int
TclDateparse _ANSI_ARGS_((void));
TclDateparseX _ANSI_ARGS_((void));
typedef union
#ifdef __cplusplus
YYSTYPE
@ -161,7 +161,7 @@ extern "C" {
#ifndef TclDatelex
int TclDatelex(void);
#endif
int TclDateparse(void);
int TclDateparseX(void);
#if defined(__cplusplus) && defined(__EXTERN_C__)
}
#endif
@ -877,7 +877,7 @@ TclGetDate(p, now, zone, timePtr)
TclDateHaveTime = 0;
TclDateHaveZone = 0;
if (TclDateparse() || TclDateHaveTime > 1 || TclDateHaveZone > 1 || TclDateHaveDate > 1 ||
if (TclDateparseX() || TclDateHaveTime > 1 || TclDateHaveZone > 1 || TclDateHaveDate > 1 ||
TclDateHaveDay > 1 || TclDateHaveOrdinalMonth > 1) {
return -1;
}
@ -1231,9 +1231,9 @@ int TclDatecvtok(i) int i;
** TclDateparse - return 0 if worked, 1 if syntax error not recovered from
*/
#if defined(__STDC__) || defined(__cplusplus)
int TclDateparse(void)
int TclDateparseX(void)
#else
int TclDateparse()
int TclDateparseX()
#endif
{
register YYSTYPE *TclDatepvt = 0; /* top of value stack for $vars */

View File

@ -20,6 +20,10 @@
#define TM_YEAR_BASE 1900
#define IsLeapYear(x) ((x % 4 == 0) && (x % 100 != 0 || x % 400 == 0))
/* added declarations */
struct tm * TclpLocaltimeX( CONST time_t *tt);
struct tm * TclpGmtimeX( CONST time_t *tt);
/*
* TclpGetDate is coded to return a pointer to a 'struct tm'. For
* thread safety, this structure must be in thread-specific data.
@ -67,7 +71,7 @@ static void CleanupMemory _ANSI_ARGS_((ClientData));
*/
unsigned long
TclpGetSeconds()
TclpGetSecondsX()
{
return time((time_t *) NULL);
}
@ -92,7 +96,7 @@ TclpGetSeconds()
*/
unsigned long
TclpGetClicks()
TclpGetClicksX()
{
unsigned long now;
#ifdef NO_GETTOD
@ -131,7 +135,7 @@ TclpGetClicks()
*/
int
TclpGetTimeZone (currentTime)
TclpGetTimeZoneX (currentTime)
unsigned long currentTime;
{
/*
@ -150,7 +154,7 @@ TclpGetTimeZone (currentTime)
/* Struct tm contains tm_tzadj - that value may be used. */
time_t curTime = (time_t) currentTime;
struct tm *timeDataPtr = TclpLocaltime((time_t *) &curTime);
struct tm *timeDataPtr = TclpLocaltimeX((time_t *) &curTime);
int timeZone;
timeZone = timeDataPtr->tm_tzadj / 60;
@ -168,7 +172,7 @@ TclpGetTimeZone (currentTime)
/* Struct tm contains tm_gmtoff - that value may be used. */
time_t curTime = (time_t) currentTime;
struct tm *timeDataPtr = TclpLocaltime((time_t *) &curTime);
struct tm *timeDataPtr = TclpLocaltimeX((time_t *) &curTime);
int timeZone;
timeZone = -(timeDataPtr->tm_gmtoff / 60);
@ -209,7 +213,7 @@ TclpGetTimeZone (currentTime)
time_t tt;
struct tm *stm;
tt = 849268800L; /* 1996-11-29 12:00:00 GMT */
stm = TclpLocaltime((time_t *) &tt); /* eg 1996-11-29 6:00:00 CST6CDT */
stm = TclpLocaltimeX((time_t *) &tt); /* eg 1996-11-29 6:00:00 CST6CDT */
/* The calculation below assumes a max of +12 or -12 hours from GMT */
timeZone = (12 - stm->tm_hour)*60 + (0 - stm->tm_min);
if ( stm -> tm_isdst ) {
@ -247,7 +251,7 @@ TclpGetTimeZone (currentTime)
*/
void
Tcl_GetTime(timePtr)
Tcl_GetTimeX(timePtr)
Tcl_Time *timePtr; /* Location to store time information. */
{
struct timeval tv;
@ -282,9 +286,9 @@ TclppGetDate(time, useGMT)
{
time_t mtime = time;
if (useGMT) {
return TclpGmtime(&mtime);
return TclpGmtimeX(&mtime);
} else {
return TclpLocaltime(&mtime);
return TclpLocaltimeX(&mtime);
}
}
@ -344,7 +348,7 @@ TclpStrftime(s, maxsize, format, t, useGMT)
*/
struct tm *
TclpGmtime( tt )
TclpGmtimeX( tt )
CONST time_t *tt;
{
CONST time_t *timePtr = (CONST time_t *) tt;
@ -374,7 +378,7 @@ struct tm*
TclpGmtime_unix( timePtr )
CONST time_t *timePtr;
{
return TclpGmtime( timePtr );
return TclpGmtimeX( timePtr );
}
/*
@ -395,7 +399,7 @@ TclpGmtime_unix( timePtr )
*/
struct tm *
TclpLocaltime( tt )
TclpLocaltimeX( tt )
CONST time_t *tt;
{
CONST time_t *timePtr = (CONST time_t *) tt;
@ -425,7 +429,7 @@ struct tm*
TclpLocaltime_unix( timePtr )
CONST time_t *timePtr;
{
return TclpLocaltime( timePtr );
return TclpLocaltimeX( timePtr );
}
/*