1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
+
|
/*
* tclWinTime.c --
*
* Contains Windows specific versions of Tcl functions that
* obtain time values from the operating system.
*
* Copyright 1995-1998 by Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* RCS: @(#) $Id: tclWinTime.c,v 1.20 2003/08/27 19:50:07 davygrvy Exp $
* RCS: @(#) $Id: tclWinTime.c,v 1.21 2003/12/16 02:55:38 davygrvy Exp $
*/
#include "tclWinInt.h"
#define SECSPERDAY (60L * 60L * 24L)
#define SECSPERYEAR (SECSPERDAY * 365L)
#define SECSPER4YEAR (SECSPERYEAR * 4L + SECSPERDAY)
|
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
|
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
|
+
+
+
+
+
+
+
+
+
+
+
+
+
|
/*
* If we are in the valid range, let the C run-time library
* handle it. Otherwise we need to fake it. Note that this
* algorithm ignores daylight savings time before the epoch.
*/
/*
Hm, Borland's localtime manages to return NULL under certain
circumstances (e.g. wintime.test, test 1.2). Nobody tests for this,
since 'localtime' isn't supposed to do this, possibly leading to
crashes.
Patch: We only call this function if we are at least one day into
the epoch, else we handle it ourselves (like we do for times < 0).
H. Giese, June 2003
*/
#ifdef __BORLANDC__
if (*tp >= SECSPERDAY) {
#else
if (*tp >= 0) {
#endif
return localtime(tp);
}
time = *tp - timezone;
/*
* If we aren't near to overflowing the long, just add the bias and
|