diff options
author | sandeep <sandeep> | 2000-05-31 01:28:55 (GMT) |
---|---|---|
committer | sandeep <sandeep> | 2000-05-31 01:28:55 (GMT) |
commit | f5f35eb289ea0bbcc21f60746f10922fd20891ca (patch) | |
tree | d2cb7cd3e5ca0e90883c0d6aaa5f8471032e8557 | |
parent | 492f9b8edd489f07ffd0741d0e9f23c0433334f9 (diff) | |
download | tcl-f5f35eb289ea0bbcc21f60746f10922fd20891ca.zip tcl-f5f35eb289ea0bbcc21f60746f10922fd20891ca.tar.gz tcl-f5f35eb289ea0bbcc21f60746f10922fd20891ca.tar.bz2 |
2000-05-29 Sandeep Tamhankar <sandeep@scriptics.com>
* tests/http.test
* doc/http.n
* library/http2.3/http.tcl: Fixed bug 5741, where unsuccessful
geturl calls sometimes leaked memory and resources (sockets).
Also, switched around some of the logic so that http::wait never
throws an exception. This is because in an asynchronous geturl,
the command callback will probably end up doing all the error
handling anyway, and in an asynchronous situation, the user
expects to check the state when the transaction completes, as
opposed to being thrown an exception. For the http package, this
menas the user can check http::status for "error" and http::error
for the error message after doing the http::wait.
-rw-r--r-- | ChangeLog | 47 | ||||
-rw-r--r-- | doc/expr.n | 88 | ||||
-rw-r--r-- | doc/http.n | 79 | ||||
-rw-r--r-- | doc/library.n | 129 | ||||
-rw-r--r-- | generic/tclCkalloc.c | 77 | ||||
-rw-r--r-- | library/http/http.tcl | 63 | ||||
-rw-r--r-- | library/http2.3/http.tcl | 63 | ||||
-rw-r--r-- | tests/http.test | 13 | ||||
-rw-r--r-- | unix/mkLinks | 1589 | ||||
-rw-r--r-- | unix/mkLinks.tcl | 34 |
10 files changed, 1222 insertions, 960 deletions
@@ -1,36 +1,17 @@ -2000-04-27 Eric Melski <ericm@scriptics.com> - - * doc/library.n: Added entries for auto_qualify and auto_import - [Bug: 1271]. - - * doc/Init.3: Manual entry for Tcl_Init [Bug: 1820]. - - * doc/expr.n: Added documentation for each of the math library - functions that expr supports [Bug: 1054]. - -2000-04-26 Eric Melski <ericm@scriptics.com> - - * doc/memory.n: Man page for Tcl "memory" command, which is - created when TCL_MEM_DEBUG is defined at compile time. - - * doc/TCL_MEM_DEBUG.3: Man page with overall information about - TCL_MEM_DEBUG usage. - - * doc/DumpActiveMemory.3: Man page for Tcl_DumpActiveMemory, - Tcl_InitMemory, and Tcl_ValidateAllMemory [Bug: 1816, 1835]. - - * generic/tclCkalloc.c: Fixed some function headers. - - * unix/mkLinks: Regen'd with new mkLinks.tcl. - - * unix/mkLinks.tcl: Fixed indentation, made link setup more - intelligent (only do one existance test per man page, instead of - one per function). - - * doc/library.n: Fixed .SH NAME macro to include each function - documented on the page, so that mkLinks will know about the - functions listed there, and so that the Windows help file index - will get set up correctly [Bug: 1898, 5273]. +2000-05-29 Sandeep Tamhankar <sandeep@scriptics.com> + + * tests/http.test + * doc/http.n + * library/http2.3/http.tcl: Fixed bug 5741, where unsuccessful + geturl calls sometimes leaked memory and resources (sockets). + Also, switched around some of the logic so that http::wait never + throws an exception. This is because in an asynchronous geturl, + the command callback will probably end up doing all the error + handling anyway, and in an asynchronous situation, the user + expects to check the state when the transaction completes, as + opposed to being thrown an exception. For the http package, this + menas the user can check http::status for "error" and http::error + for the error message after doing the http::wait. 2000-04-26 Jeff Hobbs <hobbs@scriptics.com> @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: expr.n,v 1.3 2000/04/28 00:47:49 ericm Exp $ +'\" RCS: @(#) $Id: expr.n,v 1.2 1998/09/14 18:39:52 stanton Exp $ '\" .so man.macros .TH expr n 8.0 Tcl "Tcl Built-In Commands" @@ -184,80 +184,30 @@ invoking the \fBexpr\fR command. Tcl supports the following mathematical functions in expressions: .DS .ta 3c 6c 9c -\fBabs\fR \fBcosh\fR \fBlog\fR \fBsqrt\fR -\fBacos\fR \fBdouble\fR \fBlog10\fR \fBsrand\fR -\fBasin\fR \fBexp\fR \fBpow\fR \fBtan\fR -\fBatan\fR \fBfloor\fR \fBrand\fR \fBtanh\fR -\fBatan2\fR \fBfmod\fR \fBround\fR -\fBceil\fR \fBhypot\fR \fBsin\fR -\fBcos\fR \fBint\fR \fBsinh\fR +\fBacos\fR \fBcos\fR \fBhypot\fR \fBsinh\fR +\fBasin\fR \fBcosh\fR \fBlog\fR \fBsqrt\fR +\fBatan\fR \fBexp\fR \fBlog10\fR \fBtan\fR +\fBatan2\fR \fBfloor\fR \fBpow\fR \fBtanh\fR +\fBceil\fR \fBfmod\fR \fBsin\fR .DE -.PP +Each of these functions invokes the math library function of the same +name; see the manual entries for the library functions for details +on what they do. Tcl also implements the following functions for +conversion between integers and floating-point numbers and the +generation of random numbers: .TP \fBabs(\fIarg\fB)\fR Returns the absolute value of \fIarg\fR. \fIArg\fR may be either integer or floating-point, and the result is returned in the same form. .TP -\fBacos(\fIarg\fB)\fR -Returns the arc cosine of \fIarg\fR, in the range [0,pi] -radians. \fIArg\fR should be in the range [-1,1]. -.TP -\fBasin(\fIarg\fB)\fR -Returns the arc sine of \fIarg\fR, in the range [-pi/2,pi/2] radians. -\fIArg\fR should be in the range [-1,1]. -.TP -\fBatan(\fIarg\fB)\fR -Returns the arc tangent of \fIarg\fR, in the range [-pi/2,pi/2] radians. -.TP -\fBatan2(\fIx, y\fB)\fR -Returns the arc tangent of \fIy\fR/\fIx\fR, in the range [-pi,pi] -radians. \fIx\fR and \fIy\fR cannot both be 0. -.TP -\fBceil(\fIarg\fB)\fR -Returns the smallest integer value not less than \fIarg\fR. -.TP -\fBcos(\fIarg\fB)\fR -Returns the cosine of \fIarg\fR, measured in radians. -.TP -\fBcosh(\fIarg\fB)\fR -Returns the hyperbolic cosine of \fIarg\fR. If the result would cause -an overflow, an error is returned. -.TP \fBdouble(\fIarg\fB)\fR If \fIarg\fR is a floating value, returns \fIarg\fR, otherwise converts \fIarg\fR to floating and returns the converted value. .TP -\fBexp(\fIarg\fB)\fR -Returns the exponential of \fIarg\fR, defined as e**\fIarg\fR. If the -result would cause an overflow, an error is returned. -.TP -\fBfloor(\fIarg\fB)\fR -Returns the largest integral value not greater than \fIarg\fR. -.TP -\fBfmod(\fIx, y\fB)\fR -Returns the floating-point remainder of the division of \fIx\fR by -\fIy\fR. If \fIy\fR is 0, an error is returned. -.TP -\fBhypot(\fIx, y\fB)\fR -Computes the length of the hypotenuse of a right-angled triangle -(\fIx\fR*\fIx\fR+\fIy\fR*\fIy\fR). -.TP \fBint(\fIarg\fB)\fR If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts \fIarg\fR to integer by truncation and returns the converted value. .TP -\fBlog(\fIarg\fB)\fR -Returns the natural logarithm of \fIarg\fR. \fIArg\fR must be a -positive value. -.TP -\fBlog10(\fIarg\fB)\fR -Returns the base 10 logarithm of \fIarg\fR. \fIArg\fR must be a -positive value. -.TP -\fBpow(\fIx, y\fB)\fR -Computes the value of \fIx\fR raised to the power \fIy\fR. If \fIx\fR -is negative, \fIy\fR must be an integer value. -.TP \fBrand()\fR Returns a floating point number from zero to just less than one or, in mathematical terms, the range [0,1). The seed comes from the @@ -268,26 +218,10 @@ function. If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts \fIarg\fR to integer by rounding and returns the converted value. .TP -\fBsin(\fIarg\fB)\fR -Returns the sine of \fIarg\fR, measured in radians. -.TP -\fBsinh(\fIarg\fB)\fR -Returns the hyperbolic sine of \fIarg\fR. If the result would cause -an overflow, an error is returned. -.TP -\fBsqrt(\fIarg\fB)\fR -Returns the square root of \fIarg\fR. \fIArg\fR must be non-negative. -.TP \fBsrand(\fIarg\fB)\fR The \fIarg\fR, which must be an integer, is used to reset the seed for the random number generator. Returns the first random number from that seed. Each interpreter has it's own seed. -.TP -\fBtan(\fIarg\fB)\fR -Returns the tangent of \fIarg\fR, measured in radians. -.TP -\fBtanh(\fIarg\fB)\fR -Returns the hyperbolic tangent of \fIarg\fR. .PP In addition to these predefined functions, applications may define additional functions using \fBTcl_CreateMathFunc\fR(). @@ -1,11 +1,11 @@ '\" '\" Copyright (c) 1995-1997 Sun Microsystems, Inc. -'\" Copyright (c) 1999 by Scriptics Corporation. +'\" Copyright (c) 1998-2000 by Ajuba Solutions. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: http.n,v 1.10 2000/04/09 23:55:54 welch Exp $ +'\" RCS: @(#) $Id: http.n,v 1.10.2.1 2000/05/31 01:28:56 sandeep Exp $ '\" .so man.macros .TH "Http" n 8.3 Tcl "Tcl Built-In Commands" @@ -14,7 +14,7 @@ .SH NAME Http \- Client-side implementation of the HTTP/1.0 protocol. .SH SYNOPSIS -\fBpackage require http ?2.2?\fP +\fBpackage require http ?2.3?\fP .sp \fB::http::config \fI?options?\fR .sp @@ -32,8 +32,12 @@ Http \- Client-side implementation of the HTTP/1.0 protocol. .sp \fB::http::code \fItoken\fR .sp +\fB::http::ncode \fItoken\fR +.sp \fB::http::data \fItoken\fR .sp +\fB::http::error \fItoken\fR +.sp \fB::http::cleanup \fItoken\fR .sp \fB::http::register \fIproto port command\fR @@ -57,9 +61,8 @@ Its \fIoptions \fR determine whether a GET, POST, or HEAD transaction is performed. The return value of \fB::http::geturl\fR is a token for the transaction. The value is also the name of an array in the ::http namespace - that contains state -information about the transaction. The elements of this array are -described in the STATE ARRAY section. +that contains state information about the transaction. The elements +of this array are described in the STATE ARRAY section. .PP If the \fB-command\fP option is specified, then the HTTP operation is done in the background. @@ -262,12 +265,20 @@ any. This sets the \fBstate(status)\fP value to \fIwhy\fP, which defaults to \f \fB::http::wait\fP \fItoken\fP This is a convenience procedure that blocks and waits for the transaction to complete. This only works in trusted code because it -uses \fBvwait\fR. +uses \fBvwait\fR. Also, it's not useful for the case where +\fB::http::geturl\fP is called \fIwithout\fP the \fB-command\fP option +because in this case the \fB::http::geturl\fP call doesn't return +until the HTTP transaction is complete, and thus there's nothing to +wait for. .TP \fB::http::data\fP \fItoken\fP This is a convenience procedure that returns the \fBbody\fP element (i.e., the URL data) of the state array. .TP +\fB::http::error\fP \fItoken\fP +This is a convenience procedure that returns the \fBerror\fP element +of the state array. +.TP \fB::http::status\fP \fItoken\fP This is a convenience procedure that returns the \fBstatus\fP element of the state array. @@ -276,15 +287,24 @@ the state array. This is a convenience procedure that returns the \fBhttp\fP element of the state array. .TP +\fB::http::ncode\fP \fItoken\fP +This is a convenience procedure that returns just the numeric return +code (200, 404, etc.) from the \fBhttp\fP element of the state array. +.TP \fB::http::size\fP \fItoken\fP This is a convenience procedure that returns the \fBcurrentsize\fP -element of the state array. +element of the state array, which represents the number of bytes +received from the URL in the \fB::http::geturl\fP call. .TP \fB::http::cleanup\fP \fItoken\fP This procedure cleans up the state associated with the connection identified by \fItoken\fP. After this call, the procedures like \fB::http::data\fP cannot be used to get information -about the operation. +about the operation. It is \fIstrongly\fP recommended that you call +this function after you're done with a given HTTP request. Not doing +so will result in memory not being freed, and if your app calls +\fB::http::geturl\fP enough times, the memory leak could cause a +performance hit...or worse. .TP \fB::http::register\fP \fIproto port command\fP This procedure allows one to provide custom HTTP transport types @@ -309,19 +329,36 @@ registered via \fBhttp::register\fR. The \fBhttp::geturl\fP procedure will raise errors in the following cases: invalid command line options, an invalid URL, -or a URL on a non-existent host, +a URL on a non-existent host, +or a URL at a bad port on an existing host. These errors mean that it cannot even start the network transaction. It will also raise an error if it gets an I/O error while writing out the HTTP request header. +For synchronous \fB::http::geturl\fP calls (where \fB-command\fP is +not specified), it will raise an error if it gets an I/O error while +reading the HTTP reply headers or data. Because \fB::http::geturl\fP +doesn't return a token in these cases, it does all the required +cleanup and there's no issue of your app having to call +\fB::http::cleanup\fP. +.PP +For asynchronous \fB::http::geturl\fP calls, all of the above error +situations apply, except that if there's any error while +reading the +HTTP reply headers or data, no exception is thrown. This is because +after writing the HTTP headers, \fB::http::geturl\fP returns, and the +rest of the HTTP transaction occurs in the background. The command +callback can check if any error occurred during the read by calling +\fB::http::status\fP to check the status and if it's \fIerror\fP, +calling \fB::http::error\fP to get the error message. +.PP +Alternatively, if the main program flow reaches a point where it needs +to know the result of the asynchronous HTTP request, it can call +\fB::http::wait\fP and then check status and error, just as the +callback does. .PP -The \fBhttp::wait\fP procedure will raise errors if an I/O error -occurs while reading the HTTP reply headers or data. If the -\fB-command\fP flag is not passed to \fBhttp::geturl\fP, -then it will call \fBhttp::wait\fP and so these errors will -occur in \fBhttp::geturl\fP. -If you get an error from \fBhttp::wait\fP, you must still call -\fBhttp::cleanup\fP to delete the state array. +In any case, you must still call +\fBhttp::cleanup\fP to delete the state array when you're done. .PP There are other possible results of the HTTP transaction determined by examining the status from \fBhttp::status\fP. @@ -336,12 +373,11 @@ procedure returns a value like "HTTP 404 File not found". .TP eof If the server closes the socket without replying, then no error -is rasied, but the status of the transaction will be \fBeof\fP. +is raised, but the status of the transaction will be \fBeof\fP. .TP error -In this case \fBhttp::wait\fP should have raised an error. The error message will also be stored in the \fBerror\fP status -array element. +array element, accessible via \fB::http::error\fP. .PP Another error possibility is that \fBhttp::geturl\fP is unable to write all the post query data to the server before the server @@ -424,7 +460,8 @@ the post query data to the server. .TP \fBstatus\fR Either \fBok\fR, for successful completion, \fBreset\fR for -user-reset, or \fBerror\fR for an error condition. During the +user-reset, \fBtimeout\fP if a timeout occurred before the transaction +could complete, or \fBerror\fR for an error condition. During the transaction this value is the empty string. .TP \fBtotalsize\fR diff --git a/doc/library.n b/doc/library.n index 5e00b1e..5fde037 100644 --- a/doc/library.n +++ b/doc/library.n @@ -5,20 +5,18 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: library.n,v 1.13 2000/04/28 00:47:49 ericm Exp $ +'\" RCS: @(#) $Id: library.n,v 1.11 2000/04/15 18:42:56 ericm Exp $ .so man.macros .TH library n "8.0" Tcl "Tcl Built-In Commands" .BS .SH NAME -auto_execok, auto_import, auto_load, auto_mkindex, auto_mkindex_old, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore \- standard library of Tcl procedures +library \- standard library of Tcl procedures .SH SYNOPSIS .nf \fBauto_execok \fIcmd\fR -\fBauto_import \fIpattern\fR \fBauto_load \fIcmd\fR \fBauto_mkindex \fIdir pattern pattern ...\fR \fBauto_mkindex_old \fIdir pattern pattern ...\fR -\fBauto_qualify \fIcommand namespace\fR \fBauto_reset\fR \fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR \fBparray \fIarrayName\fR @@ -75,61 +73,65 @@ remembers information about previous searches in an array named same \fIcmd\fR. The command \fBauto_reset\fR may be used to force \fBauto_execok\fR to forget its cached information. .TP -\fBauto_import \fIpattern\fR -\fBAuto_import\fR is invoked during \fBnamespace import\fR to see if -the imported commands specified by \fIpattern\fR reside in an -autoloaded library. If so, the commands are loaded so that they will -be available to the interpreter for creating the import links. If the -commands do not reside in an autoloaded library, \fBauto_import\fR -does nothing. -.TP \fBauto_load \fIcmd\fR This command attempts to load the definition for a Tcl command named -\fIcmd\fR. To do this, it searches an \fIauto-load path\fR, which is -a list of one or more directories. The auto-load path is given by the -global variable \fB$auto_path\fR if it exists. If there is no -\fB$auto_path\fR variable, then the TCLLIBPATH environment variable is -used, if it exists. Otherwise the auto-load path consists of just the -Tcl library directory. Within each directory in the auto-load path -there must be a file \fBtclIndex\fR that describes one or more -commands defined in that directory and a script to evaluate to load -each of the commands. The \fBtclIndex\fR file should be generated -with the \fBauto_mkindex\fR command. If \fIcmd\fR is found in an -index file, then the appropriate script is evaluated to create the -command. The \fBauto_load\fR command returns 1 if \fIcmd\fR was -successfully created. The command returns 0 if there was no index -entry for \fIcmd\fR or if the script didn't actually define \fIcmd\fR -(e.g. because index information is out of date). If an error occurs -while processing the script, then that error is returned. -\fBAuto_load\fR only reads the index information once and saves it in -the array \fBauto_index\fR; future calls to \fBauto_load\fR check for -\fIcmd\fR in the array rather than re-reading the index files. The -cached index information may be deleted with the command -\fBauto_reset\fR. This will force the next \fBauto_load\fR command to -reload the index database from disk. +\fIcmd\fR. +To do this, it searches an \fIauto-load path\fR, which is a list of +one or more directories. +The auto-load path is given by the global variable \fB$auto_path\fR +if it exists. +If there is no \fB$auto_path\fR variable, then the TCLLIBPATH environment +variable is used, if it exists. +Otherwise the auto-load path consists of just the Tcl library directory. +Within each directory in the auto-load path there must be a file +\fBtclIndex\fR that describes one +or more commands defined in that directory +and a script to evaluate to load each of the commands. +The \fBtclIndex\fR file should be generated with the +\fBauto_mkindex\fR command. +If \fIcmd\fR is found in an index file, then the appropriate +script is evaluated to create the command. +The \fBauto_load\fR command returns 1 if \fIcmd\fR was successfully +created. +The command returns 0 if there was no index entry for \fIcmd\fR +or if the script didn't actually define \fIcmd\fR (e.g. because +index information is out of date). +If an error occurs while processing the script, then that error +is returned. +\fBAuto_load\fR only reads the index information once and saves it +in the array \fBauto_index\fR; future calls to \fBauto_load\fR +check for \fIcmd\fR in the array rather than re-reading the index +files. +The cached index information may be deleted with the command +\fBauto_reset\fR. +This will force the next \fBauto_load\fR command to reload the +index database from disk. .TP \fBauto_mkindex \fIdir pattern pattern ...\fR -Generates an index suitable for use by \fBauto_load\fR. The command -searches \fIdir\fR for all files whose names match any of the -\fIpattern\fR arguments (matching is done with the \fBglob\fR -command), generates an index of all the Tcl command procedures defined -in all the matching files, and stores the index information in a file -named \fBtclIndex\fR in \fIdir\fR. If no pattern is given a pattern of -\fB*.tcl\fR will be assumed. For example, the command +Generates an index suitable for use by \fBauto_load\fR. +The command searches \fIdir\fR for all files whose names match +any of the \fIpattern\fR arguments +(matching is done with the \fBglob\fR command), +generates an index of all the Tcl command +procedures defined in all the matching files, and stores the +index information in a file named \fBtclIndex\fR in \fIdir\fR. +If no pattern is given a pattern of \fB*.tcl\fR will be assumed. +For example, the command .RS .CS \fBauto_mkindex foo *.tcl\fR .CE .LP -will read all the \fB.tcl\fR files in subdirectory \fBfoo\fR and -generate a new index file \fBfoo/tclIndex\fR. +will read all the \fB.tcl\fR files in subdirectory \fBfoo\fR +and generate a new index file \fBfoo/tclIndex\fR. .PP -\fBAuto_mkindex\fR parses the Tcl scripts by sourcing them into a -slave interpreter and monitoring the proc and namespace commands that -are executed. Extensions can use the (undocumented) -auto_mkindex_parser package to register other commands that can -contribute to the auto_load index. You will have to read through -auto.tcl to see how this works. +\fBAuto_mkindex\fR parses the Tcl scripts by sourcing them +into a slave interpreter and monitoring the proc and +namespace commands that are executed. +Extensions can use the (undocumented) +auto_mkindex_parser package to register other commands that +can contribute to the auto_load index. +You will have to read through auto.tcl to see how this works. .PP \fBAuto_mkindex_old\fR parses the Tcl scripts in a relatively unsophisticated way: if any line contains the word \fBproc\fR @@ -145,29 +147,12 @@ code or procedure names with special characters like \fB$\fR, .TP \fBauto_reset\fR Destroys all the information cached by \fBauto_execok\fR and -\fBauto_load\fR. This information will be re-read from disk the next -time it is needed. \fBAuto_reset\fR also deletes any procedures -listed in the auto-load index, so that fresh copies of them will be -loaded the next time that they're used. -.TP -\fBauto_qualify \fIcommand namespace\fR -Computes a list of fully qualified names for \fIcommand\fR. This list -mirrors the path a standard Tcl interpreter follows for command -lookups: first it looks for the command in the current namespace, and -then in the global namespace. Accordingly, if \fIcommand\fR is -relative and \fInamespace\fR is not \fB::\fR, the list returned has -two elements: \fIcommand\fR scoped by \fInamespace\fR, as if it were -a command in the \fInamespace\fR namespace; and \fIcommand\fR as if it -were a command in the global namespace. Otherwise, if either -\fIcommand\fR is absolute (it begins with \fB::\fR), or -\fInamespace\fR is \fB::\fR, the list contains only \fIcommand\fR as -if it were a command in the global namespace. -.RS -.PP -\fBAuto_qualify\fR is used by the auto-loading facilities in Tcl, both -for producing auto-loading indexes such as \fIpkgIndex.tcl\fR, and for -performing the actual auto-loading of functions at runtime. -.RE +\fBauto_load\fR. +This information will be re-read from disk the next time it is +needed. +\fBAuto_reset\fR also deletes any procedures listed in the auto-load +index, so that fresh copies of them will be loaded the next time +that they're used. .TP \fBtcl_findLibrary \fIbasename version patch initScript enVarName varName\fR This is a standard search procedure for use by extensions during diff --git a/generic/tclCkalloc.c b/generic/tclCkalloc.c index a85a0fd..a12f0cd 100644 --- a/generic/tclCkalloc.c +++ b/generic/tclCkalloc.c @@ -13,7 +13,7 @@ * * This code contributed by Karl Lehenbauer and Mark Diekhans * - * RCS: @(#) $Id: tclCkalloc.c,v 1.8 2000/04/27 01:47:01 ericm Exp $ + * RCS: @(#) $Id: tclCkalloc.c,v 1.7 1999/11/19 06:34:23 hobbs Exp $ */ #include "tclInt.h" @@ -179,34 +179,20 @@ TclDumpMemoryInfo(outFile) maximum_bytes_malloced); } - /* *---------------------------------------------------------------------- * * ValidateMemory -- - * - * Validate memory guard zones for a particular chunk of allocated - * memory. - * - * Results: - * None. - * - * Side effects: - * Prints validation information about the allocated memory to stderr. + * Procedure to validate allocted memory guard zones. * *---------------------------------------------------------------------- */ - static void ValidateMemory(memHeaderP, file, line, nukeGuards) - struct mem_header *memHeaderP; /* Memory chunk to validate */ - char *file; /* File containing the call to - * Tcl_ValidateAllMemory */ - int line; /* Line number of call to - * Tcl_ValidateAllMemory */ - int nukeGuards; /* If non-zero, indicates that the - * memory guards are to be reset to 0 - * after they have been printed */ + struct mem_header *memHeaderP; + char *file; + int line; + int nukeGuards; { unsigned char *hiPtr; int idx; @@ -267,21 +253,14 @@ ValidateMemory(memHeaderP, file, line, nukeGuards) *---------------------------------------------------------------------- * * Tcl_ValidateAllMemory -- - * - * Validate memory guard regions for all allocated memory. - * - * Results: - * None. - * - * Side effects: - * Displays memory validation information to stderr. + * Validates guard regions for all allocated memory. * *---------------------------------------------------------------------- */ void Tcl_ValidateAllMemory (file, line) - char *file; /* File from which Tcl_ValidateAllMemory was called */ - int line; /* Line number of call to Tcl_ValidateAllMemory */ + char *file; + int line; { struct mem_header *memScanP; @@ -299,18 +278,16 @@ Tcl_ValidateAllMemory (file, line) *---------------------------------------------------------------------- * * Tcl_DumpActiveMemory -- - * - * Displays all allocated memory to a file; if no filename is given, - * information will be written to stderr. + * Displays all allocated memory to stderr. * * Results: - * Return TCL_ERROR if an error accessing the file occures, `errno' - * will have the file error number left in it. + * Return TCL_ERROR if an error accessing the file occures, `errno' + * will have the file error number left in it. *---------------------------------------------------------------------- */ int Tcl_DumpActiveMemory (fileName) - char *fileName; /* Name of the file to write info to */ + char *fileName; { FILE *fileP; struct mem_header *memScanP; @@ -620,14 +597,13 @@ Tcl_Realloc(ptr, size) *---------------------------------------------------------------------- * * MemoryCmd -- - * Implements the Tcl "memory" command, which provides Tcl-level - * control of Tcl memory debugging information. - * memory info - * memory display - * memory break_on_malloc count - * memory trace_on_at_malloc count - * memory trace on|off - * memory validate on|off + * Implements the TCL memory command: + * memory info + * memory display + * break_on_malloc count + * trace_on_at_malloc count + * trace on|off + * validate on|off * * Results: * Standard TCL results. @@ -793,22 +769,13 @@ CheckmemCmd(clientData, interp, argc, argv) *---------------------------------------------------------------------- * * Tcl_InitMemory -- - * - * Create the "memory" and "checkmem" commands in the given - * interpreter. - * - * Results: - * None. - * - * Side effects: - * New commands are added to the interpreter. + * Initialize the memory command. * *---------------------------------------------------------------------- */ - void Tcl_InitMemory(interp) - Tcl_Interp *interp; /* Interpreter in which commands should be added */ + Tcl_Interp *interp; { TclInitDbCkalloc(); Tcl_CreateCommand (interp, "memory", MemoryCmd, (ClientData) NULL, diff --git a/library/http/http.tcl b/library/http/http.tcl index a524415..29e857a 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.32 2000/04/22 07:07:59 sandeep Exp $ +# RCS: @(#) $Id: http.tcl,v 1.32.2.1 2000/05/31 01:28:57 sandeep Exp $ # Rough version history: # 1.0 Old http_get interface @@ -280,7 +280,7 @@ proc http::geturl { url args } { if {![regexp -nocase {^(([^:]*)://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \ x prefix proto host y port srvurl]} { unset $token - error "Unsupported URL: $url" + return -code error "Unsupported URL: $url" } if {[string length $proto] == 0} { set proto http @@ -288,7 +288,7 @@ proc http::geturl { url args } { } if {![info exists urlTypes($proto)]} { unset $token - return -code error "unsupported url type \"$proto\"" + return -code error "Unsupported URL type \"$proto\"" } set defport [lindex $urlTypes($proto) 0] set defcmd [lindex $urlTypes($proto) 1] @@ -345,12 +345,17 @@ proc http::geturl { url args } { if {$state(-timeout) > 0} { fileevent $s writable [list http::Connect $token] http::wait $token - if {$state(status) != "connect"} { - - # Likely to be connection timeout. If there was a connection - # error, (e.g., bad port), then http::wait will have - # raised an error already + if {[string equal $state(status) "error"]} { + # something went wrong while trying to establish the connection + # Clean up after events and such, but DON'T call the command + # callback (if available) because we're going to throw an + # exception from here instead. + set err [lindex $state(error) 0] + cleanup $token + return -code error $err + } elseif {![string equal $state(status) "connect"]} { + # Likely to be connection timeout return $token } set state(status) "" @@ -449,6 +454,11 @@ proc http::geturl { url args } { # calls it synchronously, we just do a wait here. wait $token + if {[string equal $state(status) "error"]} { + # Something went wrong, so throw the exception, and the + # enclosing catch will do cleanup. + return -code error [lindex $state(error) 0] + } } } err]} { # The socket probably was never connected, @@ -457,8 +467,12 @@ proc http::geturl { url args } { # Clean up after events and such, but DON'T call the command callback # (if available) because we're going to throw an exception from here # instead. - - Finish $token $err 1 + + # if state(status) is error, it means someone's already called Finish + # to do the above-described clean up. + if {[string equal $state(status) "error"]} { + Finish $token $err 1 + } cleanup $token return -code error $err } @@ -502,6 +516,15 @@ proc http::size {token} { return $state(currentsize) } +proc http::error {token} { + variable $token + upvar 0 $token state + if {[info exists state(error)]} { + return $state(error) + } + return "" +} + # http::cleanup # # Garbage collect the state associated with a transaction @@ -531,21 +554,19 @@ proc http::cleanup {token} { # Sets the status of the connection, which unblocks # the waiting geturl call - proc http::Connect {token} { +proc http::Connect {token} { variable $token upvar 0 $token state global errorInfo errorCode if {[eof $state(sock)] || - [string length [fconfigure $state(sock) -error]]} { - set state(status) error - set state(error) [list \ - "connect failed [fconfigure $state(sock) -error]" \ - $errorInfo $errorCode] + [string length [fconfigure $state(sock) -error]]} { + Finish $token "connect failed [fconfigure $state(sock) -error]" 1 } else { set state(status) connect + fileevent $state(sock) writable {} } - fileevent $state(sock) writable {} - } + return +} # http::Write # @@ -780,11 +801,7 @@ proc http::wait {token} { # We must wait on the original variable name, not the upvar alias vwait $token\(status) } - if {[info exists state(error)]} { - set errorlist $state(error) - unset state - eval error $errorlist - } + return $state(status) } diff --git a/library/http2.3/http.tcl b/library/http2.3/http.tcl index a524415..29e857a 100644 --- a/library/http2.3/http.tcl +++ b/library/http2.3/http.tcl @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: http.tcl,v 1.32 2000/04/22 07:07:59 sandeep Exp $ +# RCS: @(#) $Id: http.tcl,v 1.32.2.1 2000/05/31 01:28:57 sandeep Exp $ # Rough version history: # 1.0 Old http_get interface @@ -280,7 +280,7 @@ proc http::geturl { url args } { if {![regexp -nocase {^(([^:]*)://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \ x prefix proto host y port srvurl]} { unset $token - error "Unsupported URL: $url" + return -code error "Unsupported URL: $url" } if {[string length $proto] == 0} { set proto http @@ -288,7 +288,7 @@ proc http::geturl { url args } { } if {![info exists urlTypes($proto)]} { unset $token - return -code error "unsupported url type \"$proto\"" + return -code error "Unsupported URL type \"$proto\"" } set defport [lindex $urlTypes($proto) 0] set defcmd [lindex $urlTypes($proto) 1] @@ -345,12 +345,17 @@ proc http::geturl { url args } { if {$state(-timeout) > 0} { fileevent $s writable [list http::Connect $token] http::wait $token - if {$state(status) != "connect"} { - - # Likely to be connection timeout. If there was a connection - # error, (e.g., bad port), then http::wait will have - # raised an error already + if {[string equal $state(status) "error"]} { + # something went wrong while trying to establish the connection + # Clean up after events and such, but DON'T call the command + # callback (if available) because we're going to throw an + # exception from here instead. + set err [lindex $state(error) 0] + cleanup $token + return -code error $err + } elseif {![string equal $state(status) "connect"]} { + # Likely to be connection timeout return $token } set state(status) "" @@ -449,6 +454,11 @@ proc http::geturl { url args } { # calls it synchronously, we just do a wait here. wait $token + if {[string equal $state(status) "error"]} { + # Something went wrong, so throw the exception, and the + # enclosing catch will do cleanup. + return -code error [lindex $state(error) 0] + } } } err]} { # The socket probably was never connected, @@ -457,8 +467,12 @@ proc http::geturl { url args } { # Clean up after events and such, but DON'T call the command callback # (if available) because we're going to throw an exception from here # instead. - - Finish $token $err 1 + + # if state(status) is error, it means someone's already called Finish + # to do the above-described clean up. + if {[string equal $state(status) "error"]} { + Finish $token $err 1 + } cleanup $token return -code error $err } @@ -502,6 +516,15 @@ proc http::size {token} { return $state(currentsize) } +proc http::error {token} { + variable $token + upvar 0 $token state + if {[info exists state(error)]} { + return $state(error) + } + return "" +} + # http::cleanup # # Garbage collect the state associated with a transaction @@ -531,21 +554,19 @@ proc http::cleanup {token} { # Sets the status of the connection, which unblocks # the waiting geturl call - proc http::Connect {token} { +proc http::Connect {token} { variable $token upvar 0 $token state global errorInfo errorCode if {[eof $state(sock)] || - [string length [fconfigure $state(sock) -error]]} { - set state(status) error - set state(error) [list \ - "connect failed [fconfigure $state(sock) -error]" \ - $errorInfo $errorCode] + [string length [fconfigure $state(sock) -error]]} { + Finish $token "connect failed [fconfigure $state(sock) -error]" 1 } else { set state(status) connect + fileevent $state(sock) writable {} } - fileevent $state(sock) writable {} - } + return +} # http::Write # @@ -780,11 +801,7 @@ proc http::wait {token} { # We must wait on the original variable name, not the upvar alias vwait $token\(status) } - if {[info exists state(error)]} { - set errorlist $state(error) - unset state - eval error $errorlist - } + return $state(status) } diff --git a/tests/http.test b/tests/http.test index 4efde80..275b627 100644 --- a/tests/http.test +++ b/tests/http.test @@ -6,13 +6,13 @@ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. -# Copyright (c) 1998-1999 by Scriptics Corporation. +# Copyright (c) 1998-2000 by Ajuba Solutions. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # -# RCS: @(#) $Id: http.test,v 1.19 2000/04/22 07:07:59 sandeep Exp $ +# RCS: @(#) $Id: http.test,v 1.19.2.1 2000/05/31 01:28:57 sandeep Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -290,6 +290,15 @@ test http-3.12 {http::geturl querychannel with aborted request} {nonPortable} { list [http::status $t] [http::code $t] } {ok {HTTP/1.0 200 Data follows}} +test http-3.13 {http::geturl socket leak test} { + set chanCount [llength [file channels]] + for {set i 0} {$i<200} {incr i} { + catch {http::geturl $badurl -timeout 10000} + } + + # No extra channels should be taken + expr {[llength [file channels]] == $chanCount} +} 1 test http-4.1 {http::Event} { set token [http::geturl $url] diff --git a/unix/mkLinks b/unix/mkLinks index e7c34fd..f972649 100644 --- a/unix/mkLinks +++ b/unix/mkLinks @@ -27,34 +27,33 @@ rm xyzzyTe* if test "$x" != "xyzzyTestingAVeryLongFileName.foo"; then exit fi - -if test -r Access.3; then - rm -f Tcl_Access.3 - rm -f Tcl_Stat.3 - ln Access.3 Tcl_Access.3 - ln Access.3 Tcl_Stat.3 +if test -r safe.n; then + rm -f Base.n + ln safe.n Base.n +fi +if test -r http.n; then + rm -f Http.n + ln http.n Http.n +fi +if test -r safe.n; then + rm -f Safe\.n + ln safe.n Safe\.n fi if test -r AddErrInfo.3; then - rm -f Tcl_AddObjErrorInfo.3 rm -f Tcl_AddErrorInfo.3 - rm -f Tcl_SetErrorCode.3 - rm -f Tcl_SetErrorCodeVA.3 - rm -f Tcl_PosixError.3 - rm -f Tcl_LogCommandInfo.3 - ln AddErrInfo.3 Tcl_AddObjErrorInfo.3 ln AddErrInfo.3 Tcl_AddErrorInfo.3 - ln AddErrInfo.3 Tcl_SetErrorCode.3 - ln AddErrInfo.3 Tcl_SetErrorCodeVA.3 - ln AddErrInfo.3 Tcl_PosixError.3 +fi +if test -r AddErrInfo.3; then + rm -f Tcl_AddObjErrorInfo.3 + ln AddErrInfo.3 Tcl_AddObjErrorInfo.3 +fi +if test -r AddErrInfo.3; then + rm -f Tcl_LogCommandInfo.3 ln AddErrInfo.3 Tcl_LogCommandInfo.3 fi if test -r Alloc.3; then rm -f Tcl_Alloc.3 - rm -f Tcl_Free.3 - rm -f Tcl_Realloc.3 ln Alloc.3 Tcl_Alloc.3 - ln Alloc.3 Tcl_Free.3 - ln Alloc.3 Tcl_Realloc.3 fi if test -r AllowExc.3; then rm -f Tcl_AllowExceptions.3 @@ -64,25 +63,45 @@ if test -r AppInit.3; then rm -f Tcl_AppInit.3 ln AppInit.3 Tcl_AppInit.3 fi -if test -r AssocData.3; then - rm -f Tcl_GetAssocData.3 - rm -f Tcl_SetAssocData.3 - rm -f Tcl_DeleteAssocData.3 - ln AssocData.3 Tcl_GetAssocData.3 - ln AssocData.3 Tcl_SetAssocData.3 - ln AssocData.3 Tcl_DeleteAssocData.3 +if test -r ObjectType.3; then + rm -f Tcl_AppendAllObjTypes.3 + ln ObjectType.3 Tcl_AppendAllObjTypes.3 +fi +if test -r SetResult.3; then + rm -f Tcl_AppendElement.3 + ln SetResult.3 Tcl_AppendElement.3 +fi +if test -r StringObj.3; then + rm -f Tcl_AppendObjToObj.3 + ln StringObj.3 Tcl_AppendObjToObj.3 +fi +if test -r SetResult.3; then + rm -f Tcl_AppendResult.3 + ln SetResult.3 Tcl_AppendResult.3 +fi +if test -r StringObj.3; then + rm -f Tcl_AppendStringsToObj.3 + ln StringObj.3 Tcl_AppendStringsToObj.3 +fi +if test -r StringObj.3; then + rm -f Tcl_AppendToObj.3 + ln StringObj.3 Tcl_AppendToObj.3 fi if test -r Async.3; then rm -f Tcl_AsyncCreate.3 - rm -f Tcl_AsyncMark.3 - rm -f Tcl_AsyncInvoke.3 - rm -f Tcl_AsyncDelete.3 - rm -f Tcl_AsyncReady.3 ln Async.3 Tcl_AsyncCreate.3 - ln Async.3 Tcl_AsyncMark.3 - ln Async.3 Tcl_AsyncInvoke.3 +fi +if test -r Async.3; then + rm -f Tcl_AsyncDelete.3 ln Async.3 Tcl_AsyncDelete.3 - ln Async.3 Tcl_AsyncReady.3 +fi +if test -r Async.3; then + rm -f Tcl_AsyncInvoke.3 + ln Async.3 Tcl_AsyncInvoke.3 +fi +if test -r Async.3; then + rm -f Tcl_AsyncMark.3 + ln Async.3 Tcl_AsyncMark.3 fi if test -r BackgdErr.3; then rm -f Tcl_BackgroundError.3 @@ -92,35 +111,21 @@ if test -r Backslash.3; then rm -f Tcl_Backslash.3 ln Backslash.3 Tcl_Backslash.3 fi -if test -r BoolObj.3; then - rm -f Tcl_NewBooleanObj.3 - rm -f Tcl_SetBooleanObj.3 - rm -f Tcl_GetBooleanFromObj.3 - ln BoolObj.3 Tcl_NewBooleanObj.3 - ln BoolObj.3 Tcl_SetBooleanObj.3 - ln BoolObj.3 Tcl_GetBooleanFromObj.3 -fi -if test -r ByteArrObj.3; then - rm -f Tcl_NewByteArrayObj.3 - rm -f Tcl_SetByteArrayObj.3 - rm -f Tcl_GetByteArrayFromObj.3 - rm -f Tcl_SetByteArrayLength.3 - ln ByteArrObj.3 Tcl_NewByteArrayObj.3 - ln ByteArrObj.3 Tcl_SetByteArrayObj.3 - ln ByteArrObj.3 Tcl_GetByteArrayFromObj.3 - ln ByteArrObj.3 Tcl_SetByteArrayLength.3 +if test -r CrtChannel.3; then + rm -f Tcl_BadChannelOption.3 + ln CrtChannel.3 Tcl_BadChannelOption.3 fi if test -r CallDel.3; then rm -f Tcl_CallWhenDeleted.3 - rm -f Tcl_DontCallWhenDeleted.3 ln CallDel.3 Tcl_CallWhenDeleted.3 - ln CallDel.3 Tcl_DontCallWhenDeleted.3 fi -if test -r ChnlStack.3; then - rm -f Tcl_StackChannel.3 - rm -f Tcl_UnstackChannel.3 - ln ChnlStack.3 Tcl_StackChannel.3 - ln ChnlStack.3 Tcl_UnstackChannel.3 +if test -r DoWhenIdle.3; then + rm -f Tcl_CancelIdleCall.3 + ln DoWhenIdle.3 Tcl_CancelIdleCall.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Close.3 + ln OpenFileChnl.3 Tcl_Close.3 fi if test -r CmdCmplt.3; then rm -f Tcl_CommandComplete.3 @@ -130,57 +135,77 @@ if test -r Concat.3; then rm -f Tcl_Concat.3 ln Concat.3 Tcl_Concat.3 fi +if test -r GetHostName.3; then + rm -f Tcl_GetHostName.3 + ln GetHostName.3 Tcl_GetHostName.3 +fi +if test -r StringObj.3; then + rm -f Tcl_ConcatObj.3 + ln StringObj.3 Tcl_ConcatObj.3 +fi +if test -r Thread.3; then + rm -f Tcl_ConditionNotify.3 + ln Thread.3 Tcl_ConditionNotify.3 +fi +if test -r Thread.3; then + rm -f Tcl_ConditionWait.3 + ln Thread.3 Tcl_ConditionWait.3 +fi +if test -r SplitList.3; then + rm -f Tcl_ConvertElement.3 + ln SplitList.3 Tcl_ConvertElement.3 +fi +if test -r ObjectType.3; then + rm -f Tcl_ConvertToType.3 + ln ObjectType.3 Tcl_ConvertToType.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_CreateAlias.3 + ln CrtSlave.3 Tcl_CreateAlias.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_CreateAliasObj.3 + ln CrtSlave.3 Tcl_CreateAliasObj.3 +fi if test -r CrtChannel.3; then rm -f Tcl_CreateChannel.3 - rm -f Tcl_GetChannelInstanceData.3 - rm -f Tcl_GetChannelType.3 - rm -f Tcl_GetChannelName.3 - rm -f Tcl_GetChannelHandle.3 - rm -f Tcl_GetChannelMode.3 - rm -f Tcl_GetChannelBufferSize.3 - rm -f Tcl_SetChannelBufferSize.3 - rm -f Tcl_NotifyChannel.3 - rm -f Tcl_BadChannelOption.3 ln CrtChannel.3 Tcl_CreateChannel.3 - ln CrtChannel.3 Tcl_GetChannelInstanceData.3 - ln CrtChannel.3 Tcl_GetChannelType.3 - ln CrtChannel.3 Tcl_GetChannelName.3 - ln CrtChannel.3 Tcl_GetChannelHandle.3 - ln CrtChannel.3 Tcl_GetChannelMode.3 - ln CrtChannel.3 Tcl_GetChannelBufferSize.3 - ln CrtChannel.3 Tcl_SetChannelBufferSize.3 - ln CrtChannel.3 Tcl_NotifyChannel.3 - ln CrtChannel.3 Tcl_BadChannelOption.3 fi if test -r CrtChnlHdlr.3; then rm -f Tcl_CreateChannelHandler.3 - rm -f Tcl_DeleteChannelHandler.3 ln CrtChnlHdlr.3 Tcl_CreateChannelHandler.3 - ln CrtChnlHdlr.3 Tcl_DeleteChannelHandler.3 fi if test -r CrtCloseHdlr.3; then rm -f Tcl_CreateCloseHandler.3 - rm -f Tcl_DeleteCloseHandler.3 ln CrtCloseHdlr.3 Tcl_CreateCloseHandler.3 - ln CrtCloseHdlr.3 Tcl_DeleteCloseHandler.3 fi if test -r CrtCommand.3; then rm -f Tcl_CreateCommand.3 ln CrtCommand.3 Tcl_CreateCommand.3 fi +if test -r Encoding.3; then + rm -f Tcl_CreateEncoding.3 + ln Encoding.3 Tcl_CreateEncoding.3 +fi +if test -r Notifier.3; then + rm -f Tcl_CreateEventSource.3 + ln Notifier.3 Tcl_CreateEventSource.3 +fi +if test -r Exit.3; then + rm -f Tcl_CreateExitHandler.3 + ln Exit.3 Tcl_CreateExitHandler.3 +fi if test -r CrtFileHdlr.3; then rm -f Tcl_CreateFileHandler.3 - rm -f Tcl_DeleteFileHandler.3 ln CrtFileHdlr.3 Tcl_CreateFileHandler.3 - ln CrtFileHdlr.3 Tcl_DeleteFileHandler.3 +fi +if test -r Hash.3; then + rm -f Tcl_CreateHashEntry.3 + ln Hash.3 Tcl_CreateHashEntry.3 fi if test -r CrtInterp.3; then rm -f Tcl_CreateInterp.3 - rm -f Tcl_DeleteInterp.3 - rm -f Tcl_InterpDeleted.3 ln CrtInterp.3 Tcl_CreateInterp.3 - ln CrtInterp.3 Tcl_DeleteInterp.3 - ln CrtInterp.3 Tcl_InterpDeleted.3 fi if test -r CrtMathFnc.3; then rm -f Tcl_CreateMathFunc.3 @@ -188,85 +213,143 @@ if test -r CrtMathFnc.3; then fi if test -r CrtObjCmd.3; then rm -f Tcl_CreateObjCommand.3 - rm -f Tcl_DeleteCommand.3 - rm -f Tcl_DeleteCommandFromToken.3 - rm -f Tcl_GetCommandInfo.3 - rm -f Tcl_SetCommandInfo.3 - rm -f Tcl_GetCommandName.3 ln CrtObjCmd.3 Tcl_CreateObjCommand.3 - ln CrtObjCmd.3 Tcl_DeleteCommand.3 - ln CrtObjCmd.3 Tcl_DeleteCommandFromToken.3 - ln CrtObjCmd.3 Tcl_GetCommandInfo.3 - ln CrtObjCmd.3 Tcl_SetCommandInfo.3 - ln CrtObjCmd.3 Tcl_GetCommandName.3 fi if test -r CrtSlave.3; then - rm -f Tcl_IsSafe.3 - rm -f Tcl_MakeSafe.3 rm -f Tcl_CreateSlave.3 - rm -f Tcl_GetSlave.3 - rm -f Tcl_GetMaster.3 - rm -f Tcl_GetInterpPath.3 - rm -f Tcl_CreateAlias.3 - rm -f Tcl_CreateAliasObj.3 - rm -f Tcl_GetAlias.3 - rm -f Tcl_GetAliasObj.3 - rm -f Tcl_ExposeCommand.3 - rm -f Tcl_HideCommand.3 - ln CrtSlave.3 Tcl_IsSafe.3 - ln CrtSlave.3 Tcl_MakeSafe.3 ln CrtSlave.3 Tcl_CreateSlave.3 - ln CrtSlave.3 Tcl_GetSlave.3 - ln CrtSlave.3 Tcl_GetMaster.3 - ln CrtSlave.3 Tcl_GetInterpPath.3 - ln CrtSlave.3 Tcl_CreateAlias.3 - ln CrtSlave.3 Tcl_CreateAliasObj.3 - ln CrtSlave.3 Tcl_GetAlias.3 - ln CrtSlave.3 Tcl_GetAliasObj.3 - ln CrtSlave.3 Tcl_ExposeCommand.3 - ln CrtSlave.3 Tcl_HideCommand.3 +fi +if test -r Exit.3; then + rm -f Tcl_CreateThreadExitHandler.3 + ln Exit.3 Tcl_CreateThreadExitHandler.3 fi if test -r CrtTimerHdlr.3; then rm -f Tcl_CreateTimerHandler.3 - rm -f Tcl_DeleteTimerHandler.3 ln CrtTimerHdlr.3 Tcl_CreateTimerHandler.3 - ln CrtTimerHdlr.3 Tcl_DeleteTimerHandler.3 fi if test -r CrtTrace.3; then rm -f Tcl_CreateTrace.3 - rm -f Tcl_DeleteTrace.3 ln CrtTrace.3 Tcl_CreateTrace.3 - ln CrtTrace.3 Tcl_DeleteTrace.3 +fi +if test -r CrtVersion.3; then + rm -f Tcl_GetVersion.3 + ln CrtVersion.3 Tcl_GetVersion.3 fi if test -r DString.3; then - rm -f Tcl_DStringInit.3 rm -f Tcl_DStringAppend.3 + ln DString.3 Tcl_DStringAppend.3 +fi +if test -r DString.3; then rm -f Tcl_DStringAppendElement.3 - rm -f Tcl_DStringStartSublist.3 + ln DString.3 Tcl_DStringAppendElement.3 +fi +if test -r DString.3; then rm -f Tcl_DStringEndSublist.3 - rm -f Tcl_DStringLength.3 - rm -f Tcl_DStringValue.3 - rm -f Tcl_DStringSetLength.3 + ln DString.3 Tcl_DStringEndSublist.3 +fi +if test -r DString.3; then rm -f Tcl_DStringFree.3 - rm -f Tcl_DStringResult.3 + ln DString.3 Tcl_DStringFree.3 +fi +if test -r DString.3; then rm -f Tcl_DStringGetResult.3 + ln DString.3 Tcl_DStringGetResult.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringInit.3 ln DString.3 Tcl_DStringInit.3 - ln DString.3 Tcl_DStringAppend.3 - ln DString.3 Tcl_DStringAppendElement.3 - ln DString.3 Tcl_DStringStartSublist.3 - ln DString.3 Tcl_DStringEndSublist.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringLength.3 ln DString.3 Tcl_DStringLength.3 - ln DString.3 Tcl_DStringValue.3 - ln DString.3 Tcl_DStringSetLength.3 - ln DString.3 Tcl_DStringFree.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringResult.3 ln DString.3 Tcl_DStringResult.3 - ln DString.3 Tcl_DStringGetResult.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringSetLength.3 + ln DString.3 Tcl_DStringSetLength.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringStartSublist.3 + ln DString.3 Tcl_DStringStartSublist.3 +fi +if test -r DString.3; then + rm -f Tcl_DStringValue.3 + ln DString.3 Tcl_DStringValue.3 +fi +if test -r Object.3; then + rm -f Tcl_DecrRefCount.3 + ln Object.3 Tcl_DecrRefCount.3 +fi +if test -r AssocData.3; then + rm -f Tcl_DeleteAssocData.3 + ln AssocData.3 Tcl_DeleteAssocData.3 +fi +if test -r CrtChnlHdlr.3; then + rm -f Tcl_DeleteChannelHandler.3 + ln CrtChnlHdlr.3 Tcl_DeleteChannelHandler.3 +fi +if test -r CrtCloseHdlr.3; then + rm -f Tcl_DeleteCloseHandler.3 + ln CrtCloseHdlr.3 Tcl_DeleteCloseHandler.3 +fi +if test -r CrtObjCmd.3; then + rm -f Tcl_DeleteCommand.3 + ln CrtObjCmd.3 Tcl_DeleteCommand.3 +fi +if test -r CrtObjCmd.3; then + rm -f Tcl_DeleteCommandFromToken.3 + ln CrtObjCmd.3 Tcl_DeleteCommandFromToken.3 +fi +if test -r Notifier.3; then + rm -f Tcl_DeleteEventSource.3 + ln Notifier.3 Tcl_DeleteEventSource.3 +fi +if test -r Notifier.3; then + rm -f Tcl_DeleteEvents.3 + ln Notifier.3 Tcl_DeleteEvents.3 +fi +if test -r Exit.3; then + rm -f Tcl_DeleteExitHandler.3 + ln Exit.3 Tcl_DeleteExitHandler.3 +fi +if test -r CrtFileHdlr.3; then + rm -f Tcl_DeleteFileHandler.3 + ln CrtFileHdlr.3 Tcl_DeleteFileHandler.3 +fi +if test -r Hash.3; then + rm -f Tcl_DeleteHashEntry.3 + ln Hash.3 Tcl_DeleteHashEntry.3 +fi +if test -r Hash.3; then + rm -f Tcl_DeleteHashTable.3 + ln Hash.3 Tcl_DeleteHashTable.3 +fi +if test -r CrtInterp.3; then + rm -f Tcl_DeleteInterp.3 + ln CrtInterp.3 Tcl_DeleteInterp.3 +fi +if test -r Exit.3; then + rm -f Tcl_DeleteThreadExitHandler.3 + ln Exit.3 Tcl_DeleteThreadExitHandler.3 +fi +if test -r CrtTimerHdlr.3; then + rm -f Tcl_DeleteTimerHandler.3 + ln CrtTimerHdlr.3 Tcl_DeleteTimerHandler.3 +fi +if test -r CrtTrace.3; then + rm -f Tcl_DeleteTrace.3 + ln CrtTrace.3 Tcl_DeleteTrace.3 fi if test -r DetachPids.3; then rm -f Tcl_DetachPids.3 - rm -f Tcl_ReapDetachedProcs.3 ln DetachPids.3 Tcl_DetachPids.3 - ln DetachPids.3 Tcl_ReapDetachedProcs.3 +fi +if test -r SaveResult.3; then + rm -f Tcl_DiscardResult.3 + ln SaveResult.3 Tcl_DiscardResult.3 fi if test -r DoOneEvent.3; then rm -f Tcl_DoOneEvent.3 @@ -274,127 +357,235 @@ if test -r DoOneEvent.3; then fi if test -r DoWhenIdle.3; then rm -f Tcl_DoWhenIdle.3 - rm -f Tcl_CancelIdleCall.3 ln DoWhenIdle.3 Tcl_DoWhenIdle.3 - ln DoWhenIdle.3 Tcl_CancelIdleCall.3 fi -if test -r DoubleObj.3; then - rm -f Tcl_NewDoubleObj.3 - rm -f Tcl_SetDoubleObj.3 - rm -f Tcl_GetDoubleFromObj.3 - ln DoubleObj.3 Tcl_NewDoubleObj.3 - ln DoubleObj.3 Tcl_SetDoubleObj.3 - ln DoubleObj.3 Tcl_GetDoubleFromObj.3 +if test -r CallDel.3; then + rm -f Tcl_DontCallWhenDeleted.3 + ln CallDel.3 Tcl_DontCallWhenDeleted.3 fi -if test -r DumpActiveMemory.3; then - rm -f Tcl_DumpActiveMemory.3 - rm -f Tcl_InitMemory.3 - rm -f Tcl_ValidateAllMemory.3 - ln DumpActiveMemory.3 Tcl_DumpActiveMemory.3 - ln DumpActiveMemory.3 Tcl_InitMemory.3 - ln DumpActiveMemory.3 Tcl_ValidateAllMemory.3 +if test -r Object.3; then + rm -f Tcl_DuplicateObj.3 + ln Object.3 Tcl_DuplicateObj.3 fi -if test -r Encoding.3; then - rm -f Tcl_GetEncoding.3 - rm -f Tcl_FreeEncoding.3 - rm -f Tcl_ExternalToUtfDString.3 - rm -f Tcl_ExternalToUtf.3 - rm -f Tcl_UtfToExternalDString.3 - rm -f Tcl_UtfToExternal.3 - rm -f Tcl_WinTCharToUtf.3 - rm -f Tcl_WinUtfToTChar.3 - rm -f Tcl_GetEncodingName.3 - rm -f Tcl_SetSystemEncoding.3 - rm -f Tcl_GetEncodingNames.3 - rm -f Tcl_CreateEncoding.3 - rm -f Tcl_GetDefaultEncodingDir.3 - rm -f Tcl_SetDefaultEncodingDir.3 - ln Encoding.3 Tcl_GetEncoding.3 - ln Encoding.3 Tcl_FreeEncoding.3 - ln Encoding.3 Tcl_ExternalToUtfDString.3 - ln Encoding.3 Tcl_ExternalToUtf.3 - ln Encoding.3 Tcl_UtfToExternalDString.3 - ln Encoding.3 Tcl_UtfToExternal.3 - ln Encoding.3 Tcl_WinTCharToUtf.3 - ln Encoding.3 Tcl_WinUtfToTChar.3 - ln Encoding.3 Tcl_GetEncodingName.3 - ln Encoding.3 Tcl_SetSystemEncoding.3 - ln Encoding.3 Tcl_GetEncodingNames.3 - ln Encoding.3 Tcl_CreateEncoding.3 - ln Encoding.3 Tcl_GetDefaultEncodingDir.3 - ln Encoding.3 Tcl_SetDefaultEncodingDir.3 +if test -r OpenFileChnl.3; then + rm -f Tcl_Eof.3 + ln OpenFileChnl.3 Tcl_Eof.3 fi if test -r Eval.3; then - rm -f Tcl_EvalObjEx.3 - rm -f Tcl_EvalFile.3 - rm -f Tcl_EvalObjv.3 rm -f Tcl_Eval.3 - rm -f Tcl_EvalEx.3 - rm -f Tcl_GlobalEval.3 - rm -f Tcl_GlobalEvalObj.3 - rm -f Tcl_VarEval.3 - rm -f Tcl_VarEvalVA.3 - ln Eval.3 Tcl_EvalObjEx.3 + ln Eval.3 Tcl_Eval.3 +fi +if test -r Eval.3; then + rm -f Tcl_Eval2.3 + ln Eval.3 Tcl_Eval2.3 +fi +if test -r Eval.3; then + rm -f Tcl_EvalFile.3 ln Eval.3 Tcl_EvalFile.3 +fi +if test -r Eval.3; then + rm -f Tcl_EvalObj.3 + ln Eval.3 Tcl_EvalObj.3 +fi +if test -r Eval.3; then + rm -f Tcl_EvalObjv.3 ln Eval.3 Tcl_EvalObjv.3 - ln Eval.3 Tcl_Eval.3 - ln Eval.3 Tcl_EvalEx.3 - ln Eval.3 Tcl_GlobalEval.3 - ln Eval.3 Tcl_GlobalEvalObj.3 - ln Eval.3 Tcl_VarEval.3 - ln Eval.3 Tcl_VarEvalVA.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_EvalTokens.3 + ln ParseCmd.3 Tcl_EvalTokens.3 +fi +if test -r Preserve.3; then + rm -f Tcl_EventuallyFree.3 + ln Preserve.3 Tcl_EventuallyFree.3 fi if test -r Exit.3; then rm -f Tcl_Exit.3 - rm -f Tcl_Finalize.3 - rm -f Tcl_FinalizeThread.3 - rm -f Tcl_CreateExitHandler.3 - rm -f Tcl_DeleteExitHandler.3 - rm -f Tcl_CreateThreadExitHandler.3 - rm -f Tcl_DeleteThreadExitHandler.3 ln Exit.3 Tcl_Exit.3 - ln Exit.3 Tcl_Finalize.3 - ln Exit.3 Tcl_FinalizeThread.3 - ln Exit.3 Tcl_CreateExitHandler.3 - ln Exit.3 Tcl_DeleteExitHandler.3 - ln Exit.3 Tcl_CreateThreadExitHandler.3 - ln Exit.3 Tcl_DeleteThreadExitHandler.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_ExposeCommand.3 + ln CrtSlave.3 Tcl_ExposeCommand.3 fi if test -r ExprLong.3; then - rm -f Tcl_ExprLong.3 - rm -f Tcl_ExprDouble.3 rm -f Tcl_ExprBoolean.3 - rm -f Tcl_ExprString.3 - ln ExprLong.3 Tcl_ExprLong.3 - ln ExprLong.3 Tcl_ExprDouble.3 ln ExprLong.3 Tcl_ExprBoolean.3 - ln ExprLong.3 Tcl_ExprString.3 fi if test -r ExprLongObj.3; then - rm -f Tcl_ExprLongObj.3 - rm -f Tcl_ExprDoubleObj.3 rm -f Tcl_ExprBooleanObj.3 - rm -f Tcl_ExprObj.3 - ln ExprLongObj.3 Tcl_ExprLongObj.3 - ln ExprLongObj.3 Tcl_ExprDoubleObj.3 ln ExprLongObj.3 Tcl_ExprBooleanObj.3 +fi +if test -r ExprLong.3; then + rm -f Tcl_ExprDouble.3 + ln ExprLong.3 Tcl_ExprDouble.3 +fi +if test -r ExprLongObj.3; then + rm -f Tcl_ExprDoubleObj.3 + ln ExprLongObj.3 Tcl_ExprDoubleObj.3 +fi +if test -r ExprLong.3; then + rm -f Tcl_ExprLong.3 + ln ExprLong.3 Tcl_ExprLong.3 +fi +if test -r ExprLongObj.3; then + rm -f Tcl_ExprLongObj.3 + ln ExprLongObj.3 Tcl_ExprLongObj.3 +fi +if test -r ExprLongObj.3; then + rm -f Tcl_ExprObj.3 ln ExprLongObj.3 Tcl_ExprObj.3 fi +if test -r ExprLong.3; then + rm -f Tcl_ExprString.3 + ln ExprLong.3 Tcl_ExprString.3 +fi +if test -r Encoding.3; then + rm -f Tcl_ExternalToUtf.3 + ln Encoding.3 Tcl_ExternalToUtf.3 +fi +if test -r Encoding.3; then + rm -f Tcl_ExternalToUtfDString.3 + ln Encoding.3 Tcl_ExternalToUtfDString.3 +fi +if test -r Exit.3; then + rm -f Tcl_Finalize.3 + ln Exit.3 Tcl_Finalize.3 +fi +if test -r Exit.3; then + rm -f Tcl_FinalizeThread.3 + ln Exit.3 Tcl_FinalizeThread.3 +fi if test -r FindExec.3; then rm -f Tcl_FindExecutable.3 - rm -f Tcl_GetNameOfExecutable.3 ln FindExec.3 Tcl_FindExecutable.3 - ln FindExec.3 Tcl_GetNameOfExecutable.3 fi -if test -r GetCwd.3; then - rm -f Tcl_GetCwd.3 - rm -f Tcl_Chdir.3 - ln GetCwd.3 Tcl_GetCwd.3 - ln GetCwd.3 Tcl_Chdir.3 +if test -r Hash.3; then + rm -f Tcl_FindHashEntry.3 + ln Hash.3 Tcl_FindHashEntry.3 fi -if test -r GetHostName.3; then - rm -f Tcl_GetHostName.3 - ln GetHostName.3 Tcl_GetHostName.3 +if test -r Hash.3; then + rm -f Tcl_FirstHashEntry.3 + ln Hash.3 Tcl_FirstHashEntry.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Flush.3 + ln OpenFileChnl.3 Tcl_Flush.3 +fi +if test -r Alloc.3; then + rm -f Tcl_Free.3 + ln Alloc.3 Tcl_Free.3 +fi +if test -r Encoding.3; then + rm -f Tcl_FreeEncoding.3 + ln Encoding.3 Tcl_FreeEncoding.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_FreeParse.3 + ln ParseCmd.3 Tcl_FreeParse.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_GetAlias.3 + ln CrtSlave.3 Tcl_GetAlias.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_GetAliasObj.3 + ln CrtSlave.3 Tcl_GetAliasObj.3 +fi +if test -r AssocData.3; then + rm -f Tcl_GetAssocData.3 + ln AssocData.3 Tcl_GetAssocData.3 +fi +if test -r GetInt.3; then + rm -f Tcl_GetBoolean.3 + ln GetInt.3 Tcl_GetBoolean.3 +fi +if test -r BoolObj.3; then + rm -f Tcl_GetBooleanFromObj.3 + ln BoolObj.3 Tcl_GetBooleanFromObj.3 +fi +if test -r ByteArrObj.3; then + rm -f Tcl_GetByteArrayFromObj.3 + ln ByteArrObj.3 Tcl_GetByteArrayFromObj.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_GetChannel.3 + ln OpenFileChnl.3 Tcl_GetChannel.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelBufferSize.3 + ln CrtChannel.3 Tcl_GetChannelBufferSize.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelHandle.3 + ln CrtChannel.3 Tcl_GetChannelHandle.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelInstanceData.3 + ln CrtChannel.3 Tcl_GetChannelInstanceData.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelMode.3 + ln CrtChannel.3 Tcl_GetChannelMode.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelName.3 + ln CrtChannel.3 Tcl_GetChannelName.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_GetChannelOption.3 + ln OpenFileChnl.3 Tcl_GetChannelOption.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_GetChannelType.3 + ln CrtChannel.3 Tcl_GetChannelType.3 +fi +if test -r CrtObjCmd.3; then + rm -f Tcl_GetCommandInfo.3 + ln CrtObjCmd.3 Tcl_GetCommandInfo.3 +fi +if test -r CrtObjCmd.3; then + rm -f Tcl_GetCommandName.3 + ln CrtObjCmd.3 Tcl_GetCommandName.3 +fi +if test -r GetInt.3; then + rm -f Tcl_GetDouble.3 + ln GetInt.3 Tcl_GetDouble.3 +fi +if test -r DoubleObj.3; then + rm -f Tcl_GetDoubleFromObj.3 + ln DoubleObj.3 Tcl_GetDoubleFromObj.3 +fi +if test -r Encoding.3; then + rm -f Tcl_GetEncoding.3 + ln Encoding.3 Tcl_GetEncoding.3 +fi +if test -r Encoding.3; then + rm -f Tcl_GetEncodingName.3 + ln Encoding.3 Tcl_GetEncodingName.3 +fi +if test -r Encoding.3; then + rm -f Tcl_GetEncodingNames.3 + ln Encoding.3 Tcl_GetEncodingNames.3 +fi +if test -r SetErrno.3; then + rm -f Tcl_GetErrno.3 + ln SetErrno.3 Tcl_GetErrno.3 +fi +if test -r SetErrno.3; then + rm -f Tcl_ErrnoId.3 + ln SetErrno.3 Tcl_ErrnoId.3 +fi +if test -r SetErrno.3; then + rm -f Tcl_ErrnoMsg.3 + ln SetErrno.3 Tcl_ErrnoMsg.3 +fi +if test -r Hash.3; then + rm -f Tcl_GetHashKey.3 + ln Hash.3 Tcl_GetHashKey.3 +fi +if test -r Hash.3; then + rm -f Tcl_GetHashValue.3 + ln Hash.3 Tcl_GetHashValue.3 fi if test -r GetIndex.3; then rm -f Tcl_GetIndexFromObj.3 @@ -402,375 +593,519 @@ if test -r GetIndex.3; then fi if test -r GetInt.3; then rm -f Tcl_GetInt.3 - rm -f Tcl_GetDouble.3 - rm -f Tcl_GetBoolean.3 ln GetInt.3 Tcl_GetInt.3 - ln GetInt.3 Tcl_GetDouble.3 - ln GetInt.3 Tcl_GetBoolean.3 +fi +if test -r IntObj.3; then + rm -f Tcl_GetIntFromObj.3 + ln IntObj.3 Tcl_GetIntFromObj.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_GetInterpPath.3 + ln CrtSlave.3 Tcl_GetInterpPath.3 +fi +if test -r IntObj.3; then + rm -f Tcl_GetLongFromObj.3 + ln IntObj.3 Tcl_GetLongFromObj.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_GetMaster.3 + ln CrtSlave.3 Tcl_GetMaster.3 +fi +if test -r SetResult.3; then + rm -f Tcl_GetObjResult.3 + ln SetResult.3 Tcl_GetObjResult.3 +fi +if test -r ObjectType.3; then + rm -f Tcl_GetObjType.3 + ln ObjectType.3 Tcl_GetObjType.3 fi if test -r GetOpnFl.3; then rm -f Tcl_GetOpenFile.3 ln GetOpnFl.3 Tcl_GetOpenFile.3 fi +if test -r SplitPath.3; then + rm -f Tcl_GetPathType.3 + ln SplitPath.3 Tcl_GetPathType.3 +fi +if test -r Notifier.3; then + rm -f Tcl_GetServiceMode.3 + ln Notifier.3 Tcl_GetServiceMode.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_GetSlave.3 + ln CrtSlave.3 Tcl_GetSlave.3 +fi if test -r GetStdChan.3; then rm -f Tcl_GetStdChannel.3 - rm -f Tcl_SetStdChannel.3 ln GetStdChan.3 Tcl_GetStdChannel.3 - ln GetStdChan.3 Tcl_SetStdChannel.3 fi -if test -r GetVersion.3; then - rm -f Tcl_GetVersion.3 - ln GetVersion.3 Tcl_GetVersion.3 +if test -r StringObj.3; then + rm -f Tcl_GetString.3 + ln StringObj.3 Tcl_GetString.3 +fi +if test -r StringObj.3; then + rm -f Tcl_GetStringFromObj.3 + ln StringObj.3 Tcl_GetStringFromObj.3 +fi +if test -r SetResult.3; then + rm -f Tcl_GetStringResult.3 + ln SetResult.3 Tcl_GetStringResult.3 +fi +if test -r Thread.3; then + rm -f Tcl_GetThreadData.3 + ln Thread.3 Tcl_GetThreadData.3 +fi +if test -r SetVar.3; then + rm -f Tcl_GetVar.3 + ln SetVar.3 Tcl_GetVar.3 +fi +if test -r SetVar.3; then + rm -f Tcl_GetVar2.3 + ln SetVar.3 Tcl_GetVar2.3 +fi +if test -r SetVar.3; then + rm -f Tcl_GetVar2Ex.3 + ln SetVar.3 Tcl_GetVar2Ex.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Gets.3 + ln OpenFileChnl.3 Tcl_Gets.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Ungets.3 + ln OpenFileChnl.3 Tcl_Ungets.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_GetsObj.3 + ln OpenFileChnl.3 Tcl_GetsObj.3 +fi +if test -r Eval.3; then + rm -f Tcl_GlobalEval.3 + ln Eval.3 Tcl_GlobalEval.3 fi if test -r Hash.3; then - rm -f Tcl_InitHashTable.3 - rm -f Tcl_DeleteHashTable.3 - rm -f Tcl_CreateHashEntry.3 - rm -f Tcl_DeleteHashEntry.3 - rm -f Tcl_FindHashEntry.3 - rm -f Tcl_GetHashValue.3 - rm -f Tcl_SetHashValue.3 - rm -f Tcl_GetHashKey.3 - rm -f Tcl_FirstHashEntry.3 - rm -f Tcl_NextHashEntry.3 rm -f Tcl_HashStats.3 - ln Hash.3 Tcl_InitHashTable.3 - ln Hash.3 Tcl_DeleteHashTable.3 - ln Hash.3 Tcl_CreateHashEntry.3 - ln Hash.3 Tcl_DeleteHashEntry.3 - ln Hash.3 Tcl_FindHashEntry.3 - ln Hash.3 Tcl_GetHashValue.3 - ln Hash.3 Tcl_SetHashValue.3 - ln Hash.3 Tcl_GetHashKey.3 - ln Hash.3 Tcl_FirstHashEntry.3 - ln Hash.3 Tcl_NextHashEntry.3 ln Hash.3 Tcl_HashStats.3 fi -if test -r Init.3; then - rm -f Tcl_Init.3 - ln Init.3 Tcl_Init.3 +if test -r CrtSlave.3; then + rm -f Tcl_HideCommand.3 + ln CrtSlave.3 Tcl_HideCommand.3 fi -if test -r InitStubs.3; then - rm -f Tcl_InitStubs.3 - ln InitStubs.3 Tcl_InitStubs.3 +if test -r Object.3; then + rm -f Tcl_IncrRefCount.3 + ln Object.3 Tcl_IncrRefCount.3 fi -if test -r IntObj.3; then - rm -f Tcl_NewIntObj.3 - rm -f Tcl_NewLongObj.3 - rm -f Tcl_SetIntObj.3 - rm -f Tcl_SetLongObj.3 - rm -f Tcl_GetIntFromObj.3 - rm -f Tcl_GetLongFromObj.3 - ln IntObj.3 Tcl_NewIntObj.3 - ln IntObj.3 Tcl_NewLongObj.3 - ln IntObj.3 Tcl_SetIntObj.3 - ln IntObj.3 Tcl_SetLongObj.3 - ln IntObj.3 Tcl_GetIntFromObj.3 - ln IntObj.3 Tcl_GetLongFromObj.3 +if test -r Hash.3; then + rm -f Tcl_InitHashTable.3 + ln Hash.3 Tcl_InitHashTable.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_InputBlocked.3 + ln OpenFileChnl.3 Tcl_InputBlocked.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_InputBuffered.3 + ln OpenFileChnl.3 Tcl_InputBuffered.3 fi if test -r Interp.3; then rm -f Tcl_Interp.3 ln Interp.3 Tcl_Interp.3 fi +if test -r CrtInterp.3; then + rm -f Tcl_InterpDeleted.3 + ln CrtInterp.3 Tcl_InterpDeleted.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_IsSafe.3 + ln CrtSlave.3 Tcl_IsSafe.3 +fi +if test -r Object.3; then + rm -f Tcl_IsShared.3 + ln Object.3 Tcl_IsShared.3 +fi +if test -r SplitPath.3; then + rm -f Tcl_JoinPath.3 + ln SplitPath.3 Tcl_JoinPath.3 +fi if test -r LinkVar.3; then rm -f Tcl_LinkVar.3 - rm -f Tcl_UnlinkVar.3 - rm -f Tcl_UpdateLinkedVar.3 ln LinkVar.3 Tcl_LinkVar.3 - ln LinkVar.3 Tcl_UnlinkVar.3 - ln LinkVar.3 Tcl_UpdateLinkedVar.3 fi if test -r ListObj.3; then - rm -f Tcl_ListObjAppendList.3 rm -f Tcl_ListObjAppendElement.3 - rm -f Tcl_NewListObj.3 - rm -f Tcl_SetListObj.3 - rm -f Tcl_ListObjGetElements.3 - rm -f Tcl_ListObjLength.3 - rm -f Tcl_ListObjIndex.3 - rm -f Tcl_ListObjReplace.3 - ln ListObj.3 Tcl_ListObjAppendList.3 ln ListObj.3 Tcl_ListObjAppendElement.3 - ln ListObj.3 Tcl_NewListObj.3 - ln ListObj.3 Tcl_SetListObj.3 +fi +if test -r ListObj.3; then + rm -f Tcl_ListObjAppendList.3 + ln ListObj.3 Tcl_ListObjAppendList.3 +fi +if test -r ListObj.3; then + rm -f Tcl_ListObjGetElements.3 ln ListObj.3 Tcl_ListObjGetElements.3 - ln ListObj.3 Tcl_ListObjLength.3 +fi +if test -r ListObj.3; then + rm -f Tcl_ListObjIndex.3 ln ListObj.3 Tcl_ListObjIndex.3 +fi +if test -r ListObj.3; then + rm -f Tcl_ListObjLength.3 + ln ListObj.3 Tcl_ListObjLength.3 +fi +if test -r ListObj.3; then + rm -f Tcl_ListObjReplace.3 ln ListObj.3 Tcl_ListObjReplace.3 fi -if test -r Notifier.3; then - rm -f Tcl_CreateEventSource.3 - rm -f Tcl_DeleteEventSource.3 - rm -f Tcl_SetMaxBlockTime.3 - rm -f Tcl_QueueEvent.3 - rm -f Tcl_ThreadQueueEvent.3 - rm -f Tcl_ThreadAlert.3 - rm -f Tcl_GetCurrentThread.3 - rm -f Tcl_DeleteEvents.3 - rm -f Tcl_InitNotifier.3 - rm -f Tcl_FinalizeNotifier.3 - rm -f Tcl_WaitForEvent.3 - rm -f Tcl_AlertNotifier.3 - rm -f Tcl_SetTimer.3 - rm -f Tcl_ServiceAll.3 - rm -f Tcl_ServiceEvent.3 - rm -f Tcl_GetServiceMode.3 - rm -f Tcl_SetServiceMode.3 - ln Notifier.3 Tcl_CreateEventSource.3 - ln Notifier.3 Tcl_DeleteEventSource.3 - ln Notifier.3 Tcl_SetMaxBlockTime.3 - ln Notifier.3 Tcl_QueueEvent.3 - ln Notifier.3 Tcl_ThreadQueueEvent.3 - ln Notifier.3 Tcl_ThreadAlert.3 - ln Notifier.3 Tcl_GetCurrentThread.3 - ln Notifier.3 Tcl_DeleteEvents.3 - ln Notifier.3 Tcl_InitNotifier.3 - ln Notifier.3 Tcl_FinalizeNotifier.3 - ln Notifier.3 Tcl_WaitForEvent.3 - ln Notifier.3 Tcl_AlertNotifier.3 - ln Notifier.3 Tcl_SetTimer.3 - ln Notifier.3 Tcl_ServiceAll.3 - ln Notifier.3 Tcl_ServiceEvent.3 - ln Notifier.3 Tcl_GetServiceMode.3 - ln Notifier.3 Tcl_SetServiceMode.3 +if test -r OpenFileChnl.3; then + rm -f Tcl_MakeFileChannel.3 + ln OpenFileChnl.3 Tcl_MakeFileChannel.3 +fi +if test -r CrtSlave.3; then + rm -f Tcl_MakeSafe.3 + ln CrtSlave.3 Tcl_MakeSafe.3 +fi +if test -r OpenTcp.3; then + rm -f Tcl_MakeTcpClientChannel.3 + ln OpenTcp.3 Tcl_MakeTcpClientChannel.3 +fi +if test -r SplitList.3; then + rm -f Tcl_Merge.3 + ln SplitList.3 Tcl_Merge.3 +fi +if test -r Thread.3; then + rm -f Tcl_MutexLock.3 + ln Thread.3 Tcl_MutexLock.3 +fi +if test -r Thread.3; then + rm -f Tcl_MutexUnlock.3 + ln Thread.3 Tcl_MutexUnlock.3 +fi +if test -r BoolObj.3; then + rm -f Tcl_NewBooleanObj.3 + ln BoolObj.3 Tcl_NewBooleanObj.3 +fi +if test -r ByteArrObj.3; then + rm -f Tcl_NewByteArrayObj.3 + ln ByteArrObj.3 Tcl_NewByteArrayObj.3 +fi +if test -r DoubleObj.3; then + rm -f Tcl_NewDoubleObj.3 + ln DoubleObj.3 Tcl_NewDoubleObj.3 +fi +if test -r IntObj.3; then + rm -f Tcl_NewIntObj.3 + ln IntObj.3 Tcl_NewIntObj.3 +fi +if test -r ListObj.3; then + rm -f Tcl_NewListObj.3 + ln ListObj.3 Tcl_NewListObj.3 +fi +if test -r IntObj.3; then + rm -f Tcl_NewLongObj.3 + ln IntObj.3 Tcl_NewLongObj.3 fi if test -r Object.3; then rm -f Tcl_NewObj.3 - rm -f Tcl_DuplicateObj.3 - rm -f Tcl_IncrRefCount.3 - rm -f Tcl_DecrRefCount.3 - rm -f Tcl_IsShared.3 ln Object.3 Tcl_NewObj.3 - ln Object.3 Tcl_DuplicateObj.3 - ln Object.3 Tcl_IncrRefCount.3 - ln Object.3 Tcl_DecrRefCount.3 - ln Object.3 Tcl_IsShared.3 fi -if test -r ObjectType.3; then - rm -f Tcl_RegisterObjType.3 - rm -f Tcl_GetObjType.3 - rm -f Tcl_AppendAllObjTypes.3 - rm -f Tcl_ConvertToType.3 - ln ObjectType.3 Tcl_RegisterObjType.3 - ln ObjectType.3 Tcl_GetObjType.3 - ln ObjectType.3 Tcl_AppendAllObjTypes.3 - ln ObjectType.3 Tcl_ConvertToType.3 +if test -r StringObj.3; then + rm -f Tcl_NewStringObj.3 + ln StringObj.3 Tcl_NewStringObj.3 +fi +if test -r Hash.3; then + rm -f Tcl_NextHashEntry.3 + ln Hash.3 Tcl_NextHashEntry.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_NotifyChannel.3 + ln CrtChannel.3 Tcl_NotifyChannel.3 +fi +if test -r Utf.3; then + rm -f Tcl_NumUtfChars.3 + ln Utf.3 Tcl_NumUtfChars.3 +fi +if test -r SetVar.3; then + rm -f Tcl_ObjGetVar2.3 + ln SetVar.3 Tcl_ObjGetVar2.3 +fi +if test -r SetVar.3; then + rm -f Tcl_ObjSetVar2.3 + ln SetVar.3 Tcl_ObjSetVar2.3 fi if test -r OpenFileChnl.3; then - rm -f Tcl_OpenFileChannel.3 rm -f Tcl_OpenCommandChannel.3 - rm -f Tcl_MakeFileChannel.3 - rm -f Tcl_GetChannel.3 - rm -f Tcl_GetChannelNames.3 - rm -f Tcl_GetChannelNamesEx.3 - rm -f Tcl_RegisterChannel.3 - rm -f Tcl_UnregisterChannel.3 - rm -f Tcl_Close.3 - rm -f Tcl_ReadChars.3 - rm -f Tcl_Read.3 - rm -f Tcl_GetsObj.3 - rm -f Tcl_Gets.3 - rm -f Tcl_WriteObj.3 - rm -f Tcl_WriteChars.3 - rm -f Tcl_Write.3 - rm -f Tcl_Flush.3 - rm -f Tcl_Seek.3 - rm -f Tcl_Tell.3 - rm -f Tcl_GetChannelOption.3 - rm -f Tcl_SetChannelOption.3 - rm -f Tcl_Eof.3 - rm -f Tcl_InputBlocked.3 - rm -f Tcl_InputBuffered.3 - rm -f Tcl_Ungets.3 - ln OpenFileChnl.3 Tcl_OpenFileChannel.3 ln OpenFileChnl.3 Tcl_OpenCommandChannel.3 - ln OpenFileChnl.3 Tcl_MakeFileChannel.3 - ln OpenFileChnl.3 Tcl_GetChannel.3 - ln OpenFileChnl.3 Tcl_GetChannelNames.3 - ln OpenFileChnl.3 Tcl_GetChannelNamesEx.3 - ln OpenFileChnl.3 Tcl_RegisterChannel.3 - ln OpenFileChnl.3 Tcl_UnregisterChannel.3 - ln OpenFileChnl.3 Tcl_Close.3 - ln OpenFileChnl.3 Tcl_ReadChars.3 - ln OpenFileChnl.3 Tcl_Read.3 - ln OpenFileChnl.3 Tcl_GetsObj.3 - ln OpenFileChnl.3 Tcl_Gets.3 - ln OpenFileChnl.3 Tcl_WriteObj.3 - ln OpenFileChnl.3 Tcl_WriteChars.3 - ln OpenFileChnl.3 Tcl_Write.3 - ln OpenFileChnl.3 Tcl_Flush.3 - ln OpenFileChnl.3 Tcl_Seek.3 - ln OpenFileChnl.3 Tcl_Tell.3 - ln OpenFileChnl.3 Tcl_GetChannelOption.3 - ln OpenFileChnl.3 Tcl_SetChannelOption.3 - ln OpenFileChnl.3 Tcl_Eof.3 - ln OpenFileChnl.3 Tcl_InputBlocked.3 - ln OpenFileChnl.3 Tcl_InputBuffered.3 - ln OpenFileChnl.3 Tcl_Ungets.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_OpenFileChannel.3 + ln OpenFileChnl.3 Tcl_OpenFileChannel.3 fi if test -r OpenTcp.3; then rm -f Tcl_OpenTcpClient.3 - rm -f Tcl_MakeTcpClientChannel.3 - rm -f Tcl_OpenTcpServer.3 ln OpenTcp.3 Tcl_OpenTcpClient.3 - ln OpenTcp.3 Tcl_MakeTcpClientChannel.3 +fi +if test -r OpenTcp.3; then + rm -f Tcl_OpenTcpServer.3 ln OpenTcp.3 Tcl_OpenTcpServer.3 fi if test -r ParseCmd.3; then - rm -f Tcl_ParseCommand.3 - rm -f Tcl_ParseExpr.3 rm -f Tcl_ParseBraces.3 - rm -f Tcl_ParseQuotedString.3 - rm -f Tcl_ParseVarName.3 - rm -f Tcl_ParseVar.3 - rm -f Tcl_FreeParse.3 - rm -f Tcl_EvalTokens.3 + ln ParseCmd.3 Tcl_ParseBraces.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_ParseCommand.3 ln ParseCmd.3 Tcl_ParseCommand.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_ParseExpr.3 ln ParseCmd.3 Tcl_ParseExpr.3 - ln ParseCmd.3 Tcl_ParseBraces.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_ParseQuotedString.3 ln ParseCmd.3 Tcl_ParseQuotedString.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_ParseVarName.3 ln ParseCmd.3 Tcl_ParseVarName.3 +fi +if test -r ParseCmd.3; then + rm -f Tcl_ParseVar.3 ln ParseCmd.3 Tcl_ParseVar.3 - ln ParseCmd.3 Tcl_FreeParse.3 - ln ParseCmd.3 Tcl_EvalTokens.3 fi if test -r PkgRequire.3; then - rm -f Tcl_PkgRequire.3 - rm -f Tcl_PkgRequireEx.3 - rm -f Tcl_PkgPresent.3 - rm -f Tcl_PkgPresentEx.3 rm -f Tcl_PkgProvide.3 - rm -f Tcl_PkgProvideEx.3 - ln PkgRequire.3 Tcl_PkgRequire.3 - ln PkgRequire.3 Tcl_PkgRequireEx.3 - ln PkgRequire.3 Tcl_PkgPresent.3 - ln PkgRequire.3 Tcl_PkgPresentEx.3 ln PkgRequire.3 Tcl_PkgProvide.3 - ln PkgRequire.3 Tcl_PkgProvideEx.3 +fi +if test -r PkgRequire.3; then + rm -f Tcl_PkgRequire.3 + ln PkgRequire.3 Tcl_PkgRequire.3 +fi +if test -r AddErrInfo.3; then + rm -f Tcl_PosixError.3 + ln AddErrInfo.3 Tcl_PosixError.3 fi if test -r Preserve.3; then rm -f Tcl_Preserve.3 - rm -f Tcl_Release.3 - rm -f Tcl_EventuallyFree.3 ln Preserve.3 Tcl_Preserve.3 - ln Preserve.3 Tcl_Release.3 - ln Preserve.3 Tcl_EventuallyFree.3 fi if test -r PrintDbl.3; then rm -f Tcl_PrintDouble.3 ln PrintDbl.3 Tcl_PrintDouble.3 fi -if test -r RecEvalObj.3; then - rm -f Tcl_RecordAndEvalObj.3 - ln RecEvalObj.3 Tcl_RecordAndEvalObj.3 +if test -r Notifier.3; then + rm -f Tcl_QueueEvent.3 + ln Notifier.3 Tcl_QueueEvent.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Read.3 + ln OpenFileChnl.3 Tcl_Read.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_ReadChars.3 + ln OpenFileChnl.3 Tcl_ReadChars.3 +fi +if test -r Alloc.3; then + rm -f Tcl_Realloc.3 + ln Alloc.3 Tcl_Realloc.3 +fi +if test -r DetachPids.3; then + rm -f Tcl_ReapDetachedProcs.3 + ln DetachPids.3 Tcl_ReapDetachedProcs.3 fi if test -r RecordEval.3; then rm -f Tcl_RecordAndEval.3 ln RecordEval.3 Tcl_RecordAndEval.3 fi +if test -r RecEvalObj.3; then + rm -f Tcl_RecordAndEvalObj.3 + ln RecEvalObj.3 Tcl_RecordAndEvalObj.3 +fi if test -r RegExp.3; then - rm -f Tcl_RegExpMatch.3 rm -f Tcl_RegExpCompile.3 - rm -f Tcl_RegExpExec.3 - rm -f Tcl_RegExpRange.3 - rm -f Tcl_GetRegExpFromObj.3 - rm -f Tcl_RegExpMatchObj.3 - rm -f Tcl_GetRegExpInfo.3 - ln RegExp.3 Tcl_RegExpMatch.3 ln RegExp.3 Tcl_RegExpCompile.3 +fi +if test -r RegExp.3; then + rm -f Tcl_RegExpExec.3 ln RegExp.3 Tcl_RegExpExec.3 +fi +if test -r RegExp.3; then + rm -f Tcl_RegExpMatch.3 + ln RegExp.3 Tcl_RegExpMatch.3 +fi +if test -r RegExp.3; then + rm -f Tcl_RegExpRange.3 ln RegExp.3 Tcl_RegExpRange.3 - ln RegExp.3 Tcl_GetRegExpFromObj.3 - ln RegExp.3 Tcl_RegExpMatchObj.3 - ln RegExp.3 Tcl_GetRegExpInfo.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_RegisterChannel.3 + ln OpenFileChnl.3 Tcl_RegisterChannel.3 +fi +if test -r ObjectType.3; then + rm -f Tcl_RegisterObjType.3 + ln ObjectType.3 Tcl_RegisterObjType.3 +fi +if test -r Preserve.3; then + rm -f Tcl_Release.3 + ln Preserve.3 Tcl_Release.3 +fi +if test -r SetResult.3; then + rm -f Tcl_ResetResult.3 + ln SetResult.3 Tcl_ResetResult.3 fi if test -r SaveResult.3; then - rm -f Tcl_SaveResult.3 rm -f Tcl_RestoreResult.3 - rm -f Tcl_DiscardResult.3 - ln SaveResult.3 Tcl_SaveResult.3 ln SaveResult.3 Tcl_RestoreResult.3 - ln SaveResult.3 Tcl_DiscardResult.3 +fi +if test -r SaveResult.3; then + rm -f Tcl_SaveResult.3 + ln SaveResult.3 Tcl_SaveResult.3 +fi +if test -r SplitList.3; then + rm -f Tcl_ScanElement.3 + ln SplitList.3 Tcl_ScanElement.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Seek.3 + ln OpenFileChnl.3 Tcl_Seek.3 +fi +if test -r Notifier.3; then + rm -f Tcl_ServiceAll.3 + ln Notifier.3 Tcl_ServiceAll.3 +fi +if test -r Notifier.3; then + rm -f Tcl_ServiceEvent.3 + ln Notifier.3 Tcl_ServiceEvent.3 +fi +if test -r AssocData.3; then + rm -f Tcl_SetAssocData.3 + ln AssocData.3 Tcl_SetAssocData.3 +fi +if test -r BoolObj.3; then + rm -f Tcl_SetBooleanObj.3 + ln BoolObj.3 Tcl_SetBooleanObj.3 +fi +if test -r ByteArrObj.3; then + rm -f Tcl_SetByteArrayLength.3 + ln ByteArrObj.3 Tcl_SetByteArrayLength.3 +fi +if test -r ByteArrObj.3; then + rm -f Tcl_SetByteArrayObj.3 + ln ByteArrObj.3 Tcl_SetByteArrayObj.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_SetChannelBufferSize.3 + ln CrtChannel.3 Tcl_SetChannelBufferSize.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_SetChannelOption.3 + ln OpenFileChnl.3 Tcl_SetChannelOption.3 +fi +if test -r CrtObjCmd.3; then + rm -f Tcl_SetCommandInfo.3 + ln CrtObjCmd.3 Tcl_SetCommandInfo.3 +fi +if test -r CrtChannel.3; then + rm -f Tcl_SetDefaultTranslation.3 + ln CrtChannel.3 Tcl_SetDefaultTranslation.3 +fi +if test -r DoubleObj.3; then + rm -f Tcl_SetDoubleObj.3 + ln DoubleObj.3 Tcl_SetDoubleObj.3 fi if test -r SetErrno.3; then rm -f Tcl_SetErrno.3 - rm -f Tcl_GetErrno.3 - rm -f Tcl_ErrnoId.3 - rm -f Tcl_ErrnoMsg.3 ln SetErrno.3 Tcl_SetErrno.3 - ln SetErrno.3 Tcl_GetErrno.3 - ln SetErrno.3 Tcl_ErrnoId.3 - ln SetErrno.3 Tcl_ErrnoMsg.3 +fi +if test -r AddErrInfo.3; then + rm -f Tcl_SetErrorCodeVA.3 + ln AddErrInfo.3 Tcl_SetErrorCodeVA.3 +fi +if test -r AddErrInfo.3; then + rm -f Tcl_SetErrorCode.3 + ln AddErrInfo.3 Tcl_SetErrorCode.3 +fi +if test -r Hash.3; then + rm -f Tcl_SetHashValue.3 + ln Hash.3 Tcl_SetHashValue.3 +fi +if test -r IntObj.3; then + rm -f Tcl_SetIntObj.3 + ln IntObj.3 Tcl_SetIntObj.3 +fi +if test -r ListObj.3; then + rm -f Tcl_SetListObj.3 + ln ListObj.3 Tcl_SetListObj.3 +fi +if test -r IntObj.3; then + rm -f Tcl_SetLongObj.3 + ln IntObj.3 Tcl_SetLongObj.3 +fi +if test -r Notifier.3; then + rm -f Tcl_SetMaxBlockTime.3 + ln Notifier.3 Tcl_SetMaxBlockTime.3 +fi +if test -r StringObj.3; then + rm -f Tcl_SetObjLength.3 + ln StringObj.3 Tcl_SetObjLength.3 +fi +if test -r SetResult.3; then + rm -f Tcl_SetObjResult.3 + ln SetResult.3 Tcl_SetObjResult.3 fi if test -r SetRecLmt.3; then rm -f Tcl_SetRecursionLimit.3 ln SetRecLmt.3 Tcl_SetRecursionLimit.3 fi if test -r SetResult.3; then - rm -f Tcl_SetObjResult.3 - rm -f Tcl_GetObjResult.3 rm -f Tcl_SetResult.3 - rm -f Tcl_GetStringResult.3 - rm -f Tcl_AppendResult.3 - rm -f Tcl_AppendResultVA.3 - rm -f Tcl_AppendElement.3 - rm -f Tcl_ResetResult.3 - ln SetResult.3 Tcl_SetObjResult.3 - ln SetResult.3 Tcl_GetObjResult.3 ln SetResult.3 Tcl_SetResult.3 - ln SetResult.3 Tcl_GetStringResult.3 - ln SetResult.3 Tcl_AppendResult.3 - ln SetResult.3 Tcl_AppendResultVA.3 - ln SetResult.3 Tcl_AppendElement.3 - ln SetResult.3 Tcl_ResetResult.3 +fi +if test -r Notifier.3; then + rm -f Tcl_SetServiceMode.3 + ln Notifier.3 Tcl_SetServiceMode.3 +fi +if test -r GetStdChan.3; then + rm -f Tcl_SetStdChannel.3 + ln GetStdChan.3 Tcl_SetStdChannel.3 +fi +if test -r StrMatch.3; then + rm -f Tcl_StringCaseMatch.3 + ln StrMatch.3 Tcl_StringCaseMatch.3 +fi +if test -r StringObj.3; then + rm -f Tcl_SetStringObj.3 + ln StringObj.3 Tcl_SetStringObj.3 +fi +if test -r Encoding.3; then + rm -f Tcl_SetSystemEncoding.3 + ln Encoding.3 Tcl_SetSystemEncoding.3 +fi +if test -r Notifier.3; then + rm -f Tcl_SetTimer.3 + ln Notifier.3 Tcl_SetTimer.3 fi if test -r SetVar.3; then - rm -f Tcl_SetVar2Ex.3 rm -f Tcl_SetVar.3 - rm -f Tcl_SetVar2.3 - rm -f Tcl_ObjSetVar2.3 - rm -f Tcl_GetVar2Ex.3 - rm -f Tcl_GetVar.3 - rm -f Tcl_GetVar2.3 - rm -f Tcl_ObjGetVar2.3 - rm -f Tcl_UnsetVar.3 - rm -f Tcl_UnsetVar2.3 - ln SetVar.3 Tcl_SetVar2Ex.3 ln SetVar.3 Tcl_SetVar.3 +fi +if test -r SetVar.3; then + rm -f Tcl_SetVar2.3 ln SetVar.3 Tcl_SetVar2.3 - ln SetVar.3 Tcl_ObjSetVar2.3 - ln SetVar.3 Tcl_GetVar2Ex.3 - ln SetVar.3 Tcl_GetVar.3 - ln SetVar.3 Tcl_GetVar2.3 - ln SetVar.3 Tcl_ObjGetVar2.3 - ln SetVar.3 Tcl_UnsetVar.3 - ln SetVar.3 Tcl_UnsetVar2.3 +fi +if test -r SetVar.3; then + rm -f Tcl_SetVar2Ex.3 + ln SetVar.3 Tcl_SetVar2Ex.3 fi if test -r Sleep.3; then rm -f Tcl_Sleep.3 ln Sleep.3 Tcl_Sleep.3 fi -if test -r SourceRCFile.3; then - rm -f Tcl_SourceRCFile.3 - ln SourceRCFile.3 Tcl_SourceRCFile.3 -fi if test -r SplitList.3; then rm -f Tcl_SplitList.3 - rm -f Tcl_Merge.3 - rm -f Tcl_ScanElement.3 - rm -f Tcl_ConvertElement.3 ln SplitList.3 Tcl_SplitList.3 - ln SplitList.3 Tcl_Merge.3 - ln SplitList.3 Tcl_ScanElement.3 - ln SplitList.3 Tcl_ConvertElement.3 fi if test -r SplitPath.3; then rm -f Tcl_SplitPath.3 - rm -f Tcl_JoinPath.3 - rm -f Tcl_GetPathType.3 ln SplitPath.3 Tcl_SplitPath.3 - ln SplitPath.3 Tcl_JoinPath.3 - ln SplitPath.3 Tcl_GetPathType.3 fi if test -r StaticPkg.3; then rm -f Tcl_StaticPackage.3 @@ -778,186 +1113,174 @@ if test -r StaticPkg.3; then fi if test -r StrMatch.3; then rm -f Tcl_StringMatch.3 - rm -f Tcl_StringCaseMatch.3 ln StrMatch.3 Tcl_StringMatch.3 - ln StrMatch.3 Tcl_StringCaseMatch.3 fi -if test -r StringObj.3; then - rm -f Tcl_NewStringObj.3 - rm -f Tcl_NewUnicodeObj.3 - rm -f Tcl_SetStringObj.3 - rm -f Tcl_SetUnicodeObj.3 - rm -f Tcl_GetStringFromObj.3 - rm -f Tcl_GetString.3 - rm -f Tcl_GetUnicode.3 - rm -f Tcl_GetUniChar.3 - rm -f Tcl_GetCharLength.3 - rm -f Tcl_GetRange.3 - rm -f Tcl_AppendToObj.3 - rm -f Tcl_AppendUnicodeToObj.3 - rm -f Tcl_AppendStringsToObj.3 - rm -f Tcl_AppendStringsToObjVA.3 - rm -f Tcl_AppendObjToObj.3 - rm -f Tcl_SetObjLength.3 - rm -f Tcl_ConcatObj.3 - ln StringObj.3 Tcl_NewStringObj.3 - ln StringObj.3 Tcl_NewUnicodeObj.3 - ln StringObj.3 Tcl_SetStringObj.3 - ln StringObj.3 Tcl_SetUnicodeObj.3 - ln StringObj.3 Tcl_GetStringFromObj.3 - ln StringObj.3 Tcl_GetString.3 - ln StringObj.3 Tcl_GetUnicode.3 - ln StringObj.3 Tcl_GetUniChar.3 - ln StringObj.3 Tcl_GetCharLength.3 - ln StringObj.3 Tcl_GetRange.3 - ln StringObj.3 Tcl_AppendToObj.3 - ln StringObj.3 Tcl_AppendUnicodeToObj.3 - ln StringObj.3 Tcl_AppendStringsToObj.3 - ln StringObj.3 Tcl_AppendStringsToObjVA.3 - ln StringObj.3 Tcl_AppendObjToObj.3 - ln StringObj.3 Tcl_SetObjLength.3 - ln StringObj.3 Tcl_ConcatObj.3 +if test -r OpenFileChnl.3; then + rm -f Tcl_Tell.3 + ln OpenFileChnl.3 Tcl_Tell.3 fi -if test -r Thread.3; then - rm -f Tcl_ConditionNotify.3 - rm -f Tcl_ConditionWait.3 - rm -f Tcl_ConditionFinalize.3 - rm -f Tcl_GetThreadData.3 - rm -f Tcl_MutexLock.3 - rm -f Tcl_MutexUnlock.3 - rm -f Tcl_MutexFinalize.3 - ln Thread.3 Tcl_ConditionNotify.3 - ln Thread.3 Tcl_ConditionWait.3 - ln Thread.3 Tcl_ConditionFinalize.3 - ln Thread.3 Tcl_GetThreadData.3 - ln Thread.3 Tcl_MutexLock.3 - ln Thread.3 Tcl_MutexUnlock.3 - ln Thread.3 Tcl_MutexFinalize.3 +if test -r TraceVar.3; then + rm -f Tcl_TraceVar.3 + ln TraceVar.3 Tcl_TraceVar.3 +fi +if test -r TraceVar.3; then + rm -f Tcl_TraceVar2.3 + ln TraceVar.3 Tcl_TraceVar2.3 +fi +if test -r Translate.3; then + rm -f Tcl_TranslateFileName.3 + ln Translate.3 Tcl_TranslateFileName.3 +fi +if test -r Utf.3; then + rm -f Tcl_UniChar.3 + ln Utf.3 Tcl_UniChar.3 +fi +if test -r Utf.3; then + rm -f Tcl_UniCharAtIndex.3 + ln Utf.3 Tcl_UniCharAtIndex.3 fi if test -r ToUpper.3; then - rm -f Tcl_UniCharToUpper.3 rm -f Tcl_UniCharToLower.3 - rm -f Tcl_UniCharToTitle.3 - rm -f Tcl_UtfToUpper.3 - rm -f Tcl_UtfToLower.3 - rm -f Tcl_UtfToTitle.3 - ln ToUpper.3 Tcl_UniCharToUpper.3 ln ToUpper.3 Tcl_UniCharToLower.3 +fi +if test -r ToUpper.3; then + rm -f Tcl_UniCharToTitle.3 ln ToUpper.3 Tcl_UniCharToTitle.3 - ln ToUpper.3 Tcl_UtfToUpper.3 - ln ToUpper.3 Tcl_UtfToLower.3 - ln ToUpper.3 Tcl_UtfToTitle.3 +fi +if test -r ToUpper.3; then + rm -f Tcl_UniCharToUpper.3 + ln ToUpper.3 Tcl_UniCharToUpper.3 +fi +if test -r Utf.3; then + rm -f Tcl_UniCharToUtf.3 + ln Utf.3 Tcl_UniCharToUtf.3 +fi +if test -r LinkVar.3; then + rm -f Tcl_UnlinkVar.3 + ln LinkVar.3 Tcl_UnlinkVar.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_UnregisterChannel.3 + ln OpenFileChnl.3 Tcl_UnregisterChannel.3 +fi +if test -r SetVar.3; then + rm -f Tcl_UnsetVar.3 + ln SetVar.3 Tcl_UnsetVar.3 +fi +if test -r SetVar.3; then + rm -f Tcl_UnsetVar2.3 + ln SetVar.3 Tcl_UnsetVar2.3 fi if test -r TraceVar.3; then - rm -f Tcl_TraceVar.3 - rm -f Tcl_TraceVar2.3 rm -f Tcl_UntraceVar.3 - rm -f Tcl_UntraceVar2.3 - rm -f Tcl_VarTraceInfo.3 - rm -f Tcl_VarTraceInfo2.3 - ln TraceVar.3 Tcl_TraceVar.3 - ln TraceVar.3 Tcl_TraceVar2.3 ln TraceVar.3 Tcl_UntraceVar.3 - ln TraceVar.3 Tcl_UntraceVar2.3 - ln TraceVar.3 Tcl_VarTraceInfo.3 - ln TraceVar.3 Tcl_VarTraceInfo2.3 fi -if test -r Translate.3; then - rm -f Tcl_TranslateFileName.3 - ln Translate.3 Tcl_TranslateFileName.3 +if test -r TraceVar.3; then + rm -f Tcl_UntraceVar2.3 + ln TraceVar.3 Tcl_UntraceVar2.3 fi if test -r UpVar.3; then rm -f Tcl_UpVar.3 - rm -f Tcl_UpVar2.3 ln UpVar.3 Tcl_UpVar.3 +fi +if test -r UpVar.3; then + rm -f Tcl_UpVar2.3 ln UpVar.3 Tcl_UpVar2.3 fi +if test -r LinkVar.3; then + rm -f Tcl_UpdateLinkedVar.3 + ln LinkVar.3 Tcl_UpdateLinkedVar.3 +fi if test -r Utf.3; then - rm -f Tcl_UniChar.3 - rm -f Tcl_UniCharToUtf.3 - rm -f Tcl_UtfToUniChar.3 - rm -f Tcl_UniCharToUtfDString.3 - rm -f Tcl_UtfToUniCharDString.3 - rm -f Tcl_UniCharLen.3 - rm -f Tcl_UniCharNcmp.3 - rm -f Tcl_UtfCharComplete.3 - rm -f Tcl_NumUtfChars.3 - rm -f Tcl_UtfFindFirst.3 - rm -f Tcl_UtfFindLast.3 - rm -f Tcl_UtfNext.3 - rm -f Tcl_UtfPrev.3 - rm -f Tcl_UniCharAtIndex.3 rm -f Tcl_UtfAtIndex.3 + ln Utf.3 Tcl_UtfAtIndex.3 +fi +if test -r Utf.3; then rm -f Tcl_UtfBackslash.3 - ln Utf.3 Tcl_UniChar.3 - ln Utf.3 Tcl_UniCharToUtf.3 - ln Utf.3 Tcl_UtfToUniChar.3 - ln Utf.3 Tcl_UniCharToUtfDString.3 - ln Utf.3 Tcl_UtfToUniCharDString.3 - ln Utf.3 Tcl_UniCharLen.3 - ln Utf.3 Tcl_UniCharNcmp.3 + ln Utf.3 Tcl_UtfBackslash.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfCharComplete.3 ln Utf.3 Tcl_UtfCharComplete.3 - ln Utf.3 Tcl_NumUtfChars.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfFindFirst.3 ln Utf.3 Tcl_UtfFindFirst.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfFindLast.3 ln Utf.3 Tcl_UtfFindLast.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfNext.3 ln Utf.3 Tcl_UtfNext.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfPrev.3 ln Utf.3 Tcl_UtfPrev.3 - ln Utf.3 Tcl_UniCharAtIndex.3 - ln Utf.3 Tcl_UtfAtIndex.3 - ln Utf.3 Tcl_UtfBackslash.3 +fi +if test -r Encoding.3; then + rm -f Tcl_UtfToExternal.3 + ln Encoding.3 Tcl_UtfToExternal.3 +fi +if test -r Encoding.3; then + rm -f Tcl_UtfToExternalDString.3 + ln Encoding.3 Tcl_UtfToExternalDString.3 +fi +if test -r ToUpper.3; then + rm -f Tcl_UtfToLower.3 + ln ToUpper.3 Tcl_UtfToLower.3 +fi +if test -r ToUpper.3; then + rm -f Tcl_UtfToTitle.3 + ln ToUpper.3 Tcl_UtfToTitle.3 +fi +if test -r Utf.3; then + rm -f Tcl_UtfToUniChar.3 + ln Utf.3 Tcl_UtfToUniChar.3 +fi +if test -r ToUpper.3; then + rm -f Tcl_UtfToUpper.3 + ln ToUpper.3 Tcl_UtfToUpper.3 +fi +if test -r Eval.3; then + rm -f Tcl_VarEval.3 + ln Eval.3 Tcl_VarEval.3 +fi +if test -r TraceVar.3; then + rm -f Tcl_VarTraceInfo.3 + ln TraceVar.3 Tcl_VarTraceInfo.3 +fi +if test -r TraceVar.3; then + rm -f Tcl_VarTraceInfo2.3 + ln TraceVar.3 Tcl_VarTraceInfo2.3 +fi +if test -r Notifier.3; then + rm -f Tcl_WaitForEvent.3 + ln Notifier.3 Tcl_WaitForEvent.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_Write.3 + ln OpenFileChnl.3 Tcl_Write.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_WriteChars.3 + ln OpenFileChnl.3 Tcl_WriteChars.3 +fi +if test -r OpenFileChnl.3; then + rm -f Tcl_WriteObj.3 + ln OpenFileChnl.3 Tcl_WriteObj.3 fi if test -r WrongNumArgs.3; then rm -f Tcl_WrongNumArgs.3 ln WrongNumArgs.3 Tcl_WrongNumArgs.3 fi -if test -r http.n; then - rm -f Http.n - ln http.n Http.n -fi -if test -r library.n; then - rm -f auto_execok.n - rm -f auto_import.n - rm -f auto_load.n - rm -f auto_mkindex.n - rm -f auto_mkindex_old.n - rm -f auto_qualify.n - rm -f auto_reset.n - rm -f tcl_findLibrary.n - rm -f parray.n - rm -f tcl_endOfWord.n - rm -f tcl_startOfNextWord.n - rm -f tcl_startOfPreviousWord.n - rm -f tcl_wordBreakAfter.n - rm -f tcl_wordBreakBefore.n - ln library.n auto_execok.n - ln library.n auto_import.n - ln library.n auto_load.n - ln library.n auto_mkindex.n - ln library.n auto_mkindex_old.n - ln library.n auto_qualify.n - ln library.n auto_reset.n - ln library.n tcl_findLibrary.n - ln library.n parray.n - ln library.n tcl_endOfWord.n - ln library.n tcl_startOfNextWord.n - ln library.n tcl_startOfPreviousWord.n - ln library.n tcl_wordBreakAfter.n - ln library.n tcl_wordBreakBefore.n -fi -if test -r packagens.n; then - rm -f pkg::create.n - ln packagens.n pkg::create.n +if test -r SourceRCFile.3; then + rm -f Tcl_SourceRCFile.3 + ln SourceRCFile.3 Tcl_SourceRCFile.3 fi if test -r pkgMkIndex.n; then rm -f pkg_mkIndex.n ln pkgMkIndex.n pkg_mkIndex.n fi -if test -r safe.n; then - rm -f SafeBase.n - ln safe.n SafeBase.n -fi -if test -r tcltest.n; then - rm -f Tcltest.n - ln tcltest.n Tcltest.n -fi exit 0 diff --git a/unix/mkLinks.tcl b/unix/mkLinks.tcl index 45a6131..22f54f3 100644 --- a/unix/mkLinks.tcl +++ b/unix/mkLinks.tcl @@ -47,31 +47,23 @@ foreach file $argv { if {[regexp "^.SH NAME" $line]} { set state name } - } - name { - regsub {\\-.*} $line {} line - set rmOutput "" - set lnOutput "" - set namelist {} - foreach name [split $line ,] { - regsub -all {(\\)? } $name "" name - if {![string match $name*$ext $tail]} { - lappend namelist $name$ext - append rmOutput " rm -f $name$ext\n" - append lnOutput " ln $tail $name$ext\n" - } - } - if { [llength $namelist] } { + } + name { + regsub {\\-.*} $line {} line + foreach name [split $line ,] { + regsub -all { } $name "" name + if {![string match $name*$ext $tail]} { puts "if test -r $tail; then" - puts -nonewline $rmOutput - puts -nonewline $lnOutput + puts " rm -f $name$ext" + puts " ln $tail $name$ext" puts "fi" } - set state end - } - end { - break } + set state end + } + end { + break + } } } close $in |