Tcl Source Code

Check-in [ae92de6078]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[Bug 3508771] load tclreg.dll in cygwin tclsh Implement TclWinGetSockOpt, TclWinGetServByName and TclWinCPUID for Cygwin
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-4-branch
Files: files | file ages | folders
SHA1: ae92de6078051cad28f8d5c66edb2078c5259d32
User & Date: jan.nijtmans 2012-04-24 20:21:16
References
2012-05-22
07:30
Revert most of [ae92de6078], since when we let cygwin share the win32 stub table this is no longer n... check-in: 455f8b5d30 user: jan.nijtmans tags: core-8-4-branch
Context
2012-04-24
21:02
[Bug 3508771] load tclreg.dll in cygwin tclsh Implement TclWinGetSockOpt, TclWinGetServByName and Tc... check-in: fcc5957e59 user: jan.nijtmans tags: core-8-5-branch
20:42
syntax error check-in: 19382d2dcc user: jan.nijtmans tags: core-8-4-branch
20:21
[Bug 3508771] load tclreg.dll in cygwin tclsh Implement TclWinGetSockOpt, TclWinGetServByName and Tc... check-in: ae92de6078 user: jan.nijtmans tags: core-8-4-branch
13:10
oops, wrong signature Closed-Leaf check-in: af92e19f2c user: jan.nijtmans tags: bug-3508771
2012-04-23
12:30
make some more internal tables const On cygwin, install dll's in /usr/bin, not in /usr/lib check-in: 6de689d796 user: jan.nijtmans tags: core-8-4-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.











1
2
3
4
5
6
7










2012-04-16  Donal K. Fellows  <[email protected]>

	* doc/FileSystem.3 (Tcl_FSOpenFileChannelProc): [Bug 3518244]: Fixed
	documentation of this filesystem callback function; it must not
	register its created channel - that's the responsibility of the caller
	of Tcl_FSOpenFileChannel - as that leads to reference leaks.

>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2012-04-24  Jan Nijtmans  <[email protected]>

	* generic/tclInt.decls:      [Bug 3508771] load tclreg.dll in cygwin tclsh
	* generic/tclIntPlatDecls.h: Implement TclWinGetSockOpt, TclWinGetServByName
	* generic/tclStubInit.c:     and TclWinCPUID for Cygwin
	* generic/tclUnixCompat.c:
	* unix/configure.in:
	* unix/configure:
	* unix/tclUnixCompat.c:

2012-04-16  Donal K. Fellows  <[email protected]>

	* doc/FileSystem.3 (Tcl_FSOpenFileChannelProc): [Bug 3518244]: Fixed
	documentation of this filesystem callback function; it must not
	register its created channel - that's the responsibility of the caller
	of Tcl_FSOpenFileChannel - as that leads to reference leaks.

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
	* generic/tcl.h:             [Bug 3508771] Wrong Tcl_StatBuf used on MinGW
	* generic/tclFCmd.c:         [Bug 2015723] duplicate inodes from file stat on windows

2012-03-24  Jan Nijtmans  <[email protected]>

	* generic/tclInt.decls:      [Bug 3508771] load tclreg.dll in cygwin tclsh
	* generic/tclIntPlatDecls.h: Implement TclWinConvertError, TclWinConvertWSAError,
	* generic/tclStubInit.c:     and various more win32-specific internal functions for 
	* unix/Makefile.in:          Cygwin, so win32 extensions using those can be
	* unix/tcl.m4:               loaded in the cygwin version of tclsh.
	* unix/configure:
	* win/tclWinError.c:

2012-03-20  Jan Nijtmans  <[email protected]>

	* generic/tcl.h:             [Bug 3288345] Wrong Tcl_StatBuf used on Cygwin
	* unix/tclUnixFile.c
	* unix/tclUnixPort.h
	* win/tclWinFile.c           Remove cygwin stuff no longer needed
	* win/tclWinPort.h

	* generic/tcl.decls:         [Bug 3508771] load tclreg.dll in cygwin tclsh
	* generic/tclInt.decls:      Implement TclWinGetPlatformId, Tcl_WinUtfToTChar,
	* generic/tclIntPlatDecls.h: Tcl_WinTCharToUtf (and a dummy TclWinCPUID) for 
	* generic/tclPlatDecls.h:    Cygwin, so win32 extensions using those can be
	* generic/tclStubInit.c:     loaded in the cygwin version of tclsh.
	* unix/tclUnixCompat.c:

2012-03-12  Jan Nijtmans  <[email protected]>

	* win/tclWinFile.c: [Bug 3388350] mingw64 compiler warnings







|















|







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
	* generic/tcl.h:             [Bug 3508771] Wrong Tcl_StatBuf used on MinGW
	* generic/tclFCmd.c:         [Bug 2015723] duplicate inodes from file stat on windows

2012-03-24  Jan Nijtmans  <[email protected]>

	* generic/tclInt.decls:      [Bug 3508771] load tclreg.dll in cygwin tclsh
	* generic/tclIntPlatDecls.h: Implement TclWinConvertError, TclWinConvertWSAError,
	* generic/tclStubInit.c:     and various more win32-specific internal functions for
	* unix/Makefile.in:          Cygwin, so win32 extensions using those can be
	* unix/tcl.m4:               loaded in the cygwin version of tclsh.
	* unix/configure:
	* win/tclWinError.c:

2012-03-20  Jan Nijtmans  <[email protected]>

	* generic/tcl.h:             [Bug 3288345] Wrong Tcl_StatBuf used on Cygwin
	* unix/tclUnixFile.c
	* unix/tclUnixPort.h
	* win/tclWinFile.c           Remove cygwin stuff no longer needed
	* win/tclWinPort.h

	* generic/tcl.decls:         [Bug 3508771] load tclreg.dll in cygwin tclsh
	* generic/tclInt.decls:      Implement TclWinGetPlatformId, Tcl_WinUtfToTChar,
	* generic/tclIntPlatDecls.h: Tcl_WinTCharToUtf (and a dummy TclWinCPUID) for
	* generic/tclPlatDecls.h:    Cygwin, so win32 extensions using those can be
	* generic/tclStubInit.c:     loaded in the cygwin version of tclsh.
	* unix/tclUnixCompat.c:

2012-03-12  Jan Nijtmans  <[email protected]>

	* win/tclWinFile.c: [Bug 3388350] mingw64 compiler warnings
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
	* generic/tclEncoding.c:
	* tests/source.test

2012-02-09  Don Porter  <[email protected]>

	* generic/tclStringObj.c:	[Bug 3484402] Correct Off-By-One
	error appending unicode. Thanks to Poor Yorick. Also corrected test
	for when growth is needed. 

2012-02-06  Don Porter  <[email protected]>

	* generic/tclCmdMZ.c:	[Bug 3484621] Invalidate bytecode when exec
	* tests/trace.test:	traces are added/removed from compiled cmd.

2012-02-02  Jan Nijtmans  <[email protected]>







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
	* generic/tclEncoding.c:
	* tests/source.test

2012-02-09  Don Porter  <[email protected]>

	* generic/tclStringObj.c:	[Bug 3484402] Correct Off-By-One
	error appending unicode. Thanks to Poor Yorick. Also corrected test
	for when growth is needed.

2012-02-06  Don Porter  <[email protected]>

	* generic/tclCmdMZ.c:	[Bug 3484621] Invalidate bytecode when exec
	* tests/trace.test:	traces are added/removed from compiled cmd.

2012-02-02  Jan Nijtmans  <[email protected]>
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	fix numerous bugs where [file writable|readable|executable] "lies"
	about what operations are possible, especially when the file resides
	on a Samba share.  Patch cherrypicked off the fix-win-native-access
	branch.

2012-01-22  Jan Nijtmans  <[email protected]>

	* tools/uniClass.tcl:    [Frq 3473670]: Various Unicode-related 
	* tools/uniParse.tcl:    speedups/robustness. Enhanced tools to
	* generic/tclUniData.c:  be able to handle characters > 0xffff
	* generic/tclUtf.c:      Done in all branches in order to simplify
	* generic/regc_locale.c: merges for new Unicode versions (such as 6.1)

2012-01-19  Jan Nijtmans  <[email protected]>








|







147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
	fix numerous bugs where [file writable|readable|executable] "lies"
	about what operations are possible, especially when the file resides
	on a Samba share.  Patch cherrypicked off the fix-win-native-access
	branch.

2012-01-22  Jan Nijtmans  <[email protected]>

	* tools/uniClass.tcl:    [Frq 3473670]: Various Unicode-related
	* tools/uniParse.tcl:    speedups/robustness. Enhanced tools to
	* generic/tclUniData.c:  be able to handle characters > 0xffff
	* generic/tclUtf.c:      Done in all branches in order to simplify
	* generic/regc_locale.c: merges for new Unicode versions (such as 6.1)

2012-01-19  Jan Nijtmans  <[email protected]>

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
	providing an initial patch.

2009-11-16  Alexandre Ferrieux  <[email protected]>

	* generic/tclEncoding.c: (Backport) Fix [Bug 2891556] and improve
	* tests/econding.test:   test to detect similar manifestations in the
				 future.
	
2009-11-12  Andreas Kupries  <[email protected]>

	* generic/tclIO.c (CopyData): [Bug 2895565]. Dropped bogosity
	* tests/io.test: which used the number of _written_ bytes or
	character to update the counters for the read bytes/characters.
	New test io-53.11. This is a backward port from the 8.5 branch.








|







595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
	providing an initial patch.

2009-11-16  Alexandre Ferrieux  <[email protected]>

	* generic/tclEncoding.c: (Backport) Fix [Bug 2891556] and improve
	* tests/econding.test:   test to detect similar manifestations in the
				 future.

2009-11-12  Andreas Kupries  <[email protected]>

	* generic/tclIO.c (CopyData): [Bug 2895565]. Dropped bogosity
	* tests/io.test: which used the number of _written_ bytes or
	character to update the counters for the read bytes/characters.
	New test io-53.11. This is a backward port from the 8.5 branch.

709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732

2009-07-14  Andreas Kupries  <[email protected]>

	* generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter,
	(TclArgumentBCRelease, TclArgumentGet):
	* generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode,
	(TclInitCompileEnv, TclCompileScript):
	* generic/tclCompile.h (ExtCmdLoc): 
	* generic/tclExecute.c (TclExecuteByteCode):
	* generic/tclInt.h (ExtIndex, CFWordBC):
	* tests/info.test (info-39.0):

	Backport of some changes made to the Tcl head, to handle literal
	sharing better. The code here is much simpler (trimmed down)
	compared to the head as the 8.4 branch is not bytecode compiling
	whole files, and doesn't compile eval'd code either.
	
	Reworked the handling of literal command arguments in bytecode to
	be saved (compiler) and used (execution) per command (See the
	TCL_INVOKE_STK* instructions), and not per the whole bytecode.
	This removes the problems with location data caused by literal
	sharing in proc bodies. Simplified the associated datastructures
	(ExtIndex is gone, as is the function EnterCmdWordIndex).








|








|







719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742

2009-07-14  Andreas Kupries  <[email protected]>

	* generic/tclBasic.c (DeleteInterpProc,TclArgumentBCEnter,
	(TclArgumentBCRelease, TclArgumentGet):
	* generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode,
	(TclInitCompileEnv, TclCompileScript):
	* generic/tclCompile.h (ExtCmdLoc):
	* generic/tclExecute.c (TclExecuteByteCode):
	* generic/tclInt.h (ExtIndex, CFWordBC):
	* tests/info.test (info-39.0):

	Backport of some changes made to the Tcl head, to handle literal
	sharing better. The code here is much simpler (trimmed down)
	compared to the head as the 8.4 branch is not bytecode compiling
	whole files, and doesn't compile eval'd code either.

	Reworked the handling of literal command arguments in bytecode to
	be saved (compiler) and used (execution) per command (See the
	TCL_INVOKE_STK* instructions), and not per the whole bytecode.
	This removes the problems with location data caused by literal
	sharing in proc bodies. Simplified the associated datastructures
	(ExtIndex is gone, as is the function EnterCmdWordIndex).

773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
2009-04-14  Stuart Cassoff  <[email protected]>

	* unix/tcl.m4:	Removed -Wno-implicit-int from CFLAGS_WARNING.

2009-04-08  Don Porter  <[email protected]>

	* library/tcltest/tcltest.tcl:	Fixed unsafe [eval]s in the tcltest
	* library/tcltest/pkgIndex.tcl:	package.  [Bug 2570363] 

2009-04-07  Don Porter  <[email protected]>

	* generic/tclStringObj.c:       Completed backports of fixes for
	[Bug 2494093] and [Bug 2553906].

2009-03-30  Don Porter  <[email protected]>







|







783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
2009-04-14  Stuart Cassoff  <[email protected]>

	* unix/tcl.m4:	Removed -Wno-implicit-int from CFLAGS_WARNING.

2009-04-08  Don Porter  <[email protected]>

	* library/tcltest/tcltest.tcl:	Fixed unsafe [eval]s in the tcltest
	* library/tcltest/pkgIndex.tcl:	package.  [Bug 2570363]

2009-04-07  Don Porter  <[email protected]>

	* generic/tclStringObj.c:       Completed backports of fixes for
	[Bug 2494093] and [Bug 2553906].

2009-03-30  Don Porter  <[email protected]>
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867

	* generic/tclIOUtil.c (Tcl_FSGetNormalizedPath):	Added another
	flag value TCLPATH_NEEDNORM to mark those intreps which need more
	complete normalization attention for correct results.  [Bug 2385549]

2008-12-03  Don Porter  <[email protected]>

	* generic/tclFileName.c (TclDoGlob):	One of the 
	Tcl_FSMatchInDirectory() calls did not have its return code
	checked.  Some VFS drivers can return TCL_ERROR, and when that's
	not checked, the error message gets converted into a list of
	matching files returned by [glob], with ridiculous results.

2008-12-01  Don Porter  <[email protected]>








|







863
864
865
866
867
868
869
870
871
872
873
874
875
876
877

	* generic/tclIOUtil.c (Tcl_FSGetNormalizedPath):	Added another
	flag value TCLPATH_NEEDNORM to mark those intreps which need more
	complete normalization attention for correct results.  [Bug 2385549]

2008-12-03  Don Porter  <[email protected]>

	* generic/tclFileName.c (TclDoGlob):	One of the
	Tcl_FSMatchInDirectory() calls did not have its return code
	checked.  Some VFS drivers can return TCL_ERROR, and when that's
	not checked, the error message gets converted into a list of
	matching files returned by [glob], with ridiculous results.

2008-12-01  Don Porter  <[email protected]>

1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
	  to fix the [Bug 1969953]. Buffersize outside of the supported
	  range are now clipped to nearest boundary instead of ignored.

2008-04-26  Zoran Vasiljevic <[email protected]>

	* generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt
	to locate handler token fails. Happens when some other
	thread attempts to delete somebody else's token. 

	Also, panic early if we find out the wrong thread attempting
	to delete the async handler (common trap). As, only the one
	that created the handler is allowed to delete it.

2008-04-17  Andreas Kupries  <[email protected]>








|







1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
	  to fix the [Bug 1969953]. Buffersize outside of the supported
	  range are now clipped to nearest boundary instead of ignored.

2008-04-26  Zoran Vasiljevic <[email protected]>

	* generic/tclAsync.c: Tcl_AsyncDelete(): panic if attempt
	to locate handler token fails. Happens when some other
	thread attempts to delete somebody else's token.

	Also, panic early if we find out the wrong thread attempting
	to delete the async handler (common trap). As, only the one
	that created the handler is allowed to delete it.

2008-04-17  Andreas Kupries  <[email protected]>

1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
	fcopy is called. Testcase by myself.

2008-04-14  Kevin B. Kenny  <[email protected]>

	* unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed
	obsolete use of 'struct timezone' in the call to 'gettimeofday'.
	[Bug 1942197].
	
2008-04-14  Don Porter  <[email protected]>

	* generic/tclExecute.c:	Plug memory leak introduced in the
	2008-03-07 commit.  [Bug 1940433]

2008-04-11  Don Porter  <[email protected]>








|







1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
	fcopy is called. Testcase by myself.

2008-04-14  Kevin B. Kenny  <[email protected]>

	* unix/tclUnixTime.c (TclpGetClicks, Tcl_GetTime): Removed
	obsolete use of 'struct timezone' in the call to 'gettimeofday'.
	[Bug 1942197].

2008-04-14  Don Porter  <[email protected]>

	* generic/tclExecute.c:	Plug memory leak introduced in the
	2008-03-07 commit.  [Bug 1940433]

2008-04-11  Don Porter  <[email protected]>

1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
	modifications from me to separate overflow from true negative
	value. Extended testsuite.

2008-04-08  Andreas Kupries  <[email protected]>

	* tests/io.test (io-53.8,53.9,53.10): Backported das' fix of typo
	  and quoting for spaces in builddir path.
	
2008-04-07  Andreas Kupries  <[email protected]>

	* tests/io.test (io-53.10): Testcase for bi-directionaly fcopy.
	* generic/tclIO.c: Additional changes to data structures for fcopy
	* generic/tclIO.h: and channels to perform proper cleanup in case
	  of a channel having two background copy operations running as is
	  now possible.







|







1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
	modifications from me to separate overflow from true negative
	value. Extended testsuite.

2008-04-08  Andreas Kupries  <[email protected]>

	* tests/io.test (io-53.8,53.9,53.10): Backported das' fix of typo
	  and quoting for spaces in builddir path.

2008-04-07  Andreas Kupries  <[email protected]>

	* tests/io.test (io-53.10): Testcase for bi-directionaly fcopy.
	* generic/tclIO.c: Additional changes to data structures for fcopy
	* generic/tclIO.h: and channels to perform proper cleanup in case
	  of a channel having two background copy operations running as is
	  now possible.
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460

2007-08-25  Kevin Kenny  <[email protected]>

	* generic/tclClock.c (FormatClock): Claimed additional space for
	the %c format code to avoid a buffer overrun when formatting
	(for example) a Friday in February in the Portuguese locale.
	[Bug 1751117]
	
2007-08-24  Miguel Sofer  <[email protected]>

	* generic/tclCompile.c: replaced copy loop that tripped some
	compilers with memmove [Bug 1780870]

2007-08-14  Don Porter  <[email protected]>








|







1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470

2007-08-25  Kevin Kenny  <[email protected]>

	* generic/tclClock.c (FormatClock): Claimed additional space for
	the %c format code to avoid a buffer overrun when formatting
	(for example) a Friday in February in the Portuguese locale.
	[Bug 1751117]

2007-08-24  Miguel Sofer  <[email protected]>

	* generic/tclCompile.c: replaced copy loop that tripped some
	compilers with memmove [Bug 1780870]

2007-08-14  Don Porter  <[email protected]>

1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540

2007-06-06  Daniel Steffen  <[email protected]>

	* unix/configure.in (Darwin):		add plist for tclsh; link the
	* unix/Makefile.in  (Darwin):		Tcl and tclsh plists into their
	* macosx/Tclsh-Info.plist.in (new):	binaries in all cases.

	* unix/tcl.m4 (Darwin): fix CF checks in fat 32&64bit builds. 
	* unix/configure: autoconf-2.13

2007-06-05  Don Porter  <[email protected]>

	* tests/result.test (result-6.2): Add test for [Bug 1649062] so that
	8.4 and 8.5 both test the same outcome and we verify compatibility.








|







1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550

2007-06-06  Daniel Steffen  <[email protected]>

	* unix/configure.in (Darwin):		add plist for tclsh; link the
	* unix/Makefile.in  (Darwin):		Tcl and tclsh plists into their
	* macosx/Tclsh-Info.plist.in (new):	binaries in all cases.

	* unix/tcl.m4 (Darwin): fix CF checks in fat 32&64bit builds.
	* unix/configure: autoconf-2.13

2007-06-05  Don Porter  <[email protected]>

	* tests/result.test (result-6.2): Add test for [Bug 1649062] so that
	8.4 and 8.5 both test the same outcome and we verify compatibility.

1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578

2007-05-17  Don Porter  <[email protected]>

	* tests/fCmd.test:	Backport the notNetworkFilesystem constraint.

2007-05-15  Don Porter  <[email protected]>

	* generic/tclNamesp.c:	Plugged memory leak related to 
	[namespace delete ::]. [Bug 1716782]

	* changes: updates for 8.4.15 release.

	* win/tclWinReg.c:		Bump to registry 1.1.5 to account
	* library/reg/pkgIndex.tcl:	for [Bug 1682211] fix.








|







1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588

2007-05-17  Don Porter  <[email protected]>

	* tests/fCmd.test:	Backport the notNetworkFilesystem constraint.

2007-05-15  Don Porter  <[email protected]>

	* generic/tclNamesp.c:	Plugged memory leak related to
	[namespace delete ::]. [Bug 1716782]

	* changes: updates for 8.4.15 release.

	* win/tclWinReg.c:		Bump to registry 1.1.5 to account
	* library/reg/pkgIndex.tcl:	for [Bug 1682211] fix.

1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662

	* generic/tclClock.c:	     Restored Cygwin buildability [Bug 1387154]
	* generic/tclInt.decls:      Yet another round of attempting
	* generic/tclInt.h:          to get the correct type signature
	* unix/tclUnixPort.h:        for TclpLocaltime and TclpGmtime.
	* unix/tclUnixTime.c:        CONST TclpTime_t is a 'time_t *CONST'
	* win/tclWinTime.c:          and not a 'CONST time_t*' [Bug 1677275]
	* generic/tclIntDecls.h:     
	* generic/tclIntPlatDecls.h: Regenerated.
	
2007-03-24  Zoran Vasiljevic <[email protected]>

	* win/tclWinThrd.c: Thread exit handler marks the current 
	thread as un-initialized. This allows exit handlers that
	are registered later to re-initialize this subsystem in 
	case they need to use some sync primitives (cond variables)
	from this file again. 

2007-03-19  Don Porter  <[email protected]>

	* generic/tclEvent.c (Tcl_CreateThread):	Replaced some calls to
	* generic/tclPkg.c (CheckVersion):	Tcl_Alloc() with calls to
	* unix/tclUnixTime.c (SetTZIfNecessary):	ckalloc(), which better
	* win/tclAppInit.c (setargv):	supports memory debugging.

2007-03-17  Kevin Kenny  <[email protected]>
	
	* win/tclWinReg.c (GetKeyNames): Size the buffer for enumerating
	key names correctly, so that Unicode names exceeding 127 chars
	can be retrieved without crashing. [Bug 1682211]
	* tests/registry.test (registry-4.9): Added test case for the
	above bug.

2007-03-13  Don Porter  <[email protected]>







|

|


|

|

|









|







1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672

	* generic/tclClock.c:	     Restored Cygwin buildability [Bug 1387154]
	* generic/tclInt.decls:      Yet another round of attempting
	* generic/tclInt.h:          to get the correct type signature
	* unix/tclUnixPort.h:        for TclpLocaltime and TclpGmtime.
	* unix/tclUnixTime.c:        CONST TclpTime_t is a 'time_t *CONST'
	* win/tclWinTime.c:          and not a 'CONST time_t*' [Bug 1677275]
	* generic/tclIntDecls.h:
	* generic/tclIntPlatDecls.h: Regenerated.

2007-03-24  Zoran Vasiljevic <[email protected]>

	* win/tclWinThrd.c: Thread exit handler marks the current
	thread as un-initialized. This allows exit handlers that
	are registered later to re-initialize this subsystem in
	case they need to use some sync primitives (cond variables)
	from this file again.

2007-03-19  Don Porter  <[email protected]>

	* generic/tclEvent.c (Tcl_CreateThread):	Replaced some calls to
	* generic/tclPkg.c (CheckVersion):	Tcl_Alloc() with calls to
	* unix/tclUnixTime.c (SetTZIfNecessary):	ckalloc(), which better
	* win/tclAppInit.c (setargv):	supports memory debugging.

2007-03-17  Kevin Kenny  <[email protected]>

	* win/tclWinReg.c (GetKeyNames): Size the buffer for enumerating
	key names correctly, so that Unicode names exceeding 127 chars
	can be retrieved without crashing. [Bug 1682211]
	* tests/registry.test (registry-4.9): Added test case for the
	above bug.

2007-03-13  Don Porter  <[email protected]>
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
	* compat/memcmp.c (memcmp): Reworked so that arithmetic is never
	performed upon void pointers, since that is illegal. [Bug 1631017]

2006-01-19  Daniel Steffen  <[email protected]>

	* macosx/tclMacOSXNotify.c: accommodate changes to prototypes of
	OSSpinLock(Un)Lock API.
	
	* tests/env.test: add extra system env vars that need to be preserved
	on some Mac OS X versions for testsuite to work.

	* unix/tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861]
	(Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when
	present in CFLAGS to avoid discrepancies between what headers configure
	sees during preprocessing tests and compiling tests.







|







1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
	* compat/memcmp.c (memcmp): Reworked so that arithmetic is never
	performed upon void pointers, since that is illegal. [Bug 1631017]

2006-01-19  Daniel Steffen  <[email protected]>

	* macosx/tclMacOSXNotify.c: accommodate changes to prototypes of
	OSSpinLock(Un)Lock API.

	* tests/env.test: add extra system env vars that need to be preserved
	on some Mac OS X versions for testsuite to work.

	* unix/tcl.m4: ensure CPPFLAGS env var is used when set. [Bug 1586861]
	(Darwin): add -isysroot and -mmacosx-version-min flags to CPPFLAGS when
	present in CFLAGS to avoid discrepancies between what headers configure
	sees during preprocessing tests and compiling tests.
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
2006-11-27  Kevin Kenny  <[email protected]>

	* unix/tclUnixChan.c (TclUnixWaitForFile):
	* tests/event.test (event-14.*): Corrected a bug where
	TclUnixWaitForFile would present select() with the wrong mask on an
	LP64 machine if a fd number exceeds 32. Thanks to Jean-Luc Fontaine
	for reporting and diagnosing [Bug 1602208]
	
2006-11-26  Daniel Steffen  <[email protected]>

	* unix/tcl.m4 (Linux): --enable-64bit support.	[Patch 1597389]
	* unix/configure: autoconf-2.13			[Bug 1230558]

2006-11-07  Andreas Kupries  <[email protected]>

	* unix/tclUnixFCmd.c (CopyFile): Added code to fall back to a
	hardwired default block size should the filesystem report a bogus
	value. [Bug 1586470]

2006-11-03  Miguel Sofer  <[email protected]>

	* generic/tclBasic.c (TEOVI): fix for possible leak of a Command in
	the presence of execution traces that delete it.

	* generic/tclBasic.c (TEOVI):
	* tests/trace.test (trace-21.11): fix for [Bug 1590232], execution
	traces may cause a second command resolution in the wrong
	namespace. 

2006-11-01  Daniel Steffen  <[email protected]>

	* generic/tclEnv.c (Darwin): mark _environ symbol as unexported.

2006-10-31  Pat Thoyts  <[email protected]>








|



















|







1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
2006-11-27  Kevin Kenny  <[email protected]>

	* unix/tclUnixChan.c (TclUnixWaitForFile):
	* tests/event.test (event-14.*): Corrected a bug where
	TclUnixWaitForFile would present select() with the wrong mask on an
	LP64 machine if a fd number exceeds 32. Thanks to Jean-Luc Fontaine
	for reporting and diagnosing [Bug 1602208]

2006-11-26  Daniel Steffen  <[email protected]>

	* unix/tcl.m4 (Linux): --enable-64bit support.	[Patch 1597389]
	* unix/configure: autoconf-2.13			[Bug 1230558]

2006-11-07  Andreas Kupries  <[email protected]>

	* unix/tclUnixFCmd.c (CopyFile): Added code to fall back to a
	hardwired default block size should the filesystem report a bogus
	value. [Bug 1586470]

2006-11-03  Miguel Sofer  <[email protected]>

	* generic/tclBasic.c (TEOVI): fix for possible leak of a Command in
	the presence of execution traces that delete it.

	* generic/tclBasic.c (TEOVI):
	* tests/trace.test (trace-21.11): fix for [Bug 1590232], execution
	traces may cause a second command resolution in the wrong
	namespace.

2006-11-01  Daniel Steffen  <[email protected]>

	* generic/tclEnv.c (Darwin): mark _environ symbol as unexported.

2006-10-31  Pat Thoyts  <[email protected]>

1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888

2006-10-17  Don Porter  <[email protected]>

	* generic/tclIOUtil.c:	Cleaned up some code flagged by a
	* generic/tclInt.h:	`make checkexports` test.
	* win/tclWin32Dll.c:
	* win/tclWinFile.c:
	
2006-10-16  Daniel Steffen  <[email protected]>

	* changes: updates for 8.4.14 release.

	* macosx/Makefile: don't redo prebinding of non-prebound binaires.

2006-10-11  Andreas Kupries  <[email protected]>







|







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898

2006-10-17  Don Porter  <[email protected]>

	* generic/tclIOUtil.c:	Cleaned up some code flagged by a
	* generic/tclInt.h:	`make checkexports` test.
	* win/tclWin32Dll.c:
	* win/tclWinFile.c:

2006-10-16  Daniel Steffen  <[email protected]>

	* changes: updates for 8.4.14 release.

	* macosx/Makefile: don't redo prebinding of non-prebound binaires.

2006-10-11  Andreas Kupries  <[email protected]>
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
2006-10-05  Jeff Hobbs  <[email protected]>

	* library/http/http.tcl (http::geturl): only do geturl url rfc 3986
	validity checking if $::http::strict is true (default false for 8.4).
	[Bug 1560506]

	* generic/tcl.h: note limitation on changing Tcl_UniChar size
	* generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc): 
	* tests/encoding.test (encoding-16.1): fix alignment issues in
	unicode <> utf conversion procs. [Bug 1122671]

2006-10-05  Miguel Sofer  <[email protected]>

	* generic/tclVar.c (Tcl_LappendObjCmd):
	* tests/append.test(4.21-22): fix for longstanding [Bug 1570718],
	lappending nothing to non-list. Reported by lvirden

2006-10-02  Don Porter  <[email protected]>

	* generic/tclFileName.c (TclGlob):	Prevent doubling of directory
	separators by [glob]. [Bug 1569042]

2006-10-01  Pat Thoyts  <[email protected]>

	* win/tclWinFile.c: Handle possible missing define.
	* win/tclWinFile.c: Backported fix for [Bug 1420432] (cannot set 
	* tests/cmdAH.test: mtime for directories on windows).

2006-09-30  Miguel Sofer  <[email protected]>

	* generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747]
	by dgp.








|

















|







1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
2006-10-05  Jeff Hobbs  <[email protected]>

	* library/http/http.tcl (http::geturl): only do geturl url rfc 3986
	validity checking if $::http::strict is true (default false for 8.4).
	[Bug 1560506]

	* generic/tcl.h: note limitation on changing Tcl_UniChar size
	* generic/tclEncoding.c (UtfToUnicodeProc, UnicodeToUtfProc):
	* tests/encoding.test (encoding-16.1): fix alignment issues in
	unicode <> utf conversion procs. [Bug 1122671]

2006-10-05  Miguel Sofer  <[email protected]>

	* generic/tclVar.c (Tcl_LappendObjCmd):
	* tests/append.test(4.21-22): fix for longstanding [Bug 1570718],
	lappending nothing to non-list. Reported by lvirden

2006-10-02  Don Porter  <[email protected]>

	* generic/tclFileName.c (TclGlob):	Prevent doubling of directory
	separators by [glob]. [Bug 1569042]

2006-10-01  Pat Thoyts  <[email protected]>

	* win/tclWinFile.c: Handle possible missing define.
	* win/tclWinFile.c: Backported fix for [Bug 1420432] (cannot set
	* tests/cmdAH.test: mtime for directories on windows).

2006-09-30  Miguel Sofer  <[email protected]>

	* generic/tclUtil.c (Tcl_SplitList): optimisation, [Patch 1344747]
	by dgp.

1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981

	* generic/tclBasic.c: Reverted exposure of patchlevel in registered
	core version when TIP#268 features are activated. Better compatibility
	with existing packages. Like Tk.

2006-09-24  Miguel Sofer  <[email protected]>

	* generic/tclParse.c (Tcl_ParseCommand): also return an error if 
	start==NULL and numBytes<0. This is coverity's bug #20

	* generic/tclStringObj.c (STRING_SIZE): fix allocation for 0-length
	strings. This is coverity's bugs #54-5
	
2006-09-22  Andreas Kupries  <[email protected]>

	* generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the end
	of the structure, for better backward compatibility.

2006-09-22  Andreas Kupries <[email protected]>








|




|







1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991

	* generic/tclBasic.c: Reverted exposure of patchlevel in registered
	core version when TIP#268 features are activated. Better compatibility
	with existing packages. Like Tk.

2006-09-24  Miguel Sofer  <[email protected]>

	* generic/tclParse.c (Tcl_ParseCommand): also return an error if
	start==NULL and numBytes<0. This is coverity's bug #20

	* generic/tclStringObj.c (STRING_SIZE): fix allocation for 0-length
	strings. This is coverity's bugs #54-5

2006-09-22  Andreas Kupries  <[email protected]>

	* generic/tclInt.h: Moved TIP#268's field 'packagePrefer' to the end
	of the structure, for better backward compatibility.

2006-09-22  Andreas Kupries <[email protected]>

1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006

2006-09-21  Andreas Kupries <[email protected]>

	* generic/tcl.decls:  Implemented TIP #268, conditionally.
	* generic/tclBasic.c: Define TCL_TIP268 to activate the new
	* generic/tclDecls.h: features.
	* generic/tclInt.h:
	* generic/tclPkg.c: 
	* generic/tclStubInit.c:
	* generic/tclTest.c:
	* library/init.tcl
	* library/package.tcl:
	* tests/pkg.test:
	* tests/platform.test:
	* tests/safe.test:







|







2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016

2006-09-21  Andreas Kupries <[email protected]>

	* generic/tcl.decls:  Implemented TIP #268, conditionally.
	* generic/tclBasic.c: Define TCL_TIP268 to activate the new
	* generic/tclDecls.h: features.
	* generic/tclInt.h:
	* generic/tclPkg.c:
	* generic/tclStubInit.c:
	* generic/tclTest.c:
	* library/init.tcl
	* library/package.tcl:
	* tests/pkg.test:
	* tests/platform.test:
	* tests/safe.test:
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
	* unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of the
	increment needed to align the pointer, and added documentation
	explaining why the macro is implemented as it is.

2006-09-11  Andreas Kupries  <[email protected]>

	* tests/msgcat.test: Bumped version in auxiliary files as well.
	* doc/msgcat.n: 

2006-09-11  Daniel Steffen  <[email protected]>

	* unix/tclUnixCompat.c: make compatLock static and only declare it
	when it will actually be used; #ifdef parts of TSD that are not always
	needed; adjust #ifdefs to cover all possible cases; fix whitespace.








|







2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
	* unix/tclUnixCompat.c (PadBuffer): Fixed bug in calculation of the
	increment needed to align the pointer, and added documentation
	explaining why the macro is implemented as it is.

2006-09-11  Andreas Kupries  <[email protected]>

	* tests/msgcat.test: Bumped version in auxiliary files as well.
	* doc/msgcat.n:

2006-09-11  Daniel Steffen  <[email protected]>

	* unix/tclUnixCompat.c: make compatLock static and only declare it
	when it will actually be used; #ifdef parts of TSD that are not always
	needed; adjust #ifdefs to cover all possible cases; fix whitespace.

2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095

2006-09-07  Zoran Vasiljevic <[email protected]>

	* unix/tclUnixChan.c   Rewritten MT-safe wrappers to
	* unix/tclUnixCompat.c return ptrs to TSD storage
	* unix/tclUnixFCmd.c   making them all look like their
	* unix/tclUnixPort.h   MT-unsafe pendants API-wise.
	* unix/tclUnixSock.c   

2006-09-06  Zoran Vasiljevic <[email protected]>

	* unix/tclUnixChan.c: Added TCL_THREADS ifdef'ed  usage
	* unix/tclUnixFCmd.c: of MT-safe calls like:
	* unix/tclUnixSock.c: getpwuid, getpwnam, getgrgid, getgrnam,
	* unix/tclUnixPort.h: gethostbyname and gethostbyaddr.







|







2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105

2006-09-07  Zoran Vasiljevic <[email protected]>

	* unix/tclUnixChan.c   Rewritten MT-safe wrappers to
	* unix/tclUnixCompat.c return ptrs to TSD storage
	* unix/tclUnixFCmd.c   making them all look like their
	* unix/tclUnixPort.h   MT-unsafe pendants API-wise.
	* unix/tclUnixSock.c

2006-09-06  Zoran Vasiljevic <[email protected]>

	* unix/tclUnixChan.c: Added TCL_THREADS ifdef'ed  usage
	* unix/tclUnixFCmd.c: of MT-safe calls like:
	* unix/tclUnixSock.c: getpwuid, getpwnam, getgrgid, getgrnam,
	* unix/tclUnixPort.h: gethostbyname and gethostbyaddr.
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137

	* unix/Makefile.in: add valgrindshell target and update default
	VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS env
	var.

	* generic/tclBasic.c (Tcl_CreateInterp): init iPtr->threadId

	* generic/tclIOGT.c (ExecuteCallback): 
	* generic/tclPkg.c (Tcl_PkgRequireEx): replace Tcl_GlobalEval(Obj)
	with more efficient Tcl_Eval(Obj)Ex

2006-08-22  Andreas Kupries <[email protected]>

	* unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax
	committed 2006-08-21 by Daniel. The broken syntax is visible to all







|







2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147

	* unix/Makefile.in: add valgrindshell target and update default
	VALGRINDARGS. User can override, or add to it with VALGRIND_OPTS env
	var.

	* generic/tclBasic.c (Tcl_CreateInterp): init iPtr->threadId

	* generic/tclIOGT.c (ExecuteCallback):
	* generic/tclPkg.c (Tcl_PkgRequireEx): replace Tcl_GlobalEval(Obj)
	with more efficient Tcl_Eval(Obj)Ex

2006-08-22  Andreas Kupries <[email protected]>

	* unix/tclUnixNotfy.c (Tcl_WaitForEvent): Fixed broken if syntax
	committed 2006-08-21 by Daniel. The broken syntax is visible to all
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
	* unix/configure: autoconf-2.13

	* generic/tcl.h:      add fixes for building on Leopard and support
	* unix/tclUnixPort.h: for 64-bit CoreFoundation on Leopard.

	* unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it
	causes execve to fail intermittently. (rdar://4685553)
	
	* macosx/README: updates for x86_64 support and Xcode 2.4.

	* unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if
	select() returns early (e.g. due to a signal), call it again instead
	of returning a timeout result. Fixes intermittent event-13.8 failures.

2006-08-09  Don Porter  <[email protected]>







|







2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
	* unix/configure: autoconf-2.13

	* generic/tcl.h:      add fixes for building on Leopard and support
	* unix/tclUnixPort.h: for 64-bit CoreFoundation on Leopard.

	* unix/tclUnixPort.h: on Darwin x86_64, disable use of vfork as it
	causes execve to fail intermittently. (rdar://4685553)

	* macosx/README: updates for x86_64 support and Xcode 2.4.

	* unix/tclUnixChan.c (TclUnixWaitForFile): with timeout < 0, if
	select() returns early (e.g. due to a signal), call it again instead
	of returning a timeout result. Fixes intermittent event-13.8 failures.

2006-08-09  Don Porter  <[email protected]>
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
	space.

2006-07-30  Kevin Kenny  <[email protected]>

	* tests/clock.test: Allowed UTC as a synonym for GMT in two tests that
	indirectly invoke 'strftime' with the result of 'gmtime' to fix a
	bogus test failure on FreeBSD systems. [Bug 1513489]
	
2006-07-30  Joe English  <[email protected]>

	* doc/AppInit.3: Fix typo [Bug 1496886]

2006-07-20  Daniel Steffen  <[email protected]>

	* macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent):







|







2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
	space.

2006-07-30  Kevin Kenny  <[email protected]>

	* tests/clock.test: Allowed UTC as a synonym for GMT in two tests that
	indirectly invoke 'strftime' with the result of 'gmtime' to fix a
	bogus test failure on FreeBSD systems. [Bug 1513489]

2006-07-30  Joe English  <[email protected]>

	* doc/AppInit.3: Fix typo [Bug 1496886]

2006-07-20  Daniel Steffen  <[email protected]>

	* macosx/tclMacOSXNotify.c (Tcl_InitNotifier, Tcl_WaitForEvent):
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284

	* generic/regerror.c:	Enable building Tcl with Microsoft's latest
	* generic/tcl.h:	compiler offering (VS2005). We have to handle
	* generic/tclDate.c:	a number of oddities as they have deprecated
	* tests/env.test:	most of the standard C library and now
	* win/makefile.vc:	generate manifest files to be linked into the
	* win/nmakehlp.c:	binaries. [Bug 1424909]
	* win/rules.vc:		
	* win/tclWinTime.c:

2006-06-13  Donal K. Fellows  <[email protected]>

	* unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun
	Forte 6. [Bug 1503729]








|







2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294

	* generic/regerror.c:	Enable building Tcl with Microsoft's latest
	* generic/tcl.h:	compiler offering (VS2005). We have to handle
	* generic/tclDate.c:	a number of oddities as they have deprecated
	* tests/env.test:	most of the standard C library and now
	* win/makefile.vc:	generate manifest files to be linked into the
	* win/nmakehlp.c:	binaries. [Bug 1424909]
	* win/rules.vc:
	* win/tclWinTime.c:

2006-06-13  Donal K. Fellows  <[email protected]>

	* unix/tclLoadDl.c (TclpDlopen): Workaround for a compiler bug in Sun
	Forte 6. [Bug 1503729]

2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2006-03-28  Vince Darley  <[email protected]>

	* generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons
	(lesser part of [Bug 1064247])

2006-03-27  Pat Thoyts  <[email protected]>

	* win/tclWinTest.c:	Fixes for [Bug 1456373] (mingw-gcc issue) 

2006-03-23  Don Porter  <[email protected]>

	* tests/expr.test:	Nan self-inquality test silenced. [Bug 761471]

2006-03-22  Don Porter  <[email protected]>








|







2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2006-03-28  Vince Darley  <[email protected]>

	* generic/tclIOUtil.c: fix to nativeFilesystemRecord comparisons
	(lesser part of [Bug 1064247])

2006-03-27  Pat Thoyts  <[email protected]>

	* win/tclWinTest.c:	Fixes for [Bug 1456373] (mingw-gcc issue)

2006-03-23  Don Porter  <[email protected]>

	* tests/expr.test:	Nan self-inquality test silenced. [Bug 761471]

2006-03-22  Don Porter  <[email protected]>

2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
	* tests/winFCmd.test:
	* tests/tcltest.test: Backport of [file writable] fixes for Windows
	from HEAD. [Bug 1193497]

2006-03-16  Andreas Kupries <[email protected]>

	* doc/open.n: Documented the changed behaviour of 'a'ppend mode.
	
	* tests/io.test (io-43.1 io-44.[1234]): Rewritten to be
	self-contained with regard to setup and cleanup. [Bug 681793]

	* generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the
	list of POSIX modes used when opening a file for 'a'ppend. This
	enables the proper automatic seek-to-end-on-write by the OS. See [Bug
	680143] for longer discussion.







|







2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
	* tests/winFCmd.test:
	* tests/tcltest.test: Backport of [file writable] fixes for Windows
	from HEAD. [Bug 1193497]

2006-03-16  Andreas Kupries <[email protected]>

	* doc/open.n: Documented the changed behaviour of 'a'ppend mode.

	* tests/io.test (io-43.1 io-44.[1234]): Rewritten to be
	self-contained with regard to setup and cleanup. [Bug 681793]

	* generic/tclIOUtil.c (TclGetOpenMode): Added the flag O_APPEND to the
	list of POSIX modes used when opening a file for 'a'ppend. This
	enables the proper automatic seek-to-end-on-write by the OS. See [Bug
	680143] for longer discussion.
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
	* generic/tclEvent.c: Cosmetic touches and identation
	* generic/tclInt.h: Added TclpFinalizeSockets() call.

	* generic/tclIO.c: Calls TclpFinalizeSockets() as part of the
	TclFinalizeIOSubsystem().

	* unix/tclUnixSock: Added no-op TclpFinalizeSockets().
	
	* mac/tclMacSock.c:
	* win/tclWinPipe.c
	* win/tclWinSock.c: Finalization of the sockets/pipes is now solely
	done in TclpFinalizeSockets() and TclpFinalizePipes() and not over the
	thread-exit handler, because the order of actions the Tcl generic core
	will impose may result in cores/hangs if the thread exit handler tears
	down corresponding subsystem(s) too early.

2006-03-10  Vince Darley  <[email protected]>

	* win/tclWin32Dll.c: 
	* win/tclWinInt.h: 
	* win/tclWinFile.c: backported some fixes from HEAD relating to 'file
	readable' and 'file writable', but main 'file writable' bug still
	outstanding.

2006-03-07  Don Porter  <[email protected]>

	* README:		Bump version number to 8.4.13 and update







|










|
|







2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
	* generic/tclEvent.c: Cosmetic touches and identation
	* generic/tclInt.h: Added TclpFinalizeSockets() call.

	* generic/tclIO.c: Calls TclpFinalizeSockets() as part of the
	TclFinalizeIOSubsystem().

	* unix/tclUnixSock: Added no-op TclpFinalizeSockets().

	* mac/tclMacSock.c:
	* win/tclWinPipe.c
	* win/tclWinSock.c: Finalization of the sockets/pipes is now solely
	done in TclpFinalizeSockets() and TclpFinalizePipes() and not over the
	thread-exit handler, because the order of actions the Tcl generic core
	will impose may result in cores/hangs if the thread exit handler tears
	down corresponding subsystem(s) too early.

2006-03-10  Vince Darley  <[email protected]>

	* win/tclWin32Dll.c:
	* win/tclWinInt.h:
	* win/tclWinFile.c: backported some fixes from HEAD relating to 'file
	readable' and 'file writable', but main 'file writable' bug still
	outstanding.

2006-03-07  Don Porter  <[email protected]>

	* README:		Bump version number to 8.4.13 and update
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2006-01-25  Donal K. Fellows  <[email protected]>

	* unix/tclUnixInit.c (TclpInitPlatform): Improved conditions on when
	to update the FP rounding mode on FreeBSD, taken from FreeBSD port.

2006-01-23  Miguel Sofer  <[email protected]>

	* generic/tclStringObj.c (Tcl_GetRange): 
	* tests/stringTest (string-12.21):fixed incorrect handling of internal
	rep in Tcl_GetRange. Thanks to twylite and Peter Spjuth. [Bug 1410553]

2006-01-16  Reinhard Max  <[email protected]>

	* generic/tclPipe.c (FileForRedirect): Prevent nameString from being
	freed without having been initialized.
	* tests/exec.test: Added a test for the above.
	
2006-01-12  Zoran Vasiljevic <[email protected]>

	* generic/tclIOUtil.c (Tcl_FSGetInternalRep): fixed potential
	overwriting of already freed memory which caused all kinds of (rare
	but reproducible) coredumps all over the place.

2006-01-11  Don Porter  <[email protected]>

	* tests/error.test (error-7.0):	Test the timing of write traces on
	::errorInfo. [Bug 1397843]

2006-01-10  Daniel Steffen  <[email protected]>

	* unix/configure:    add caching, use AC_CACHE_CHECK instead of
	* unix/configure.in: AC_CACHE_VAL where possible, consistent message
	* unix/tcl.m4:	     quoting, sync relevant tclconfig/tcl.m4 and HEAD
	changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES
	with default argument, Darwin improvements to SC_LOAD_*CONFIG.
	
2006-01-09  Don Porter  <[email protected]>

	* generic/tclNamesp.c (NamespaceInscopeCmd):	[namespace inscope]
	* tests/namespace.test:	commands were not reported by [info level].
	[Bug 1400572]

2005-12-20  Donal K. Fellows  <[email protected]>







|








|


















|







2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2006-01-25  Donal K. Fellows  <[email protected]>

	* unix/tclUnixInit.c (TclpInitPlatform): Improved conditions on when
	to update the FP rounding mode on FreeBSD, taken from FreeBSD port.

2006-01-23  Miguel Sofer  <[email protected]>

	* generic/tclStringObj.c (Tcl_GetRange):
	* tests/stringTest (string-12.21):fixed incorrect handling of internal
	rep in Tcl_GetRange. Thanks to twylite and Peter Spjuth. [Bug 1410553]

2006-01-16  Reinhard Max  <[email protected]>

	* generic/tclPipe.c (FileForRedirect): Prevent nameString from being
	freed without having been initialized.
	* tests/exec.test: Added a test for the above.

2006-01-12  Zoran Vasiljevic <[email protected]>

	* generic/tclIOUtil.c (Tcl_FSGetInternalRep): fixed potential
	overwriting of already freed memory which caused all kinds of (rare
	but reproducible) coredumps all over the place.

2006-01-11  Don Porter  <[email protected]>

	* tests/error.test (error-7.0):	Test the timing of write traces on
	::errorInfo. [Bug 1397843]

2006-01-10  Daniel Steffen  <[email protected]>

	* unix/configure:    add caching, use AC_CACHE_CHECK instead of
	* unix/configure.in: AC_CACHE_VAL where possible, consistent message
	* unix/tcl.m4:	     quoting, sync relevant tclconfig/tcl.m4 and HEAD
	changes and gratuitous formatting differences, fix SC_CONFIG_MANPAGES
	with default argument, Darwin improvements to SC_LOAD_*CONFIG.

2006-01-09  Don Porter  <[email protected]>

	* generic/tclNamesp.c (NamespaceInscopeCmd):	[namespace inscope]
	* tests/namespace.test:	commands were not reported by [info level].
	[Bug 1400572]

2005-12-20  Donal K. Fellows  <[email protected]>
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
	* library/auto.tcl:	Updated [auto_reset] to clear auto-loaded
	procs in namespaces other than :: [Bug 1101670].

2005-01-25  Daniel Steffen  <[email protected]>

	* unix/tcl.m4 (Darwin): fixed bug with static build linking to dynamic
	library in /usr/lib etc instead of linking to static library earlier
	in search path. [Bug 956908] 
	Removed obsolete references to Rhapsody.
	* unix/configure: autoconf-2.13

2005-01-19  Mo DeJong  <[email protected]>

	* win/tclWinChan.c (FileCloseProc): Invoke TclpCutFileChannel() to
	remove a FileInfo from the thread local list before deallocating it.







|







3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
	* library/auto.tcl:	Updated [auto_reset] to clear auto-loaded
	procs in namespaces other than :: [Bug 1101670].

2005-01-25  Daniel Steffen  <[email protected]>

	* unix/tcl.m4 (Darwin): fixed bug with static build linking to dynamic
	library in /usr/lib etc instead of linking to static library earlier
	in search path. [Bug 956908]
	Removed obsolete references to Rhapsody.
	* unix/configure: autoconf-2.13

2005-01-19  Mo DeJong  <[email protected]>

	* win/tclWinChan.c (FileCloseProc): Invoke TclpCutFileChannel() to
	remove a FileInfo from the thread local list before deallocating it.
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
2004-10-28  Kevin B. Kenny  <[email protected]>

	* generic/tclInt.decls:
	* unix/tclUnixTime.c (TclpGmtime, TclpLocaltime):
	* win/tclWinTime.c (TclpGmtime, TclpLocaltime): Changed type
	signatures of TclpGmtime and TclpLocaltime to accept CONST TclpTime_t
	throughout, to avoid any possible confusion in pedantic compilers.
	[Bug 1001319] 
	* generic/tclIntDecls.h:
	* generic/tclIntPlatDecls.h:  Regenerated.

2004-10-27  Don Porter  <[email protected]>

	* generic/tclCmdAH.c (Tcl_FormatObjCmd):	Restored missing line
	from yesterday's 868489 backport that caused failed alloc's on LP64







|







4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
2004-10-28  Kevin B. Kenny  <[email protected]>

	* generic/tclInt.decls:
	* unix/tclUnixTime.c (TclpGmtime, TclpLocaltime):
	* win/tclWinTime.c (TclpGmtime, TclpLocaltime): Changed type
	signatures of TclpGmtime and TclpLocaltime to accept CONST TclpTime_t
	throughout, to avoid any possible confusion in pedantic compilers.
	[Bug 1001319]
	* generic/tclIntDecls.h:
	* generic/tclIntPlatDecls.h:  Regenerated.

2004-10-27  Don Porter  <[email protected]>

	* generic/tclCmdAH.c (Tcl_FormatObjCmd):	Restored missing line
	from yesterday's 868489 backport that caused failed alloc's on LP64
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
	* doc/AddErrInfo.3:	Improved consistency of documentation by using
	* doc/CrtTrace.3:	"null" everywhere to refer to the character
	* doc/Encoding.3:	'\0', and using "NULL" everywhere to refer to
	* doc/Eval.3:		the value of a pointer that points to nowhere.
	* doc/GetIndex.3:	Also dropped references to ASCII that are no
	* doc/Hash.3:		longer true, and standardized on the
	* doc/LinkVar.3:	hyphenated spelling of "null-terminated".
	* doc/Macintosh.3:	
	* doc/OpenFileChnl.3:
	* doc/SetVar.3:
	* doc/StringObj.3:
	* doc/Utf.3:

	* doc/CrtSlave.3 (Tcl_MakeSafe):  Removed warning about possible
	deprecation (no TIP on that).







|







5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
	* doc/AddErrInfo.3:	Improved consistency of documentation by using
	* doc/CrtTrace.3:	"null" everywhere to refer to the character
	* doc/Encoding.3:	'\0', and using "NULL" everywhere to refer to
	* doc/Eval.3:		the value of a pointer that points to nowhere.
	* doc/GetIndex.3:	Also dropped references to ASCII that are no
	* doc/Hash.3:		longer true, and standardized on the
	* doc/LinkVar.3:	hyphenated spelling of "null-terminated".
	* doc/Macintosh.3:
	* doc/OpenFileChnl.3:
	* doc/SetVar.3:
	* doc/StringObj.3:
	* doc/Utf.3:

	* doc/CrtSlave.3 (Tcl_MakeSafe):  Removed warning about possible
	deprecation (no TIP on that).
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
	* unix/tcl.m4: Correct AIX-5 ppc build flags. Correct HP 11 64-bit gcc
	building. [Patch 601051] (martin)

2002-10-15  Vince Darley  <[email protected]>

	* generic/tclCmdMZ.c:
	* tests/trace.test: applied patch from Hemang Levana to fix [Bug
	615043] in execution traces with idle tasks firing. 

2002-10-14  Jeff Hobbs  <[email protected]>

	* generic/tclEnv.c (Tcl_PutEnv): correct possible mem leak.
	[Patch 623269] (brouwers)

2002-10-11  Donal K. Fellows  <[email protected]>







|







7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
	* unix/tcl.m4: Correct AIX-5 ppc build flags. Correct HP 11 64-bit gcc
	building. [Patch 601051] (martin)

2002-10-15  Vince Darley  <[email protected]>

	* generic/tclCmdMZ.c:
	* tests/trace.test: applied patch from Hemang Levana to fix [Bug
	615043] in execution traces with idle tasks firing.

2002-10-14  Jeff Hobbs  <[email protected]>

	* generic/tclEnv.c (Tcl_PutEnv): correct possible mem leak.
	[Patch 623269] (brouwers)

2002-10-11  Donal K. Fellows  <[email protected]>
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
	was the error code previously occupying the slot, in Tcl, or any
	definition of it in the Solaris headers.

2002-06-06  Mo DeJong  <[email protected]>

	* unix/dltest/Makefile.in: Remove hard coded CFLAGS=-g and add
	CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and CFLAGS_DEFAULT varaibles. [Bug
	565488] 

2002-06-06  Don Porter  <[email protected]>

	* tests/tcltest.test:  Corrections to test suite so that tests of
	failing [test]s don't show up themselves as failing tests.

	* tests/io.test: Fixed up namespace variable resolution issues







|







9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
	was the error code previously occupying the slot, in Tcl, or any
	definition of it in the Solaris headers.

2002-06-06  Mo DeJong  <[email protected]>

	* unix/dltest/Makefile.in: Remove hard coded CFLAGS=-g and add
	CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and CFLAGS_DEFAULT varaibles. [Bug
	565488]

2002-06-06  Don Porter  <[email protected]>

	* tests/tcltest.test:  Corrections to test suite so that tests of
	failing [test]s don't show up themselves as failing tests.

	* tests/io.test: Fixed up namespace variable resolution issues
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866

2002-05-10  Don Porter  <[email protected]>

	* tests/load.test:
	* tests/safe.test:
	* tests/tcltest.test: Corrected some list-quoting issues and other
	matters that cause tests to fail when the patch includes special
	characters. Report from Vince Darley. [Bug 554068]. 

2002-05-08    David Gravereaux <[email protected]>

	* doc/file.n:
	* tools/man2tcl.c:
	* tools/man2help2.tcl: Thanks to Peter Spjuth <[email protected]>,
	again. My prior fix for single-quote macro mis-understanding was







|







9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876

2002-05-10  Don Porter  <[email protected]>

	* tests/load.test:
	* tests/safe.test:
	* tests/tcltest.test: Corrected some list-quoting issues and other
	matters that cause tests to fail when the patch includes special
	characters. Report from Vince Darley. [Bug 554068].

2002-05-08    David Gravereaux <[email protected]>

	* doc/file.n:
	* tools/man2tcl.c:
	* tools/man2help2.tcl: Thanks to Peter Spjuth <[email protected]>,
	again. My prior fix for single-quote macro mis-understanding was
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
	* doc/tcltest.n:  Removed [saveState] and [restoreState] from tcltest
	2 documentation, effectively deprecating them. [Bug 495660]
	* library/tcltest/tcltest.tcl: Made separate export for commands kept
	only for tcltest 1 compatibility.

	* tests/iogt.test: Revised to run tests in a namespace, rather than
	use the useless and buggy [saveState] and [restoreState] commands of
	tcltest. Updated to use tcltest 2 as well. [Patch 544911] 

2002-04-16  Don Porter  <[email protected]>

	* tests/io.test: Revised to run tests in a namespace, rather than use
	the useless and buggy [saveState] and [restoreState] commands of
	tcltest. Updated to use tcltest 2 as well. [Patch 544546]








|







10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
	* doc/tcltest.n:  Removed [saveState] and [restoreState] from tcltest
	2 documentation, effectively deprecating them. [Bug 495660]
	* library/tcltest/tcltest.tcl: Made separate export for commands kept
	only for tcltest 1 compatibility.

	* tests/iogt.test: Revised to run tests in a namespace, rather than
	use the useless and buggy [saveState] and [restoreState] commands of
	tcltest. Updated to use tcltest 2 as well. [Patch 544911]

2002-04-16  Don Porter  <[email protected]>

	* tests/io.test: Revised to run tests in a namespace, rather than use
	the useless and buggy [saveState] and [restoreState] commands of
	tcltest. Updated to use tcltest 2 as well. [Patch 544546]

10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246

2002-03-27  David Gravereaux <[email protected]>

	* tools/man2help.tcl:
	* win/makefile.vc:  winhelp target now copies all needed files from
	tools/ to a workarea under $(OUT_DIR) and builds it from there.	No
	build cruft is left in tools/ anymore. All paths used in man2help.tcl
	are now relative to where the script is. [Bug 527941] 

2002-03-27  David Gravereaux <[email protected]>

	* win/.cvsignore:
	* win/buildall.vc.bat:
	* win/coffbase.txt:
	* win/makefile.vc:







|







10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256

2002-03-27  David Gravereaux <[email protected]>

	* tools/man2help.tcl:
	* win/makefile.vc:  winhelp target now copies all needed files from
	tools/ to a workarea under $(OUT_DIR) and builds it from there.	No
	build cruft is left in tools/ anymore. All paths used in man2help.tcl
	are now relative to where the script is. [Bug 527941]

2002-03-27  David Gravereaux <[email protected]>

	* win/.cvsignore:
	* win/buildall.vc.bat:
	* win/coffbase.txt:
	* win/makefile.vc:
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
	* win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug 478579]

2002-03-22  Miguel Sofer  <[email protected]>

	* generic/tclBasic.c (Tcl_EvalObjEx):
	* generic/tclExecute.c (TclCompEvalObj): fixed the errorInfo for
	return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 [Bug
	533758]. Removed the static RecordTracebackInfo(), as its 
	functionality is easily replicated by Tcl_LogCommandInfo. Bug and
	redundancy noted by Don Porter.

2002-03-21  Donal K. Fellows  <[email protected]>

	* doc/expr.n: Improved documentation for ceil and floor [Bug 530535]








|







10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
	* win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug 478579]

2002-03-22  Miguel Sofer  <[email protected]>

	* generic/tclBasic.c (Tcl_EvalObjEx):
	* generic/tclExecute.c (TclCompEvalObj): fixed the errorInfo for
	return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 [Bug
	533758]. Removed the static RecordTracebackInfo(), as its
	functionality is easily replicated by Tcl_LogCommandInfo. Bug and
	redundancy noted by Don Porter.

2002-03-21  Donal K. Fellows  <[email protected]>

	* doc/expr.n: Improved documentation for ceil and floor [Bug 530535]

10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
	* generic/tclInt.decls (TclLookupVar,TclPrecTraceProc):
	* generic/tclLink.c (LinkTraceProc):
	* generic/tclUtil.c (TclPrecTraceProc):
	* generic/tclVar.c (CallTraces, MakeUpvar, VarErrMsg, TclLookupVar,
	(Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2)
	(Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex)
	(TclSetVar2Ex): Updated interfaces of generic/tclVar.c according to
	TIP 27. In particular, the "part2" arguments were CONSTified. 
	[Patch 532642]
	* generic/tclDecls.h:
	* generic/tclIntDecls.h: make genstubs

2002-03-15  Donal K. Fellows  <[email protected]>

	* tests/compile.test (compile-12.3): Test to detect bug 530320.







|







10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
	* generic/tclInt.decls (TclLookupVar,TclPrecTraceProc):
	* generic/tclLink.c (LinkTraceProc):
	* generic/tclUtil.c (TclPrecTraceProc):
	* generic/tclVar.c (CallTraces, MakeUpvar, VarErrMsg, TclLookupVar,
	(Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2)
	(Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex)
	(TclSetVar2Ex): Updated interfaces of generic/tclVar.c according to
	TIP 27. In particular, the "part2" arguments were CONSTified.
	[Patch 532642]
	* generic/tclDecls.h:
	* generic/tclIntDecls.h: make genstubs

2002-03-15  Donal K. Fellows  <[email protected]>

	* tests/compile.test (compile-12.3): Test to detect bug 530320.
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
	* generic.tclTest.c (PretendTclpOpenFileChannel,
	(TestOpenFileChannelProc1,TestOpenFileChannelProc2,
	(TestOpenFileChannelProc3,TestReportOpenFileChannel):
	* mac/tclMacChan.c (TclpOpenFileChannel):
	* unix/tclUnixChan.c (TclpOpenFileChannel):
	* win/tclWinChan.c (TclpOpenFileChannel): Updated APIs in
	generic/tclIOUtil.c and generic/tclPosixStr.c according to the
	guidelines of TIP 27. Updated callers. [Patch 499196] 

	* generic/tclDecls.h:
	* generic/tclIntDecls.h: make genstubs

	* doc/CrtChannel.3:
	* doc/OpenFileChnl.3:
	* generic/tcl.decls:







|







11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
	* generic.tclTest.c (PretendTclpOpenFileChannel,
	(TestOpenFileChannelProc1,TestOpenFileChannelProc2,
	(TestOpenFileChannelProc3,TestReportOpenFileChannel):
	* mac/tclMacChan.c (TclpOpenFileChannel):
	* unix/tclUnixChan.c (TclpOpenFileChannel):
	* win/tclWinChan.c (TclpOpenFileChannel): Updated APIs in
	generic/tclIOUtil.c and generic/tclPosixStr.c according to the
	guidelines of TIP 27. Updated callers. [Patch 499196]

	* generic/tclDecls.h:
	* generic/tclIntDecls.h: make genstubs

	* doc/CrtChannel.3:
	* doc/OpenFileChnl.3:
	* generic/tcl.decls:

Changes to generic/tclInt.decls.

852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
    u_short TclWinNToHS(u_short ns)
}
declare 7 win {
    int TclWinSetSockOpt(SOCKET s, int level, int optname,
	    const char *optval, int optlen)
}
declare 8 win {
    unsigned long TclpGetPid(Tcl_Pid pid)
}
declare 9 win {
    int TclWinGetPlatformId(void)
}
# Removed in 8.3.1 (for Win32s only)
#declare 10 win {
#    int TclWinSynchSpawn(void *args, int type, void **trans, Tcl_Pid *pidPtr)







|







852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
    u_short TclWinNToHS(u_short ns)
}
declare 7 win {
    int TclWinSetSockOpt(SOCKET s, int level, int optname,
	    const char *optval, int optlen)
}
declare 8 win {
    int TclpGetPid(Tcl_Pid pid)
}
declare 9 win {
    int TclWinGetPlatformId(void)
}
# Removed in 8.3.1 (for Win32s only)
#declare 10 win {
#    int TclWinSynchSpawn(void *args, int type, void **trans, Tcl_Pid *pidPtr)
949
950
951
952
953
954
955

956
957
958
959

960
961

962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980

981
982
983
984
985
986
987
988
989
declare 0 unix {
    void TclWinConvertError(unsigned int errCode)
}
# On non-cygwin, this is actually a reference to TclpCloseFile
declare 1 unix {
    void TclWinConvertWSAError(unsigned int errCode)
}

declare 2 unix {
    Tcl_Channel TclpCreateCommandChannel(TclFile readFile,
	    TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)
}

declare 3 unix {
    int TclpCreatePipe(TclFile *readPipe, TclFile *writePipe)

}
# On non-cygwin, this is actually a reference to TclpCreateProcess
declare 4 unix {
    void *TclWinGetTclInstance(void)
}
# Signature changed in 8.1:
#  declare 5 unix {
#      TclFile TclpCreateTempFile(char *contents, Tcl_DString *namePtr)
#  }

# On non-cygwin, this is actually a reference to TclpMakeFile
declare 6 unix {
    unsigned short TclWinNToHS(unsigned short ns)
}
# On non-cygwin, this is actually a reference to TclpOpenFile
declare 7 unix {
    int TclWinSetSockOpt(void *s, int level, int optname,
	    const char *optval, int optlen)
}

declare 8 unix {
    int TclUnixWaitForFile(int fd, int mask, int timeout)
}

# Added in 8.1:

# On non-cygwin, this is actually a reference to TclpCreateTempFile
declare 9 unix {
    int TclWinGetPlatformId(void)







>

<
|

>

|
>



















>

|







949
950
951
952
953
954
955
956
957

958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
declare 0 unix {
    void TclWinConvertError(unsigned int errCode)
}
# On non-cygwin, this is actually a reference to TclpCloseFile
declare 1 unix {
    void TclWinConvertWSAError(unsigned int errCode)
}
# On non-cygwin, this is actually a reference to TclpCreateCommandChannel
declare 2 unix {

    struct servent *TclWinGetServByName(const char *nm, const char *proto)
}
# On non-cygwin, this is actually a reference to TclpCreatePipe
declare 3 unix {
    int TclWinGetSockOpt(void *s, int level, int optname,
	    char *optval, int *optlen)
}
# On non-cygwin, this is actually a reference to TclpCreateProcess
declare 4 unix {
    void *TclWinGetTclInstance(void)
}
# Signature changed in 8.1:
#  declare 5 unix {
#      TclFile TclpCreateTempFile(char *contents, Tcl_DString *namePtr)
#  }

# On non-cygwin, this is actually a reference to TclpMakeFile
declare 6 unix {
    unsigned short TclWinNToHS(unsigned short ns)
}
# On non-cygwin, this is actually a reference to TclpOpenFile
declare 7 unix {
    int TclWinSetSockOpt(void *s, int level, int optname,
	    const char *optval, int optlen)
}
# On non-cygwin, this is actually a reference to TclUnixWaitForFile
declare 8 unix {
    int TclpGetPid(Tcl_Pid pid)
}

# Added in 8.1:

# On non-cygwin, this is actually a reference to TclpCreateTempFile
declare 9 unix {
    int TclWinGetPlatformId(void)
1000
1001
1002
1003
1004
1005
1006


1007
1008

1009
1010
1011
1012
1013
1014
1015
declare 11 unix {
    struct tm *TclpLocaltime_unix(TclpTime_t_CONST clock)
}
# On cygwin, this is actually a reference to TclpCloseFile
declare 12 unix {
    struct tm *TclpGmtime_unix(TclpTime_t_CONST clock)
}


declare 13 unix {
    char *TclpInetNtoa(struct in_addr addr)

}
#On cygwin, TclpCreateProcess is here
declare 15 unix {
    int TclMacOSXGetFileAttribute(Tcl_Interp *interp, int objIndex,
	    Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr)
}
#On cygwin, TclpMakeFile is here







>
>

<
>







1003
1004
1005
1006
1007
1008
1009
1010
1011
1012

1013
1014
1015
1016
1017
1018
1019
1020
declare 11 unix {
    struct tm *TclpLocaltime_unix(TclpTime_t_CONST clock)
}
# On cygwin, this is actually a reference to TclpCloseFile
declare 12 unix {
    struct tm *TclpGmtime_unix(TclpTime_t_CONST clock)
}
# On cygwin, this is a reference to TclpCreateCommandChannel
# Otherwise, this is a reference to TclpInetNtoa
declare 13 unix {

    void TclIntPlatReserved13(void)
}
#On cygwin, TclpCreateProcess is here
declare 15 unix {
    int TclMacOSXGetFileAttribute(Tcl_Interp *interp, int objIndex,
	    Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr)
}
#On cygwin, TclpMakeFile is here
1045
1046
1047
1048
1049
1050
1051



1052




















1053
1054
1055
1056
}
declare 30 unix {
    void TclGetAndDetachPids(Tcl_Interp *interp, Tcl_Channel chan)
}
declare 31 unix {
    int TclpCloseFile(TclFile file)
}

























# Local Variables:
# mode: tcl
# End:







>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
}
declare 30 unix {
    void TclGetAndDetachPids(Tcl_Interp *interp, Tcl_Channel chan)
}
declare 31 unix {
    int TclpCloseFile(TclFile file)
}
declare 32 unix {
    Tcl_Channel TclpCreateCommandChannel(TclFile readFile,
	    TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)
}
declare 33 unix {
    int TclpCreatePipe(TclFile *readPipe, TclFile *writePipe)
}
declare 34 unix {
    int TclpCreateProcess(Tcl_Interp *interp,
	    int argc, const char **argv, TclFile inputFile,
	    TclFile outputFile, TclFile errorFile, Tcl_Pid *pidPtr)
}
declare 35 unix {
    char *TclpInetNtoa(struct in_addr addr)
}
declare 36 unix {
    TclFile TclpMakeFile(Tcl_Channel channel, int direction)
}
declare 37 unix {
    TclFile TclpOpenFile(const char *fname, int mode)
}
declare 38 unix {
    int TclUnixWaitForFile(int fd, int mask, int timeout)
}

# Local Variables:
# mode: tcl
# End:

Changes to generic/tclIntPlatDecls.h.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 * All rights reserved.
 */

#ifndef _TCLINTPLATDECLS
#define _TCLINTPLATDECLS

#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
EXTERN int TclpCreateProcess _ANSI_ARGS_((Tcl_Interp *interp,
	int argc, CONST char **argv, TclFile inputFile,
	TclFile outputFile, TclFile errorFile, Tcl_Pid *pidPtr));
EXTERN TclFile TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel,
	int direction));
EXTERN TclFile TclpOpenFile _ANSI_ARGS_((CONST char *fname,
	int mode));
#endif

/*
 * WARNING: This file is automatically generated by the tools/genStubs.tcl
 * script.  Any modifications to the function declarations below should be made
 * in the generic/tclInt.decls script.
 */

/* !BEGIN!: Do not edit below this line. */

/*
 * Exported function declarations:
 */

#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
/* 0 */
EXTERN void		TclWinConvertError _ANSI_ARGS_((unsigned int errCode));
/* 1 */
EXTERN void		TclWinConvertWSAError _ANSI_ARGS_((
				unsigned int errCode));
/* 2 */
EXTERN Tcl_Channel	TclpCreateCommandChannel _ANSI_ARGS_((
				TclFile readFile, TclFile writeFile,
				TclFile errorFile, int numPids,
				Tcl_Pid *pidPtr));
/* 3 */
EXTERN int		TclpCreatePipe _ANSI_ARGS_((TclFile *readPipe,
				TclFile *writePipe));

/* 4 */
EXTERN VOID *		TclWinGetTclInstance _ANSI_ARGS_((void));
/* Slot 5 is reserved */
/* 6 */
EXTERN unsigned short	TclWinNToHS _ANSI_ARGS_((unsigned short ns));
/* 7 */
EXTERN int		TclWinSetSockOpt _ANSI_ARGS_((VOID *s, int level,
				int optname, CONST char *optval, int optlen));
/* 8 */
EXTERN int		TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask,
				int timeout));
/* 9 */
EXTERN int		TclWinGetPlatformId _ANSI_ARGS_((void));
/* 10 */
EXTERN Tcl_DirEntry *	TclpReaddir _ANSI_ARGS_((DIR *dir));
/* 11 */
EXTERN struct tm *	TclpLocaltime_unix _ANSI_ARGS_((
				TclpTime_t_CONST clock));
/* 12 */
EXTERN struct tm *	TclpGmtime_unix _ANSI_ARGS_((TclpTime_t_CONST clock));
/* 13 */
EXTERN char *		TclpInetNtoa _ANSI_ARGS_((struct in_addr addr));
/* Slot 14 is reserved */
/* 15 */
EXTERN int		TclMacOSXGetFileAttribute _ANSI_ARGS_((
				Tcl_Interp *interp, int objIndex,
				Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr));
/* Slot 16 is reserved */
/* Slot 17 is reserved */







<
<
<
<
<
<
<
<
<
<



















|
<
<
|

|
<
>









|
<










|







9
10
11
12
13
14
15










16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35


36
37
38

39
40
41
42
43
44
45
46
47
48
49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 * All rights reserved.
 */

#ifndef _TCLINTPLATDECLS
#define _TCLINTPLATDECLS











/*
 * WARNING: This file is automatically generated by the tools/genStubs.tcl
 * script.  Any modifications to the function declarations below should be made
 * in the generic/tclInt.decls script.
 */

/* !BEGIN!: Do not edit below this line. */

/*
 * Exported function declarations:
 */

#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
/* 0 */
EXTERN void		TclWinConvertError _ANSI_ARGS_((unsigned int errCode));
/* 1 */
EXTERN void		TclWinConvertWSAError _ANSI_ARGS_((
				unsigned int errCode));
/* 2 */
EXTERN struct servent *	 TclWinGetServByName _ANSI_ARGS_((CONST char *nm,


				CONST char *proto));
/* 3 */
EXTERN int		TclWinGetSockOpt _ANSI_ARGS_((VOID *s, int level,

				int optname, char *optval, int *optlen));
/* 4 */
EXTERN VOID *		TclWinGetTclInstance _ANSI_ARGS_((void));
/* Slot 5 is reserved */
/* 6 */
EXTERN unsigned short	TclWinNToHS _ANSI_ARGS_((unsigned short ns));
/* 7 */
EXTERN int		TclWinSetSockOpt _ANSI_ARGS_((VOID *s, int level,
				int optname, CONST char *optval, int optlen));
/* 8 */
EXTERN int		TclpGetPid _ANSI_ARGS_((Tcl_Pid pid));

/* 9 */
EXTERN int		TclWinGetPlatformId _ANSI_ARGS_((void));
/* 10 */
EXTERN Tcl_DirEntry *	TclpReaddir _ANSI_ARGS_((DIR *dir));
/* 11 */
EXTERN struct tm *	TclpLocaltime_unix _ANSI_ARGS_((
				TclpTime_t_CONST clock));
/* 12 */
EXTERN struct tm *	TclpGmtime_unix _ANSI_ARGS_((TclpTime_t_CONST clock));
/* 13 */
EXTERN void		TclIntPlatReserved13 _ANSI_ARGS_((void));
/* Slot 14 is reserved */
/* 15 */
EXTERN int		TclMacOSXGetFileAttribute _ANSI_ARGS_((
				Tcl_Interp *interp, int objIndex,
				Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr));
/* Slot 16 is reserved */
/* Slot 17 is reserved */
106
107
108
109
110
111
112
























113
114
115
116
117
118
119
EXTERN int		TclWinCPUID _ANSI_ARGS_((unsigned int index,
				unsigned int *regs));
/* 30 */
EXTERN void		TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp *interp,
				Tcl_Channel chan));
/* 31 */
EXTERN int		TclpCloseFile _ANSI_ARGS_((TclFile file));
























#endif /* UNIX */
#ifdef __WIN32__
/* 0 */
EXTERN void		TclWinConvertError _ANSI_ARGS_((DWORD errCode));
/* 1 */
EXTERN void		TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode));
/* 2 */







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
EXTERN int		TclWinCPUID _ANSI_ARGS_((unsigned int index,
				unsigned int *regs));
/* 30 */
EXTERN void		TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp *interp,
				Tcl_Channel chan));
/* 31 */
EXTERN int		TclpCloseFile _ANSI_ARGS_((TclFile file));
/* 32 */
EXTERN Tcl_Channel	TclpCreateCommandChannel _ANSI_ARGS_((
				TclFile readFile, TclFile writeFile,
				TclFile errorFile, int numPids,
				Tcl_Pid *pidPtr));
/* 33 */
EXTERN int		TclpCreatePipe _ANSI_ARGS_((TclFile *readPipe,
				TclFile *writePipe));
/* 34 */
EXTERN int		TclpCreateProcess _ANSI_ARGS_((Tcl_Interp *interp,
				int argc, CONST char **argv,
				TclFile inputFile, TclFile outputFile,
				TclFile errorFile, Tcl_Pid *pidPtr));
/* 35 */
EXTERN char *		TclpInetNtoa _ANSI_ARGS_((struct in_addr addr));
/* 36 */
EXTERN TclFile		TclpMakeFile _ANSI_ARGS_((Tcl_Channel channel,
				int direction));
/* 37 */
EXTERN TclFile		TclpOpenFile _ANSI_ARGS_((CONST char *fname,
				int mode));
/* 38 */
EXTERN int		TclUnixWaitForFile _ANSI_ARGS_((int fd, int mask,
				int timeout));
#endif /* UNIX */
#ifdef __WIN32__
/* 0 */
EXTERN void		TclWinConvertError _ANSI_ARGS_((DWORD errCode));
/* 1 */
EXTERN void		TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode));
/* 2 */
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* Slot 5 is reserved */
/* 6 */
EXTERN u_short		TclWinNToHS _ANSI_ARGS_((u_short ns));
/* 7 */
EXTERN int		TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level,
				int optname, CONST char *optval, int optlen));
/* 8 */
EXTERN unsigned long	TclpGetPid _ANSI_ARGS_((Tcl_Pid pid));
/* 9 */
EXTERN int		TclWinGetPlatformId _ANSI_ARGS_((void));
/* Slot 10 is reserved */
/* 11 */
EXTERN void		TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp *interp,
				Tcl_Channel chan));
/* 12 */







|







138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* Slot 5 is reserved */
/* 6 */
EXTERN u_short		TclWinNToHS _ANSI_ARGS_((u_short ns));
/* 7 */
EXTERN int		TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level,
				int optname, CONST char *optval, int optlen));
/* 8 */
EXTERN int		TclpGetPid _ANSI_ARGS_((Tcl_Pid pid));
/* 9 */
EXTERN int		TclWinGetPlatformId _ANSI_ARGS_((void));
/* Slot 10 is reserved */
/* 11 */
EXTERN void		TclGetAndDetachPids _ANSI_ARGS_((Tcl_Interp *interp,
				Tcl_Channel chan));
/* 12 */
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
typedef struct TclIntPlatStubs {
    int magic;
    struct TclIntPlatStubHooks *hooks;

#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
    void (*tclWinConvertError) _ANSI_ARGS_((unsigned int errCode)); /* 0 */
    void (*tclWinConvertWSAError) _ANSI_ARGS_((unsigned int errCode)); /* 1 */
    Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)); /* 2 */
    int (*tclpCreatePipe) _ANSI_ARGS_((TclFile *readPipe, TclFile *writePipe)); /* 3 */
    VOID * (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */
    VOID *reserved5;
    unsigned short (*tclWinNToHS) _ANSI_ARGS_((unsigned short ns)); /* 6 */
    int (*tclWinSetSockOpt) _ANSI_ARGS_((VOID *s, int level, int optname, CONST char *optval, int optlen)); /* 7 */
    int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 8 */
    int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */
    Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR *dir)); /* 10 */
    struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 11 */
    struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 12 */
    char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 13 */
    VOID *reserved14;
    int (*tclMacOSXGetFileAttribute) _ANSI_ARGS_((Tcl_Interp *interp, int objIndex, Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr)); /* 15 */
    VOID *reserved16;
    VOID *reserved17;
    int (*tclMacOSXMatchType) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *pathName, CONST char *fileName, Tcl_StatBuf *statBufPtr, Tcl_GlobTypeData *types)); /* 18 */
    void (*tclMacOSXNotifierAddRunLoopMode) _ANSI_ARGS_((CONST VOID *runLoopMode)); /* 19 */
    void (*tclWinAddProcess) _ANSI_ARGS_((VOID *hProcess, unsigned int id)); /* 20 */
    VOID *reserved21;
    TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char *contents)); /* 22 */
    VOID *reserved23;
    char * (*tclWinNoBackslash) _ANSI_ARGS_((char *path)); /* 24 */
    VOID *reserved25;
    void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */
    void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */
    void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */
    int (*tclWinCPUID) _ANSI_ARGS_((unsigned int index, unsigned int *regs)); /* 29 */
    void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); /* 30 */
    int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 31 */







#endif /* UNIX */
#ifdef __WIN32__
    void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */
    void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */
    struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char *nm, CONST char *proto)); /* 2 */
    int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char *optval, int *optlen)); /* 3 */
    HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */
    VOID *reserved5;
    u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */
    int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char *optval, int optlen)); /* 7 */
    unsigned long (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */
    int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */
    VOID *reserved10;
    void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); /* 11 */
    int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */
    Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)); /* 13 */
    int (*tclpCreatePipe) _ANSI_ARGS_((TclFile *readPipe, TclFile *writePipe)); /* 14 */
    int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp *interp, int argc, CONST char **argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid *pidPtr)); /* 15 */







|
|




|




|


















>
>
>
>
>
>
>










|







268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
typedef struct TclIntPlatStubs {
    int magic;
    struct TclIntPlatStubHooks *hooks;

#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
    void (*tclWinConvertError) _ANSI_ARGS_((unsigned int errCode)); /* 0 */
    void (*tclWinConvertWSAError) _ANSI_ARGS_((unsigned int errCode)); /* 1 */
    struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char *nm, CONST char *proto)); /* 2 */
    int (*tclWinGetSockOpt) _ANSI_ARGS_((VOID *s, int level, int optname, char *optval, int *optlen)); /* 3 */
    VOID * (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */
    VOID *reserved5;
    unsigned short (*tclWinNToHS) _ANSI_ARGS_((unsigned short ns)); /* 6 */
    int (*tclWinSetSockOpt) _ANSI_ARGS_((VOID *s, int level, int optname, CONST char *optval, int optlen)); /* 7 */
    int (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */
    int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */
    Tcl_DirEntry * (*tclpReaddir) _ANSI_ARGS_((DIR *dir)); /* 10 */
    struct tm * (*tclpLocaltime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 11 */
    struct tm * (*tclpGmtime_unix) _ANSI_ARGS_((TclpTime_t_CONST clock)); /* 12 */
    void (*tclIntPlatReserved13) _ANSI_ARGS_((void)); /* 13 */
    VOID *reserved14;
    int (*tclMacOSXGetFileAttribute) _ANSI_ARGS_((Tcl_Interp *interp, int objIndex, Tcl_Obj *fileName, Tcl_Obj **attributePtrPtr)); /* 15 */
    VOID *reserved16;
    VOID *reserved17;
    int (*tclMacOSXMatchType) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *pathName, CONST char *fileName, Tcl_StatBuf *statBufPtr, Tcl_GlobTypeData *types)); /* 18 */
    void (*tclMacOSXNotifierAddRunLoopMode) _ANSI_ARGS_((CONST VOID *runLoopMode)); /* 19 */
    void (*tclWinAddProcess) _ANSI_ARGS_((VOID *hProcess, unsigned int id)); /* 20 */
    VOID *reserved21;
    TclFile (*tclpCreateTempFile) _ANSI_ARGS_((CONST char *contents)); /* 22 */
    VOID *reserved23;
    char * (*tclWinNoBackslash) _ANSI_ARGS_((char *path)); /* 24 */
    VOID *reserved25;
    void (*tclWinSetInterfaces) _ANSI_ARGS_((int wide)); /* 26 */
    void (*tclWinFlushDirtyChannels) _ANSI_ARGS_((void)); /* 27 */
    void (*tclWinResetInterfaces) _ANSI_ARGS_((void)); /* 28 */
    int (*tclWinCPUID) _ANSI_ARGS_((unsigned int index, unsigned int *regs)); /* 29 */
    void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); /* 30 */
    int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 31 */
    Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)); /* 32 */
    int (*tclpCreatePipe) _ANSI_ARGS_((TclFile *readPipe, TclFile *writePipe)); /* 33 */
    int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp *interp, int argc, CONST char **argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid *pidPtr)); /* 34 */
    char * (*tclpInetNtoa) _ANSI_ARGS_((struct in_addr addr)); /* 35 */
    TclFile (*tclpMakeFile) _ANSI_ARGS_((Tcl_Channel channel, int direction)); /* 36 */
    TclFile (*tclpOpenFile) _ANSI_ARGS_((CONST char *fname, int mode)); /* 37 */
    int (*tclUnixWaitForFile) _ANSI_ARGS_((int fd, int mask, int timeout)); /* 38 */
#endif /* UNIX */
#ifdef __WIN32__
    void (*tclWinConvertError) _ANSI_ARGS_((DWORD errCode)); /* 0 */
    void (*tclWinConvertWSAError) _ANSI_ARGS_((DWORD errCode)); /* 1 */
    struct servent * (*tclWinGetServByName) _ANSI_ARGS_((CONST char *nm, CONST char *proto)); /* 2 */
    int (*tclWinGetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, char *optval, int *optlen)); /* 3 */
    HINSTANCE (*tclWinGetTclInstance) _ANSI_ARGS_((void)); /* 4 */
    VOID *reserved5;
    u_short (*tclWinNToHS) _ANSI_ARGS_((u_short ns)); /* 6 */
    int (*tclWinSetSockOpt) _ANSI_ARGS_((SOCKET s, int level, int optname, CONST char *optval, int optlen)); /* 7 */
    int (*tclpGetPid) _ANSI_ARGS_((Tcl_Pid pid)); /* 8 */
    int (*tclWinGetPlatformId) _ANSI_ARGS_((void)); /* 9 */
    VOID *reserved10;
    void (*tclGetAndDetachPids) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); /* 11 */
    int (*tclpCloseFile) _ANSI_ARGS_((TclFile file)); /* 12 */
    Tcl_Channel (*tclpCreateCommandChannel) _ANSI_ARGS_((TclFile readFile, TclFile writeFile, TclFile errorFile, int numPids, Tcl_Pid *pidPtr)); /* 13 */
    int (*tclpCreatePipe) _ANSI_ARGS_((TclFile *readPipe, TclFile *writePipe)); /* 14 */
    int (*tclpCreateProcess) _ANSI_ARGS_((Tcl_Interp *interp, int argc, CONST char **argv, TclFile inputFile, TclFile outputFile, TclFile errorFile, Tcl_Pid *pidPtr)); /* 15 */
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
#define TclWinConvertError \
	(tclIntPlatStubsPtr->tclWinConvertError) /* 0 */
#endif
#ifndef TclWinConvertWSAError
#define TclWinConvertWSAError \
	(tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */
#endif
#ifndef TclpCreateCommandChannel
#define TclpCreateCommandChannel \
	(tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 2 */
#endif
#ifndef TclpCreatePipe
#define TclpCreatePipe \
	(tclIntPlatStubsPtr->tclpCreatePipe) /* 3 */
#endif
#ifndef TclWinGetTclInstance
#define TclWinGetTclInstance \
	(tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */
#endif
/* Slot 5 is reserved */
#ifndef TclWinNToHS
#define TclWinNToHS \
	(tclIntPlatStubsPtr->tclWinNToHS) /* 6 */
#endif
#ifndef TclWinSetSockOpt
#define TclWinSetSockOpt \
	(tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */
#endif
#ifndef TclUnixWaitForFile
#define TclUnixWaitForFile \
	(tclIntPlatStubsPtr->tclUnixWaitForFile) /* 8 */
#endif
#ifndef TclWinGetPlatformId
#define TclWinGetPlatformId \
	(tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */
#endif
#ifndef TclpReaddir
#define TclpReaddir \
	(tclIntPlatStubsPtr->tclpReaddir) /* 10 */
#endif
#ifndef TclpLocaltime_unix
#define TclpLocaltime_unix \
	(tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */
#endif
#ifndef TclpGmtime_unix
#define TclpGmtime_unix \
	(tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */
#endif
#ifndef TclpInetNtoa
#define TclpInetNtoa \
	(tclIntPlatStubsPtr->tclpInetNtoa) /* 13 */
#endif
/* Slot 14 is reserved */
#ifndef TclMacOSXGetFileAttribute
#define TclMacOSXGetFileAttribute \
	(tclIntPlatStubsPtr->tclMacOSXGetFileAttribute) /* 15 */
#endif
/* Slot 16 is reserved */







|
|
|

|
|
|














|
|
|

















|
|
|







392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
#define TclWinConvertError \
	(tclIntPlatStubsPtr->tclWinConvertError) /* 0 */
#endif
#ifndef TclWinConvertWSAError
#define TclWinConvertWSAError \
	(tclIntPlatStubsPtr->tclWinConvertWSAError) /* 1 */
#endif
#ifndef TclWinGetServByName
#define TclWinGetServByName \
	(tclIntPlatStubsPtr->tclWinGetServByName) /* 2 */
#endif
#ifndef TclWinGetSockOpt
#define TclWinGetSockOpt \
	(tclIntPlatStubsPtr->tclWinGetSockOpt) /* 3 */
#endif
#ifndef TclWinGetTclInstance
#define TclWinGetTclInstance \
	(tclIntPlatStubsPtr->tclWinGetTclInstance) /* 4 */
#endif
/* Slot 5 is reserved */
#ifndef TclWinNToHS
#define TclWinNToHS \
	(tclIntPlatStubsPtr->tclWinNToHS) /* 6 */
#endif
#ifndef TclWinSetSockOpt
#define TclWinSetSockOpt \
	(tclIntPlatStubsPtr->tclWinSetSockOpt) /* 7 */
#endif
#ifndef TclpGetPid
#define TclpGetPid \
	(tclIntPlatStubsPtr->tclpGetPid) /* 8 */
#endif
#ifndef TclWinGetPlatformId
#define TclWinGetPlatformId \
	(tclIntPlatStubsPtr->tclWinGetPlatformId) /* 9 */
#endif
#ifndef TclpReaddir
#define TclpReaddir \
	(tclIntPlatStubsPtr->tclpReaddir) /* 10 */
#endif
#ifndef TclpLocaltime_unix
#define TclpLocaltime_unix \
	(tclIntPlatStubsPtr->tclpLocaltime_unix) /* 11 */
#endif
#ifndef TclpGmtime_unix
#define TclpGmtime_unix \
	(tclIntPlatStubsPtr->tclpGmtime_unix) /* 12 */
#endif
#ifndef TclIntPlatReserved13
#define TclIntPlatReserved13 \
	(tclIntPlatStubsPtr->tclIntPlatReserved13) /* 13 */
#endif
/* Slot 14 is reserved */
#ifndef TclMacOSXGetFileAttribute
#define TclMacOSXGetFileAttribute \
	(tclIntPlatStubsPtr->tclMacOSXGetFileAttribute) /* 15 */
#endif
/* Slot 16 is reserved */
473
474
475
476
477
478
479




























480
481
482
483
484
485
486
#define TclGetAndDetachPids \
	(tclIntPlatStubsPtr->tclGetAndDetachPids) /* 30 */
#endif
#ifndef TclpCloseFile
#define TclpCloseFile \
	(tclIntPlatStubsPtr->tclpCloseFile) /* 31 */
#endif




























#endif /* UNIX */
#ifdef __WIN32__
#ifndef TclWinConvertError
#define TclWinConvertError \
	(tclIntPlatStubsPtr->tclWinConvertError) /* 0 */
#endif
#ifndef TclWinConvertWSAError







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
#define TclGetAndDetachPids \
	(tclIntPlatStubsPtr->tclGetAndDetachPids) /* 30 */
#endif
#ifndef TclpCloseFile
#define TclpCloseFile \
	(tclIntPlatStubsPtr->tclpCloseFile) /* 31 */
#endif
#ifndef TclpCreateCommandChannel
#define TclpCreateCommandChannel \
	(tclIntPlatStubsPtr->tclpCreateCommandChannel) /* 32 */
#endif
#ifndef TclpCreatePipe
#define TclpCreatePipe \
	(tclIntPlatStubsPtr->tclpCreatePipe) /* 33 */
#endif
#ifndef TclpCreateProcess
#define TclpCreateProcess \
	(tclIntPlatStubsPtr->tclpCreateProcess) /* 34 */
#endif
#ifndef TclpInetNtoa
#define TclpInetNtoa \
	(tclIntPlatStubsPtr->tclpInetNtoa) /* 35 */
#endif
#ifndef TclpMakeFile
#define TclpMakeFile \
	(tclIntPlatStubsPtr->tclpMakeFile) /* 36 */
#endif
#ifndef TclpOpenFile
#define TclpOpenFile \
	(tclIntPlatStubsPtr->tclpOpenFile) /* 37 */
#endif
#ifndef TclUnixWaitForFile
#define TclUnixWaitForFile \
	(tclIntPlatStubsPtr->tclUnixWaitForFile) /* 38 */
#endif
#endif /* UNIX */
#ifdef __WIN32__
#ifndef TclWinConvertError
#define TclWinConvertError \
	(tclIntPlatStubsPtr->tclWinConvertError) /* 0 */
#endif
#ifndef TclWinConvertWSAError
698
699
700
701
702
703
704

705
706








707
708
709
710
711
712
713
714


715
716
717
718
719
720
721
722


723
724
725
726



727
728
729
730
731
732
733






734

735
736
737

#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TclpLocaltime_unix
#undef TclpGmtime_unix


#if !defined(__WIN32__) && !defined(MAC_TCL) && defined(USE_TCL_STUBS)








#   ifdef __CYGWIN__
#	define TclpCreateProcess ((int (*) _ANSI_ARGS_((Tcl_Interp *, int, \
		CONST char **, TclFile, TclFile, TclFile, Tcl_Pid *))) \
		tclIntPlatStubsPtr->tclMacOSXGetFileAttribute)
#	define TclpMakeFile ((TclFile (*) _ANSI_ARGS_((Tcl_Channel channel, \
	    int direction))) tclIntPlatStubsPtr->tclMacOSXMatchType)
#	define TclpOpenFile ((TclFile (*) _ANSI_ARGS_((CONST char *, int))) \
	    tclIntPlatStubsPtr->tclMacOSXNotifierAddRunLoopMode)


#   else
#	define TclpCreateProcess ((int (*) _ANSI_ARGS_((Tcl_Interp *, int, \
		CONST char **, TclFile, TclFile, TclFile, Tcl_Pid *))) \
		tclIntPlatStubsPtr->tclWinGetTclInstance)
#	define TclpMakeFile ((TclFile (*) _ANSI_ARGS_((Tcl_Channel channel, \
	    int direction))) tclIntPlatStubsPtr->tclWinNToHS)
#	define TclpOpenFile ((TclFile (*) _ANSI_ARGS_((CONST char *, int))) \
	    tclIntPlatStubsPtr->tclWinNToHS)



#	undef TclpCreateTempFile
#	undef TclGetAndDetachPids
#	undef TclpCloseFile




#	define TclpCreateTempFile ((TclFile (*) _ANSI_ARGS_((CONST char *))) \
		tclIntPlatStubsPtr->tclWinGetPlatformId)
#	define TclGetAndDetachPids ((void (*) _ANSI_ARGS_((Tcl_Interp *, Tcl_Channel))) \
	    tclIntPlatStubsPtr->tclWinConvertError)
#	define TclpCloseFile ((int (*) _ANSI_ARGS_((TclFile))) \
	    tclIntPlatStubsPtr->tclWinConvertWSAError)






#   endif

#endif

#endif /* _TCLINTPLATDECLS */







>

|
>
>
>
>
>
>
>
>








>
>







|
>
>




>
>
>







>
>
>
>
>
>

>



744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806

#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TclpLocaltime_unix
#undef TclpGmtime_unix
#undef TclIntPlatReserved13

#if !defined(__WIN32__) && !defined(MAC_TCL)
# undef TclpGetPid
# define TclpGetPid(pid) ((unsigned long) (pid))

# if defined(USE_TCL_STUBS)
#   undef TclpCreateProcess
#   undef TclpMakeFile
#   undef TclpOpenFile
#   undef TclpCreateCommandChannel
#   ifdef __CYGWIN__
#	define TclpCreateProcess ((int (*) _ANSI_ARGS_((Tcl_Interp *, int, \
		CONST char **, TclFile, TclFile, TclFile, Tcl_Pid *))) \
		tclIntPlatStubsPtr->tclMacOSXGetFileAttribute)
#	define TclpMakeFile ((TclFile (*) _ANSI_ARGS_((Tcl_Channel channel, \
	    int direction))) tclIntPlatStubsPtr->tclMacOSXMatchType)
#	define TclpOpenFile ((TclFile (*) _ANSI_ARGS_((CONST char *, int))) \
	    tclIntPlatStubsPtr->tclMacOSXNotifierAddRunLoopMode)
#   define TclpCreateCommandChannel ((Tcl_Channel (*) _ANSI_ARGS_((TclFile, TclFile, \
	    TclFile, int, Tcl_Pid *))) tclIntPlatStubsPtr->tclIntPlatReserved13)
#   else
#	define TclpCreateProcess ((int (*) _ANSI_ARGS_((Tcl_Interp *, int, \
		CONST char **, TclFile, TclFile, TclFile, Tcl_Pid *))) \
		tclIntPlatStubsPtr->tclWinGetTclInstance)
#	define TclpMakeFile ((TclFile (*) _ANSI_ARGS_((Tcl_Channel channel, \
	    int direction))) tclIntPlatStubsPtr->tclWinNToHS)
#	define TclpOpenFile ((TclFile (*) _ANSI_ARGS_((CONST char *, int))) \
	    tclIntPlatStubsPtr->tclWinSetSockOpt)
#   define TclpCreateCommandChannel ((Tcl_Channel (*) _ANSI_ARGS_((TclFile, TclFile, \
	    TclFile, int, Tcl_Pid *))) tclIntPlatStubsPtr->tclWinGetServByName)

#	undef TclpCreateTempFile
#	undef TclGetAndDetachPids
#	undef TclpCloseFile
#   undef TclpCreatePipe
#	undef TclpInetNtoa
#   undef TclUnixWaitForFile

#	define TclpCreateTempFile ((TclFile (*) _ANSI_ARGS_((CONST char *))) \
		tclIntPlatStubsPtr->tclWinGetPlatformId)
#	define TclGetAndDetachPids ((void (*) _ANSI_ARGS_((Tcl_Interp *, Tcl_Channel))) \
	    tclIntPlatStubsPtr->tclWinConvertError)
#	define TclpCloseFile ((int (*) _ANSI_ARGS_((TclFile))) \
	    tclIntPlatStubsPtr->tclWinConvertWSAError)
#   define TclpCreatePipe ((int (*)_ANSI_ARGS_((TclFile *, TclFile *))) \
	    tclIntPlatStubsPtr->tclWinGetSockOpt)
#   define TclpInetNtoa ((char *(*) _ANSI_ARGS_((struct in_addr addr))) \
	    tclIntPlatStubsPtr->tclIntPlatReserved13)
#   define TclUnixWaitForFile (int (*) _ANSI_ARGS_((int, int, int))) \
		tclIntPlatStubsPtr->tclpGetPid)
#   endif
# endif
#endif

#endif /* _TCLINTPLATDECLS */

Changes to generic/tclPipe.c.

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
    CONST char *msg;
    unsigned long resolvedPid;

    abnormalExit = 0;
    for (i = 0; i < numPids; i++) {
	/*
	 * We need to get the resolved pid before we wait on it as
	 * the windows implimentation of Tcl_WaitPid deletes the
	 * information such that any following calls to TclpGetPid
	 * fail.
	 */
	resolvedPid = TclpGetPid(pidPtr[i]);
        pid = Tcl_WaitPid(pidPtr[i], (int *) &waitStatus, 0);
	if (pid == (Tcl_Pid) -1) {
	    result = TCL_ERROR;







|







279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
    CONST char *msg;
    unsigned long resolvedPid;

    abnormalExit = 0;
    for (i = 0; i < numPids; i++) {
	/*
	 * We need to get the resolved pid before we wait on it as
	 * the windows implementation of Tcl_WaitPid deletes the
	 * information such that any following calls to TclpGetPid
	 * fail.
	 */
	resolvedPid = TclpGetPid(pidPtr[i]);
        pid = Tcl_WaitPid(pidPtr[i], (int *) &waitStatus, 0);
	if (pid == (Tcl_Pid) -1) {
	    result = TCL_ERROR;

Changes to generic/tclStubInit.c.

27
28
29
30
31
32
33

34
35
36
37
38
39
40
#undef Tcl_NewLongObj
#undef Tcl_NewObj
#undef Tcl_NewStringObj
#undef Tcl_DumpActiveMemory
#undef Tcl_ValidateAllMemory
#undef Tcl_FindHashEntry
#undef Tcl_CreateHashEntry

#undef TclSockMinimumBuffers

/*
 * Keep a record of the original Notifier procedures, created in the
 * same compilation unit as the stub tables so we can later do reliable,
 * portable comparisons to see whether a Tcl_SetNotifier() call swapped
 * new routines into the stub table.







>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#undef Tcl_NewLongObj
#undef Tcl_NewObj
#undef Tcl_NewStringObj
#undef Tcl_DumpActiveMemory
#undef Tcl_ValidateAllMemory
#undef Tcl_FindHashEntry
#undef Tcl_CreateHashEntry
#undef TclpGetPid
#undef TclSockMinimumBuffers

/*
 * Keep a record of the original Notifier procedures, created in the
 * same compilation unit as the stub tables so we can later do reliable,
 * portable comparisons to see whether a Tcl_SetNotifier() call swapped
 * new routines into the stub table.
77
78
79
80
81
82
83


84
85
86

87
88

89
90
91
92
93
94
95

#define TclWinGetPlatformId winGetPlatformId
#define Tcl_WinUtfToTChar winUtfToTChar
#define Tcl_WinTCharToUtf winTCharToUtf
#define TclWinGetTclInstance winGetTclInstance
#define TclWinNToHS winNToHS
#define TclWinSetSockOpt winSetSockOpt


#define TclWinNoBackslash winNoBackslash
#define TclWinSetInterfaces (void (*) (int)) doNothing
#define TclWinAddProcess (void (*) (void *, unsigned int)) doNothing

#define TclWinFlushDirtyChannels doNothing
#define TclWinResetInterfaces doNothing


static Tcl_Encoding winTCharEncoding;

static int
TclWinGetPlatformId()
{
    /* Don't bother to determine the real platform on cygwin,







>
>



>


>







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

#define TclWinGetPlatformId winGetPlatformId
#define Tcl_WinUtfToTChar winUtfToTChar
#define Tcl_WinTCharToUtf winTCharToUtf
#define TclWinGetTclInstance winGetTclInstance
#define TclWinNToHS winNToHS
#define TclWinSetSockOpt winSetSockOpt
#define TclWinGetSockOpt winGetSockOpt
#define TclWinGetServByName winGetServByName
#define TclWinNoBackslash winNoBackslash
#define TclWinSetInterfaces (void (*) (int)) doNothing
#define TclWinAddProcess (void (*) (void *, unsigned int)) doNothing
#define TclIntPlatReserved13 (void (*) ()) TclpCreateCommandChannel
#define TclWinFlushDirtyChannels doNothing
#define TclWinResetInterfaces doNothing
#define TclpGetPid getPid

static Tcl_Encoding winTCharEncoding;

static int
TclWinGetPlatformId()
{
    /* Don't bother to determine the real platform on cygwin,
113
114
115
116
117
118
119













120
121
122
123
124
125
126
127
128
129
130
131
132






133
134
135
136
137
138
139

static int
TclWinSetSockOpt(void *s, int level, int optname,
	    const char *optval, int optlen)
{
    return setsockopt((int) s, level, optname, optval, optlen);
}














static char *
TclWinNoBackslash(char *path)
{
    char *p;

    for (p = path; *p != '\0'; p++) {
	if (*p == '\\') {
	    *p = '/';
	}
    }
    return path;
}







static void
doNothing(void)
{
    /* dummy implementation, no need to do anything */
}








>
>
>
>
>
>
>
>
>
>
>
>
>













>
>
>
>
>
>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

static int
TclWinSetSockOpt(void *s, int level, int optname,
	    const char *optval, int optlen)
{
    return setsockopt((int) s, level, optname, optval, optlen);
}

static int
TclWinGetSockOpt(void *s, int level, int optname,
	    char *optval, int *optlen)
{
    return getsockopt((int) s, level, optname, optval, optlen);
}

struct servent *
TclWinGetServByName(const char *name, const char *proto)
{
    return getservbyname(name, proto);
}

static char *
TclWinNoBackslash(char *path)
{
    char *p;

    for (p = path; *p != '\0'; p++) {
	if (*p == '\\') {
	    *p = '/';
	}
    }
    return path;
}

static int
TclpGetPid(Tcl_Pid pid)
{
    return (int) (size_t) pid;
}

static void
doNothing(void)
{
    /* dummy implementation, no need to do anything */
}

178
179
180
181
182
183
184



185
186
187
188
189

190
191
192
193
194
195
196
#elif !defined(__WIN32__) /* UNIX and MAC */
#   define TclWinConvertError (void (*) _ANSI_ARGS_((unsigned int))) TclGetAndDetachPids
#   define TclWinConvertWSAError (void (*) _ANSI_ARGS_((unsigned int))) TclpCloseFile
#   define TclWinGetPlatformId (int (*)()) TclpCreateTempFile
#   define TclWinGetTclInstance (void *(*)()) TclpCreateProcess
#   define TclWinNToHS (unsigned short (*) _ANSI_ARGS_((unsigned short ns))) TclpMakeFile
#   define TclWinSetSockOpt (int (*) _ANSI_ARGS_((void *, int, int, CONST char *, int))) TclpOpenFile



#   define TclWinAddProcess 0
#   define TclWinNoBackslash 0
#   define TclWinSetInterfaces 0
#   define TclWinFlushDirtyChannels 0
#   define TclWinResetInterfaces 0

#   define TclMacOSXGetFileAttribute 0 /* Only implemented in Tcl >= 8.5 */
#   define TclMacOSXMatchType 0 /* Only implemented in Tcl >= 8.5 */
#   define TclMacOSXNotifierAddRunLoopMode 0 /* Only implemented in Tcl >= 8.5 */
#   ifndef MAC_OSX_TCL
#	define Tcl_MacOSXOpenBundleResources 0
#	define Tcl_MacOSXOpenVersionedBundleResources 0
#   endif







>
>
>





>







202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#elif !defined(__WIN32__) /* UNIX and MAC */
#   define TclWinConvertError (void (*) _ANSI_ARGS_((unsigned int))) TclGetAndDetachPids
#   define TclWinConvertWSAError (void (*) _ANSI_ARGS_((unsigned int))) TclpCloseFile
#   define TclWinGetPlatformId (int (*)()) TclpCreateTempFile
#   define TclWinGetTclInstance (void *(*)()) TclpCreateProcess
#   define TclWinNToHS (unsigned short (*) _ANSI_ARGS_((unsigned short ns))) TclpMakeFile
#   define TclWinSetSockOpt (int (*) _ANSI_ARGS_((void *, int, int, CONST char *, int))) TclpOpenFile
#   define TclWinGetSockOpt (int (*) _ANSI_ARGS_((void *, int, int, char *, int))) TclpCreatePipe
#   define TclWinGetServByName (struct servent *(*) _ANSI_ARGS_((const char *nm, const char *proto))) TclpCreateCommandChannel
#   define TclIntPlatReserved13 (void (*) ()) TclpInetNtoa
#   define TclWinAddProcess 0
#   define TclWinNoBackslash 0
#   define TclWinSetInterfaces 0
#   define TclWinFlushDirtyChannels 0
#   define TclWinResetInterfaces 0
#   define TclpGetPid 0
#   define TclMacOSXGetFileAttribute 0 /* Only implemented in Tcl >= 8.5 */
#   define TclMacOSXMatchType 0 /* Only implemented in Tcl >= 8.5 */
#   define TclMacOSXNotifierAddRunLoopMode 0 /* Only implemented in Tcl >= 8.5 */
#   ifndef MAC_OSX_TCL
#	define Tcl_MacOSXOpenBundleResources 0
#	define Tcl_MacOSXOpenVersionedBundleResources 0
#   endif
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481







482
483
484
485
486
487
488

TclIntPlatStubs tclIntPlatStubs = {
    TCL_STUB_MAGIC,
    NULL,
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
    TclWinConvertError, /* 0 */
    TclWinConvertWSAError, /* 1 */
    TclpCreateCommandChannel, /* 2 */
    TclpCreatePipe, /* 3 */
    TclWinGetTclInstance, /* 4 */
    NULL, /* 5 */
    TclWinNToHS, /* 6 */
    TclWinSetSockOpt, /* 7 */
    TclUnixWaitForFile, /* 8 */
    TclWinGetPlatformId, /* 9 */
    TclpReaddir, /* 10 */
    TclpLocaltime_unix, /* 11 */
    TclpGmtime_unix, /* 12 */
    TclpInetNtoa, /* 13 */
    NULL, /* 14 */
    TclMacOSXGetFileAttribute, /* 15 */
    NULL, /* 16 */
    NULL, /* 17 */
    TclMacOSXMatchType, /* 18 */
    TclMacOSXNotifierAddRunLoopMode, /* 19 */
    TclWinAddProcess, /* 20 */
    NULL, /* 21 */
    TclpCreateTempFile, /* 22 */
    NULL, /* 23 */
    TclWinNoBackslash, /* 24 */
    NULL, /* 25 */
    TclWinSetInterfaces, /* 26 */
    TclWinFlushDirtyChannels, /* 27 */
    TclWinResetInterfaces, /* 28 */
    TclWinCPUID, /* 29 */
    TclGetAndDetachPids, /* 30 */
    TclpCloseFile, /* 31 */







#endif /* UNIX */
#ifdef __WIN32__
    TclWinConvertError, /* 0 */
    TclWinConvertWSAError, /* 1 */
    TclWinGetServByName, /* 2 */
    TclWinGetSockOpt, /* 3 */
    TclWinGetTclInstance, /* 4 */







|
|




|




|


















>
>
>
>
>
>
>







473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523

TclIntPlatStubs tclIntPlatStubs = {
    TCL_STUB_MAGIC,
    NULL,
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
    TclWinConvertError, /* 0 */
    TclWinConvertWSAError, /* 1 */
    TclWinGetServByName, /* 2 */
    TclWinGetSockOpt, /* 3 */
    TclWinGetTclInstance, /* 4 */
    NULL, /* 5 */
    TclWinNToHS, /* 6 */
    TclWinSetSockOpt, /* 7 */
    TclpGetPid, /* 8 */
    TclWinGetPlatformId, /* 9 */
    TclpReaddir, /* 10 */
    TclpLocaltime_unix, /* 11 */
    TclpGmtime_unix, /* 12 */
    TclIntPlatReserved13, /* 13 */
    NULL, /* 14 */
    TclMacOSXGetFileAttribute, /* 15 */
    NULL, /* 16 */
    NULL, /* 17 */
    TclMacOSXMatchType, /* 18 */
    TclMacOSXNotifierAddRunLoopMode, /* 19 */
    TclWinAddProcess, /* 20 */
    NULL, /* 21 */
    TclpCreateTempFile, /* 22 */
    NULL, /* 23 */
    TclWinNoBackslash, /* 24 */
    NULL, /* 25 */
    TclWinSetInterfaces, /* 26 */
    TclWinFlushDirtyChannels, /* 27 */
    TclWinResetInterfaces, /* 28 */
    TclWinCPUID, /* 29 */
    TclGetAndDetachPids, /* 30 */
    TclpCloseFile, /* 31 */
    TclpCreateCommandChannel, /* 32 */
    TclpCreatePipe, /* 33 */
    TclpCreateProcess, /* 34 */
    TclpInetNtoa, /* 35 */
    TclpMakeFile, /* 36 */
    TclpOpenFile, /* 37 */
    TclUnixWaitForFile, /* 38 */
#endif /* UNIX */
#ifdef __WIN32__
    TclWinConvertError, /* 0 */
    TclWinConvertWSAError, /* 1 */
    TclWinGetServByName, /* 2 */
    TclWinGetSockOpt, /* 3 */
    TclWinGetTclInstance, /* 4 */

Changes to library/dde/pkgIndex.tcl.

1
2
3
4
5
6
7
if {![package vsatisfies [package provide Tcl] 8]} {return}
if {[string compare $::tcl_platform(platform) windows]} {return}
if {[info exists ::tcl_platform(debug)]} {
    package ifneeded dde 1.2.4 [list load [file join $dir tcldde12g.dll] dde]
} else {
    package ifneeded dde 1.2.4 [list load [file join $dir tcldde12.dll] dde]
}
|
|





1
2
3
4
5
6
7
if {![package vsatisfies [package provide Tcl] 8]} return
if {[string compare [info sharedlibextension] .dll]} return
if {[info exists ::tcl_platform(debug)]} {
    package ifneeded dde 1.2.4 [list load [file join $dir tcldde12g.dll] dde]
} else {
    package ifneeded dde 1.2.4 [list load [file join $dir tcldde12.dll] dde]
}

Changes to library/reg/pkgIndex.tcl.

1
2
3
4
5
6
7
8
9
if {![package vsatisfies [package provide Tcl] 8]} {return}
if {[string compare $::tcl_platform(platform) windows]} {return}
if {[info exists ::tcl_platform(debug)]} {
    package ifneeded registry 1.1.5 \
            [list load [file join $dir tclreg11g.dll] registry]
} else {
    package ifneeded registry 1.1.5 \
            [list load [file join $dir tclreg11.dll] registry]
}
|
|







1
2
3
4
5
6
7
8
9
if {![package vsatisfies [package provide Tcl] 8]} return
if {[string compare [info sharedlibextension] .dll]} return
if {[info exists ::tcl_platform(debug)]} {
    package ifneeded registry 1.1.5 \
            [list load [file join $dir tclreg11g.dll] registry]
} else {
    package ifneeded registry 1.1.5 \
            [list load [file join $dir tclreg11.dll] registry]
}

Changes to mac/tclMacPort.h.

211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#endif
 
/*
 * The following macros have trivial definitions, allowing generic code to 
 * address platform-specific issues.
 */
 
#define TclpGetPid(pid)	    	((unsigned long) (pid))
#define TclSetSystemEnv(a,b)
#define tzset()

char *TclpFindExecutable(const char *argv0);
int TclpFindVariable(CONST char *name, int *lengthPtr);

#define fopen(path, mode) TclMacFOpenHack(path, mode)







<







211
212
213
214
215
216
217

218
219
220
221
222
223
224
#endif
 
/*
 * The following macros have trivial definitions, allowing generic code to 
 * address platform-specific issues.
 */
 

#define TclSetSystemEnv(a,b)
#define tzset()

char *TclpFindExecutable(const char *argv0);
int TclpFindVariable(CONST char *name, int *lengthPtr);

#define fopen(path, mode) TclMacFOpenHack(path, mode)

Changes to unix/configure.

9318
9319
9320
9321
9322
9323
9324










































9325
9326
9327
9328
9329
9330
9331
	    # tclDTrace.o and the combined object file above.
	    AR='/usr/ccs/bin/ar'
	    RANLIB='/usr/ccs/bin/ranlib'
	fi
    fi
fi
echo "$ac_t""$tcl_ok" 1>&6











































#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtcl as a shared library instead of a static library.
#--------------------------------------------------------------------

TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
	    # tclDTrace.o and the combined object file above.
	    AR='/usr/ccs/bin/ar'
	    RANLIB='/usr/ccs/bin/ranlib'
	fi
    fi
fi
echo "$ac_t""$tcl_ok" 1>&6

#--------------------------------------------------------------------
# The check below checks whether the cpuid instruction is usable.
#--------------------------------------------------------------------

echo $ac_n "checking whether the cpuid instruction is usable""... $ac_c" 1>&6
echo "configure:9332: checking whether the cpuid instruction is usable" >&5
if eval "test \"`echo '$''{'tcl_cv_cpuid'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  
    cat > conftest.$ac_ext <<EOF
#line 9338 "configure"
#include "confdefs.h"

int main() {

	int index,ax,bx,cx,dx;
	__asm__ __volatile__ ("cpuid":\
	"=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (index));
    
; return 0; }
EOF
if { (eval echo configure:9349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  tcl_cv_cpuid=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_cpuid=no
fi
rm -f conftest*
fi

echo "$ac_t""$tcl_cv_cpuid" 1>&6
if test $tcl_cv_cpuid = yes; then
    cat >> confdefs.h <<\EOF
#define HAVE_CPUID 1
EOF

fi

#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtcl as a shared library instead of a static library.
#--------------------------------------------------------------------

TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
# AIX remembers this path and will attempt to use it at run-time to look
# up the Tcl library.

if test "`uname -s`" = "Darwin" ; then
    
    if test "`uname -s`" = "Darwin" ; then
	echo $ac_n "checking how to package libraries""... $ac_c" 1>&6
echo "configure:9356: checking how to package libraries" >&5
	# Check whether --enable-framework or --disable-framework was given.
if test "${enable_framework+set}" = set; then
  enableval="$enable_framework"
  enable_framework=$enableval
else
  enable_framework=no
fi







|







9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
# AIX remembers this path and will attempt to use it at run-time to look
# up the Tcl library.

if test "`uname -s`" = "Darwin" ; then
    
    if test "`uname -s`" = "Darwin" ; then
	echo $ac_n "checking how to package libraries""... $ac_c" 1>&6
echo "configure:9398: checking how to package libraries" >&5
	# Check whether --enable-framework or --disable-framework was given.
if test "${enable_framework+set}" = set; then
  enableval="$enable_framework"
  enable_framework=$enableval
else
  enable_framework=no
fi

Changes to unix/configure.in.

560
561
562
563
564
565
566














567
568
569
570
571
572
573
	    # tclDTrace.o and the combined object file above.
	    AR='/usr/ccs/bin/ar'
	    RANLIB='/usr/ccs/bin/ranlib'
	fi
    fi
fi
AC_MSG_RESULT([$tcl_ok])















#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtcl as a shared library instead of a static library.
#--------------------------------------------------------------------

TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}







>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
585
586
587
	    # tclDTrace.o and the combined object file above.
	    AR='/usr/ccs/bin/ar'
	    RANLIB='/usr/ccs/bin/ranlib'
	fi
    fi
fi
AC_MSG_RESULT([$tcl_ok])

#--------------------------------------------------------------------
# The check below checks whether the cpuid instruction is usable.
#--------------------------------------------------------------------

AC_CACHE_CHECK([whether the cpuid instruction is usable], tcl_cv_cpuid, [
    AC_TRY_LINK(, [
	int index,ax,bx,cx,dx;
	__asm__ __volatile__ ("cpuid":\
	"=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (index));
    ], tcl_cv_cpuid=yes, tcl_cv_cpuid=no)])
if test $tcl_cv_cpuid = yes; then
    AC_DEFINE(HAVE_CPUID)
fi

#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtcl as a shared library instead of a static library.
#--------------------------------------------------------------------

TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}

Changes to unix/tclUnixCompat.c.

688
689
690
691
692
693
694
695



696
697
698
699
700
701
702
703
int
TclWinCPUID(
    unsigned int index,		/* Which CPUID value to retrieve. */
    unsigned int *regsPtr)	/* Registers after the CPUID. */
{
    int status = TCL_ERROR;

    /* There is no reason this couldn't be implemented on UNIX as well */



    return status;
}

/*
 * Local Variables:
 * mode: c
 * c-basic-offset: 4
 * fill-column: 78







|
>
>
>
|







688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
int
TclWinCPUID(
    unsigned int index,		/* Which CPUID value to retrieve. */
    unsigned int *regsPtr)	/* Registers after the CPUID. */
{
    int status = TCL_ERROR;

#ifdef HAVE_CPUID
    __asm__ __volatile__ ("cpuid":\
    "=a" (regsPtr[0]), "=b" (regsPtr[1]), "=c" (regsPtr[2]), "=d" (regsPtr[3]) : "a" (index));
    status = TCL_OK;
#endif    return status;
}

/*
 * Local Variables:
 * mode: c
 * c-basic-offset: 4
 * fill-column: 78

Changes to unix/tclUnixFile.c.

18
19
20
21
22
23
24
25

26
27
28
29
30
31
32

/*
 *---------------------------------------------------------------------------
 *
 * TclpFindExecutable --
 *
 *	This procedure computes the absolute path name of the current
 *	application, given its argv[0] value.

 *
 * Results:
 *	A dirty UTF string that is the path to the executable.  At this
 *	point we may not know the system encoding.  Convert the native
 *	string value to UTF using the default encoding.  The assumption
 *	is that we will still be able to parse the path given the path
 *	name contains ASCII string and '/' chars do not conflict with







|
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

/*
 *---------------------------------------------------------------------------
 *
 * TclpFindExecutable --
 *
 *	This procedure computes the absolute path name of the current
 *	application, given its argv[0] value. For Cygwin, argv[0] is
 *	ignored and the path is determined the same as under win32.
 *
 * Results:
 *	A dirty UTF string that is the path to the executable.  At this
 *	point we may not know the system encoding.  Convert the native
 *	string value to UTF using the default encoding.  The assumption
 *	is that we will still be able to parse the path given the path
 *	name contains ASCII string and '/' chars do not conflict with
41
42
43
44
45
46
47





48
49
50
51
52
53
54
55
56
57
58
59
























60
61
62
63
64
65
66
 */

char *
TclpFindExecutable(argv0)
    CONST char *argv0;		/* The value of the application's argv[0]
				 * (native). */
{





    CONST char *name, *p;
    Tcl_StatBuf statBuf;
    int length;
    Tcl_DString buffer, nameString;

    if (argv0 == NULL) {
	return NULL;
    }
    if (tclNativeExecutableName != NULL) {
	return tclNativeExecutableName;
    }

























    Tcl_DStringInit(&buffer);

    name = argv0;
    for (p = name; *p != '\0'; p++) {
	if (*p == '/') {
	    /*
	     * The name contains a slash, so use the name directly







>
>
>
>
>


<

|
<
<
|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 */

char *
TclpFindExecutable(argv0)
    CONST char *argv0;		/* The value of the application's argv[0]
				 * (native). */
{
    int length;
#ifdef __CYGWIN__
    char buf[PATH_MAX * TCL_UTF_MAX + 1];
    char name[PATH_MAX * TCL_UTF_MAX + 1];
#else
    CONST char *name, *p;
    Tcl_StatBuf statBuf;

    Tcl_DString buffer, nameString;
#endif



    if (tclNativeExecutableName != NULL) {
	return tclNativeExecutableName;
    }

#ifdef __CYGWIN__

    /* Make some symbols available without including <windows.h> */
#   define CP_UTF8 65001
    extern int cygwin_conv_to_full_posix_path(const char *, char *);
    extern __stdcall int GetModuleFileNameW(void *, const char *, int);
    extern __stdcall int WideCharToMultiByte(int, int, const char *, int,
		const char *, int, const char *, const char *);

    GetModuleFileNameW(NULL, name, PATH_MAX);
    WideCharToMultiByte(CP_UTF8, 0, name, -1, buf, PATH_MAX, NULL, NULL);
    cygwin_conv_to_full_posix_path(buf, name);
    length = strlen(name);
    if ((length > 4) && !strcasecmp(name + length - 4, ".exe")) {
	/* Strip '.exe' part. */
	length -= 4;
    }
    tclNativeExecutableName = (char *) ckalloc(length + 1);
    memcpy(tclNativeExecutableName, name, length);
    buf[length] = '\0';
#else
    if (argv0 == NULL) {
	return NULL;
    }
    Tcl_DStringInit(&buffer);

    name = argv0;
    for (p = name; *p != '\0'; p++) {
	if (*p == '/') {
	    /*
	     * The name contains a slash, so use the name directly
170
171
172
173
174
175
176

177
178
179
180
181
182
183
    tclNativeExecutableName[Tcl_DStringLength(&buffer)] = '/';
    strcpy(tclNativeExecutableName + Tcl_DStringLength(&buffer) + 1,
	    Tcl_DStringValue(&nameString));
    Tcl_DStringFree(&nameString);
    
done:
    Tcl_DStringFree(&buffer);

    return tclNativeExecutableName;
}

/*
 *----------------------------------------------------------------------
 *
 * TclpMatchInDirectory --







>







197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
    tclNativeExecutableName[Tcl_DStringLength(&buffer)] = '/';
    strcpy(tclNativeExecutableName + Tcl_DStringLength(&buffer) + 1,
	    Tcl_DStringValue(&nameString));
    Tcl_DStringFree(&nameString);
    
done:
    Tcl_DStringFree(&buffer);
#endif
    return tclNativeExecutableName;
}

/*
 *----------------------------------------------------------------------
 *
 * TclpMatchInDirectory --

Changes to unix/tclUnixPort.h.

654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
#endif

/*
 * The following macros have trivial definitions, allowing generic code to 
 * address platform-specific issues.
 */

#define TclpGetPid(pid)		((unsigned long) (pid))
#define TclpReleaseFile(file)	/* Nothing. */

/*
 * The following defines wrap the system memory allocation routines for
 * use by tclAlloc.c.  By default off unused on Unix.
 */








<







654
655
656
657
658
659
660

661
662
663
664
665
666
667
#endif

/*
 * The following macros have trivial definitions, allowing generic code to 
 * address platform-specific issues.
 */


#define TclpReleaseFile(file)	/* Nothing. */

/*
 * The following defines wrap the system memory allocation routines for
 * use by tclAlloc.c.  By default off unused on Unix.
 */

695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
EXTERN Tcl_DirEntry * 	TclpReaddir(DIR *);
#ifndef TclpLocaltime
EXTERN struct tm *     	TclpLocaltime(TclpTime_t_CONST);
#endif
#ifndef TclpGmtime
EXTERN struct tm *     	TclpGmtime(TclpTime_t_CONST);
#endif
EXTERN char *          	TclpInetNtoa(struct in_addr);
#define inet_ntoa(x)	TclpInetNtoa(x)
#else
typedef int TclpMutex;
#define	TclpMutexInit(a)
#define	TclpMutexLock(a)
#define	TclpMutexUnlock(a)
#endif /* TCL_THREADS */







<







694
695
696
697
698
699
700

701
702
703
704
705
706
707
EXTERN Tcl_DirEntry * 	TclpReaddir(DIR *);
#ifndef TclpLocaltime
EXTERN struct tm *     	TclpLocaltime(TclpTime_t_CONST);
#endif
#ifndef TclpGmtime
EXTERN struct tm *     	TclpGmtime(TclpTime_t_CONST);
#endif

#define inet_ntoa(x)	TclpInetNtoa(x)
#else
typedef int TclpMutex;
#define	TclpMutexInit(a)
#define	TclpMutexLock(a)
#define	TclpMutexUnlock(a)
#endif /* TCL_THREADS */

Changes to win/tclWinPipe.c.

867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
 *
 * Side effects:
 *	None.
 *
 *--------------------------------------------------------------------------
 */

unsigned long
TclpGetPid(
    Tcl_Pid pid)		/* The HANDLE of the child process. */
{
    ProcInfo *infoPtr;

    PipeInit();








|







867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
 *
 * Side effects:
 *	None.
 *
 *--------------------------------------------------------------------------
 */

int
TclpGetPid(
    Tcl_Pid pid)		/* The HANDLE of the child process. */
{
    ProcInfo *infoPtr;

    PipeInit();