This commit is contained in:
ton
2024-10-07 10:13:40 +07:00
parent aa1631742f
commit 3a7d696db6
9729 changed files with 1832837 additions and 161742 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,65 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major version is the same as the current one.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "2.6.3")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if("2.6.3" MATCHES "^([0-9]+)\\.")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
endif()
else()
set(CVF_VERSION_MAJOR "2.6.3")
endif()
if(PACKAGE_FIND_VERSION_RANGE)
# both endpoints of the range must have the expected major version
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
set(PACKAGE_VERSION_COMPATIBLE FALSE)
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
math(EXPR installedBits "8 * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View File

@@ -0,0 +1,99 @@
# __ __ _
# ___\ \/ /_ __ __ _| |_
# / _ \\ /| '_ \ / _` | __|
# | __// \| |_) | (_| | |_
# \___/_/\_\ .__/ \__,_|\__|
# |_| XML parser
#
# Copyright (c) 2019 Expat development team
# Licensed under the MIT license:
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to permit
# persons to whom the Software is furnished to do so, subject to the
# following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
# USE OR OTHER DEALINGS IN THE SOFTWARE.
#
if(NOT _expat_config_included)
# Protect against multiple inclusion
set(_expat_config_included TRUE)
include("${CMAKE_CURRENT_LIST_DIR}/expat.cmake")
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was expat-config.cmake.in ########
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
macro(set_and_check _var _file)
set(${_var} "${_file}")
if(NOT EXISTS "${_file}")
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()
macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()
####################################################################################
#
# Supported components
#
macro(expat_register_component _NAME _AVAILABE)
set(expat_${_NAME}_FOUND ${_AVAILABE})
endmacro()
expat_register_component(attr_info OFF)
expat_register_component(dtd ON)
expat_register_component(large_size OFF)
expat_register_component(min_size OFF)
expat_register_component(ns ON)
if(1024)
expat_register_component(context_bytes ON)
else()
expat_register_component(context_bytes OFF)
endif()
if("char" STREQUAL "char")
expat_register_component(char ON)
expat_register_component(ushort OFF)
expat_register_component(wchar_t OFF)
elseif("char" STREQUAL "ushort")
expat_register_component(char OFF)
expat_register_component(ushort ON)
expat_register_component(wchar_t OFF)
elseif("char" STREQUAL "wchar_t")
expat_register_component(char OFF)
expat_register_component(ushort OFF)
expat_register_component(wchar_t ON)
endif()
check_required_components(expat)
endif(NOT _expat_config_included)

View File

@@ -0,0 +1,19 @@
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Release".
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Import target "expat::expat" for configuration "Release"
set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(expat::expat PROPERTIES
IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/libexpat.lib"
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/libexpat.dll"
)
list(APPEND _cmake_import_check_targets expat::expat )
list(APPEND _cmake_import_check_files_for_expat::expat "${_IMPORT_PREFIX}/lib/libexpat.lib" "${_IMPORT_PREFIX}/bin/libexpat.dll" )
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

View File

@@ -0,0 +1,106 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
message(FATAL_ERROR "CMake >= 2.8.0 required")
endif()
if(CMAKE_VERSION VERSION_LESS "2.8.3")
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.8.3...3.28)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_cmake_targets_defined "")
set(_cmake_targets_not_defined "")
set(_cmake_expected_targets "")
foreach(_cmake_expected_target IN ITEMS expat::expat)
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
if(TARGET "${_cmake_expected_target}")
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
else()
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
endif()
endforeach()
unset(_cmake_expected_target)
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
unset(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT _cmake_targets_defined STREQUAL "")
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
endif()
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
# Create imported target expat::expat
add_library(expat::expat SHARED IMPORTED)
set_target_properties(expat::expat PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)
# Load information for each installed configuration.
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/expat-*.cmake")
foreach(_cmake_config_file IN LISTS _cmake_config_files)
include("${_cmake_config_file}")
endforeach()
unset(_cmake_config_file)
unset(_cmake_config_files)
# Cleanup temporary variables.
set(_IMPORT_PREFIX)
# Loop over all imported files and verify that they actually exist
foreach(_cmake_target IN LISTS _cmake_import_check_targets)
if(CMAKE_VERSION VERSION_LESS "3.28"
OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target}
OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}")
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
if(NOT EXISTS "${_cmake_file}")
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
\"${_cmake_file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
endif()
endforeach()
endif()
unset(_cmake_file)
unset("_cmake_import_check_files_for_${_cmake_target}")
endforeach()
unset(_cmake_target)
unset(_cmake_import_check_targets)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

Binary file not shown.

BIN
.CondaPkg/env/Library/lib/expat.lib vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,14 +0,0 @@
# -*- tcl -*-
# Tcl package index file, version 1.1
#
if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded itcl 4.2.3 \
[list load [file join $dir tcl9itcl423.dll] Itcl]
} else {
package ifneeded itcl 4.2.3 \
[list load [file join $dir itcl423.dll] Itcl]
}
package ifneeded Itcl 4.2.3 [list package require -exact itcl 4.2.3]

View File

@@ -32,7 +32,7 @@ proc ::itcl::local {class name args} {
set ptr [uplevel [list $class $name] $args]
uplevel [list set itcl-local-$ptr $ptr]
set cmd [uplevel namespace which -command $ptr]
uplevel [list trace variable itcl-local-$ptr u \
uplevel [list trace add variable itcl-local-$ptr unset \
"::itcl::delete_helper $cmd"]
return $ptr
}

Binary file not shown.

View File

@@ -12,7 +12,7 @@
# See the file "license.terms" for information on usage and
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
package require Tk 8.6
package require Tk 8.6 9
namespace eval ::itcl::internal::commands {

View File

@@ -12,7 +12,7 @@
# See the file "license.terms" for information on usage and
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
package require Tk 8.6
package require Tk 8.6 9
# package require itclwidget [set ::itcl::version]
namespace eval ::itcl {

View File

@@ -0,0 +1,14 @@
# -*- tcl -*-
# Tcl package index file, version 1.1
#
if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded itcl 4.2.4 \
[list load [file join $dir tcl9itcl424.dll] Itcl]
} else {
package ifneeded itcl 4.2.4 \
[list load [file join $dir itcl424.dll] Itcl]
}
package ifneeded Itcl 4.2.4 [list package require -exact itcl 4.2.4]

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.CondaPkg/env/Library/lib/libexpat.lib vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -4,8 +4,8 @@
*
* This is used to fix limitations within nmake and the environment.
*
* Copyright (c) 2002 by David Gravereaux.
* Copyright (c) 2006 by Pat Thoyts
* Copyright (c) 2002 David Gravereaux.
* Copyright (c) 2006 Pat Thoyts
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -19,7 +19,6 @@
#pragma comment (lib, "kernel32.lib")
#endif
#include <stdio.h>
#include <math.h>
/*
* This library is required for x64 builds with _some_ versions of MSVC
@@ -31,7 +30,7 @@
#endif
/* ISO hack for dumb VC++ */
#ifdef _MSC_VER
#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif
@@ -207,25 +206,25 @@ CheckForCompilerFeature(
hProcess = GetCurrentProcess();
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
ZeroMemory(&si, sizeof(STARTUPINFO));
memset(&pi, 0, sizeof(PROCESS_INFORMATION));
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = INVALID_HANDLE_VALUE;
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
memset(&sa, 0, sizeof(SECURITY_ATTRIBUTES));
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = FALSE;
/*
* Create a non-inheritible pipe.
* Create a non-inheritable pipe.
*/
CreatePipe(&Out.pipe, &h, &sa, 0);
/*
* Dupe the write side, make it inheritible, and close the original.
* Dupe the write side, make it inheritable, and close the original.
*/
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
@@ -272,7 +271,7 @@ CheckForCompilerFeature(
if (!ok) {
DWORD err = GetLastError();
int chars = snprintf(msg, sizeof(msg) - 1,
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
"Tried to launch: \"%s\", but got error [%lu]: ", cmdline, err);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPSTR)&msg[chars],
@@ -343,13 +342,13 @@ CheckForLinkerFeature(
hProcess = GetCurrentProcess();
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
ZeroMemory(&si, sizeof(STARTUPINFO));
memset(&pi, 0, sizeof(PROCESS_INFORMATION));
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = INVALID_HANDLE_VALUE;
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
memset(&sa, 0, sizeof(SECURITY_ATTRIBUTES));
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
@@ -361,7 +360,7 @@ CheckForLinkerFeature(
CreatePipe(&Out.pipe, &h, &sa, 0);
/*
* Dupe the write side, make it inheritible, and close the original.
* Dupe the write side, make it inheritable, and close the original.
*/
DuplicateHandle(hProcess, h, hProcess, &si.hStdOutput, 0, TRUE,
@@ -406,7 +405,7 @@ CheckForLinkerFeature(
if (!ok) {
DWORD err = GetLastError();
int chars = snprintf(msg, sizeof(msg) - 1,
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
"Tried to launch: \"%s\", but got error [%lu]: ", cmdline, err);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPSTR)&msg[chars],
@@ -593,7 +592,7 @@ list_free(list_item_t **listPtrPtr)
* SubstituteFile --
* As windows doesn't provide anything useful like sed and it's unreliable
* to use the tclsh you are building against (consider x-platform builds -
* eg compiling AMD64 target from IX86) we provide a simple substitution
* e.g. compiling AMD64 target from IX86) we provide a simple substitution
* option here to handle autoconf style substitutions.
* The substitution file is whitespace and line delimited. The file should
* consist of lines matching the regular expression:
@@ -619,7 +618,7 @@ SubstituteFile(
if (fp != NULL) {
/*
* Build a list of substutitions from the first filename
* Build a list of substitutions from the first filename
*/
sp = fopen(substitutions, "rt");
@@ -727,11 +726,13 @@ static int LocateDependencyHelper(const char *dir, const char *keypath)
int keylen, ret;
WIN32_FIND_DATA finfo;
if (dir == NULL || keypath == NULL)
if (dir == NULL || keypath == NULL) {
return 2; /* Have no real error reporting mechanism into nmake */
}
dirlen = strlen(dir);
if ((dirlen + 3) > sizeof(path))
if (dirlen > sizeof(path) - 3) {
return 2;
}
strncpy(path, dir, dirlen);
strncpy(path+dirlen, "\\*", 3); /* Including terminating \0 */
keylen = strlen(keypath);
@@ -797,8 +798,9 @@ static int LocateDependency(const char *keypath)
for (i = 0; i < (sizeof(paths)/sizeof(paths[0])); ++i) {
ret = LocateDependencyHelper(paths[i], keypath);
if (ret == 0)
if (ret == 0) {
return ret;
}
}
return ret;
}

View File

@@ -79,10 +79,11 @@ NEED_TK_SOURCE = 0
# 3. Determine the compiler and linker versions
# 4. Build the nmakehlp helper application
# 5. Determine the supported compiler options and features
# 6. Parse the OPTS macro value for user-specified build configuration
# 7. Parse the STATS macro value for statistics instrumentation
# 8. Parse the CHECKS macro for additional compilation checks
# 9. Extract Tcl, and possibly Tk, version numbers from the headers
# 6. Extract Tcl, Tk, and possibly extensions, version numbers from the
# headers
# 7. Parse the OPTS macro value for user-specified build configuration
# 8. Parse the STATS macro value for statistics instrumentation
# 9. Parse the CHECKS macro for additional compilation checks
# 10. Based on this selected configuration, construct the output
# directory and file paths
# 11. Construct the paths where the package is to be installed
@@ -816,7 +817,6 @@ DOTSEPARATED=$(DOTSEPARATED:b=.)
# configuration (ignored for Tcl itself)
# _USE_64BIT_TIME_T - forces a build using 64-bit time_t for 32-bit build
# (CRT library should support this, not needed for Tcl 9.x)
# TCL_UTF_MAX=3 - forces a build using UTF-16 internally (not recommended).
# Further, LINKERFLAGS are modified based on above.
# Default values for all the above
@@ -882,11 +882,6 @@ USE_THREAD_ALLOC= 0
!message *** Force 64-bit time_t
_USE_64BIT_TIME_T = 1
!endif
!if [nmakehlp -f $(OPTS) "utf16"]
!message *** Force UTF-16 internally
TCL_UTF_MAX = 3
!endif
!endif
# Yes, it's weird that the "symbols" option controls DEBUG and
@@ -1344,7 +1339,7 @@ INCLUDE_INSTALL_DIR = $(_INSTALLDIR)\..\include
# and switches are specific to it.
# The following macros are defined, names are for historical compatibility:
# OPTDEFINES - /Dxxx C macro flags based on user-specified OPTS
# COMPILERFLAGS - /Dxxx C macro flags independent of any configuration opttions
# COMPILERFLAGS - /Dxxx C macro flags independent of any configuration options
# crt - Compiler switch that selects the appropriate C runtime
# cdebug - Compiler switches related to debug AND optimizations
# cwarn - Compiler switches that set warning levels
@@ -1426,9 +1421,6 @@ OPTDEFINES = $(OPTDEFINES) /D_USE_64BIT_TIME_T=1
# _ATL_XP_TARGETING - Newer SDK's need this to build for XP
COMPILERFLAGS = /D_ATL_XP_TARGETING
!endif
!if "$(TCL_UTF_MAX)" == "3"
OPTDEFINES = $(OPTDEFINES) /DTCL_UTF_MAX=3
!endif
# Like the TEA system only set this non empty for non-Tk extensions
# Note: some extensions use PACKAGE_NAME and others use PACKAGE_TCLNAME
@@ -1597,7 +1589,7 @@ DLLCMD = $(link32) $(dlllflags) -out:$@ $(baselibs) $(tcllibs) $(tklibs)
CONEXECMD = $(link32) $(conlflags) -out:$@ $(baselibs) $(tcllibs) $(tklibs)
GUIEXECMD = $(link32) $(guilflags) -out:$@ $(baselibs) $(tcllibs) $(tklibs)
RESCMD = $(rc32) -fo $@ -r -i "$(GENERICDIR)" -i "$(TMP_DIR)" \
$(TCL_INCLUDES) \
$(TCL_INCLUDES) /DSTATIC_BUILD=$(STATIC_BUILD) \
/DDEBUG=$(DEBUG) -d UNCHECKED=$(UNCHECKED) \
/DCOMMAVERSION=$(RCCOMMAVERSION) \
/DDOTVERSION=\"$(DOTVERSION)\" \

View File

@@ -1,4 +1,4 @@
prefix=C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env/Library
prefix=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
@@ -8,4 +8,4 @@ Description: OpenSSL cryptography library
Libs: -L"${libdir}" -llibcrypto
Libs.private: -lcrypt32 -lws2_32
Cflags: -I"${includedir}"
Version: 3.1.3
Version: 3.0.15

View File

@@ -6,6 +6,6 @@ includedir=${prefix}/include
Name: libffi
Description: Library supporting Foreign Function Interfaces
Version: 3.4.2
Version: 3.4.4
Libs: -L${exec_prefix}/lib -lffi
Cflags: -I${prefix}/include

View File

@@ -0,0 +1,20 @@
#
# Author: Lasse Collin
#
# This file has been put into the public domain.
# You can do whatever you want with this file.
#
prefix=/c/b/abs_408t8wz0h8/croot/xz_1714514706366/_h_env
exec_prefix=/c/b/abs_408t8wz0h8/croot/xz_1714514706366/_h_env
libdir=/c/b/abs_408t8wz0h8/croot/xz_1714514706366/_h_env/lib
includedir=/c/b/abs_408t8wz0h8/croot/xz_1714514706366/_h_env/include
Name: liblzma
Description: General purpose data compression library
URL: https://xz.tukaani.org/xz-utils/
Version: 5.4.6
Cflags: -I${includedir}
Cflags.private: -DLZMA_API_STATIC
Libs: -L${libdir} -llzma
Libs.private:

View File

@@ -1,4 +1,4 @@
prefix=C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env/Library
prefix=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
@@ -8,4 +8,4 @@ Description: Secure Sockets Layer and cryptography libraries
Libs: -L"${libdir}" -llibssl
Requires: libcrypto
Cflags: -I"${includedir}"
Version: 3.1.3
Version: 3.0.15

View File

@@ -1,4 +1,4 @@
prefix=C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env/Library
prefix=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
@@ -6,4 +6,4 @@ includedir=${prefix}/include
Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries and tools
Requires: libssl libcrypto
Version: 3.1.3
Version: 3.0.15

View File

@@ -0,0 +1,13 @@
prefix=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library
exec_prefix=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library
libdir=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library/lib
sharedlibdir=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library/lib
includedir=C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env/Library/include
Name: zlib
Description: zlib compression library
Version: 1.2.13
Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}

Binary file not shown.

View File

@@ -1,5 +0,0 @@
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded sqlite3 3.40.0 [list load [file join $dir tcl9sqlite3400t.dll] [string totitle sqlite3]]
} else {
package ifneeded sqlite3 3.40.0 [list load [file join $dir sqlite3400t.dll] [string totitle sqlite3]]
}

View File

@@ -0,0 +1,5 @@
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded sqlite3 3.44.2 [list load [file join $dir tcl9sqlite3442t.dll] [string totitle sqlite3]]
} else {
package ifneeded sqlite3 3.44.2 [list load [file join $dir sqlite3442t.dll] [string totitle sqlite3]]
}

Binary file not shown.

Binary file not shown.

View File

@@ -119,7 +119,7 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
$basename$patch library]
}
}
# uniquify $dirs in order
# make $dirs unique, preserving order
array set seen {}
foreach i $dirs {
# Make sure $i is unique under normalization. Avoid repeated [source].
@@ -140,13 +140,13 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# source everything when in a safe interpreter because we have a
# source command, but no file exists command
if {[interp issafe] || [file exists $file]} {
if {![catch {uplevel #0 [list source $file]} msg opts]} {
return
}
if {[interp issafe] || [file exists $file]} {
if {![catch {uplevel #0 [list source $file]} msg opts]} {
return
}
append errors "$file: $msg\n"
append errors [dict get $opts -errorinfo]\n
}
}
}
unset -nocomplain the_library
set msg "Can't find a usable $initScript in the following directories: \n"
@@ -240,7 +240,7 @@ proc auto_mkindex_old {dir args} {
set f ""
set error [catch {
set f [open $file]
fconfigure $f -eofchar "\032 {}"
fconfigure $f -eofchar "\x1A {}"
while {[gets $f line] >= 0} {
if {[regexp {^proc[ ]+([^ ]*)} $line match procName]} {
set procName [lindex [auto_qualify $procName "::"] 0]
@@ -317,7 +317,7 @@ namespace eval auto_mkindex_parser {
$parser expose eval
$parser invokehidden rename eval _%@eval
# Install all the registered psuedo-command implementations
# Install all the registered pseudo-command implementations
foreach cmd $initCommands {
eval $cmd
@@ -351,7 +351,7 @@ proc auto_mkindex_parser::mkindex {file} {
set scriptFile $file
set fid [open $file]
fconfigure $fid -eofchar "\032 {}"
fconfigure $fid -eofchar "\x1A {}"
set contents [read $fid]
close $fid
@@ -570,7 +570,7 @@ auto_mkindex_parser::hook {
load {} tbcload $auto_mkindex_parser::parser
# AUTO MKINDEX: tbcload::bcproc name arglist body
# Adds an entry to the auto index list for the given pre-compiled
# Adds an entry to the auto index list for the given precompiled
# procedure name.
auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
@@ -625,7 +625,7 @@ auto_mkindex_parser::command namespace {op args} {
}
regsub -all ::+ $name :: name
}
# create artifical proc to force an entry in the tclIndex
# create artificial proc to force an entry in the tclIndex
$parser eval [list ::proc $name {} {}]
}
}

View File

@@ -223,7 +223,7 @@ proc ::tcl::clock::Initialize {} {
::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
# Romania (Transylvania changed earler - perhaps de_RO should show the
# Romania (Transylvania changed earlier - perhaps de_RO should show the
# earlier date?)
::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
@@ -310,28 +310,28 @@ proc ::tcl::clock::Initialize {} {
{-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein
{-39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Midway
{-36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Honolulu
{-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
{-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
{-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
{-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
{-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
{-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
{-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
{-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
{-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
{-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
{-25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Phoenix
{-21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Regina
{-21600 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Chicago
{-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
{-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
{-18000 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/New_York
{-18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Indianapolis
{-14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Caracas
{-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
{-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
:America/Santiago
{-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
{-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
{-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
{-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
{-12600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/St_Johns
{-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
{-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
{-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
{-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
{-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
{-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
{-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
{-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
{-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
{-3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Atlantic/Cape_Verde
@@ -339,22 +339,22 @@ proc ::tcl::clock::Initialize {} {
{0 0 3600 0 10 0 5 2 0 0 0 0 3 0 5 1 0 0 0} :Europe/London
{3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Kinshasa
{3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :CET
{7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Harare
{7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
{7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Harare
{7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
:Africa/Cairo
{7200 0 3600 0 10 0 5 4 0 0 0 0 3 0 5 3 0 0 0} :Europe/Helsinki
{7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0} :Asia/Jerusalem
{7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0} :Asia/Jerusalem
{7200 0 3600 0 9 0 5 1 0 0 0 0 3 0 5 0 0 0 0} :Europe/Bucharest
{7200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Athens
{7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0} :Asia/Amman
{7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
{7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0} :Asia/Amman
{7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
:Asia/Beirut
{7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0} :Africa/Windhoek
{7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0} :Africa/Windhoek
{10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Riyadh
{10800 0 3600 0 10 0 1 4 0 0 0 0 4 0 1 3 0 0 0} :Asia/Baghdad
{10800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Moscow
{12600 0 3600 0 9 2 4 2 0 0 0 0 3 0 1 2 0 0 0} :Asia/Tehran
{14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0} :Asia/Baku
{14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0} :Asia/Baku
{14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Muscat
{14400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Tbilisi
{16200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Kabul
@@ -584,8 +584,8 @@ proc ::tcl::clock::Initialize {} {
jst +0900 \
kst +0900 \
cast +0930 \
jdt +1000 \
kdt +1000 \
jdt +1000 \
kdt +1000 \
cadt +1030 \
east +1000 \
eadt +1030 \
@@ -1158,8 +1158,8 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
}
proc $procName {clockval timezone} "
$preFormatCode
return \[::format [list $formatString] $substituents\]
$preFormatCode
return \[::format [list $formatString] $substituents\]
"
# puts [list $procName [info args $procName] [info body $procName]]
@@ -1173,7 +1173,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
#
# Inputs a count of seconds since the Posix Epoch as a time of day.
#
# The 'clock format' command scans times of day on input. Refer to the user
# The 'clock scan' command scans times of day on input. Refer to the user
# documentation to see what it does.
#
#----------------------------------------------------------------------
@@ -1189,10 +1189,10 @@ proc ::tcl::clock::scan { args } {
return -code error \
-errorcode [list CLOCK wrongNumArgs] \
"wrong \# args: should be\
\"$cmdName string\
?-base seconds?\
?-format string? ?-gmt boolean?\
?-locale LOCALE? ?-timezone ZONE?\""
\"$cmdName string\
?-base seconds?\
?-format string? ?-gmt boolean?\
?-locale LOCALE? ?-timezone ZONE?\""
}
# Set defaults
@@ -1207,28 +1207,31 @@ proc ::tcl::clock::scan { args } {
# Pick up command line options.
foreach { flag value } [lreplace $args 0 0] {
set saw($flag) {}
switch -exact -- $flag {
-b - -ba - -bas - -base {
set base $value
}
-f - -fo - -for - -form - -forma - -format {
set saw(-format) {}
set format $value
}
-g - -gm - -gmt {
set saw(-gmt) {}
set gmt $value
}
-l - -lo - -loc - -loca - -local - -locale {
set saw(-locale) {}
set locale [string tolower $value]
}
-t - -ti - -tim - -time - -timez - -timezo - -timezon - -timezone {
set saw(-timezone) {}
set timezone $value
}
default {
return -code error \
-errorcode [list CLOCK badOption $flag] \
"bad option \"$flag\",\
must be -base, -format, -gmt, -locale or -timezone"
must be -base, -format, -gmt, -locale or -timezone"
}
}
}
@@ -1975,7 +1978,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
# being processed - they're always absolute
if { ![dict exists $fieldSet seconds]
&& ![dict exists $fieldSet starDate] } {
&& ![dict exists $fieldSet starDate] } {
append procBody {
if { [dict get $date julianDay] > 5373484 } {
return -code error -errorcode [list CLOCK dateTooLarge] \
@@ -2298,7 +2301,7 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
# Returns the locale that was previously current.
#
# Side effects:
# Does [mclocale]. If necessary, loades the designated locale's files.
# Does [mclocale]. If necessary, loads the designated locale's files.
#
#----------------------------------------------------------------------
@@ -2379,8 +2382,8 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
M %N
yyyy %Y
yy %y
y %y
gg {}
y %y
gg {}
} $unquoted]
if { $quoted eq {} } {
set quote '
@@ -2409,8 +2412,8 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
M %N
yyyy %Y
yy %y
y %y
gg {}
y %y
gg {}
} $unquoted]
if { $quoted eq {} } {
set quote '
@@ -2605,7 +2608,7 @@ proc ::tcl::clock::FormatStarDate { date } {
#
# Parameters:
# year - Year from the Roddenberry epoch
# fractYear - Fraction of a year specifiying the day of year.
# fractYear - Fraction of a year specifying the day of year.
# fractDay - Fraction of a day
#
# Results:
@@ -2975,7 +2978,7 @@ proc ::tcl::clock::InterpretHMS { date } {
# Returns the system time zone.
#
# Side effects:
# Stores the sustem time zone in the 'CachedSystemTimeZone'
# Stores the system time zone in the 'CachedSystemTimeZone'
# variable, since determining it may be an expensive process.
#
#----------------------------------------------------------------------
@@ -2989,19 +2992,19 @@ proc ::tcl::clock::GetSystemTimeZone {} {
} elseif {[set result [getenv TZ]] ne {}} {
set timezone $result
} else {
# Cache the time zone only if it was detected by one of the
# expensive methods.
if { [info exists CachedSystemTimeZone] } {
set timezone $CachedSystemTimeZone
} elseif { $::tcl_platform(platform) eq {windows} } {
set timezone [GuessWindowsTimeZone]
} elseif { [file exists /etc/localtime]
&& ![catch {ReadZoneinfoFile \
Tcl/Localtime /etc/localtime}] } {
set timezone :Tcl/Localtime
} else {
set timezone :localtime
}
# Cache the time zone only if it was detected by one of the
# expensive methods.
if { [info exists CachedSystemTimeZone] } {
set timezone $CachedSystemTimeZone
} elseif { $::tcl_platform(platform) eq {windows} } {
set timezone [GuessWindowsTimeZone]
} elseif { [file exists /etc/localtime]
&& ![catch {ReadZoneinfoFile \
Tcl/Localtime /etc/localtime}] } {
set timezone :Tcl/Localtime
} else {
set timezone :localtime
}
set CachedSystemTimeZone $timezone
}
if { ![dict exists $TimeZoneBad $timezone] } {
@@ -3401,7 +3404,7 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
close $f
# The file begins with a magic number, sixteen reserved bytes, and then
# six 4-byte integers giving counts of fileds in the file.
# six 4-byte integers giving counts of fields in the file.
binary scan $d a4a1x15IIIIII \
magic version nIsGMT nIsStd nLeap nTime nType nChar
@@ -3608,7 +3611,7 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
# 4 - Standard time zone offset, minutes
: ([[:digit:]]{1,2})
(?:
# 5 - Standard time zone offset, seconds
# 5 - Standard time zone offset, seconds
: ([[:digit:]]{1,2} )
)?
)?
@@ -3616,7 +3619,7 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
# 6 - DST time zone name
([[:alpha:]]+ | <[-+[:alnum:]]+>)
(?:
(?:
(?:
# 7 - DST time zone offset, signum
([-+]?)
# 8 - DST time zone offset, hours
@@ -3625,17 +3628,17 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
# 9 - DST time zone offset, minutes
: ([[:digit:]]{1,2})
(?:
# 10 - DST time zone offset, seconds
# 10 - DST time zone offset, seconds
: ([[:digit:]]{1,2})
)?
)?
)?
(?:
(?:
,
(?:
# 11 - Optional J in n and Jn form 12 - Day of year
( J ? ) ( [[:digit:]]+ )
| M
( J ? ) ( [[:digit:]]+ )
| M
# 13 - Month number 14 - Week of month 15 - Day of week
( [[:digit:]] + )
[.] ( [[:digit:]] + )
@@ -3644,7 +3647,7 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
(?:
# 16 - Start time of DST - hours
/ ( [[:digit:]]{1,2} )
(?:
(?:
# 17 - Start time of DST - minutes
: ( [[:digit:]]{1,2} )
(?:
@@ -3656,8 +3659,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
,
(?:
# 19 - Optional J in n and Jn form 20 - Day of year
( J ? ) ( [[:digit:]]+ )
| M
( J ? ) ( [[:digit:]]+ )
| M
# 21 - Month number 22 - Week of month 23 - Day of week
( [[:digit:]] + )
[.] ( [[:digit:]] + )
@@ -3666,7 +3669,7 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
(?:
# 24 - End time of DST - hours
/ ( [[:digit:]]{1,2} )
(?:
(?:
# 25 - End time of DST - minutes
: ( [[:digit:]]{1,2} )
(?:
@@ -3675,9 +3678,9 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
)?
)?
)?
)?
)?
)?
)?
)?
$
} $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \
x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \
@@ -4243,8 +4246,8 @@ proc ::tcl::clock::add { clockval args } {
return -code error \
-errorcode [list CLOCK wrongNumArgs] \
"wrong \# args: should be\
\"$cmdName clockval ?number units?...\
?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\""
\"$cmdName clockval ?number units?...\
?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\""
}
if { [catch { expr {wide($clockval)} } result] } {
return -code error $result
@@ -4261,6 +4264,7 @@ proc ::tcl::clock::add { clockval args } {
} else {
switch -exact -- $a {
-g - -gm - -gmt {
set saw(-gmt) {}
set gmt $b
}
-l - -lo - -loc - -loca - -local - -locale {
@@ -4268,12 +4272,13 @@ proc ::tcl::clock::add { clockval args } {
}
-t - -ti - -tim - -time - -timez - -timezo - -timezon -
-timezone {
set saw(-timezone) {}
set timezone $b
}
default {
throw [list CLOCK badOption $a] \
"bad option \"$a\",\
must be -gmt, -locale or -timezone"
must be -gmt, -locale or -timezone"
}
}
}
@@ -4338,7 +4343,7 @@ proc ::tcl::clock::add { clockval args } {
default {
throw [list CLOCK badUnit $unit] \
"unknown unit \"$unit\", must be \
years, months, weeks, days, hours, minutes or seconds"
years, months, weeks, days, hours, minutes or seconds"
}
}
}
@@ -4498,10 +4503,10 @@ proc ::tcl::clock::ChangeCurrentLocale {args} {
variable TimeZoneBad
foreach p [info procs [namespace current]::scanproc'*'current] {
rename $p {}
rename $p {}
}
foreach p [info procs [namespace current]::formatproc'*'current] {
rename $p {}
rename $p {}
}
catch {array unset FormatProc *'current}

View File

@@ -53,7 +53,7 @@ proc ::history {args} {
}
# Tricky stuff needed to make stack and errors come out right!
tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args
tailcall apply {arglist {tailcall ::tcl::history {*}$arglist} ::tcl} $args
}
# (unnamed) --
@@ -268,7 +268,7 @@ proc ::tcl::HistIndex {event} {
return -code error "event \"$event\" is too far in the past"
}
if {$i > $history(nextid)} {
return -code error "event \"$event\" hasn't occured yet"
return -code error "event \"$event\" hasn't occurred yet"
}
return $i
}

View File

@@ -16,7 +16,7 @@
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
package require -exact Tcl 8.6.13
package require -exact Tcl 8.6.14
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
@@ -200,7 +200,7 @@ if {[namespace which -command exec] eq ""} {
set auto_noexec 1
}
# Define a log command (which can be overwitten to log errors
# Define a log command (which can be overwritten to log errors
# differently, specially when stderr is not available)
if {[namespace which -command tclLog] eq ""} {
@@ -371,14 +371,14 @@ proc unknown args {
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
set ret [catch {set candidates [info commands $name*]} msg]
set ret [catch [list uplevel 1 [list info commands $name*]] candidates]
if {$name eq "::"} {
set name ""
}
if {$ret != 0} {
dict append opts -errorinfo \
"\n (expanding command prefix \"$name\" in unknown)"
return -options $opts $msg
return -options $opts $candidates
}
# Filter out bogus matches when $name contained
# a glob-special char [Bug 946952]
@@ -494,7 +494,7 @@ proc auto_load_index {} {
continue
} else {
set error [catch {
fconfigure $f -eofchar "\032 {}"
fconfigure $f -eofchar "\x1A {}"
set id [gets $f]
if {$id eq "# Tcl autoload index file, version 2.0"} {
eval [read $f]

View File

@@ -11,7 +11,7 @@
package require Tcl 8.5-
# When this version number changes, update the pkgIndex.tcl file
# and the install directory in the Makefiles.
package provide opt 0.4.8
package provide opt 0.4.9
namespace eval ::tcl {
@@ -75,7 +75,7 @@ namespace eval ::tcl {
variable OptDescN 0
# Inside algorithm/mechanism description:
# (not for the faint hearted ;-)
# (not for the faint-hearted ;-)
#
# The argument description is parsed into a "program tree"
# It is called a "program" because it is the program used by
@@ -134,9 +134,9 @@ namespace eval ::tcl {
# they should start to be much faster.
# But this code use a lot of helper procs (like Lvarset)
# which are quite slow and would be helpfully optimized
# for instance by being written in C. Also our struture
# for instance by being written in C. Also our structure
# is complex and there is maybe some places where the
# string rep might be calculated at great exense. to be checked.
# string rep might be calculated at great expense. to be checked.
#
# Parse a given description and saves it here under the given key
@@ -226,7 +226,7 @@ proc ::tcl::OptKeyDelete {key} {
set OptDesc($descKey)
}
# Parse entry point for ppl who don't want to register with a key,
# Parse entry point for people who don't want to register with a key,
# for instance because the description changes dynamically.
# (otherwise one should really use OptKeyRegister once + OptKeyParse
# as it is way faster or simply OptProc which does it all)
@@ -328,18 +328,18 @@ proc ::tcl::OptProcArgGiven {argname} {
return $start
}
}
# Set the value field of the current instruction
# Set the value field of the current instruction.
proc OptCurSetValue {descriptionsName value} {
upvar $descriptionsName descriptions
# get the current item full adress
# Get the current item full address.
set adress [OptCurAddr $descriptions]
# use the 3th field of the item (see OptValue / OptNewInst)
# Use the 3rd field of the item (see OptValue / OptNewInst).
lappend adress 2
Lvarset descriptions $adress [list 1 $value]
# ^hasBeenSet flag
}
# empty state means done/paste the end of the program
# Empty state means done/paste the end of the program.
proc OptState {item} {
lindex $item 0
}
@@ -352,11 +352,11 @@ proc ::tcl::OptProcArgGiven {argname} {
#######
# Arguments manipulation
# Returns the argument that has to be processed now
# Returns the argument that has to be processed now.
proc OptCurrentArg {lst} {
lindex $lst 0
}
# Advance to next argument
# Advance to next argument.
proc OptNextArg {argsName} {
uplevel 1 [list Lvarpop1 $argsName]
}
@@ -553,7 +553,7 @@ proc ::tcl::OptKeyParse {descKey arglist} {
if {[OptHasBeenSet $item]} {
# puts "adding $vname"
# lets use the input name for the returned list
# it is more usefull, for instance you can check that
# it is more useful, for instance you can check that
# no flags at all was given with expr
# {![string match "*-*" $Args]}
lappend vnamesLst [OptName $item]

View File

@@ -9,4 +9,4 @@
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.5-]} {return}
package ifneeded opt 0.4.8 [list source [file join $dir optparse.tcl]]
package ifneeded opt 0.4.9 [list source [file join $dir optparse.tcl]]

View File

@@ -69,7 +69,7 @@ proc tcl::Pkg::CompareExtension {fileName {ext {}}} {
# than lazily when the first reference to an exported
# procedure in the package is made.
# -verbose (optional) Verbose output; the name of each file that
# was successfully rocessed is printed out. Additionally,
# was successfully processed is printed out. Additionally,
# if processing of a file failed a message is printed.
# -load pat (optional) Preload any packages whose names match
# the pattern. Used to handle DLLs that depend on
@@ -206,7 +206,7 @@ proc pkg_mkIndex {args} {
package unknown tclPkgUnknown
# Stub out the unknown command so package can call into each other
# during their initialilzation.
# during their initialization.
proc unknown {args} {}
@@ -720,7 +720,7 @@ proc ::tcl::Pkg::Create {args} {
error $err(noLoadOrSource)
}
# OK, now everything is good. Generate the package ifneeded statment.
# OK, now everything is good. Generate the package ifneeded statement.
set cmdline "package ifneeded $opts(-name) $opts(-version) "
set cmdList {}

View File

@@ -169,7 +169,7 @@ proc ::safe::interpConfigure {args} {
# it is most probably a set in fact but we would need
# then to jump to the set part and it is not *sure*
# that it is a set action that the user want, so force
# it to use the unambigous -statics ?value? instead:
# it to use the unambiguous -statics ?value? instead:
return -code error\
"ambigous query (get or set -noStatics ?)\
use -statics instead"
@@ -220,7 +220,7 @@ proc ::safe::interpConfigure {args} {
}
# we can now reconfigure :
InterpSetConfig $slave $accessPath $statics $nested $deleteHook
# auto_reset the child (to completly synch the new access_path)
# auto_reset the child (to completely synch the new access_path)
if {$doreset} {
if {[catch {::interp eval $slave {auto_reset}} msg]} {
Log $slave "auto_reset failed: $msg"
@@ -332,7 +332,7 @@ proc ::safe::InterpSetConfig {child access_path staticsok nestedok deletehook} {
moved it to front of slave's access_path" NOTICE
}
# Add 1st level sub dirs (will searched by auto loading from tcl
# Add 1st level subdirs (will searched by auto loading from tcl
# code in the child using glob and thus fail, so we add them here
# so by default it works the same).
set access_path [AddSubDirs $access_path]
@@ -602,7 +602,7 @@ proc ::safe::interpDelete {child} {
}
# If the child has a cleanup hook registered, call it. Check the
# existance because we might be called to delete an interp which has
# existence because we might be called to delete an interp which has
# not been registered with us at all
if {[info exists state(cleanupHook)]} {
@@ -636,7 +636,7 @@ proc ::safe::interpDelete {child} {
return
}
# Set (or get) the logging mecanism
# Set (or get) the logging mechanism
proc ::safe::setLogCmd {args} {
variable Log
@@ -982,7 +982,7 @@ proc ::safe::AliasSource {child args} {
set replacementMsg "script error"
set code [catch {
set f [open $realfile]
fconfigure $f -eofchar "\032 {}"
fconfigure $f -eofchar "\x1A {}"
if {$encoding ne ""} {
fconfigure $f -encoding $encoding
}

View File

@@ -20,6 +20,7 @@ set auto_index(::auto_mkindex_parser::command) [list source [file join $dir auto
set auto_index(::auto_mkindex_parser::commandInit) [list source [file join $dir auto.tcl]]
set auto_index(::auto_mkindex_parser::fullname) [list source [file join $dir auto.tcl]]
set auto_index(history) [list source [file join $dir history.tcl]]
set auto_index(::tcl::history) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistAdd) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistKeep) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistClear) [list source [file join $dir history.tcl]]

View File

@@ -22,10 +22,10 @@
#
# This covers the possibility that the application asked for a package
# late, and the package was actually added to the installation after the
# application was started. It shoukld still be able to find it.
# application was started. It should still be able to find it.
#
# 2) It still is not there: Either way, you don't get it, but the rescan
# takes time. This is however an error case and we dont't care that much
# takes time. This is however an error case and we don't care that much
# about it
#
# 3) It was there the first time; but for some reason a "package forget" has
@@ -70,9 +70,9 @@ namespace eval ::tcl::tm {
# No result for subcommands 'add' and 'remove'. A list of paths for
# 'list'.
#
# Sideeffects
# Side effects
# The subcommands 'add' and 'remove' manipulate the list of paths to
# search for Tcl Modules. The subcommand 'list' has no sideeffects.
# search for Tcl Modules. The subcommand 'list' has no side effects.
proc ::tcl::tm::add {args} {
# PART OF THE ::tcl::tm::path ENSEMBLE
@@ -81,7 +81,7 @@ proc ::tcl::tm::add {args} {
#
# The command enforces the restriction that no path may be an ancestor
# directory of any other path on the list. If the new path violates this
# restriction an error wil be raised.
# restriction an error will be raised.
#
# If the path is already present as is no error will be raised and no
# action will be taken.
@@ -166,7 +166,7 @@ proc ::tcl::tm::list {} {
# name - Name of desired package.
# version - Version of desired package. Can be the
# empty string.
# exact - Either -exact or ommitted.
# exact - Either -exact or omitted.
#
# Name, version, and exact are used to determine satisfaction. The
# original is called iff no satisfaction was achieved. The name is also
@@ -175,7 +175,7 @@ proc ::tcl::tm::list {} {
# Results
# None.
#
# Sideeffects
# Side effects
# May populate the package ifneeded database with additional provide
# scripts.
@@ -310,7 +310,7 @@ proc ::tcl::tm::UnknownHandler {original name args} {
# Results
# None.
#
# Sideeffects
# Side effects
# May add paths to the list of defaults.
proc ::tcl::tm::Defaults {} {
@@ -355,7 +355,7 @@ proc ::tcl::tm::Defaults {} {
# Results
# No result.
#
# Sideeffects
# Side effects
# Calls 'path add' to paths to the list of module search paths.
proc ::tcl::tm::roots {paths} {

View File

@@ -129,4 +129,158 @@ set TZData(:Africa/Cairo) {
{1403816400 7200 0 EET}
{1406844000 10800 1 EEST}
{1411678800 7200 0 EET}
{1682632800 10800 1 EEST}
{1698354000 7200 0 EET}
{1714082400 10800 1 EEST}
{1730408400 7200 0 EET}
{1745532000 10800 1 EEST}
{1761858000 7200 0 EET}
{1776981600 10800 1 EEST}
{1793307600 7200 0 EET}
{1809036000 10800 1 EEST}
{1824757200 7200 0 EET}
{1840485600 10800 1 EEST}
{1856206800 7200 0 EET}
{1871935200 10800 1 EEST}
{1887656400 7200 0 EET}
{1903384800 10800 1 EEST}
{1919710800 7200 0 EET}
{1934834400 10800 1 EEST}
{1951160400 7200 0 EET}
{1966888800 10800 1 EEST}
{1982610000 7200 0 EET}
{1998338400 10800 1 EEST}
{2014059600 7200 0 EET}
{2029788000 10800 1 EEST}
{2045509200 7200 0 EET}
{2061237600 10800 1 EEST}
{2076958800 7200 0 EET}
{2092687200 10800 1 EEST}
{2109013200 7200 0 EET}
{2124136800 10800 1 EEST}
{2140462800 7200 0 EET}
{2156191200 10800 1 EEST}
{2171912400 7200 0 EET}
{2187640800 10800 1 EEST}
{2203362000 7200 0 EET}
{2219090400 10800 1 EEST}
{2234811600 7200 0 EET}
{2250540000 10800 1 EEST}
{2266866000 7200 0 EET}
{2281989600 10800 1 EEST}
{2298315600 7200 0 EET}
{2313439200 10800 1 EEST}
{2329765200 7200 0 EET}
{2345493600 10800 1 EEST}
{2361214800 7200 0 EET}
{2376943200 10800 1 EEST}
{2392664400 7200 0 EET}
{2408392800 10800 1 EEST}
{2424114000 7200 0 EET}
{2439842400 10800 1 EEST}
{2456168400 7200 0 EET}
{2471292000 10800 1 EEST}
{2487618000 7200 0 EET}
{2503346400 10800 1 EEST}
{2519067600 7200 0 EET}
{2534796000 10800 1 EEST}
{2550517200 7200 0 EET}
{2566245600 10800 1 EEST}
{2581966800 7200 0 EET}
{2597695200 10800 1 EEST}
{2614021200 7200 0 EET}
{2629144800 10800 1 EEST}
{2645470800 7200 0 EET}
{2660594400 10800 1 EEST}
{2676920400 7200 0 EET}
{2692648800 10800 1 EEST}
{2708370000 7200 0 EET}
{2724098400 10800 1 EEST}
{2739819600 7200 0 EET}
{2755548000 10800 1 EEST}
{2771269200 7200 0 EET}
{2786997600 10800 1 EEST}
{2803323600 7200 0 EET}
{2818447200 10800 1 EEST}
{2834773200 7200 0 EET}
{2850501600 10800 1 EEST}
{2866222800 7200 0 EET}
{2881951200 10800 1 EEST}
{2897672400 7200 0 EET}
{2913400800 10800 1 EEST}
{2929122000 7200 0 EET}
{2944850400 10800 1 EEST}
{2960571600 7200 0 EET}
{2976300000 10800 1 EEST}
{2992626000 7200 0 EET}
{3007749600 10800 1 EEST}
{3024075600 7200 0 EET}
{3039804000 10800 1 EEST}
{3055525200 7200 0 EET}
{3071253600 10800 1 EEST}
{3086974800 7200 0 EET}
{3102703200 10800 1 EEST}
{3118424400 7200 0 EET}
{3134152800 10800 1 EEST}
{3150478800 7200 0 EET}
{3165602400 10800 1 EEST}
{3181928400 7200 0 EET}
{3197052000 10800 1 EEST}
{3213378000 7200 0 EET}
{3229106400 10800 1 EEST}
{3244827600 7200 0 EET}
{3260556000 10800 1 EEST}
{3276277200 7200 0 EET}
{3292005600 10800 1 EEST}
{3307726800 7200 0 EET}
{3323455200 10800 1 EEST}
{3339781200 7200 0 EET}
{3354904800 10800 1 EEST}
{3371230800 7200 0 EET}
{3386959200 10800 1 EEST}
{3402680400 7200 0 EET}
{3418408800 10800 1 EEST}
{3434130000 7200 0 EET}
{3449858400 10800 1 EEST}
{3465579600 7200 0 EET}
{3481308000 10800 1 EEST}
{3497634000 7200 0 EET}
{3512757600 10800 1 EEST}
{3529083600 7200 0 EET}
{3544207200 10800 1 EEST}
{3560533200 7200 0 EET}
{3576261600 10800 1 EEST}
{3591982800 7200 0 EET}
{3607711200 10800 1 EEST}
{3623432400 7200 0 EET}
{3639160800 10800 1 EEST}
{3654882000 7200 0 EET}
{3670610400 10800 1 EEST}
{3686936400 7200 0 EET}
{3702060000 10800 1 EEST}
{3718386000 7200 0 EET}
{3734114400 10800 1 EEST}
{3749835600 7200 0 EET}
{3765564000 10800 1 EEST}
{3781285200 7200 0 EET}
{3797013600 10800 1 EEST}
{3812734800 7200 0 EET}
{3828463200 10800 1 EEST}
{3844184400 7200 0 EET}
{3859912800 10800 1 EEST}
{3876238800 7200 0 EET}
{3891362400 10800 1 EEST}
{3907688400 7200 0 EET}
{3923416800 10800 1 EEST}
{3939138000 7200 0 EET}
{3954866400 10800 1 EEST}
{3970587600 7200 0 EET}
{3986316000 10800 1 EEST}
{4002037200 7200 0 EET}
{4017765600 10800 1 EEST}
{4034091600 7200 0 EET}
{4049215200 10800 1 EEST}
{4065541200 7200 0 EET}
{4080664800 10800 1 EEST}
{4096990800 7200 0 EET}
}

View File

@@ -66,7 +66,7 @@ set TZData(:Africa/Casablanca) {
{1648346400 0 1 +01}
{1651975200 3600 0 +01}
{1679191200 0 1 +01}
{1682820000 3600 0 +01}
{1682215200 3600 0 +01}
{1710036000 0 1 +01}
{1713060000 3600 0 +01}
{1740276000 0 1 +01}
@@ -82,7 +82,7 @@ set TZData(:Africa/Casablanca) {
{1893290400 0 1 +01}
{1896919200 3600 0 +01}
{1924135200 0 1 +01}
{1927764000 3600 0 +01}
{1927159200 3600 0 +01}
{1954980000 0 1 +01}
{1958004000 3600 0 +01}
{1985220000 0 1 +01}
@@ -98,7 +98,7 @@ set TZData(:Africa/Casablanca) {
{2138234400 0 1 +01}
{2141863200 3600 0 +01}
{2169079200 0 1 +01}
{2172708000 3600 0 +01}
{2172103200 3600 0 +01}
{2199924000 0 1 +01}
{2202948000 3600 0 +01}
{2230164000 0 1 +01}
@@ -114,7 +114,7 @@ set TZData(:Africa/Casablanca) {
{2383178400 0 1 +01}
{2386807200 3600 0 +01}
{2414023200 0 1 +01}
{2417652000 3600 0 +01}
{2417047200 3600 0 +01}
{2444868000 0 1 +01}
{2447892000 3600 0 +01}
{2475108000 0 1 +01}
@@ -130,7 +130,7 @@ set TZData(:Africa/Casablanca) {
{2628122400 0 1 +01}
{2631751200 3600 0 +01}
{2658967200 0 1 +01}
{2662596000 3600 0 +01}
{2661991200 3600 0 +01}
{2689812000 0 1 +01}
{2692836000 3600 0 +01}
{2720052000 0 1 +01}
@@ -146,7 +146,7 @@ set TZData(:Africa/Casablanca) {
{2873066400 0 1 +01}
{2876695200 3600 0 +01}
{2903911200 0 1 +01}
{2907540000 3600 0 +01}
{2906935200 3600 0 +01}
{2934756000 0 1 +01}
{2937780000 3600 0 +01}
{2964996000 0 1 +01}
@@ -162,7 +162,7 @@ set TZData(:Africa/Casablanca) {
{3118010400 0 1 +01}
{3121639200 3600 0 +01}
{3148855200 0 1 +01}
{3152484000 3600 0 +01}
{3151879200 3600 0 +01}
{3179700000 0 1 +01}
{3182724000 3600 0 +01}
{3209940000 0 1 +01}
@@ -178,7 +178,7 @@ set TZData(:Africa/Casablanca) {
{3362954400 0 1 +01}
{3366583200 3600 0 +01}
{3393799200 0 1 +01}
{3397428000 3600 0 +01}
{3396823200 3600 0 +01}
{3424644000 0 1 +01}
{3427668000 3600 0 +01}
{3454884000 0 1 +01}
@@ -188,13 +188,13 @@ set TZData(:Africa/Casablanca) {
{3515968800 0 1 +01}
{3519597600 3600 0 +01}
{3546813600 0 1 +01}
{3550442400 3600 0 +01}
{3549837600 3600 0 +01}
{3577658400 0 1 +01}
{3580682400 3600 0 +01}
{3607898400 0 1 +01}
{3611527200 3600 0 +01}
{3638743200 0 1 +01}
{3642372000 3600 0 +01}
{3641767200 3600 0 +01}
{3669588000 0 1 +01}
{3672612000 3600 0 +01}
{3699828000 0 1 +01}

View File

@@ -55,7 +55,7 @@ set TZData(:Africa/El_Aaiun) {
{1648346400 0 1 +01}
{1651975200 3600 0 +01}
{1679191200 0 1 +01}
{1682820000 3600 0 +01}
{1682215200 3600 0 +01}
{1710036000 0 1 +01}
{1713060000 3600 0 +01}
{1740276000 0 1 +01}
@@ -71,7 +71,7 @@ set TZData(:Africa/El_Aaiun) {
{1893290400 0 1 +01}
{1896919200 3600 0 +01}
{1924135200 0 1 +01}
{1927764000 3600 0 +01}
{1927159200 3600 0 +01}
{1954980000 0 1 +01}
{1958004000 3600 0 +01}
{1985220000 0 1 +01}
@@ -87,7 +87,7 @@ set TZData(:Africa/El_Aaiun) {
{2138234400 0 1 +01}
{2141863200 3600 0 +01}
{2169079200 0 1 +01}
{2172708000 3600 0 +01}
{2172103200 3600 0 +01}
{2199924000 0 1 +01}
{2202948000 3600 0 +01}
{2230164000 0 1 +01}
@@ -103,7 +103,7 @@ set TZData(:Africa/El_Aaiun) {
{2383178400 0 1 +01}
{2386807200 3600 0 +01}
{2414023200 0 1 +01}
{2417652000 3600 0 +01}
{2417047200 3600 0 +01}
{2444868000 0 1 +01}
{2447892000 3600 0 +01}
{2475108000 0 1 +01}
@@ -119,7 +119,7 @@ set TZData(:Africa/El_Aaiun) {
{2628122400 0 1 +01}
{2631751200 3600 0 +01}
{2658967200 0 1 +01}
{2662596000 3600 0 +01}
{2661991200 3600 0 +01}
{2689812000 0 1 +01}
{2692836000 3600 0 +01}
{2720052000 0 1 +01}
@@ -135,7 +135,7 @@ set TZData(:Africa/El_Aaiun) {
{2873066400 0 1 +01}
{2876695200 3600 0 +01}
{2903911200 0 1 +01}
{2907540000 3600 0 +01}
{2906935200 3600 0 +01}
{2934756000 0 1 +01}
{2937780000 3600 0 +01}
{2964996000 0 1 +01}
@@ -151,7 +151,7 @@ set TZData(:Africa/El_Aaiun) {
{3118010400 0 1 +01}
{3121639200 3600 0 +01}
{3148855200 0 1 +01}
{3152484000 3600 0 +01}
{3151879200 3600 0 +01}
{3179700000 0 1 +01}
{3182724000 3600 0 +01}
{3209940000 0 1 +01}
@@ -167,7 +167,7 @@ set TZData(:Africa/El_Aaiun) {
{3362954400 0 1 +01}
{3366583200 3600 0 +01}
{3393799200 0 1 +01}
{3397428000 3600 0 +01}
{3396823200 3600 0 +01}
{3424644000 0 1 +01}
{3427668000 3600 0 +01}
{3454884000 0 1 +01}
@@ -177,13 +177,13 @@ set TZData(:Africa/El_Aaiun) {
{3515968800 0 1 +01}
{3519597600 3600 0 +01}
{3546813600 0 1 +01}
{3550442400 3600 0 +01}
{3549837600 3600 0 +01}
{3577658400 0 1 +01}
{3580682400 3600 0 +01}
{3607898400 0 1 +01}
{3611527200 3600 0 +01}
{3638743200 0 1 +01}
{3642372000 3600 0 +01}
{3641767200 3600 0 +01}
{3669588000 0 1 +01}
{3672612000 3600 0 +01}
{3699828000 0 1 +01}

View File

@@ -5,5 +5,5 @@ set TZData(:America/Bogota) {
{-2707671824 -17776 0 BMT}
{-1739041424 -18000 0 -05}
{704869200 -14400 1 -05}
{733896000 -18000 0 -05}
{729057600 -18000 0 -05}
}

View File

@@ -6,8 +6,22 @@ set TZData(:America/Cambridge_Bay) {
{-880210800 -21600 1 MWT}
{-769395600 -21600 1 MPT}
{-765388800 -25200 0 MST}
{-147891600 -18000 1 MDDT}
{-131562000 -25200 0 MST}
{73472400 -21600 1 MDT}
{89193600 -25200 0 MST}
{104922000 -21600 1 MDT}
{120643200 -25200 0 MST}
{136371600 -21600 1 MDT}
{152092800 -25200 0 MST}
{167821200 -21600 1 MDT}
{183542400 -25200 0 MST}
{199270800 -21600 1 MDT}
{215596800 -25200 0 MST}
{230720400 -21600 1 MDT}
{247046400 -25200 0 MST}
{262774800 -21600 1 MDT}
{278496000 -25200 0 MST}
{294224400 -21600 1 MDT}
{309945600 -25200 0 MST}
{325674000 -21600 1 MDT}
{341395200 -25200 0 MST}
{357123600 -21600 1 MDT}

View File

@@ -0,0 +1,223 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Ciudad_Juarez) {
{-9223372036854775808 -25556 0 LMT}
{-1514739600 -25200 0 MST}
{-1343066400 -21600 0 CST}
{-1234807200 -25200 0 MST}
{-1220292000 -21600 1 MDT}
{-1207159200 -25200 0 MST}
{-1191344400 -21600 0 CST}
{820476000 -21600 0 CST}
{828864000 -18000 1 CDT}
{846399600 -21600 0 CST}
{860313600 -18000 1 CDT}
{877849200 -21600 0 CST}
{883634400 -21600 0 CST}
{891766800 -21600 0 MDT}
{909302400 -25200 0 MST}
{923216400 -21600 1 MDT}
{941356800 -25200 0 MST}
{954666000 -21600 1 MDT}
{972806400 -25200 0 MST}
{989139600 -21600 1 MDT}
{1001836800 -25200 0 MST}
{1018170000 -21600 1 MDT}
{1035705600 -25200 0 MST}
{1049619600 -21600 1 MDT}
{1067155200 -25200 0 MST}
{1081069200 -21600 1 MDT}
{1099209600 -25200 0 MST}
{1112518800 -21600 1 MDT}
{1130659200 -25200 0 MST}
{1143968400 -21600 1 MDT}
{1162108800 -25200 0 MST}
{1175418000 -21600 1 MDT}
{1193558400 -25200 0 MST}
{1207472400 -21600 1 MDT}
{1225008000 -25200 0 MST}
{1238922000 -21600 1 MDT}
{1256457600 -25200 0 MST}
{1262329200 -25200 0 MST}
{1268557200 -21600 1 MDT}
{1289116800 -25200 0 MST}
{1300006800 -21600 1 MDT}
{1320566400 -25200 0 MST}
{1331456400 -21600 1 MDT}
{1352016000 -25200 0 MST}
{1362906000 -21600 1 MDT}
{1383465600 -25200 0 MST}
{1394355600 -21600 1 MDT}
{1414915200 -25200 0 MST}
{1425805200 -21600 1 MDT}
{1446364800 -25200 0 MST}
{1457859600 -21600 1 MDT}
{1478419200 -25200 0 MST}
{1489309200 -21600 1 MDT}
{1509868800 -25200 0 MST}
{1520758800 -21600 1 MDT}
{1541318400 -25200 0 MST}
{1552208400 -21600 1 MDT}
{1572768000 -25200 0 MST}
{1583658000 -21600 1 MDT}
{1604217600 -25200 0 MST}
{1615712400 -21600 1 MDT}
{1636272000 -25200 0 MST}
{1647162000 -21600 1 MDT}
{1667120400 -21600 0 CST}
{1669788000 -25200 0 MST}
{1678611600 -21600 1 MDT}
{1699171200 -25200 0 MST}
{1710061200 -21600 1 MDT}
{1730620800 -25200 0 MST}
{1741510800 -21600 1 MDT}
{1762070400 -25200 0 MST}
{1772960400 -21600 1 MDT}
{1793520000 -25200 0 MST}
{1805014800 -21600 1 MDT}
{1825574400 -25200 0 MST}
{1836464400 -21600 1 MDT}
{1857024000 -25200 0 MST}
{1867914000 -21600 1 MDT}
{1888473600 -25200 0 MST}
{1899363600 -21600 1 MDT}
{1919923200 -25200 0 MST}
{1930813200 -21600 1 MDT}
{1951372800 -25200 0 MST}
{1962867600 -21600 1 MDT}
{1983427200 -25200 0 MST}
{1994317200 -21600 1 MDT}
{2014876800 -25200 0 MST}
{2025766800 -21600 1 MDT}
{2046326400 -25200 0 MST}
{2057216400 -21600 1 MDT}
{2077776000 -25200 0 MST}
{2088666000 -21600 1 MDT}
{2109225600 -25200 0 MST}
{2120115600 -21600 1 MDT}
{2140675200 -25200 0 MST}
{2152170000 -21600 1 MDT}
{2172729600 -25200 0 MST}
{2183619600 -21600 1 MDT}
{2204179200 -25200 0 MST}
{2215069200 -21600 1 MDT}
{2235628800 -25200 0 MST}
{2246518800 -21600 1 MDT}
{2267078400 -25200 0 MST}
{2277968400 -21600 1 MDT}
{2298528000 -25200 0 MST}
{2309418000 -21600 1 MDT}
{2329977600 -25200 0 MST}
{2341472400 -21600 1 MDT}
{2362032000 -25200 0 MST}
{2372922000 -21600 1 MDT}
{2393481600 -25200 0 MST}
{2404371600 -21600 1 MDT}
{2424931200 -25200 0 MST}
{2435821200 -21600 1 MDT}
{2456380800 -25200 0 MST}
{2467270800 -21600 1 MDT}
{2487830400 -25200 0 MST}
{2499325200 -21600 1 MDT}
{2519884800 -25200 0 MST}
{2530774800 -21600 1 MDT}
{2551334400 -25200 0 MST}
{2562224400 -21600 1 MDT}
{2582784000 -25200 0 MST}
{2593674000 -21600 1 MDT}
{2614233600 -25200 0 MST}
{2625123600 -21600 1 MDT}
{2645683200 -25200 0 MST}
{2656573200 -21600 1 MDT}
{2677132800 -25200 0 MST}
{2688627600 -21600 1 MDT}
{2709187200 -25200 0 MST}
{2720077200 -21600 1 MDT}
{2740636800 -25200 0 MST}
{2751526800 -21600 1 MDT}
{2772086400 -25200 0 MST}
{2782976400 -21600 1 MDT}
{2803536000 -25200 0 MST}
{2814426000 -21600 1 MDT}
{2834985600 -25200 0 MST}
{2846480400 -21600 1 MDT}
{2867040000 -25200 0 MST}
{2877930000 -21600 1 MDT}
{2898489600 -25200 0 MST}
{2909379600 -21600 1 MDT}
{2929939200 -25200 0 MST}
{2940829200 -21600 1 MDT}
{2961388800 -25200 0 MST}
{2972278800 -21600 1 MDT}
{2992838400 -25200 0 MST}
{3003728400 -21600 1 MDT}
{3024288000 -25200 0 MST}
{3035782800 -21600 1 MDT}
{3056342400 -25200 0 MST}
{3067232400 -21600 1 MDT}
{3087792000 -25200 0 MST}
{3098682000 -21600 1 MDT}
{3119241600 -25200 0 MST}
{3130131600 -21600 1 MDT}
{3150691200 -25200 0 MST}
{3161581200 -21600 1 MDT}
{3182140800 -25200 0 MST}
{3193030800 -21600 1 MDT}
{3213590400 -25200 0 MST}
{3225085200 -21600 1 MDT}
{3245644800 -25200 0 MST}
{3256534800 -21600 1 MDT}
{3277094400 -25200 0 MST}
{3287984400 -21600 1 MDT}
{3308544000 -25200 0 MST}
{3319434000 -21600 1 MDT}
{3339993600 -25200 0 MST}
{3350883600 -21600 1 MDT}
{3371443200 -25200 0 MST}
{3382938000 -21600 1 MDT}
{3403497600 -25200 0 MST}
{3414387600 -21600 1 MDT}
{3434947200 -25200 0 MST}
{3445837200 -21600 1 MDT}
{3466396800 -25200 0 MST}
{3477286800 -21600 1 MDT}
{3497846400 -25200 0 MST}
{3508736400 -21600 1 MDT}
{3529296000 -25200 0 MST}
{3540186000 -21600 1 MDT}
{3560745600 -25200 0 MST}
{3572240400 -21600 1 MDT}
{3592800000 -25200 0 MST}
{3603690000 -21600 1 MDT}
{3624249600 -25200 0 MST}
{3635139600 -21600 1 MDT}
{3655699200 -25200 0 MST}
{3666589200 -21600 1 MDT}
{3687148800 -25200 0 MST}
{3698038800 -21600 1 MDT}
{3718598400 -25200 0 MST}
{3730093200 -21600 1 MDT}
{3750652800 -25200 0 MST}
{3761542800 -21600 1 MDT}
{3782102400 -25200 0 MST}
{3792992400 -21600 1 MDT}
{3813552000 -25200 0 MST}
{3824442000 -21600 1 MDT}
{3845001600 -25200 0 MST}
{3855891600 -21600 1 MDT}
{3876451200 -25200 0 MST}
{3887341200 -21600 1 MDT}
{3907900800 -25200 0 MST}
{3919395600 -21600 1 MDT}
{3939955200 -25200 0 MST}
{3950845200 -21600 1 MDT}
{3971404800 -25200 0 MST}
{3982294800 -21600 1 MDT}
{4002854400 -25200 0 MST}
{4013744400 -21600 1 MDT}
{4034304000 -25200 0 MST}
{4045194000 -21600 1 MDT}
{4065753600 -25200 0 MST}
{4076643600 -21600 1 MDT}
{4097203200 -25200 0 MST}
}

View File

@@ -10,8 +10,10 @@ set TZData(:America/Dawson) {
{-880203600 -28800 1 YWT}
{-769395600 -28800 1 YPT}
{-765381600 -32400 0 YST}
{-157734000 -32400 0 YST}
{-147884400 -25200 1 YDDT}
{-131554800 -32400 0 YST}
{120646800 -28800 0 PST}
{315561600 -28800 0 PST}
{325677600 -25200 1 PDT}
{341398800 -28800 0 PST}

View File

@@ -3,8 +3,22 @@
set TZData(:America/Inuvik) {
{-9223372036854775808 0 0 -00}
{-536457600 -28800 0 PST}
{-147888000 -21600 1 PDDT}
{-131558400 -28800 0 PST}
{73476000 -25200 1 PDT}
{89197200 -28800 0 PST}
{104925600 -25200 1 PDT}
{120646800 -28800 0 PST}
{136375200 -25200 1 PDT}
{152096400 -28800 0 PST}
{167824800 -25200 1 PDT}
{183546000 -28800 0 PST}
{199274400 -25200 1 PDT}
{215600400 -28800 0 PST}
{230724000 -25200 1 PDT}
{247050000 -28800 0 PST}
{262778400 -25200 1 PDT}
{278499600 -28800 0 PST}
{294228000 -21600 0 MDT}
{309945600 -25200 0 MST}
{315558000 -25200 0 MST}
{325674000 -21600 1 MDT}
{341395200 -25200 0 MST}

View File

@@ -5,8 +5,22 @@ set TZData(:America/Iqaluit) {
{-865296000 -14400 0 EWT}
{-769395600 -14400 1 EPT}
{-765396000 -18000 0 EST}
{-147898800 -10800 1 EDDT}
{-131569200 -18000 0 EST}
{73465200 -14400 1 EDT}
{89186400 -18000 0 EST}
{104914800 -14400 1 EDT}
{120636000 -18000 0 EST}
{136364400 -14400 1 EDT}
{152085600 -18000 0 EST}
{167814000 -14400 1 EDT}
{183535200 -18000 0 EST}
{199263600 -14400 1 EDT}
{215589600 -18000 0 EST}
{230713200 -14400 1 EDT}
{247039200 -18000 0 EST}
{262767600 -14400 1 EDT}
{278488800 -18000 0 EST}
{294217200 -14400 1 EDT}
{309938400 -18000 0 EST}
{325666800 -14400 1 EDT}
{341388000 -18000 0 EST}
{357116400 -14400 1 EDT}

View File

@@ -2,7 +2,7 @@
set TZData(:America/Miquelon) {
{-9223372036854775808 -13480 0 LMT}
{-1850328920 -14400 0 AST}
{-1847650520 -14400 0 AST}
{326001600 -10800 0 -03}
{536468400 -10800 0 -02}
{544597200 -7200 1 -02}

View File

@@ -89,158 +89,158 @@ set TZData(:America/Nuuk) {
{1635642000 -10800 0 -03}
{1648342800 -7200 1 -02}
{1667091600 -10800 0 -03}
{1679792400 -7200 1 -02}
{1698541200 -10800 0 -03}
{1711846800 -7200 1 -02}
{1729990800 -10800 0 -03}
{1743296400 -7200 1 -02}
{1761440400 -10800 0 -03}
{1774746000 -7200 1 -02}
{1792890000 -10800 0 -03}
{1806195600 -7200 1 -02}
{1824944400 -10800 0 -03}
{1837645200 -7200 1 -02}
{1856394000 -10800 0 -03}
{1869094800 -7200 1 -02}
{1887843600 -10800 0 -03}
{1901149200 -7200 1 -02}
{1919293200 -10800 0 -03}
{1932598800 -7200 1 -02}
{1950742800 -10800 0 -03}
{1964048400 -7200 1 -02}
{1982797200 -10800 0 -03}
{1995498000 -7200 1 -02}
{2014246800 -10800 0 -03}
{2026947600 -7200 1 -02}
{2045696400 -10800 0 -03}
{2058397200 -7200 1 -02}
{2077146000 -10800 0 -03}
{2090451600 -7200 1 -02}
{2108595600 -10800 0 -03}
{2121901200 -7200 1 -02}
{2140045200 -10800 0 -03}
{2153350800 -7200 1 -02}
{2172099600 -10800 0 -03}
{2184800400 -7200 1 -02}
{2203549200 -10800 0 -03}
{2216250000 -7200 1 -02}
{2234998800 -10800 0 -03}
{2248304400 -7200 1 -02}
{2266448400 -10800 0 -03}
{2279754000 -7200 1 -02}
{2297898000 -10800 0 -03}
{2311203600 -7200 1 -02}
{2329347600 -10800 0 -03}
{2342653200 -7200 1 -02}
{2361402000 -10800 0 -03}
{2374102800 -7200 1 -02}
{2392851600 -10800 0 -03}
{2405552400 -7200 1 -02}
{2424301200 -10800 0 -03}
{2437606800 -7200 1 -02}
{2455750800 -10800 0 -03}
{2469056400 -7200 1 -02}
{2487200400 -10800 0 -03}
{2500506000 -7200 1 -02}
{2519254800 -10800 0 -03}
{2531955600 -7200 1 -02}
{2550704400 -10800 0 -03}
{2563405200 -7200 1 -02}
{2582154000 -10800 0 -03}
{2595459600 -7200 1 -02}
{2613603600 -10800 0 -03}
{2626909200 -7200 1 -02}
{2645053200 -10800 0 -03}
{2658358800 -7200 1 -02}
{2676502800 -10800 0 -03}
{2689808400 -7200 1 -02}
{2708557200 -10800 0 -03}
{2721258000 -7200 1 -02}
{2740006800 -10800 0 -03}
{2752707600 -7200 1 -02}
{2771456400 -10800 0 -03}
{2784762000 -7200 1 -02}
{2802906000 -10800 0 -03}
{2816211600 -7200 1 -02}
{2834355600 -10800 0 -03}
{2847661200 -7200 1 -02}
{2866410000 -10800 0 -03}
{2879110800 -7200 1 -02}
{2897859600 -10800 0 -03}
{2910560400 -7200 1 -02}
{2929309200 -10800 0 -03}
{2942010000 -7200 1 -02}
{2960758800 -10800 0 -03}
{2974064400 -7200 1 -02}
{2992208400 -10800 0 -03}
{3005514000 -7200 1 -02}
{3023658000 -10800 0 -03}
{3036963600 -7200 1 -02}
{3055712400 -10800 0 -03}
{3068413200 -7200 1 -02}
{3087162000 -10800 0 -03}
{3099862800 -7200 1 -02}
{3118611600 -10800 0 -03}
{3131917200 -7200 1 -02}
{3150061200 -10800 0 -03}
{3163366800 -7200 1 -02}
{3181510800 -10800 0 -03}
{3194816400 -7200 1 -02}
{3212960400 -10800 0 -03}
{3226266000 -7200 1 -02}
{3245014800 -10800 0 -03}
{3257715600 -7200 1 -02}
{3276464400 -10800 0 -03}
{3289165200 -7200 1 -02}
{3307914000 -10800 0 -03}
{3321219600 -7200 1 -02}
{3339363600 -10800 0 -03}
{3352669200 -7200 1 -02}
{3370813200 -10800 0 -03}
{3384118800 -7200 1 -02}
{3402867600 -10800 0 -03}
{3415568400 -7200 1 -02}
{3434317200 -10800 0 -03}
{3447018000 -7200 1 -02}
{3465766800 -10800 0 -03}
{3479072400 -7200 1 -02}
{3497216400 -10800 0 -03}
{3510522000 -7200 1 -02}
{3528666000 -10800 0 -03}
{3541971600 -7200 1 -02}
{3560115600 -10800 0 -03}
{3573421200 -7200 1 -02}
{3592170000 -10800 0 -03}
{3604870800 -7200 1 -02}
{3623619600 -10800 0 -03}
{3636320400 -7200 1 -02}
{3655069200 -10800 0 -03}
{3668374800 -7200 1 -02}
{3686518800 -10800 0 -03}
{3699824400 -7200 1 -02}
{3717968400 -10800 0 -03}
{3731274000 -7200 1 -02}
{3750022800 -10800 0 -03}
{3762723600 -7200 1 -02}
{3781472400 -10800 0 -03}
{3794173200 -7200 1 -02}
{3812922000 -10800 0 -03}
{3825622800 -7200 1 -02}
{3844371600 -10800 0 -03}
{3857677200 -7200 1 -02}
{3875821200 -10800 0 -03}
{3889126800 -7200 1 -02}
{3907270800 -10800 0 -03}
{3920576400 -7200 1 -02}
{3939325200 -10800 0 -03}
{3952026000 -7200 1 -02}
{3970774800 -10800 0 -03}
{3983475600 -7200 1 -02}
{4002224400 -10800 0 -03}
{4015530000 -7200 1 -02}
{4033674000 -10800 0 -03}
{4046979600 -7200 1 -02}
{4065123600 -10800 0 -03}
{4078429200 -7200 1 -02}
{4096573200 -10800 0 -03}
{1679792400 -7200 0 -02}
{1698541200 -7200 0 -02}
{1711846800 -3600 1 -01}
{1729990800 -7200 0 -02}
{1743296400 -3600 1 -01}
{1761440400 -7200 0 -02}
{1774746000 -3600 1 -01}
{1792890000 -7200 0 -02}
{1806195600 -3600 1 -01}
{1824944400 -7200 0 -02}
{1837645200 -3600 1 -01}
{1856394000 -7200 0 -02}
{1869094800 -3600 1 -01}
{1887843600 -7200 0 -02}
{1901149200 -3600 1 -01}
{1919293200 -7200 0 -02}
{1932598800 -3600 1 -01}
{1950742800 -7200 0 -02}
{1964048400 -3600 1 -01}
{1982797200 -7200 0 -02}
{1995498000 -3600 1 -01}
{2014246800 -7200 0 -02}
{2026947600 -3600 1 -01}
{2045696400 -7200 0 -02}
{2058397200 -3600 1 -01}
{2077146000 -7200 0 -02}
{2090451600 -3600 1 -01}
{2108595600 -7200 0 -02}
{2121901200 -3600 1 -01}
{2140045200 -7200 0 -02}
{2153350800 -3600 1 -01}
{2172099600 -7200 0 -02}
{2184800400 -3600 1 -01}
{2203549200 -7200 0 -02}
{2216250000 -3600 1 -01}
{2234998800 -7200 0 -02}
{2248304400 -3600 1 -01}
{2266448400 -7200 0 -02}
{2279754000 -3600 1 -01}
{2297898000 -7200 0 -02}
{2311203600 -3600 1 -01}
{2329347600 -7200 0 -02}
{2342653200 -3600 1 -01}
{2361402000 -7200 0 -02}
{2374102800 -3600 1 -01}
{2392851600 -7200 0 -02}
{2405552400 -3600 1 -01}
{2424301200 -7200 0 -02}
{2437606800 -3600 1 -01}
{2455750800 -7200 0 -02}
{2469056400 -3600 1 -01}
{2487200400 -7200 0 -02}
{2500506000 -3600 1 -01}
{2519254800 -7200 0 -02}
{2531955600 -3600 1 -01}
{2550704400 -7200 0 -02}
{2563405200 -3600 1 -01}
{2582154000 -7200 0 -02}
{2595459600 -3600 1 -01}
{2613603600 -7200 0 -02}
{2626909200 -3600 1 -01}
{2645053200 -7200 0 -02}
{2658358800 -3600 1 -01}
{2676502800 -7200 0 -02}
{2689808400 -3600 1 -01}
{2708557200 -7200 0 -02}
{2721258000 -3600 1 -01}
{2740006800 -7200 0 -02}
{2752707600 -3600 1 -01}
{2771456400 -7200 0 -02}
{2784762000 -3600 1 -01}
{2802906000 -7200 0 -02}
{2816211600 -3600 1 -01}
{2834355600 -7200 0 -02}
{2847661200 -3600 1 -01}
{2866410000 -7200 0 -02}
{2879110800 -3600 1 -01}
{2897859600 -7200 0 -02}
{2910560400 -3600 1 -01}
{2929309200 -7200 0 -02}
{2942010000 -3600 1 -01}
{2960758800 -7200 0 -02}
{2974064400 -3600 1 -01}
{2992208400 -7200 0 -02}
{3005514000 -3600 1 -01}
{3023658000 -7200 0 -02}
{3036963600 -3600 1 -01}
{3055712400 -7200 0 -02}
{3068413200 -3600 1 -01}
{3087162000 -7200 0 -02}
{3099862800 -3600 1 -01}
{3118611600 -7200 0 -02}
{3131917200 -3600 1 -01}
{3150061200 -7200 0 -02}
{3163366800 -3600 1 -01}
{3181510800 -7200 0 -02}
{3194816400 -3600 1 -01}
{3212960400 -7200 0 -02}
{3226266000 -3600 1 -01}
{3245014800 -7200 0 -02}
{3257715600 -3600 1 -01}
{3276464400 -7200 0 -02}
{3289165200 -3600 1 -01}
{3307914000 -7200 0 -02}
{3321219600 -3600 1 -01}
{3339363600 -7200 0 -02}
{3352669200 -3600 1 -01}
{3370813200 -7200 0 -02}
{3384118800 -3600 1 -01}
{3402867600 -7200 0 -02}
{3415568400 -3600 1 -01}
{3434317200 -7200 0 -02}
{3447018000 -3600 1 -01}
{3465766800 -7200 0 -02}
{3479072400 -3600 1 -01}
{3497216400 -7200 0 -02}
{3510522000 -3600 1 -01}
{3528666000 -7200 0 -02}
{3541971600 -3600 1 -01}
{3560115600 -7200 0 -02}
{3573421200 -3600 1 -01}
{3592170000 -7200 0 -02}
{3604870800 -3600 1 -01}
{3623619600 -7200 0 -02}
{3636320400 -3600 1 -01}
{3655069200 -7200 0 -02}
{3668374800 -3600 1 -01}
{3686518800 -7200 0 -02}
{3699824400 -3600 1 -01}
{3717968400 -7200 0 -02}
{3731274000 -3600 1 -01}
{3750022800 -7200 0 -02}
{3762723600 -3600 1 -01}
{3781472400 -7200 0 -02}
{3794173200 -3600 1 -01}
{3812922000 -7200 0 -02}
{3825622800 -3600 1 -01}
{3844371600 -7200 0 -02}
{3857677200 -3600 1 -01}
{3875821200 -7200 0 -02}
{3889126800 -3600 1 -01}
{3907270800 -7200 0 -02}
{3920576400 -3600 1 -01}
{3939325200 -7200 0 -02}
{3952026000 -3600 1 -01}
{3970774800 -7200 0 -02}
{3983475600 -3600 1 -01}
{4002224400 -7200 0 -02}
{4015530000 -3600 1 -01}
{4033674000 -7200 0 -02}
{4046979600 -3600 1 -01}
{4065123600 -7200 0 -02}
{4078429200 -3600 1 -01}
{4096573200 -7200 0 -02}
}

View File

@@ -65,4 +65,159 @@ set TZData(:America/Ojinaga) {
{1636272000 -25200 0 MST}
{1647162000 -21600 1 MDT}
{1667120400 -21600 0 CST}
{1669788000 -21600 0 CST}
{1678608000 -18000 1 CDT}
{1699167600 -21600 0 CST}
{1710057600 -18000 1 CDT}
{1730617200 -21600 0 CST}
{1741507200 -18000 1 CDT}
{1762066800 -21600 0 CST}
{1772956800 -18000 1 CDT}
{1793516400 -21600 0 CST}
{1805011200 -18000 1 CDT}
{1825570800 -21600 0 CST}
{1836460800 -18000 1 CDT}
{1857020400 -21600 0 CST}
{1867910400 -18000 1 CDT}
{1888470000 -21600 0 CST}
{1899360000 -18000 1 CDT}
{1919919600 -21600 0 CST}
{1930809600 -18000 1 CDT}
{1951369200 -21600 0 CST}
{1962864000 -18000 1 CDT}
{1983423600 -21600 0 CST}
{1994313600 -18000 1 CDT}
{2014873200 -21600 0 CST}
{2025763200 -18000 1 CDT}
{2046322800 -21600 0 CST}
{2057212800 -18000 1 CDT}
{2077772400 -21600 0 CST}
{2088662400 -18000 1 CDT}
{2109222000 -21600 0 CST}
{2120112000 -18000 1 CDT}
{2140671600 -21600 0 CST}
{2152166400 -18000 1 CDT}
{2172726000 -21600 0 CST}
{2183616000 -18000 1 CDT}
{2204175600 -21600 0 CST}
{2215065600 -18000 1 CDT}
{2235625200 -21600 0 CST}
{2246515200 -18000 1 CDT}
{2267074800 -21600 0 CST}
{2277964800 -18000 1 CDT}
{2298524400 -21600 0 CST}
{2309414400 -18000 1 CDT}
{2329974000 -21600 0 CST}
{2341468800 -18000 1 CDT}
{2362028400 -21600 0 CST}
{2372918400 -18000 1 CDT}
{2393478000 -21600 0 CST}
{2404368000 -18000 1 CDT}
{2424927600 -21600 0 CST}
{2435817600 -18000 1 CDT}
{2456377200 -21600 0 CST}
{2467267200 -18000 1 CDT}
{2487826800 -21600 0 CST}
{2499321600 -18000 1 CDT}
{2519881200 -21600 0 CST}
{2530771200 -18000 1 CDT}
{2551330800 -21600 0 CST}
{2562220800 -18000 1 CDT}
{2582780400 -21600 0 CST}
{2593670400 -18000 1 CDT}
{2614230000 -21600 0 CST}
{2625120000 -18000 1 CDT}
{2645679600 -21600 0 CST}
{2656569600 -18000 1 CDT}
{2677129200 -21600 0 CST}
{2688624000 -18000 1 CDT}
{2709183600 -21600 0 CST}
{2720073600 -18000 1 CDT}
{2740633200 -21600 0 CST}
{2751523200 -18000 1 CDT}
{2772082800 -21600 0 CST}
{2782972800 -18000 1 CDT}
{2803532400 -21600 0 CST}
{2814422400 -18000 1 CDT}
{2834982000 -21600 0 CST}
{2846476800 -18000 1 CDT}
{2867036400 -21600 0 CST}
{2877926400 -18000 1 CDT}
{2898486000 -21600 0 CST}
{2909376000 -18000 1 CDT}
{2929935600 -21600 0 CST}
{2940825600 -18000 1 CDT}
{2961385200 -21600 0 CST}
{2972275200 -18000 1 CDT}
{2992834800 -21600 0 CST}
{3003724800 -18000 1 CDT}
{3024284400 -21600 0 CST}
{3035779200 -18000 1 CDT}
{3056338800 -21600 0 CST}
{3067228800 -18000 1 CDT}
{3087788400 -21600 0 CST}
{3098678400 -18000 1 CDT}
{3119238000 -21600 0 CST}
{3130128000 -18000 1 CDT}
{3150687600 -21600 0 CST}
{3161577600 -18000 1 CDT}
{3182137200 -21600 0 CST}
{3193027200 -18000 1 CDT}
{3213586800 -21600 0 CST}
{3225081600 -18000 1 CDT}
{3245641200 -21600 0 CST}
{3256531200 -18000 1 CDT}
{3277090800 -21600 0 CST}
{3287980800 -18000 1 CDT}
{3308540400 -21600 0 CST}
{3319430400 -18000 1 CDT}
{3339990000 -21600 0 CST}
{3350880000 -18000 1 CDT}
{3371439600 -21600 0 CST}
{3382934400 -18000 1 CDT}
{3403494000 -21600 0 CST}
{3414384000 -18000 1 CDT}
{3434943600 -21600 0 CST}
{3445833600 -18000 1 CDT}
{3466393200 -21600 0 CST}
{3477283200 -18000 1 CDT}
{3497842800 -21600 0 CST}
{3508732800 -18000 1 CDT}
{3529292400 -21600 0 CST}
{3540182400 -18000 1 CDT}
{3560742000 -21600 0 CST}
{3572236800 -18000 1 CDT}
{3592796400 -21600 0 CST}
{3603686400 -18000 1 CDT}
{3624246000 -21600 0 CST}
{3635136000 -18000 1 CDT}
{3655695600 -21600 0 CST}
{3666585600 -18000 1 CDT}
{3687145200 -21600 0 CST}
{3698035200 -18000 1 CDT}
{3718594800 -21600 0 CST}
{3730089600 -18000 1 CDT}
{3750649200 -21600 0 CST}
{3761539200 -18000 1 CDT}
{3782098800 -21600 0 CST}
{3792988800 -18000 1 CDT}
{3813548400 -21600 0 CST}
{3824438400 -18000 1 CDT}
{3844998000 -21600 0 CST}
{3855888000 -18000 1 CDT}
{3876447600 -21600 0 CST}
{3887337600 -18000 1 CDT}
{3907897200 -21600 0 CST}
{3919392000 -18000 1 CDT}
{3939951600 -21600 0 CST}
{3950841600 -18000 1 CDT}
{3971401200 -21600 0 CST}
{3982291200 -18000 1 CDT}
{4002850800 -21600 0 CST}
{4013740800 -18000 1 CDT}
{4034300400 -21600 0 CST}
{4045190400 -18000 1 CDT}
{4065750000 -21600 0 CST}
{4076640000 -18000 1 CDT}
{4097199600 -21600 0 CST}
}

View File

@@ -1,252 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Pangnirtung) {
{-9223372036854775808 0 0 -00}
{-1546300800 -14400 0 AST}
{-880221600 -10800 1 AWT}
{-769395600 -10800 1 APT}
{-765399600 -14400 0 AST}
{-147902400 -7200 1 ADDT}
{-131572800 -14400 0 AST}
{325663200 -10800 1 ADT}
{341384400 -14400 0 AST}
{357112800 -10800 1 ADT}
{372834000 -14400 0 AST}
{388562400 -10800 1 ADT}
{404888400 -14400 0 AST}
{420012000 -10800 1 ADT}
{436338000 -14400 0 AST}
{452066400 -10800 1 ADT}
{467787600 -14400 0 AST}
{483516000 -10800 1 ADT}
{499237200 -14400 0 AST}
{514965600 -10800 1 ADT}
{530686800 -14400 0 AST}
{544600800 -10800 1 ADT}
{562136400 -14400 0 AST}
{576050400 -10800 1 ADT}
{594190800 -14400 0 AST}
{607500000 -10800 1 ADT}
{625640400 -14400 0 AST}
{638949600 -10800 1 ADT}
{657090000 -14400 0 AST}
{671004000 -10800 1 ADT}
{688539600 -14400 0 AST}
{702453600 -10800 1 ADT}
{719989200 -14400 0 AST}
{733903200 -10800 1 ADT}
{752043600 -14400 0 AST}
{765352800 -10800 1 ADT}
{783493200 -14400 0 AST}
{796802400 -18000 0 EST}
{796806000 -14400 1 EDT}
{814946400 -18000 0 EST}
{828860400 -14400 1 EDT}
{846396000 -18000 0 EST}
{860310000 -14400 1 EDT}
{877845600 -18000 0 EST}
{891759600 -14400 1 EDT}
{909295200 -18000 0 EST}
{923209200 -14400 1 EDT}
{941353200 -21600 0 CST}
{954662400 -18000 1 CDT}
{972806400 -18000 0 EST}
{986108400 -14400 1 EDT}
{1004248800 -18000 0 EST}
{1018162800 -14400 1 EDT}
{1035698400 -18000 0 EST}
{1049612400 -14400 1 EDT}
{1067148000 -18000 0 EST}
{1081062000 -14400 1 EDT}
{1099202400 -18000 0 EST}
{1112511600 -14400 1 EDT}
{1130652000 -18000 0 EST}
{1143961200 -14400 1 EDT}
{1162101600 -18000 0 EST}
{1173596400 -14400 1 EDT}
{1194156000 -18000 0 EST}
{1205046000 -14400 1 EDT}
{1225605600 -18000 0 EST}
{1236495600 -14400 1 EDT}
{1257055200 -18000 0 EST}
{1268550000 -14400 1 EDT}
{1289109600 -18000 0 EST}
{1299999600 -14400 1 EDT}
{1320559200 -18000 0 EST}
{1331449200 -14400 1 EDT}
{1352008800 -18000 0 EST}
{1362898800 -14400 1 EDT}
{1383458400 -18000 0 EST}
{1394348400 -14400 1 EDT}
{1414908000 -18000 0 EST}
{1425798000 -14400 1 EDT}
{1446357600 -18000 0 EST}
{1457852400 -14400 1 EDT}
{1478412000 -18000 0 EST}
{1489302000 -14400 1 EDT}
{1509861600 -18000 0 EST}
{1520751600 -14400 1 EDT}
{1541311200 -18000 0 EST}
{1552201200 -14400 1 EDT}
{1572760800 -18000 0 EST}
{1583650800 -14400 1 EDT}
{1604210400 -18000 0 EST}
{1615705200 -14400 1 EDT}
{1636264800 -18000 0 EST}
{1647154800 -14400 1 EDT}
{1667714400 -18000 0 EST}
{1678604400 -14400 1 EDT}
{1699164000 -18000 0 EST}
{1710054000 -14400 1 EDT}
{1730613600 -18000 0 EST}
{1741503600 -14400 1 EDT}
{1762063200 -18000 0 EST}
{1772953200 -14400 1 EDT}
{1793512800 -18000 0 EST}
{1805007600 -14400 1 EDT}
{1825567200 -18000 0 EST}
{1836457200 -14400 1 EDT}
{1857016800 -18000 0 EST}
{1867906800 -14400 1 EDT}
{1888466400 -18000 0 EST}
{1899356400 -14400 1 EDT}
{1919916000 -18000 0 EST}
{1930806000 -14400 1 EDT}
{1951365600 -18000 0 EST}
{1962860400 -14400 1 EDT}
{1983420000 -18000 0 EST}
{1994310000 -14400 1 EDT}
{2014869600 -18000 0 EST}
{2025759600 -14400 1 EDT}
{2046319200 -18000 0 EST}
{2057209200 -14400 1 EDT}
{2077768800 -18000 0 EST}
{2088658800 -14400 1 EDT}
{2109218400 -18000 0 EST}
{2120108400 -14400 1 EDT}
{2140668000 -18000 0 EST}
{2152162800 -14400 1 EDT}
{2172722400 -18000 0 EST}
{2183612400 -14400 1 EDT}
{2204172000 -18000 0 EST}
{2215062000 -14400 1 EDT}
{2235621600 -18000 0 EST}
{2246511600 -14400 1 EDT}
{2267071200 -18000 0 EST}
{2277961200 -14400 1 EDT}
{2298520800 -18000 0 EST}
{2309410800 -14400 1 EDT}
{2329970400 -18000 0 EST}
{2341465200 -14400 1 EDT}
{2362024800 -18000 0 EST}
{2372914800 -14400 1 EDT}
{2393474400 -18000 0 EST}
{2404364400 -14400 1 EDT}
{2424924000 -18000 0 EST}
{2435814000 -14400 1 EDT}
{2456373600 -18000 0 EST}
{2467263600 -14400 1 EDT}
{2487823200 -18000 0 EST}
{2499318000 -14400 1 EDT}
{2519877600 -18000 0 EST}
{2530767600 -14400 1 EDT}
{2551327200 -18000 0 EST}
{2562217200 -14400 1 EDT}
{2582776800 -18000 0 EST}
{2593666800 -14400 1 EDT}
{2614226400 -18000 0 EST}
{2625116400 -14400 1 EDT}
{2645676000 -18000 0 EST}
{2656566000 -14400 1 EDT}
{2677125600 -18000 0 EST}
{2688620400 -14400 1 EDT}
{2709180000 -18000 0 EST}
{2720070000 -14400 1 EDT}
{2740629600 -18000 0 EST}
{2751519600 -14400 1 EDT}
{2772079200 -18000 0 EST}
{2782969200 -14400 1 EDT}
{2803528800 -18000 0 EST}
{2814418800 -14400 1 EDT}
{2834978400 -18000 0 EST}
{2846473200 -14400 1 EDT}
{2867032800 -18000 0 EST}
{2877922800 -14400 1 EDT}
{2898482400 -18000 0 EST}
{2909372400 -14400 1 EDT}
{2929932000 -18000 0 EST}
{2940822000 -14400 1 EDT}
{2961381600 -18000 0 EST}
{2972271600 -14400 1 EDT}
{2992831200 -18000 0 EST}
{3003721200 -14400 1 EDT}
{3024280800 -18000 0 EST}
{3035775600 -14400 1 EDT}
{3056335200 -18000 0 EST}
{3067225200 -14400 1 EDT}
{3087784800 -18000 0 EST}
{3098674800 -14400 1 EDT}
{3119234400 -18000 0 EST}
{3130124400 -14400 1 EDT}
{3150684000 -18000 0 EST}
{3161574000 -14400 1 EDT}
{3182133600 -18000 0 EST}
{3193023600 -14400 1 EDT}
{3213583200 -18000 0 EST}
{3225078000 -14400 1 EDT}
{3245637600 -18000 0 EST}
{3256527600 -14400 1 EDT}
{3277087200 -18000 0 EST}
{3287977200 -14400 1 EDT}
{3308536800 -18000 0 EST}
{3319426800 -14400 1 EDT}
{3339986400 -18000 0 EST}
{3350876400 -14400 1 EDT}
{3371436000 -18000 0 EST}
{3382930800 -14400 1 EDT}
{3403490400 -18000 0 EST}
{3414380400 -14400 1 EDT}
{3434940000 -18000 0 EST}
{3445830000 -14400 1 EDT}
{3466389600 -18000 0 EST}
{3477279600 -14400 1 EDT}
{3497839200 -18000 0 EST}
{3508729200 -14400 1 EDT}
{3529288800 -18000 0 EST}
{3540178800 -14400 1 EDT}
{3560738400 -18000 0 EST}
{3572233200 -14400 1 EDT}
{3592792800 -18000 0 EST}
{3603682800 -14400 1 EDT}
{3624242400 -18000 0 EST}
{3635132400 -14400 1 EDT}
{3655692000 -18000 0 EST}
{3666582000 -14400 1 EDT}
{3687141600 -18000 0 EST}
{3698031600 -14400 1 EDT}
{3718591200 -18000 0 EST}
{3730086000 -14400 1 EDT}
{3750645600 -18000 0 EST}
{3761535600 -14400 1 EDT}
{3782095200 -18000 0 EST}
{3792985200 -14400 1 EDT}
{3813544800 -18000 0 EST}
{3824434800 -14400 1 EDT}
{3844994400 -18000 0 EST}
{3855884400 -14400 1 EDT}
{3876444000 -18000 0 EST}
{3887334000 -14400 1 EDT}
{3907893600 -18000 0 EST}
{3919388400 -14400 1 EDT}
{3939948000 -18000 0 EST}
{3950838000 -14400 1 EDT}
{3971397600 -18000 0 EST}
{3982287600 -14400 1 EDT}
{4002847200 -18000 0 EST}
{4013737200 -14400 1 EDT}
{4034296800 -18000 0 EST}
{4045186800 -14400 1 EDT}
{4065746400 -18000 0 EST}
{4076636400 -14400 1 EDT}
{4097196000 -18000 0 EST}
if {![info exists TZData(America/Iqaluit)]} {
LoadTimeZoneFile America/Iqaluit
}
set TZData(:America/Pangnirtung) $TZData(:America/Iqaluit)

View File

@@ -3,8 +3,22 @@
set TZData(:America/Rankin_Inlet) {
{-9223372036854775808 0 0 -00}
{-410227200 -21600 0 CST}
{-147895200 -14400 1 CDDT}
{-131565600 -21600 0 CST}
{73468800 -18000 1 CDT}
{89190000 -21600 0 CST}
{104918400 -18000 1 CDT}
{120639600 -21600 0 CST}
{136368000 -18000 1 CDT}
{152089200 -21600 0 CST}
{167817600 -18000 1 CDT}
{183538800 -21600 0 CST}
{199267200 -18000 1 CDT}
{215593200 -21600 0 CST}
{230716800 -18000 1 CDT}
{247042800 -21600 0 CST}
{262771200 -18000 1 CDT}
{278492400 -21600 0 CST}
{294220800 -18000 1 CDT}
{309942000 -21600 0 CST}
{325670400 -18000 1 CDT}
{341391600 -21600 0 CST}
{357120000 -18000 1 CDT}

View File

@@ -3,8 +3,22 @@
set TZData(:America/Resolute) {
{-9223372036854775808 0 0 -00}
{-704937600 -21600 0 CST}
{-147895200 -14400 1 CDDT}
{-131565600 -21600 0 CST}
{73468800 -18000 1 CDT}
{89190000 -21600 0 CST}
{104918400 -18000 1 CDT}
{120639600 -21600 0 CST}
{136368000 -18000 1 CDT}
{152089200 -21600 0 CST}
{167817600 -18000 1 CDT}
{183538800 -21600 0 CST}
{199267200 -18000 1 CDT}
{215593200 -21600 0 CST}
{230716800 -18000 1 CDT}
{247042800 -21600 0 CST}
{262771200 -18000 1 CDT}
{278492400 -21600 0 CST}
{294220800 -18000 1 CDT}
{309942000 -21600 0 CST}
{325670400 -18000 1 CDT}
{341391600 -21600 0 CST}
{357120000 -18000 1 CDT}

View File

@@ -91,156 +91,156 @@ set TZData(:America/Scoresbysund) {
{1667091600 -3600 0 -01}
{1679792400 0 1 +00}
{1698541200 -3600 0 -01}
{1711846800 0 1 +00}
{1729990800 -3600 0 -01}
{1743296400 0 1 +00}
{1761440400 -3600 0 -01}
{1774746000 0 1 +00}
{1792890000 -3600 0 -01}
{1806195600 0 1 +00}
{1824944400 -3600 0 -01}
{1837645200 0 1 +00}
{1856394000 -3600 0 -01}
{1869094800 0 1 +00}
{1887843600 -3600 0 -01}
{1901149200 0 1 +00}
{1919293200 -3600 0 -01}
{1932598800 0 1 +00}
{1950742800 -3600 0 -01}
{1964048400 0 1 +00}
{1982797200 -3600 0 -01}
{1995498000 0 1 +00}
{2014246800 -3600 0 -01}
{2026947600 0 1 +00}
{2045696400 -3600 0 -01}
{2058397200 0 1 +00}
{2077146000 -3600 0 -01}
{2090451600 0 1 +00}
{2108595600 -3600 0 -01}
{2121901200 0 1 +00}
{2140045200 -3600 0 -01}
{2153350800 0 1 +00}
{2172099600 -3600 0 -01}
{2184800400 0 1 +00}
{2203549200 -3600 0 -01}
{2216250000 0 1 +00}
{2234998800 -3600 0 -01}
{2248304400 0 1 +00}
{2266448400 -3600 0 -01}
{2279754000 0 1 +00}
{2297898000 -3600 0 -01}
{2311203600 0 1 +00}
{2329347600 -3600 0 -01}
{2342653200 0 1 +00}
{2361402000 -3600 0 -01}
{2374102800 0 1 +00}
{2392851600 -3600 0 -01}
{2405552400 0 1 +00}
{2424301200 -3600 0 -01}
{2437606800 0 1 +00}
{2455750800 -3600 0 -01}
{2469056400 0 1 +00}
{2487200400 -3600 0 -01}
{2500506000 0 1 +00}
{2519254800 -3600 0 -01}
{2531955600 0 1 +00}
{2550704400 -3600 0 -01}
{2563405200 0 1 +00}
{2582154000 -3600 0 -01}
{2595459600 0 1 +00}
{2613603600 -3600 0 -01}
{2626909200 0 1 +00}
{2645053200 -3600 0 -01}
{2658358800 0 1 +00}
{2676502800 -3600 0 -01}
{2689808400 0 1 +00}
{2708557200 -3600 0 -01}
{2721258000 0 1 +00}
{2740006800 -3600 0 -01}
{2752707600 0 1 +00}
{2771456400 -3600 0 -01}
{2784762000 0 1 +00}
{2802906000 -3600 0 -01}
{2816211600 0 1 +00}
{2834355600 -3600 0 -01}
{2847661200 0 1 +00}
{2866410000 -3600 0 -01}
{2879110800 0 1 +00}
{2897859600 -3600 0 -01}
{2910560400 0 1 +00}
{2929309200 -3600 0 -01}
{2942010000 0 1 +00}
{2960758800 -3600 0 -01}
{2974064400 0 1 +00}
{2992208400 -3600 0 -01}
{3005514000 0 1 +00}
{3023658000 -3600 0 -01}
{3036963600 0 1 +00}
{3055712400 -3600 0 -01}
{3068413200 0 1 +00}
{3087162000 -3600 0 -01}
{3099862800 0 1 +00}
{3118611600 -3600 0 -01}
{3131917200 0 1 +00}
{3150061200 -3600 0 -01}
{3163366800 0 1 +00}
{3181510800 -3600 0 -01}
{3194816400 0 1 +00}
{3212960400 -3600 0 -01}
{3226266000 0 1 +00}
{3245014800 -3600 0 -01}
{3257715600 0 1 +00}
{3276464400 -3600 0 -01}
{3289165200 0 1 +00}
{3307914000 -3600 0 -01}
{3321219600 0 1 +00}
{3339363600 -3600 0 -01}
{3352669200 0 1 +00}
{3370813200 -3600 0 -01}
{3384118800 0 1 +00}
{3402867600 -3600 0 -01}
{3415568400 0 1 +00}
{3434317200 -3600 0 -01}
{3447018000 0 1 +00}
{3465766800 -3600 0 -01}
{3479072400 0 1 +00}
{3497216400 -3600 0 -01}
{3510522000 0 1 +00}
{3528666000 -3600 0 -01}
{3541971600 0 1 +00}
{3560115600 -3600 0 -01}
{3573421200 0 1 +00}
{3592170000 -3600 0 -01}
{3604870800 0 1 +00}
{3623619600 -3600 0 -01}
{3636320400 0 1 +00}
{3655069200 -3600 0 -01}
{3668374800 0 1 +00}
{3686518800 -3600 0 -01}
{3699824400 0 1 +00}
{3717968400 -3600 0 -01}
{3731274000 0 1 +00}
{3750022800 -3600 0 -01}
{3762723600 0 1 +00}
{3781472400 -3600 0 -01}
{3794173200 0 1 +00}
{3812922000 -3600 0 -01}
{3825622800 0 1 +00}
{3844371600 -3600 0 -01}
{3857677200 0 1 +00}
{3875821200 -3600 0 -01}
{3889126800 0 1 +00}
{3907270800 -3600 0 -01}
{3920576400 0 1 +00}
{3939325200 -3600 0 -01}
{3952026000 0 1 +00}
{3970774800 -3600 0 -01}
{3983475600 0 1 +00}
{4002224400 -3600 0 -01}
{4015530000 0 1 +00}
{4033674000 -3600 0 -01}
{4046979600 0 1 +00}
{4065123600 -3600 0 -01}
{4078429200 0 1 +00}
{4096573200 -3600 0 -01}
{1711846800 -3600 0 -01}
{1729990800 -7200 0 -02}
{1743296400 -3600 1 -01}
{1761440400 -7200 0 -02}
{1774746000 -3600 1 -01}
{1792890000 -7200 0 -02}
{1806195600 -3600 1 -01}
{1824944400 -7200 0 -02}
{1837645200 -3600 1 -01}
{1856394000 -7200 0 -02}
{1869094800 -3600 1 -01}
{1887843600 -7200 0 -02}
{1901149200 -3600 1 -01}
{1919293200 -7200 0 -02}
{1932598800 -3600 1 -01}
{1950742800 -7200 0 -02}
{1964048400 -3600 1 -01}
{1982797200 -7200 0 -02}
{1995498000 -3600 1 -01}
{2014246800 -7200 0 -02}
{2026947600 -3600 1 -01}
{2045696400 -7200 0 -02}
{2058397200 -3600 1 -01}
{2077146000 -7200 0 -02}
{2090451600 -3600 1 -01}
{2108595600 -7200 0 -02}
{2121901200 -3600 1 -01}
{2140045200 -7200 0 -02}
{2153350800 -3600 1 -01}
{2172099600 -7200 0 -02}
{2184800400 -3600 1 -01}
{2203549200 -7200 0 -02}
{2216250000 -3600 1 -01}
{2234998800 -7200 0 -02}
{2248304400 -3600 1 -01}
{2266448400 -7200 0 -02}
{2279754000 -3600 1 -01}
{2297898000 -7200 0 -02}
{2311203600 -3600 1 -01}
{2329347600 -7200 0 -02}
{2342653200 -3600 1 -01}
{2361402000 -7200 0 -02}
{2374102800 -3600 1 -01}
{2392851600 -7200 0 -02}
{2405552400 -3600 1 -01}
{2424301200 -7200 0 -02}
{2437606800 -3600 1 -01}
{2455750800 -7200 0 -02}
{2469056400 -3600 1 -01}
{2487200400 -7200 0 -02}
{2500506000 -3600 1 -01}
{2519254800 -7200 0 -02}
{2531955600 -3600 1 -01}
{2550704400 -7200 0 -02}
{2563405200 -3600 1 -01}
{2582154000 -7200 0 -02}
{2595459600 -3600 1 -01}
{2613603600 -7200 0 -02}
{2626909200 -3600 1 -01}
{2645053200 -7200 0 -02}
{2658358800 -3600 1 -01}
{2676502800 -7200 0 -02}
{2689808400 -3600 1 -01}
{2708557200 -7200 0 -02}
{2721258000 -3600 1 -01}
{2740006800 -7200 0 -02}
{2752707600 -3600 1 -01}
{2771456400 -7200 0 -02}
{2784762000 -3600 1 -01}
{2802906000 -7200 0 -02}
{2816211600 -3600 1 -01}
{2834355600 -7200 0 -02}
{2847661200 -3600 1 -01}
{2866410000 -7200 0 -02}
{2879110800 -3600 1 -01}
{2897859600 -7200 0 -02}
{2910560400 -3600 1 -01}
{2929309200 -7200 0 -02}
{2942010000 -3600 1 -01}
{2960758800 -7200 0 -02}
{2974064400 -3600 1 -01}
{2992208400 -7200 0 -02}
{3005514000 -3600 1 -01}
{3023658000 -7200 0 -02}
{3036963600 -3600 1 -01}
{3055712400 -7200 0 -02}
{3068413200 -3600 1 -01}
{3087162000 -7200 0 -02}
{3099862800 -3600 1 -01}
{3118611600 -7200 0 -02}
{3131917200 -3600 1 -01}
{3150061200 -7200 0 -02}
{3163366800 -3600 1 -01}
{3181510800 -7200 0 -02}
{3194816400 -3600 1 -01}
{3212960400 -7200 0 -02}
{3226266000 -3600 1 -01}
{3245014800 -7200 0 -02}
{3257715600 -3600 1 -01}
{3276464400 -7200 0 -02}
{3289165200 -3600 1 -01}
{3307914000 -7200 0 -02}
{3321219600 -3600 1 -01}
{3339363600 -7200 0 -02}
{3352669200 -3600 1 -01}
{3370813200 -7200 0 -02}
{3384118800 -3600 1 -01}
{3402867600 -7200 0 -02}
{3415568400 -3600 1 -01}
{3434317200 -7200 0 -02}
{3447018000 -3600 1 -01}
{3465766800 -7200 0 -02}
{3479072400 -3600 1 -01}
{3497216400 -7200 0 -02}
{3510522000 -3600 1 -01}
{3528666000 -7200 0 -02}
{3541971600 -3600 1 -01}
{3560115600 -7200 0 -02}
{3573421200 -3600 1 -01}
{3592170000 -7200 0 -02}
{3604870800 -3600 1 -01}
{3623619600 -7200 0 -02}
{3636320400 -3600 1 -01}
{3655069200 -7200 0 -02}
{3668374800 -3600 1 -01}
{3686518800 -7200 0 -02}
{3699824400 -3600 1 -01}
{3717968400 -7200 0 -02}
{3731274000 -3600 1 -01}
{3750022800 -7200 0 -02}
{3762723600 -3600 1 -01}
{3781472400 -7200 0 -02}
{3794173200 -3600 1 -01}
{3812922000 -7200 0 -02}
{3825622800 -3600 1 -01}
{3844371600 -7200 0 -02}
{3857677200 -3600 1 -01}
{3875821200 -7200 0 -02}
{3889126800 -3600 1 -01}
{3907270800 -7200 0 -02}
{3920576400 -3600 1 -01}
{3939325200 -7200 0 -02}
{3952026000 -3600 1 -01}
{3970774800 -7200 0 -02}
{3983475600 -3600 1 -01}
{4002224400 -7200 0 -02}
{4015530000 -3600 1 -01}
{4033674000 -7200 0 -02}
{4046979600 -3600 1 -01}
{4065123600 -7200 0 -02}
{4078429200 -3600 1 -01}
{4096573200 -7200 0 -02}
}

View File

@@ -55,12 +55,12 @@ set TZData(:America/Toronto) {
{-757364400 -18000 0 EST}
{-747248400 -14400 1 EDT}
{-733946400 -18000 0 EST}
{-715806000 -14400 1 EDT}
{-702504000 -18000 0 EST}
{-684356400 -14400 1 EDT}
{-671054400 -18000 0 EST}
{-652906800 -14400 1 EDT}
{-634161600 -18000 0 EST}
{-715798800 -14400 1 EDT}
{-702496800 -18000 0 EST}
{-684349200 -14400 1 EDT}
{-671047200 -18000 0 EST}
{-652899600 -14400 1 EDT}
{-634154400 -18000 0 EST}
{-620845200 -14400 1 EDT}
{-602704800 -18000 0 EST}
{-589395600 -14400 1 EDT}

View File

@@ -10,8 +10,10 @@ set TZData(:America/Whitehorse) {
{-880203600 -28800 1 YWT}
{-769395600 -28800 1 YPT}
{-765381600 -32400 0 YST}
{-157734000 -32400 0 YST}
{-147884400 -25200 1 YDDT}
{-131554800 -32400 0 YST}
{-121273200 -28800 0 PST}
{315561600 -28800 0 PST}
{325677600 -25200 1 PDT}
{341398800 -28800 0 PST}

View File

@@ -1,252 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Yellowknife) {
{-9223372036854775808 0 0 -00}
{-1104537600 -25200 0 MST}
{-880210800 -21600 1 MWT}
{-769395600 -21600 1 MPT}
{-765388800 -25200 0 MST}
{-147891600 -18000 1 MDDT}
{-131562000 -25200 0 MST}
{315558000 -25200 0 MST}
{325674000 -21600 1 MDT}
{341395200 -25200 0 MST}
{357123600 -21600 1 MDT}
{372844800 -25200 0 MST}
{388573200 -21600 1 MDT}
{404899200 -25200 0 MST}
{420022800 -21600 1 MDT}
{436348800 -25200 0 MST}
{452077200 -21600 1 MDT}
{467798400 -25200 0 MST}
{483526800 -21600 1 MDT}
{499248000 -25200 0 MST}
{514976400 -21600 1 MDT}
{530697600 -25200 0 MST}
{544611600 -21600 1 MDT}
{562147200 -25200 0 MST}
{576061200 -21600 1 MDT}
{594201600 -25200 0 MST}
{607510800 -21600 1 MDT}
{625651200 -25200 0 MST}
{638960400 -21600 1 MDT}
{657100800 -25200 0 MST}
{671014800 -21600 1 MDT}
{688550400 -25200 0 MST}
{702464400 -21600 1 MDT}
{720000000 -25200 0 MST}
{733914000 -21600 1 MDT}
{752054400 -25200 0 MST}
{765363600 -21600 1 MDT}
{783504000 -25200 0 MST}
{796813200 -21600 1 MDT}
{814953600 -25200 0 MST}
{828867600 -21600 1 MDT}
{846403200 -25200 0 MST}
{860317200 -21600 1 MDT}
{877852800 -25200 0 MST}
{891766800 -21600 1 MDT}
{909302400 -25200 0 MST}
{923216400 -21600 1 MDT}
{941356800 -25200 0 MST}
{954666000 -21600 1 MDT}
{972806400 -25200 0 MST}
{986115600 -21600 1 MDT}
{1004256000 -25200 0 MST}
{1018170000 -21600 1 MDT}
{1035705600 -25200 0 MST}
{1049619600 -21600 1 MDT}
{1067155200 -25200 0 MST}
{1081069200 -21600 1 MDT}
{1099209600 -25200 0 MST}
{1112518800 -21600 1 MDT}
{1130659200 -25200 0 MST}
{1143968400 -21600 1 MDT}
{1162108800 -25200 0 MST}
{1173603600 -21600 1 MDT}
{1194163200 -25200 0 MST}
{1205053200 -21600 1 MDT}
{1225612800 -25200 0 MST}
{1236502800 -21600 1 MDT}
{1257062400 -25200 0 MST}
{1268557200 -21600 1 MDT}
{1289116800 -25200 0 MST}
{1300006800 -21600 1 MDT}
{1320566400 -25200 0 MST}
{1331456400 -21600 1 MDT}
{1352016000 -25200 0 MST}
{1362906000 -21600 1 MDT}
{1383465600 -25200 0 MST}
{1394355600 -21600 1 MDT}
{1414915200 -25200 0 MST}
{1425805200 -21600 1 MDT}
{1446364800 -25200 0 MST}
{1457859600 -21600 1 MDT}
{1478419200 -25200 0 MST}
{1489309200 -21600 1 MDT}
{1509868800 -25200 0 MST}
{1520758800 -21600 1 MDT}
{1541318400 -25200 0 MST}
{1552208400 -21600 1 MDT}
{1572768000 -25200 0 MST}
{1583658000 -21600 1 MDT}
{1604217600 -25200 0 MST}
{1615712400 -21600 1 MDT}
{1636272000 -25200 0 MST}
{1647162000 -21600 1 MDT}
{1667721600 -25200 0 MST}
{1678611600 -21600 1 MDT}
{1699171200 -25200 0 MST}
{1710061200 -21600 1 MDT}
{1730620800 -25200 0 MST}
{1741510800 -21600 1 MDT}
{1762070400 -25200 0 MST}
{1772960400 -21600 1 MDT}
{1793520000 -25200 0 MST}
{1805014800 -21600 1 MDT}
{1825574400 -25200 0 MST}
{1836464400 -21600 1 MDT}
{1857024000 -25200 0 MST}
{1867914000 -21600 1 MDT}
{1888473600 -25200 0 MST}
{1899363600 -21600 1 MDT}
{1919923200 -25200 0 MST}
{1930813200 -21600 1 MDT}
{1951372800 -25200 0 MST}
{1962867600 -21600 1 MDT}
{1983427200 -25200 0 MST}
{1994317200 -21600 1 MDT}
{2014876800 -25200 0 MST}
{2025766800 -21600 1 MDT}
{2046326400 -25200 0 MST}
{2057216400 -21600 1 MDT}
{2077776000 -25200 0 MST}
{2088666000 -21600 1 MDT}
{2109225600 -25200 0 MST}
{2120115600 -21600 1 MDT}
{2140675200 -25200 0 MST}
{2152170000 -21600 1 MDT}
{2172729600 -25200 0 MST}
{2183619600 -21600 1 MDT}
{2204179200 -25200 0 MST}
{2215069200 -21600 1 MDT}
{2235628800 -25200 0 MST}
{2246518800 -21600 1 MDT}
{2267078400 -25200 0 MST}
{2277968400 -21600 1 MDT}
{2298528000 -25200 0 MST}
{2309418000 -21600 1 MDT}
{2329977600 -25200 0 MST}
{2341472400 -21600 1 MDT}
{2362032000 -25200 0 MST}
{2372922000 -21600 1 MDT}
{2393481600 -25200 0 MST}
{2404371600 -21600 1 MDT}
{2424931200 -25200 0 MST}
{2435821200 -21600 1 MDT}
{2456380800 -25200 0 MST}
{2467270800 -21600 1 MDT}
{2487830400 -25200 0 MST}
{2499325200 -21600 1 MDT}
{2519884800 -25200 0 MST}
{2530774800 -21600 1 MDT}
{2551334400 -25200 0 MST}
{2562224400 -21600 1 MDT}
{2582784000 -25200 0 MST}
{2593674000 -21600 1 MDT}
{2614233600 -25200 0 MST}
{2625123600 -21600 1 MDT}
{2645683200 -25200 0 MST}
{2656573200 -21600 1 MDT}
{2677132800 -25200 0 MST}
{2688627600 -21600 1 MDT}
{2709187200 -25200 0 MST}
{2720077200 -21600 1 MDT}
{2740636800 -25200 0 MST}
{2751526800 -21600 1 MDT}
{2772086400 -25200 0 MST}
{2782976400 -21600 1 MDT}
{2803536000 -25200 0 MST}
{2814426000 -21600 1 MDT}
{2834985600 -25200 0 MST}
{2846480400 -21600 1 MDT}
{2867040000 -25200 0 MST}
{2877930000 -21600 1 MDT}
{2898489600 -25200 0 MST}
{2909379600 -21600 1 MDT}
{2929939200 -25200 0 MST}
{2940829200 -21600 1 MDT}
{2961388800 -25200 0 MST}
{2972278800 -21600 1 MDT}
{2992838400 -25200 0 MST}
{3003728400 -21600 1 MDT}
{3024288000 -25200 0 MST}
{3035782800 -21600 1 MDT}
{3056342400 -25200 0 MST}
{3067232400 -21600 1 MDT}
{3087792000 -25200 0 MST}
{3098682000 -21600 1 MDT}
{3119241600 -25200 0 MST}
{3130131600 -21600 1 MDT}
{3150691200 -25200 0 MST}
{3161581200 -21600 1 MDT}
{3182140800 -25200 0 MST}
{3193030800 -21600 1 MDT}
{3213590400 -25200 0 MST}
{3225085200 -21600 1 MDT}
{3245644800 -25200 0 MST}
{3256534800 -21600 1 MDT}
{3277094400 -25200 0 MST}
{3287984400 -21600 1 MDT}
{3308544000 -25200 0 MST}
{3319434000 -21600 1 MDT}
{3339993600 -25200 0 MST}
{3350883600 -21600 1 MDT}
{3371443200 -25200 0 MST}
{3382938000 -21600 1 MDT}
{3403497600 -25200 0 MST}
{3414387600 -21600 1 MDT}
{3434947200 -25200 0 MST}
{3445837200 -21600 1 MDT}
{3466396800 -25200 0 MST}
{3477286800 -21600 1 MDT}
{3497846400 -25200 0 MST}
{3508736400 -21600 1 MDT}
{3529296000 -25200 0 MST}
{3540186000 -21600 1 MDT}
{3560745600 -25200 0 MST}
{3572240400 -21600 1 MDT}
{3592800000 -25200 0 MST}
{3603690000 -21600 1 MDT}
{3624249600 -25200 0 MST}
{3635139600 -21600 1 MDT}
{3655699200 -25200 0 MST}
{3666589200 -21600 1 MDT}
{3687148800 -25200 0 MST}
{3698038800 -21600 1 MDT}
{3718598400 -25200 0 MST}
{3730093200 -21600 1 MDT}
{3750652800 -25200 0 MST}
{3761542800 -21600 1 MDT}
{3782102400 -25200 0 MST}
{3792992400 -21600 1 MDT}
{3813552000 -25200 0 MST}
{3824442000 -21600 1 MDT}
{3845001600 -25200 0 MST}
{3855891600 -21600 1 MDT}
{3876451200 -25200 0 MST}
{3887341200 -21600 1 MDT}
{3907900800 -25200 0 MST}
{3919395600 -21600 1 MDT}
{3939955200 -25200 0 MST}
{3950845200 -21600 1 MDT}
{3971404800 -25200 0 MST}
{3982294800 -21600 1 MDT}
{4002854400 -25200 0 MST}
{4013744400 -21600 1 MDT}
{4034304000 -25200 0 MST}
{4045194000 -21600 1 MDT}
{4065753600 -25200 0 MST}
{4076643600 -21600 1 MDT}
{4097203200 -25200 0 MST}
if {![info exists TZData(America/Edmonton)]} {
LoadTimeZoneFile America/Edmonton
}
set TZData(:America/Yellowknife) $TZData(:America/Edmonton)

View File

@@ -14,4 +14,9 @@ set TZData(:Antarctica/Casey) {
{1570129200 39600 0 +11}
{1583596800 28800 0 +08}
{1601740860 39600 0 +11}
{1615640400 28800 0 +08}
{1633190460 39600 0 +11}
{1647090000 28800 0 +08}
{1664640060 39600 0 +11}
{1678291200 28800 0 +08}
}

View File

@@ -1,5 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
if {![info exists TZData(Asia/Urumqi)]} {
LoadTimeZoneFile Asia/Urumqi
set TZData(:Antarctica/Vostok) {
{-9223372036854775808 0 0 -00}
{-380073600 25200 0 +07}
{760035600 0 0 -00}
{783648000 25200 0 +07}
{1702839600 18000 0 +05}
}
set TZData(:Antarctica/Vostok) $TZData(:Asia/Urumqi)

View File

@@ -54,4 +54,5 @@ set TZData(:Asia/Almaty) {
{1067112000 21600 0 +06}
{1080417600 25200 1 +06}
{1099166400 21600 0 +06}
{1709229600 18000 0 +05}
}

View File

@@ -127,11 +127,11 @@ set TZData(:Asia/Gaza) {
{1635458400 7200 0 EET}
{1648332000 10800 1 EEST}
{1666998000 7200 0 EET}
{1679702400 10800 1 EEST}
{1682726400 10800 1 EEST}
{1698447600 7200 0 EET}
{1711756800 10800 1 EEST}
{1713571200 10800 1 EEST}
{1729897200 7200 0 EET}
{1743206400 10800 1 EEST}
{1744416000 10800 1 EEST}
{1761346800 7200 0 EET}
{1774656000 10800 1 EEST}
{1792796400 7200 0 EET}
@@ -154,50 +154,80 @@ set TZData(:Asia/Gaza) {
{2058307200 10800 1 EEST}
{2077052400 7200 0 EET}
{2090361600 10800 1 EEST}
{2108502000 7200 0 EET}
{2107897200 7200 0 EET}
{2121811200 10800 1 EEST}
{2139951600 7200 0 EET}
{2138742000 7200 0 EET}
{2153260800 10800 1 EEST}
{2172006000 7200 0 EET}
{2168982000 7200 0 EET}
{2184710400 10800 1 EEST}
{2203455600 7200 0 EET}
{2199826800 7200 0 EET}
{2216160000 10800 1 EEST}
{2230066800 7200 0 EET}
{2234304000 10800 1 EEST}
{2234905200 7200 0 EET}
{2248214400 10800 1 EEST}
{2260911600 7200 0 EET}
{2264544000 10800 1 EEST}
{2266354800 7200 0 EET}
{2279664000 10800 1 EEST}
{2291756400 7200 0 EET}
{2295388800 10800 1 EEST}
{2297804400 7200 0 EET}
{2311113600 10800 1 EEST}
{2321996400 7200 0 EET}
{2326233600 10800 1 EEST}
{2329254000 7200 0 EET}
{2342563200 10800 1 EEST}
{2352841200 7200 0 EET}
{2356473600 10800 1 EEST}
{2361308400 7200 0 EET}
{2374012800 10800 1 EEST}
{2383686000 7200 0 EET}
{2387318400 10800 1 EEST}
{2392758000 7200 0 EET}
{2405462400 10800 1 EEST}
{2413926000 7200 0 EET}
{2418163200 10800 1 EEST}
{2424207600 7200 0 EET}
{2437516800 10800 1 EEST}
{2444770800 7200 0 EET}
{2448403200 10800 1 EEST}
{2455657200 7200 0 EET}
{2468966400 10800 1 EEST}
{2475010800 7200 0 EET}
{2479248000 10800 1 EEST}
{2487106800 7200 0 EET}
{2500416000 10800 1 EEST}
{2505855600 7200 0 EET}
{2509488000 10800 1 EEST}
{2519161200 7200 0 EET}
{2531865600 10800 1 EEST}
{2536700400 7200 0 EET}
{2540332800 10800 1 EEST}
{2550610800 7200 0 EET}
{2563315200 10800 1 EEST}
{2566940400 7200 0 EET}
{2571177600 10800 1 EEST}
{2582060400 7200 0 EET}
{2595369600 10800 1 EEST}
{2597785200 7200 0 EET}
{2601417600 10800 1 EEST}
{2613510000 7200 0 EET}
{2626819200 10800 1 EEST}
{2628025200 7200 0 EET}
{2632262400 10800 1 EEST}
{2644959600 7200 0 EET}
{2658268800 10800 1 EEST}
{2658870000 7200 0 EET}
{2663107200 10800 1 EEST}
{2676409200 7200 0 EET}
{2689718400 10800 1 EEST}
{2693347200 10800 1 EEST}
{2708463600 7200 0 EET}
{2721168000 10800 1 EEST}
{2724192000 10800 1 EEST}
{2739913200 7200 0 EET}
{2752617600 10800 1 EEST}
{2754432000 10800 1 EEST}
{2771362800 7200 0 EET}
{2784672000 10800 1 EEST}
{2785276800 10800 1 EEST}
{2802812400 7200 0 EET}
{2816121600 10800 1 EEST}
{2834262000 7200 0 EET}
@@ -218,42 +248,72 @@ set TZData(:Asia/Gaza) {
{3068323200 10800 1 EEST}
{3087068400 7200 0 EET}
{3099772800 10800 1 EEST}
{3118518000 7200 0 EET}
{3117913200 7200 0 EET}
{3131827200 10800 1 EEST}
{3149967600 7200 0 EET}
{3148758000 7200 0 EET}
{3163276800 10800 1 EEST}
{3181417200 7200 0 EET}
{3179602800 7200 0 EET}
{3194726400 10800 1 EEST}
{3212866800 7200 0 EET}
{3209842800 7200 0 EET}
{3226176000 10800 1 EEST}
{3240687600 7200 0 EET}
{3244320000 10800 1 EEST}
{3244921200 7200 0 EET}
{3257625600 10800 1 EEST}
{3271532400 7200 0 EET}
{3275164800 10800 1 EEST}
{3276370800 7200 0 EET}
{3289075200 10800 1 EEST}
{3301772400 7200 0 EET}
{3306009600 10800 1 EEST}
{3307820400 7200 0 EET}
{3321129600 10800 1 EEST}
{3332617200 7200 0 EET}
{3336249600 10800 1 EEST}
{3339270000 7200 0 EET}
{3352579200 10800 1 EEST}
{3362857200 7200 0 EET}
{3367094400 10800 1 EEST}
{3370719600 7200 0 EET}
{3384028800 10800 1 EEST}
{3393702000 7200 0 EET}
{3397939200 10800 1 EEST}
{3402774000 7200 0 EET}
{3415478400 10800 1 EEST}
{3424546800 7200 0 EET}
{3428179200 10800 1 EEST}
{3434223600 7200 0 EET}
{3446928000 10800 1 EEST}
{3454786800 7200 0 EET}
{3459024000 10800 1 EEST}
{3465673200 7200 0 EET}
{3478982400 10800 1 EEST}
{3485631600 7200 0 EET}
{3489264000 10800 1 EEST}
{3497122800 7200 0 EET}
{3510432000 10800 1 EEST}
{3516476400 7200 0 EET}
{3520108800 10800 1 EEST}
{3528572400 7200 0 EET}
{3541881600 10800 1 EEST}
{3546716400 7200 0 EET}
{3550953600 10800 1 EEST}
{3560022000 7200 0 EET}
{3573331200 10800 1 EEST}
{3577561200 7200 0 EET}
{3581193600 10800 1 EEST}
{3592076400 7200 0 EET}
{3604780800 10800 1 EEST}
{3607801200 7200 0 EET}
{3612038400 10800 1 EEST}
{3623526000 7200 0 EET}
{3636230400 10800 1 EEST}
{3638646000 7200 0 EET}
{3642883200 10800 1 EEST}
{3654975600 7200 0 EET}
{3668284800 10800 1 EEST}
{3669490800 7200 0 EET}
{3673123200 10800 1 EEST}
{3686425200 7200 0 EET}
{3699734400 10800 1 EEST}
{3717874800 7200 0 EET}

View File

@@ -126,11 +126,11 @@ set TZData(:Asia/Hebron) {
{1635458400 7200 0 EET}
{1648332000 10800 1 EEST}
{1666998000 7200 0 EET}
{1679702400 10800 1 EEST}
{1682726400 10800 1 EEST}
{1698447600 7200 0 EET}
{1711756800 10800 1 EEST}
{1713571200 10800 1 EEST}
{1729897200 7200 0 EET}
{1743206400 10800 1 EEST}
{1744416000 10800 1 EEST}
{1761346800 7200 0 EET}
{1774656000 10800 1 EEST}
{1792796400 7200 0 EET}
@@ -153,50 +153,80 @@ set TZData(:Asia/Hebron) {
{2058307200 10800 1 EEST}
{2077052400 7200 0 EET}
{2090361600 10800 1 EEST}
{2108502000 7200 0 EET}
{2107897200 7200 0 EET}
{2121811200 10800 1 EEST}
{2139951600 7200 0 EET}
{2138742000 7200 0 EET}
{2153260800 10800 1 EEST}
{2172006000 7200 0 EET}
{2168982000 7200 0 EET}
{2184710400 10800 1 EEST}
{2203455600 7200 0 EET}
{2199826800 7200 0 EET}
{2216160000 10800 1 EEST}
{2230066800 7200 0 EET}
{2234304000 10800 1 EEST}
{2234905200 7200 0 EET}
{2248214400 10800 1 EEST}
{2260911600 7200 0 EET}
{2264544000 10800 1 EEST}
{2266354800 7200 0 EET}
{2279664000 10800 1 EEST}
{2291756400 7200 0 EET}
{2295388800 10800 1 EEST}
{2297804400 7200 0 EET}
{2311113600 10800 1 EEST}
{2321996400 7200 0 EET}
{2326233600 10800 1 EEST}
{2329254000 7200 0 EET}
{2342563200 10800 1 EEST}
{2352841200 7200 0 EET}
{2356473600 10800 1 EEST}
{2361308400 7200 0 EET}
{2374012800 10800 1 EEST}
{2383686000 7200 0 EET}
{2387318400 10800 1 EEST}
{2392758000 7200 0 EET}
{2405462400 10800 1 EEST}
{2413926000 7200 0 EET}
{2418163200 10800 1 EEST}
{2424207600 7200 0 EET}
{2437516800 10800 1 EEST}
{2444770800 7200 0 EET}
{2448403200 10800 1 EEST}
{2455657200 7200 0 EET}
{2468966400 10800 1 EEST}
{2475010800 7200 0 EET}
{2479248000 10800 1 EEST}
{2487106800 7200 0 EET}
{2500416000 10800 1 EEST}
{2505855600 7200 0 EET}
{2509488000 10800 1 EEST}
{2519161200 7200 0 EET}
{2531865600 10800 1 EEST}
{2536700400 7200 0 EET}
{2540332800 10800 1 EEST}
{2550610800 7200 0 EET}
{2563315200 10800 1 EEST}
{2566940400 7200 0 EET}
{2571177600 10800 1 EEST}
{2582060400 7200 0 EET}
{2595369600 10800 1 EEST}
{2597785200 7200 0 EET}
{2601417600 10800 1 EEST}
{2613510000 7200 0 EET}
{2626819200 10800 1 EEST}
{2628025200 7200 0 EET}
{2632262400 10800 1 EEST}
{2644959600 7200 0 EET}
{2658268800 10800 1 EEST}
{2658870000 7200 0 EET}
{2663107200 10800 1 EEST}
{2676409200 7200 0 EET}
{2689718400 10800 1 EEST}
{2693347200 10800 1 EEST}
{2708463600 7200 0 EET}
{2721168000 10800 1 EEST}
{2724192000 10800 1 EEST}
{2739913200 7200 0 EET}
{2752617600 10800 1 EEST}
{2754432000 10800 1 EEST}
{2771362800 7200 0 EET}
{2784672000 10800 1 EEST}
{2785276800 10800 1 EEST}
{2802812400 7200 0 EET}
{2816121600 10800 1 EEST}
{2834262000 7200 0 EET}
@@ -217,42 +247,72 @@ set TZData(:Asia/Hebron) {
{3068323200 10800 1 EEST}
{3087068400 7200 0 EET}
{3099772800 10800 1 EEST}
{3118518000 7200 0 EET}
{3117913200 7200 0 EET}
{3131827200 10800 1 EEST}
{3149967600 7200 0 EET}
{3148758000 7200 0 EET}
{3163276800 10800 1 EEST}
{3181417200 7200 0 EET}
{3179602800 7200 0 EET}
{3194726400 10800 1 EEST}
{3212866800 7200 0 EET}
{3209842800 7200 0 EET}
{3226176000 10800 1 EEST}
{3240687600 7200 0 EET}
{3244320000 10800 1 EEST}
{3244921200 7200 0 EET}
{3257625600 10800 1 EEST}
{3271532400 7200 0 EET}
{3275164800 10800 1 EEST}
{3276370800 7200 0 EET}
{3289075200 10800 1 EEST}
{3301772400 7200 0 EET}
{3306009600 10800 1 EEST}
{3307820400 7200 0 EET}
{3321129600 10800 1 EEST}
{3332617200 7200 0 EET}
{3336249600 10800 1 EEST}
{3339270000 7200 0 EET}
{3352579200 10800 1 EEST}
{3362857200 7200 0 EET}
{3367094400 10800 1 EEST}
{3370719600 7200 0 EET}
{3384028800 10800 1 EEST}
{3393702000 7200 0 EET}
{3397939200 10800 1 EEST}
{3402774000 7200 0 EET}
{3415478400 10800 1 EEST}
{3424546800 7200 0 EET}
{3428179200 10800 1 EEST}
{3434223600 7200 0 EET}
{3446928000 10800 1 EEST}
{3454786800 7200 0 EET}
{3459024000 10800 1 EEST}
{3465673200 7200 0 EET}
{3478982400 10800 1 EEST}
{3485631600 7200 0 EET}
{3489264000 10800 1 EEST}
{3497122800 7200 0 EET}
{3510432000 10800 1 EEST}
{3516476400 7200 0 EET}
{3520108800 10800 1 EEST}
{3528572400 7200 0 EET}
{3541881600 10800 1 EEST}
{3546716400 7200 0 EET}
{3550953600 10800 1 EEST}
{3560022000 7200 0 EET}
{3573331200 10800 1 EEST}
{3577561200 7200 0 EET}
{3581193600 10800 1 EEST}
{3592076400 7200 0 EET}
{3604780800 10800 1 EEST}
{3607801200 7200 0 EET}
{3612038400 10800 1 EEST}
{3623526000 7200 0 EET}
{3636230400 10800 1 EEST}
{3638646000 7200 0 EET}
{3642883200 10800 1 EEST}
{3654975600 7200 0 EET}
{3668284800 10800 1 EEST}
{3669490800 7200 0 EET}
{3673123200 10800 1 EEST}
{3686425200 7200 0 EET}
{3699734400 10800 1 EEST}
{3717874800 7200 0 EET}

View File

@@ -8,7 +8,7 @@ set TZData(:Asia/Ho_Chi_Minh) {
{-782643600 32400 0 +09}
{-767869200 25200 0 +07}
{-718095600 28800 0 +08}
{-457776000 25200 0 +07}
{-457772400 25200 0 +07}
{-315648000 28800 0 +08}
{171820800 25200 0 +07}
}

View File

@@ -55,4 +55,5 @@ set TZData(:Asia/Qostanay) {
{1067115600 18000 0 +05}
{1080421200 21600 1 +05}
{1099170000 21600 0 +06}
{1709229600 18000 0 +05}
}

View File

@@ -9,5 +9,5 @@ set TZData(:Asia/Singapore) {
{-894180000 27000 0 +0730}
{-879665400 32400 0 +09}
{-767005200 27000 0 +0730}
{378664200 28800 0 +08}
{378662400 28800 0 +08}
}

View File

@@ -20,51 +20,51 @@ set TZData(:Europe/Kirov) {
{559692000 14400 0 +04}
{575416800 18000 1 +05}
{591141600 14400 0 +04}
{606866400 10800 0 +04}
{606870000 14400 1 +04}
{622594800 10800 0 +03}
{638319600 14400 1 +04}
{654649200 10800 0 +03}
{606866400 10800 0 MSD}
{606870000 14400 1 MSD}
{622594800 10800 0 MSK}
{638319600 14400 1 MSD}
{654649200 10800 0 MSK}
{670374000 14400 0 +04}
{701820000 10800 0 +04}
{701823600 14400 1 +04}
{717548400 10800 0 +03}
{733273200 14400 1 +04}
{748998000 10800 0 +03}
{764722800 14400 1 +04}
{780447600 10800 0 +03}
{796172400 14400 1 +04}
{811897200 10800 0 +03}
{828226800 14400 1 +04}
{846370800 10800 0 +03}
{859676400 14400 1 +04}
{877820400 10800 0 +03}
{891126000 14400 1 +04}
{909270000 10800 0 +03}
{922575600 14400 1 +04}
{941324400 10800 0 +03}
{954025200 14400 1 +04}
{972774000 10800 0 +03}
{985474800 14400 1 +04}
{1004223600 10800 0 +03}
{1017529200 14400 1 +04}
{1035673200 10800 0 +03}
{1048978800 14400 1 +04}
{1067122800 10800 0 +03}
{1080428400 14400 1 +04}
{1099177200 10800 0 +03}
{1111878000 14400 1 +04}
{1130626800 10800 0 +03}
{1143327600 14400 1 +04}
{1162076400 10800 0 +03}
{1174777200 14400 1 +04}
{1193526000 10800 0 +03}
{1206831600 14400 1 +04}
{1224975600 10800 0 +03}
{1238281200 14400 1 +04}
{1256425200 10800 0 +03}
{1269730800 14400 1 +04}
{1288479600 10800 0 +03}
{1301180400 14400 0 +04}
{1414274400 10800 0 +03}
{701820000 10800 0 MSD}
{701823600 14400 1 MSD}
{717548400 10800 0 MSK}
{733273200 14400 1 MSD}
{748998000 10800 0 MSK}
{764722800 14400 1 MSD}
{780447600 10800 0 MSK}
{796172400 14400 1 MSD}
{811897200 10800 0 MSK}
{828226800 14400 1 MSD}
{846370800 10800 0 MSK}
{859676400 14400 1 MSD}
{877820400 10800 0 MSK}
{891126000 14400 1 MSD}
{909270000 10800 0 MSK}
{922575600 14400 1 MSD}
{941324400 10800 0 MSK}
{954025200 14400 1 MSD}
{972774000 10800 0 MSK}
{985474800 14400 1 MSD}
{1004223600 10800 0 MSK}
{1017529200 14400 1 MSD}
{1035673200 10800 0 MSK}
{1048978800 14400 1 MSD}
{1067122800 10800 0 MSK}
{1080428400 14400 1 MSD}
{1099177200 10800 0 MSK}
{1111878000 14400 1 MSD}
{1130626800 10800 0 MSK}
{1143327600 14400 1 MSD}
{1162076400 10800 0 MSK}
{1174777200 14400 1 MSD}
{1193526000 10800 0 MSK}
{1206831600 14400 1 MSD}
{1224975600 10800 0 MSK}
{1238281200 14400 1 MSD}
{1256425200 10800 0 MSK}
{1269730800 14400 1 MSD}
{1288479600 10800 0 MSK}
{1301180400 14400 0 MSK}
{1414274400 10800 0 MSK}
}

View File

@@ -19,55 +19,55 @@ set TZData(:Europe/Volgograd) {
{528242400 14400 0 +04}
{543967200 18000 1 +05}
{559692000 14400 0 +04}
{575416800 10800 0 +04}
{575420400 14400 1 +04}
{591145200 10800 0 +03}
{606870000 14400 1 +04}
{622594800 10800 0 +03}
{638319600 14400 1 +04}
{654649200 10800 0 +03}
{575416800 10800 0 MSD}
{575420400 14400 1 MSD}
{591145200 10800 0 MSK}
{606870000 14400 1 MSD}
{622594800 10800 0 MSK}
{638319600 14400 1 MSD}
{654649200 10800 0 MSK}
{670374000 14400 0 +04}
{701820000 10800 0 +04}
{701823600 14400 1 +04}
{717548400 10800 0 +03}
{733273200 14400 1 +04}
{748998000 10800 0 +03}
{764722800 14400 1 +04}
{780447600 10800 0 +03}
{796172400 14400 1 +04}
{811897200 10800 0 +03}
{828226800 14400 1 +04}
{846370800 10800 0 +03}
{859676400 14400 1 +04}
{877820400 10800 0 +03}
{891126000 14400 1 +04}
{909270000 10800 0 +03}
{922575600 14400 1 +04}
{941324400 10800 0 +03}
{954025200 14400 1 +04}
{972774000 10800 0 +03}
{985474800 14400 1 +04}
{1004223600 10800 0 +03}
{1017529200 14400 1 +04}
{1035673200 10800 0 +03}
{1048978800 14400 1 +04}
{1067122800 10800 0 +03}
{1080428400 14400 1 +04}
{1099177200 10800 0 +03}
{1111878000 14400 1 +04}
{1130626800 10800 0 +03}
{1143327600 14400 1 +04}
{1162076400 10800 0 +03}
{1174777200 14400 1 +04}
{1193526000 10800 0 +03}
{1206831600 14400 1 +04}
{1224975600 10800 0 +03}
{1238281200 14400 1 +04}
{1256425200 10800 0 +03}
{1269730800 14400 1 +04}
{1288479600 10800 0 +03}
{1301180400 14400 0 +04}
{1414274400 10800 0 +03}
{701820000 10800 0 MSD}
{701823600 14400 1 MSD}
{717548400 10800 0 MSK}
{733273200 14400 1 MSD}
{748998000 10800 0 MSK}
{764722800 14400 1 MSD}
{780447600 10800 0 MSK}
{796172400 14400 1 MSD}
{811897200 10800 0 MSK}
{828226800 14400 1 MSD}
{846370800 10800 0 MSK}
{859676400 14400 1 MSD}
{877820400 10800 0 MSK}
{891126000 14400 1 MSD}
{909270000 10800 0 MSK}
{922575600 14400 1 MSD}
{941324400 10800 0 MSK}
{954025200 14400 1 MSD}
{972774000 10800 0 MSK}
{985474800 14400 1 MSD}
{1004223600 10800 0 MSK}
{1017529200 14400 1 MSD}
{1035673200 10800 0 MSK}
{1048978800 14400 1 MSD}
{1067122800 10800 0 MSK}
{1080428400 14400 1 MSD}
{1099177200 10800 0 MSK}
{1111878000 14400 1 MSD}
{1130626800 10800 0 MSK}
{1143327600 14400 1 MSD}
{1162076400 10800 0 MSK}
{1174777200 14400 1 MSD}
{1193526000 10800 0 MSK}
{1206831600 14400 1 MSD}
{1224975600 10800 0 MSK}
{1238281200 14400 1 MSD}
{1256425200 10800 0 MSK}
{1269730800 14400 1 MSD}
{1288479600 10800 0 MSK}
{1301180400 14400 0 MSK}
{1414274400 10800 0 MSK}
{1540681200 14400 0 +04}
{1609020000 10800 0 +03}
{1609020000 10800 0 MSK}
}

View File

@@ -5,7 +5,7 @@
# properly for different platforms.
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998 Scritpics Corporation.
# Copyright (c) 1998 Scriptics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -14,7 +14,7 @@
# interpreted as white space.
if {$::tcl_platform(platform) eq "windows"} {
# Windows style - any but a unicode space char
# Windows style - any but a Unicode space char
if {![info exists ::tcl_wordchars]} {
set ::tcl_wordchars {\S}
}
@@ -22,7 +22,7 @@ if {$::tcl_platform(platform) eq "windows"} {
set ::tcl_nonwordchars {\s}
}
} else {
# Motif style - any unicode word char (number, letter, or underscore)
# Motif style - any Unicode word char (number, letter, or underscore)
if {![info exists ::tcl_wordchars]} {
set ::tcl_wordchars {\w}
}
@@ -147,7 +147,7 @@ proc tcl_startOfPreviousWord {str start} {
variable ::tcl::WordBreakRE
set word {-1 -1}
if {$start > 0} {
regexp -indices -- $WordBreakRE(previous) [string range $str 0 $start-1] \
regexp -indices -- $WordBreakRE(previous) [string range [string range $str 0 $start] 0 end-1] \
result word
}
return [lindex $word 0]

View File

@@ -265,7 +265,7 @@ proc ::platform::LibcVersion {base _->_ vv} {
set libc [lindex $libclist 0]
# Try executing the library first. This should suceed
# Try executing the library first. This should succeed
# for a glibc library, and return the version
# information.

View File

@@ -27,7 +27,7 @@ proc ::platform::shell::generic {shell} {
LOCATE base out
set code {}
# Forget any pre-existing platform package, it might be in
# Forget any preexisting platform package, it might be in
# conflict with this one.
lappend code {package forget platform}
# Inject our platform package
@@ -52,7 +52,7 @@ proc ::platform::shell::identify {shell} {
LOCATE base out
set code {}
# Forget any pre-existing platform package, it might be in
# Forget any preexisting platform package, it might be in
# conflict with this one.
lappend code {package forget platform}
# Inject our platform package
@@ -99,14 +99,14 @@ proc ::platform::shell::LOCATE {bv ov} {
upvar 1 $bv base $ov out
# Locate the platform package for injection into the specified
# shell. We are using package management to find it, whereever it
# shell. We are using package management to find it, wherever it
# is, instead of using hardwired relative paths. This allows us to
# install the two packages as TMs without breaking the code
# here. If the found package is wrapped we copy the code somewhere
# where the spawned shell will be able to read it.
# This code is brittle, it needs has to adapt to whatever changes
# are made to the TM code, i.e. the provide statement generated by
# are made to the TM code, i.e. the "provide" statement generated by
# tm.tcl
set pl [package ifneeded platform [package require platform]]

View File

@@ -32,7 +32,7 @@ namespace eval msgcat {
# Configuration values per Package (e.g. client namespace).
# The dict key is of the form "<option> <namespace>" and the value is the
# configuration option. A nonexisting key is an unset option.
# configuration option. A non-existing key is an unset option.
variable PackageConfig [dict create mcfolder {} loadcmd {} changecmd {}\
unknowncmd {} loadedlocales {} loclist {}]
@@ -179,7 +179,7 @@ namespace eval msgcat {
# Find the translation for the given string based on the current
# locale setting. Check the local namespace first, then look in each
# parent namespace until the source is found. If additional args are
# specified, use the format command to work them into the traslated
# specified, use the format command to work them into the translated
# string.
# If no catalog item is found, mcunknown is called in the caller frame
# and its result is returned.
@@ -578,7 +578,7 @@ proc msgcat::mcforgetpackage {} {
# mcfolder
# The message catalog folder of the package.
# This is automatically set by mcload.
# If the value is changed using the set subcommand, an evntual
# If the value is changed using the set subcommand, an eventual
# loadcmd is invoked and all message files of the package locale are
# loaded.
#
@@ -1013,7 +1013,7 @@ proc msgcat::mcflmset {pairs} {
# by an application specific routine for error reporting
# purposes. The default behavior is to return the source string.
# If additional args are specified, the format command will be used
# to work them into the traslated string.
# to work them into the translated string.
#
# Arguments:
# locale The current locale.
@@ -1034,9 +1034,9 @@ proc msgcat::mcunknown {args} {
# - Default global handler, if mcunknown is not redefined.
# - Per package handler, if the package sets unknowncmd to the empty
# string.
# It returna the source string if the argument list is empty.
# It returns the source string if the argument list is empty.
# If additional args are specified, the format command will be used
# to work them into the traslated string.
# to work them into the translated string.
#
# Arguments:
# locale (unused) The current locale.

View File

@@ -16,20 +16,22 @@
# Contributions from Don Porter, NIST, 2002. (not subject to US copyright)
# All rights reserved.
package require Tcl 8.5- ;# -verbose line uses [info frame]
namespace eval tcltest {
# When the version number changes, be sure to update the pkgIndex.tcl file,
# and the install directory in the Makefiles. When the minor version
# changes (new feature) be sure to update the man page as well.
variable Version 2.5.5
variable Version 2.5.7
# Compatibility support for dumb variables defined in tcltest 1
# Do not use these. Call [package provide Tcl] and [info patchlevel]
# Do not use these. Call [package require] and [info patchlevel]
# yourself. You don't need tcltest to wrap it for you.
variable version [package provide Tcl]
variable version [package require Tcl 8.5-]
variable patchLevel [info patchlevel]
# Detect if we can use code points >= \U10000
variable fullutf [package vsatisfies $version 8.7-]
##### Export the public tcltest procs; several categories
#
# Export the main functional commands that do useful things
@@ -41,7 +43,7 @@ namespace eval tcltest {
outputChannel testConstraint
# Export commands that are duplication (candidates for deprecation)
if {![package vsatisfies [package provide Tcl] 8.7-]} {
if {!$fullutf} {
namespace export bytestring ;# dups [encoding convertfrom identity]
}
namespace export debug ;# [configure -debug]
@@ -153,7 +155,7 @@ namespace eval tcltest {
}
##### Initialize internal arrays of tcltest, but only if the caller
# has not already pre-initialized them. This is done to support
# has not already preinitialized them. This is done to support
# compatibility with older tests that directly access internals
# rather than go through command interfaces.
#
@@ -163,7 +165,7 @@ namespace eval tcltest {
return
}
if {[info exists $varName]} {
# Pre-initialized value is a scalar: destroy it!
# Preinitialized value is a scalar: Destroy it!
unset $varName
}
array set $varName $value
@@ -196,7 +198,7 @@ namespace eval tcltest {
ArrayDefault testConstraints {}
##### Initialize internal variables of tcltest, but only if the caller
# has not already pre-initialized them. This is done to support
# has not already preinitialized them. This is done to support
# compatibility with older tests that directly access internals
# rather than go through command interfaces.
#
@@ -229,7 +231,7 @@ namespace eval tcltest {
# check the current working dir for files created by the tests.
# filesMade keeps track of such files created using the makeFile and
# makeDirectory procedures. filesExisted stores the names of
# pre-existing files.
# preexisting files.
#
# Note that $filesExisted lists only those files that exist in
# the original [temporaryDirectory].
@@ -298,7 +300,7 @@ namespace eval tcltest {
# keep track of test level for nested test commands
variable testLevel 0
# the variables and procs that existed when saveState was called are
# the variables and procedures that existed when saveState was called are
# stored in a variable of the same name
Default saveState {}
@@ -345,6 +347,7 @@ namespace eval tcltest {
proc outputChannel { {filename ""} } {
variable outputChannel
variable ChannelsWeOpened
variable fullutf
# This is very subtle and tricky, so let me try to explain.
# (Hopefully this longer comment will be clear when I come
@@ -354,12 +357,12 @@ namespace eval tcltest {
# be kept in sync with the [configure -outfile] configuration
# option ( and underlying variable Option(-outfile) ). This is
# accomplished with a write trace on Option(-outfile) that will
# update [outputChannel] whenver a new value is written. That
# update [outputChannel] whenever a new value is written. That
# much is easy.
#
# The trick is that in order to maintain compatibility with
# version 1 of tcltest, we must allow every configuration option
# to get its inital value from command line arguments. This is
# to get its initial value from command line arguments. This is
# accomplished by setting initial read traces on all the
# configuration options to parse the command line option the first
# time they are read. These traces are cancelled whenever the
@@ -399,8 +402,8 @@ namespace eval tcltest {
}
default {
set outputChannel [open $filename a]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $outputChannel -encoding utf-8
if {$fullutf} {
fconfigure $outputChannel -profile tcl8 -encoding utf-8
}
set ChannelsWeOpened($outputChannel) 1
@@ -427,6 +430,7 @@ namespace eval tcltest {
proc errorChannel { {filename ""} } {
variable errorChannel
variable ChannelsWeOpened
variable fullutf
# This is subtle and tricky. See the comment above in
# [outputChannel] for a detailed explanation.
@@ -446,8 +450,8 @@ namespace eval tcltest {
}
default {
set errorChannel [open $filename a]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $errorChannel -encoding utf-8
if {$fullutf} {
fconfigure $errorChannel -profile tcl8 -encoding utf-8
}
set ChannelsWeOpened($errorChannel) 1
@@ -482,7 +486,7 @@ namespace eval tcltest {
# Initialize the default values of the configurable options that are
# historically associated with an exported variable. If that variable
# is already set, support compatibility by accepting its pre-set value.
# is already set, support compatibility by accepting its preset value.
# Use [trace] to establish ongoing connection between the deprecated
# exported variable and the modern option kept as a true internal var.
# Also set up usage string and value testing for the option.
@@ -761,7 +765,7 @@ namespace eval tcltest {
# even if the directory is not writable
return $directory
}
return -code error "\"$directory\" is not writeable"
return -code error "\"$directory\" is not writable"
}
return $directory
}
@@ -789,10 +793,12 @@ namespace eval tcltest {
}
proc ReadLoadScript {args} {
variable Option
variable fullutf
if {$Option(-loadfile) eq {}} {return}
set tmp [open $Option(-loadfile) r]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $tmp -encoding utf-8
if {$fullutf} {
fconfigure $tmp -profile tcl8 -encoding utf-8
}
loadScript [read $tmp]
close $tmp
@@ -852,7 +858,7 @@ namespace eval tcltest {
# tcltest::Debug* --
#
# Internal helper procedures to write out debug information
# dependent on the chosen level. A test shell may overide
# dependent on the chosen level. A test shell may override
# them, f.e. to redirect the output into a different
# channel, or even into a GUI.
@@ -1134,6 +1140,37 @@ proc tcltest::SafeFetch {n1 n2 op} {
}
}
# tcltest::Asciify --
#
# Transforms the passed string to contain only printable ascii characters.
# Useful for printing to terminals. Non-printables are mapped to
# \x, \u or \U sequences, except \n.
#
# Arguments:
# s - string to transform
#
# Results:
# The transformed strings
#
# Side effects:
# None.
proc tcltest::Asciify {s} {
set print ""
foreach c [split $s ""] {
if {(($c < "\x7F") && [string is print $c]) || ($c eq "\n")} {
append print $c
} elseif {$c < "\u0100"} {
append print \\x[format %02X [scan $c %c]]
} elseif {$c > "\uFFFF"} {
append print \\U[format %08X [scan $c %c]]
} else {
append print \\u[format %04X [scan $c %c]]
}
}
return $print
}
# tcltest::ConstraintInitializer --
#
# Get or set a script that when evaluated in the tcltest namespace
@@ -1337,10 +1374,12 @@ proc tcltest::DefineConstraintInitializers {} {
}
ConstraintInitializer stdio {
variable fullutf
set code 0
if {![catch {set f [open "|[list [interpreter]]" w]}]} {
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $f -encoding utf-8
if {$fullutf} {
fconfigure $f -profile tcl8 -encoding utf-8
}
if {![catch {puts $f exit}]} {
if {![catch {close $f}]} {
@@ -1758,7 +1797,7 @@ proc tcltest::SubstArguments {argList} {
# We need to split the argList up into tokens but cannot use list
# operations as they throw away some significant quoting, and
# [split] ignores braces as it should. Therefore what we do is
# gradually build up a string out of whitespace seperated strings.
# gradually build up a string out of whitespace-separated strings.
# We cannot use [split] to split the argList into whitespace
# separated strings as it throws away the whitespace which maybe
# important so we have to do it all by hand.
@@ -1865,7 +1904,7 @@ proc tcltest::SubstArguments {argList} {
# match - specifies type of matching to do on result,
# output, errorOutput; this must be a string
# previously registered by a call to [customMatch].
# The strings exact, glob, and regexp are pre-registered
# The strings exact, glob, and regexp are preregistered
# by the tcltest package. Default value is exact.
#
# Arguments:
@@ -1884,6 +1923,8 @@ proc tcltest::test {name description args} {
global tcl_platform
variable testLevel
variable coreModTime
variable fullutf
DebugPuts 3 "test $name $args"
DebugDo 1 {
variable TestNames
@@ -1896,7 +1937,7 @@ proc tcltest::test {name description args} {
FillFilesExisted
incr testLevel
# Pre-define everything to null except output and errorOutput. We
# Predefine everything to null except output and errorOutput. We
# determine whether or not to trap output based on whether or not
# these variables (output & errorOutput) are defined.
lassign {} constraints setup cleanup body result returnCodes errorCode match
@@ -2189,8 +2230,8 @@ proc tcltest::test {name description args} {
set testFile [file normalize [uplevel 1 {info script}]]
if {[file readable $testFile]} {
set testFd [open $testFile r]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $testFd -encoding utf-8
if {$fullutf} {
fconfigure $testFd -profile tcl8 -encoding utf-8
}
set testLine [expr {[lsearch -regexp \
[split [read $testFd] "\n"] \
@@ -2221,9 +2262,13 @@ proc tcltest::test {name description args} {
if {$scriptCompare} {
puts [outputChannel] "---- Error testing result: $scriptMatch"
} else {
puts [outputChannel] "---- Result was:\n$actualAnswer"
if {[catch {
puts [outputChannel] "---- Result was:\n[Asciify $actualAnswer]"
} errMsg]} {
puts [outputChannel] "\n---- Result was:\n<error printing result: $errMsg>"
}
puts [outputChannel] "---- Result should have been\
($match matching):\n$result"
($match matching):\n[Asciify $result]"
}
}
if {$errorCodeFailure} {
@@ -2365,6 +2410,7 @@ proc tcltest::Skipped {name constraints} {
# make sure that the constraints are satisfied.
set doTest 0
set constraints [string trim $constraints]
if {[string match {*[$\[]*} $constraints] != 0} {
# full expression, e.g. {$foo > [info tclversion]}
catch {set doTest [uplevel #0 [list expr $constraints]]}
@@ -2491,7 +2537,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
# Remove files and directories created by the makeFile and
# makeDirectory procedures. Record the names of files in
# workingDirectory that were not pre-existing, and associate them
# workingDirectory that were not preexisting, and associate them
# with the test file that created them.
if {!$calledFromAllFile} {
@@ -2582,7 +2628,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
# loop is running, which is the real issue.
# Actually, this doesn't belong here at all. A package
# really has no business [exit]-ing an application.
if {![catch {package present Tk}] && ![testConstraint interactive]} {
if {[info exists ::tk_version] && ![testConstraint interactive]} {
exit
}
} else {
@@ -2815,6 +2861,7 @@ proc tcltest::runAllTests { {shell ""} } {
variable numTests
variable failFiles
variable DefaultValue
variable fullutf
FillFilesExisted
if {[llength [info level 0]] == 1} {
@@ -2900,8 +2947,8 @@ proc tcltest::runAllTests { {shell ""} } {
if {[catch {
incr numTestFiles
set pipeFd [open $cmd "r"]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $pipeFd -encoding utf-8
if {$fullutf} {
fconfigure $pipeFd -profile tcl8 -encoding utf-8
}
while {[gets $pipeFd line] >= 0} {
if {[regexp [join {
@@ -3087,6 +3134,8 @@ proc tcltest::normalizeMsg {msg} {
proc tcltest::makeFile {contents name {directory ""}} {
variable filesMade
variable fullutf
FillFilesExisted
if {[llength [info level 0]] == 3} {
@@ -3100,8 +3149,8 @@ proc tcltest::makeFile {contents name {directory ""}} {
set fd [open $fullName w]
fconfigure $fd -translation lf
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $fd -encoding utf-8
if {$fullutf} {
fconfigure $fd -profile tcl8 -encoding utf-8
}
if {[string index $contents end] eq "\n"} {
puts -nonewline $fd $contents
@@ -3245,14 +3294,16 @@ proc tcltest::removeDirectory {name {directory ""}} {
# None.
proc tcltest::viewFile {name {directory ""}} {
variable fullutf
FillFilesExisted
if {[llength [info level 0]] == 2} {
set directory [temporaryDirectory]
}
set fullName [file join $directory $name]
set f [open $fullName]
if {[package vsatisfies [package provide Tcl] 8.7-]} {
fconfigure $f -encoding utf-8
if {$fullutf} {
fconfigure $f -profile tcl8 -encoding utf-8
}
set data [read -nonewline $f]
close $f
@@ -3287,7 +3338,7 @@ proc tcltest::viewFile {name {directory ""}} {
# Side effects:
# None
if {![package vsatisfies [package provide Tcl] 8.7-]} {
if {!$::tcltest::fullutf} {
proc tcltest::bytestring {string} {
return [encoding convertfrom identity $string]
}
@@ -3449,7 +3500,7 @@ proc tcltest::threadReap {} {
# Initialize the constraints and set up command line arguments
namespace eval tcltest {
# Define initializers for all the built-in contraint definitions
# Define initializers for all the built-in constraint definitions
DefineConstraintInitializers
# Set up the constraints in the testConstraints array to be lazily
@@ -3458,7 +3509,7 @@ namespace eval tcltest {
trace add variable testConstraints read [namespace code SafeFetch]
# Only initialize constraints at package load time if an
# [initConstraintsHook] has been pre-defined. This is only
# [initConstraintsHook] has been predefined. This is only
# for compatibility support. The modern way to add a custom
# test constraint is to just call the [testConstraint] command
# straight away, without all this "hook" nonsense.

View File

@@ -2356,7 +2356,7 @@ proc http::error {token} {
# token The token returned from http::geturl
#
# Side Effects
# unsets the state array
# Unsets the state array.
proc http::cleanup {token} {
variable $token
@@ -2375,7 +2375,7 @@ proc http::cleanup {token} {
# http::Connect
#
# This callback is made when an asyncronous connection completes.
# This callback is made when an asynchronous connection completes.
#
# Arguments
# token The token returned from http::geturl
@@ -3250,7 +3250,7 @@ proc http::CopyChunk {token chunk} {
#
# Arguments
# token The token returned from http::geturl
# count The amount transfered
# count The amount transferred
#
# Side Effects
# Invokes callbacks
@@ -3293,7 +3293,7 @@ proc http::CopyDone {token count {error {}}} {
# reason - "eof" means premature EOF (not EOF as the natural end of
# the response)
# - "" means completion of response, with or without EOF
# - anything else describes an error confition other than
# - anything else describes an error condition other than
# premature EOF.
#
# Side Effects

View File

@@ -1,715 +0,0 @@
# tdbcsqlite3.tcl --
#
# SQLite3 database driver for TDBC
#
# Copyright (c) 2008 by Kevin B. Kenny.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# RCS: @(#) $Id: tdbcodbc.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
#
#------------------------------------------------------------------------------
package require tdbc
package require sqlite3
package provide tdbc::sqlite3 1.1.5
namespace eval tdbc::sqlite3 {
namespace export connection
}
#------------------------------------------------------------------------------
#
# tdbc::sqlite3::connection --
#
# Class representing a SQLite3 database connection
#
#------------------------------------------------------------------------------
::oo::class create ::tdbc::sqlite3::connection {
superclass ::tdbc::connection
variable timeout
# The constructor accepts a database name and opens the database.
constructor {databaseName args} {
set timeout 0
if {[llength $args] % 2 != 0} {
set cmd [lrange [info level 0] 0 end-[llength $args]]
return -code error \
-errorcode {TDBC GENERAL_ERROR HY000 SQLITE3 WRONGNUMARGS} \
"wrong # args, should be \"$cmd ?-option value?...\""
}
next
sqlite3 [namespace current]::db $databaseName
if {[llength $args] > 0} {
my configure {*}$args
}
db nullvalue \ufffd
}
# The 'statementCreate' method forwards to the constructor of the
# statement class
forward statementCreate ::tdbc::sqlite3::statement create
# The 'configure' method queries and sets options to the database
method configure args {
if {[llength $args] == 0} {
# Query all configuration options
set result {-encoding utf-8}
lappend result -isolation
if {[db onecolumn {PRAGMA read_uncommitted}]} {
lappend result readuncommitted
} else {
lappend result serializable
}
lappend result -readonly 0
lappend result -timeout $timeout
return $result
} elseif {[llength $args] == 1} {
# Query a single option
set option [lindex $args 0]
switch -exact -- $option {
-e - -en - -enc - -enco - -encod - -encodi - -encodin -
-encoding {
return utf-8
}
-i - -is - -iso - -isol - -isola - -isolat - -isolati -
-isolatio - -isolation {
if {[db onecolumn {PRAGMA read_uncommitted}]} {
return readuncommitted
} else {
return serializable
}
}
-r - -re - -rea - -read - -reado - -readon - -readonl -
-readonly {
return 0
}
-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
return $timeout
}
default {
return -code error \
-errorcode [list TDBC GENERAL_ERROR HY000 SQLITE3 \
BADOPTION $option] \
"bad option \"$option\": must be\
-encoding, -isolation, -readonly or -timeout"
}
}
} elseif {[llength $args] % 2 != 0} {
# Syntax error
set cmd [lrange [info level 0] 0 end-[llength $args]]
return -code error \
-errorcode [list TDBC GENERAL_ERROR HY000 \
SQLITE3 WRONGNUMARGS] \
"wrong # args, should be \" $cmd ?-option value?...\""
}
# Set one or more options
foreach {option value} $args {
switch -exact -- $option {
-e - -en - -enc - -enco - -encod - -encodi - -encodin -
-encoding {
if {$value ne {utf-8}} {
return -code error \
-errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
SQLITE3 ENCODING] \
"-encoding not supported. SQLite3 is always \
Unicode."
}
}
-i - -is - -iso - -isol - -isola - -isolat - -isolati -
-isolatio - -isolation {
switch -exact -- $value {
readu - readun - readunc - readunco - readuncom -
readuncomm - readuncommi - readuncommit -
readuncommitt - readuncommitte - readuncommitted {
db eval {PRAGMA read_uncommitted = 1}
}
readc - readco - readcom - readcomm - readcommi -
readcommit - readcommitt - readcommitte -
readcommitted -
rep - repe - repea - repeat - repeata - repeatab -
repeatabl - repeatable - repeatabler - repeatablere -
repeatablerea - repeatablread -
s - se - ser - seri - seria - serial - seriali -
serializ - serializa - serializab - serializabl -
serializable -
reado - readon - readonl - readonly {
db eval {PRAGMA read_uncommitted = 0}
}
default {
return -code error \
-errorcode [list TDBC GENERAL_ERROR HY000 \
SQLITE3 BADISOLATION $value] \
"bad isolation level \"$value\":\
should be readuncommitted, readcommitted,\
repeatableread, serializable, or readonly"
}
}
}
-r - -re - -rea - -read - -reado - -readon - -readonl -
-readonly {
if {$value} {
return -code error \
-errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
SQLITE3 READONLY] \
"SQLite3's Tcl API does not support read-only\
access"
}
}
-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
if {![string is integer $value]} {
return -code error \
-errorcode [list TDBC DATA_EXCEPTION 22018 \
SQLITE3 $value] \
"expected integer but got \"$value\""
}
db timeout $value
set timeout $value
}
default {
return -code error \
-errorcode [list TDBC GENERAL_ERROR HY000 \
SQLITE3 BADOPTION $value] \
"bad option \"$option\": must be\
-encoding, -isolation, -readonly or -timeout"
}
}
}
return
}
# The 'tables' method introspects on the tables in the database.
method tables {{pattern %}} {
set retval {}
my foreach row {
SELECT * from sqlite_master
WHERE type IN ('table', 'view')
AND name LIKE :pattern
} {
dict set row name [string tolower [dict get $row name]]
dict set retval [dict get $row name] $row
}
return $retval
}
# The 'columns' method introspects on columns of a table.
method columns {table {pattern %}} {
regsub -all ' $table '' table
set retval {}
set pattern [string map [list \
* {[*]} \
? {[?]} \
\[ \\\[ \
\] \\\[ \
_ ? \
% *] [string tolower $pattern]]
my foreach origrow "PRAGMA table_info('$table')" {
set row {}
dict for {key value} $origrow {
dict set row [string tolower $key] $value
}
dict set row name [string tolower [dict get $row name]]
if {![string match $pattern [dict get $row name]]} {
continue
}
switch -regexp -matchvar info [dict get $row type] {
{^(.+)\(\s*([[:digit:]]+)\s*,\s*([[:digit:]]+)\s*\)\s*$} {
dict set row type [string tolower [lindex $info 1]]
dict set row precision [lindex $info 2]
dict set row scale [lindex $info 3]
}
{^(.+)\(\s*([[:digit:]]+)\s*\)\s*$} {
dict set row type [string tolower [lindex $info 1]]
dict set row precision [lindex $info 2]
dict set row scale 0
}
default {
dict set row type [string tolower [dict get $row type]]
dict set row precision 0
dict set row scale 0
}
}
dict set row nullable [expr {![dict get $row notnull]}]
dict set retval [dict get $row name] $row
}
return $retval
}
# The 'primarykeys' method enumerates the primary keys on a table.
method primarykeys {table} {
set result {}
my foreach row "PRAGMA table_info($table)" {
if {[dict get $row pk]} {
lappend result [dict create ordinalPosition \
[expr {[dict get $row cid]+1}] \
columnName \
[dict get $row name]]
}
}
return $result
}
# The 'foreignkeys' method enumerates the foreign keys that are
# declared in a table or that refer to a given table.
method foreignkeys {args} {
variable ::tdbc::generalError
# Check arguments
set argdict {}
if {[llength $args] % 2 != 0} {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?..."
}
foreach {key value} $args {
if {$key ni {-primary -foreign}} {
set errorcode $generalError
lappend errorcode badOption
return -code error -errorcode $errorcode \
"bad option \"$key\", must be -primary or -foreign"
}
set key [string range $key 1 end]
if {[dict exists $argdict $key]} {
set errorcode $generalError
lappend errorcode dupOption
return -code error -errorcode $errorcode \
"duplicate option \"$key\" supplied"
}
dict set argdict $key $value
}
# If we know the table with the foreign key, search just its
# foreign keys. Otherwise, iterate over all the tables in the
# database.
if {[dict exists $argdict foreign]} {
return [my ForeignKeysForTable [dict get $argdict foreign] \
$argdict]
} else {
set result {}
foreach foreignTable [dict keys [my tables]] {
lappend result {*}[my ForeignKeysForTable \
$foreignTable $argdict]
}
return $result
}
}
# The private ForeignKeysForTable method enumerates the foreign keys
# in a specific table.
#
# Parameters:
#
# foreignTable - Name of the table containing foreign keys.
# argdict - Dictionary that may or may not contain a key,
# 'primary', whose value is the name of a table that
# must hold the primary key corresponding to the foreign
# key. If the 'primary' key is absent, all tables are
# candidates.
# Results:
#
# Returns the list of foreign keys that meed the specified
# conditions, as a list of dictionaries, each containing the
# keys, foreignConstraintName, foreignTable, foreignColumn,
# primaryTable, primaryColumn, and ordinalPosition. Note that the
# foreign constraint name is constructed arbitrarily, since SQLite3
# does not report this information.
method ForeignKeysForTable {foreignTable argdict} {
set result {}
set n 0
# Go through the foreign keys in the given table, looking for
# ones that refer to the primary table (if one is given), or
# for any primary keys if none is given.
my foreach row "PRAGMA foreign_key_list($foreignTable)" {
if {(![dict exists $argdict primary])
|| ([string tolower [dict get $row table]]
eq [dict get $argdict primary])} {
# Construct a dictionary for each key, translating
# SQLite names to TDBC ones and converting sequence
# numbers to 1-based indexing.
set rrow [dict create foreignTable $foreignTable \
foreignConstraintName \
?$foreignTable?[dict get $row id]]
if {[dict exists $row seq]} {
dict set rrow ordinalPosition \
[expr {1 + [dict get $row seq]}]
}
foreach {to from} {
foreignColumn from
primaryTable table
primaryColumn to
deleteAction on_delete
updateAction on_update
} {
if {[dict exists $row $from]} {
dict set rrow $to [dict get $row $from]
}
}
# Add the newly-constucted dictionary to the result list
lappend result $rrow
}
}
return $result
}
# The 'preparecall' method prepares a call to a stored procedure.
# SQLite3 does not have stored procedures, since it's an in-process
# server.
method preparecall {call} {
return -code error \
-errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
SQLITE3 PREPARECALL] \
{SQLite3 does not support stored procedures}
}
# The 'begintransaction' method launches a database transaction
method begintransaction {} {
db eval {BEGIN TRANSACTION}
}
# The 'commit' method commits a database transaction
method commit {} {
db eval {COMMIT}
}
# The 'rollback' method abandons a database transaction
method rollback {} {
db eval {ROLLBACK}
}
# The 'transaction' method executes a script as a single transaction.
# We override the 'transaction' method of the base class, since SQLite3
# has a faster implementation of the same thing. (The base class's generic
# method should also work.)
# (Don't overload the base class method, because 'break', 'continue'
# and 'return' in the transaction body don't work!)
#method transaction {script} {
# uplevel 1 [list {*}[namespace code db] transaction $script]
#}
method prepare {sqlCode} {
set result [next $sqlCode]
return $result
}
method getDBhandle {} {
return [namespace which db]
}
}
#------------------------------------------------------------------------------
#
# tdbc::sqlite3::statement --
#
# Class representing a statement to execute against a SQLite3 database
#
#------------------------------------------------------------------------------
::oo::class create ::tdbc::sqlite3::statement {
superclass ::tdbc::statement
variable Params db sql
# The constructor accepts the handle to the connection and the SQL
# code for the statement to prepare. All that it does is to parse the
# statement and store it. The parse is used to support the
# 'params' and 'paramtype' methods.
constructor {connection sqlcode} {
next
set Params {}
set db [$connection getDBhandle]
set sql $sqlcode
foreach token [::tdbc::tokenize $sqlcode] {
if {[string index $token 0] in {$ : @}} {
dict set Params [string range $token 1 end] \
{type Tcl_Obj precision 0 scale 0 nullable 1 direction in}
}
}
}
# The 'resultSetCreate' method relays to the result set constructor
forward resultSetCreate ::tdbc::sqlite3::resultset create
# The 'params' method returns descriptions of the parameters accepted
# by the statement
method params {} {
return $Params
}
# The 'paramtype' method need do nothing; Sqlite3 uses manifest typing.
method paramtype args {;}
method getDBhandle {} {
return $db
}
method getSql {} {
return $sql
}
}
#-------------------------------------------------------------------------------
#
# tdbc::sqlite3::resultset --
#
# Class that represents a SQLlite result set in Tcl
#
#-------------------------------------------------------------------------------
::oo::class create ::tdbc::sqlite3::resultset {
superclass ::tdbc::resultset
# The variables of this class all have peculiar names. The reason is
# that the RunQuery method needs to execute with an activation record
# that has no local variables whose names could conflict with names
# in the SQL query. We start the variable names with hyphens because
# they can't be bind variables.
variable -set {*}{
-columns -db -needcolumns -resultArray
-results -sql -Cursor -RowCount -END
}
constructor {statement args} {
next
set -db [$statement getDBhandle]
set -sql [$statement getSql]
set -columns {}
set -results {}
${-db} trace [namespace code {my RecordStatement}]
if {[llength $args] == 0} {
# Variable substitutions are evaluated in caller's context
uplevel 1 [list ${-db} eval ${-sql} \
[namespace which -variable -resultArray] \
[namespace code {my RecordResult}]]
} elseif {[llength $args] == 1} {
# Variable substitutions are in the dictionary at [lindex $args 0].
set -paramDict [lindex $args 0]
# At this point, the activation record must contain no variables
# that might be bound within the query. All variables at this point
# begin with hyphens so that they are syntactically incorrect
# as bound variables in SQL.
unset args
unset statement
dict with -paramDict {
${-db} eval ${-sql} -resultArray {
my RecordResult
}
}
} else {
${-db} trace {}
# Too many args
return -code error \
-errorcode [list TDBC GENERAL_ERROR HY000 \
SQLITE3 WRONGNUMARGS] \
"wrong # args: should be\
[lrange [info level 0] 0 1] statement ?dictionary?"
}
${-db} trace {}
set -Cursor 0
if {${-Cursor} < [llength ${-results}]
&& [lindex ${-results} ${-Cursor}] eq {statement}} {
incr -Cursor 2
}
if {${-Cursor} < [llength ${-results}]
&& [lindex ${-results} ${-Cursor}] eq {columns}} {
incr -Cursor
set -columns [lindex ${-results} ${-Cursor}]
incr -Cursor
}
set -RowCount [${-db} changes]
}
# Record the start of a SQL statement
method RecordStatement {stmt} {
set -needcolumns 1
lappend -results statement {}
}
# Record one row of results from a query by appending it as a dictionary
# to the 'results' list. As a side effect, set 'columns' to a list
# comprising the names of the columns of the result.
method RecordResult {} {
set columns ${-resultArray(*)}
if {[info exists -needcolumns]} {
lappend -results columns $columns
unset -needcolumns
}
set dict {}
foreach key $columns {
if {[set -resultArray($key)] ne "\ufffd"} {
dict set dict $key [set -resultArray($key)]
}
}
lappend -results row $dict
}
# Advance to the next result set
method nextresults {} {
set have 0
while {${-Cursor} < [llength ${-results}]} {
if {[lindex ${-results} ${-Cursor}] eq {statement}} {
set have 1
incr -Cursor 2
break
}
incr -Cursor 2
}
if {!$have} {
set -END {}
}
if {${-Cursor} >= [llength ${-results}]} {
set -columns {}
} elseif {[lindex ${-results} ${-Cursor}] eq {columns}} {
incr -Cursor
set -columns [lindex ${-results} ${-Cursor}]
incr -Cursor
} else {
set -columns {}
}
return $have
}
method getDBhandle {} {
return ${-db}
}
# Return a list of the columns
method columns {} {
if {[info exists -END]} {
return -code error \
-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
"Function sequence error: result set is exhausted."
}
return ${-columns}
}
# Return the next row of the result set as a list
method nextlist var {
upvar 1 $var row
if {[info exists -END]} {
return -code error \
-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
"Function sequence error: result set is exhausted."
}
if {${-Cursor} >= [llength ${-results}]
|| [lindex ${-results} ${-Cursor}] ne {row}} {
return 0
} else {
set row {}
incr -Cursor
set d [lindex ${-results} ${-Cursor}]
incr -Cursor
foreach key ${-columns} {
if {[dict exists $d $key]} {
lappend row [dict get $d $key]
} else {
lappend row {}
}
}
}
return 1
}
# Return the next row of the result set as a dict
method nextdict var {
upvar 1 $var row
if {[info exists -END]} {
return -code error \
-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
"Function sequence error: result set is exhausted."
}
if {${-Cursor} >= [llength ${-results}]
|| [lindex ${-results} ${-Cursor}] ne {row}} {
return 0
} else {
incr -Cursor
set row [lindex ${-results} ${-Cursor}]
incr -Cursor
}
return 1
}
# Return the number of rows affected by a statement
method rowcount {} {
if {[info exists -END]} {
return -code error \
-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
"Function sequence error: result set is exhausted."
}
return ${-RowCount}
}
}

Binary file not shown.

View File

@@ -15,21 +15,21 @@ TCL_DLL_FILE="tcl86t.dll"
TCL_VERSION='8.6'
TCL_MAJOR_VERSION='8'
TCL_MINOR_VERSION='6'
TCL_PATCH_LEVEL='8.6.13'
TCL_PATCH_LEVEL='8.6.14'
# C compiler to use for compilation.
TCL_CC='cl.exe'
# -D flags for use with the C compiler.
TCL_DEFS='-nologo -c /D_ATL_XP_TARGETING /DHAVE_CPUID=1 -W3 -wd4090 -wd4146 -wd4311 -wd4312 -FpD:\bld\tk_1695506172540\work\tcl8.6.13\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -fp:strict -O2 -GS -GL -MD -I"D:\bld\tk_1695506172540\work\tcl8.6.13\win\..\win" -I"D:\bld\tk_1695506172540\work\tcl8.6.13\win\..\generic" -I"D:\bld\tk_1695506172540\work\tcl8.6.13\win\..\libtommath" /DTCL_TOMMATH /DMP_PREC=4 /Dinline=__inline /DHAVE_ZLIB=1 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DMP_FIXED_CUTOFFS /DSTDC_HEADERS /DUSE_NMAKE=1 /DHAVE_STDINT_H=1 /DHAVE_INTTYPES_H=1 /DHAVE_STDBOOL_H=1 /DTCL_THREADS=1 /DUSE_THREAD_ALLOC=1 /DNDEBUG /DTCL_CFG_OPTIMIZED /DTCL_CFG_DO64BIT /DBUILD_tcl'
TCL_DEFS='-nologo -c /D_ATL_XP_TARGETING /DHAVE_CPUID=1 -W3 -wd4090 -wd4146 -wd4311 -wd4312 -FpC:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -fp:strict -O2 -GS -GL -MD -I"C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\..\win" -I"C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\..\generic" -I"C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\..\libtommath" /DTCL_TOMMATH /DMP_PREC=4 /Dinline=__inline /DHAVE_ZLIB=1 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DMP_FIXED_CUTOFFS /DSTDC_HEADERS /DUSE_NMAKE=1 /DHAVE_STDINT_H=1 /DHAVE_INTTYPES_H=1 /DHAVE_STDBOOL_H=1 /DTCL_THREADS=1 /DUSE_THREAD_ALLOC=1 /DNDEBUG /DTCL_CFG_OPTIMIZED /DTCL_CFG_DO64BIT /DBUILD_tcl'
# If TCL was built with debugging symbols, generated libraries contain
# this string at the end of the library name (before the extension).
TCL_DBGX=t
# Default flags used in an optimized and debuggable build, respectively.
TCL_CFLAGS_DEBUG='-nologo -c -W3 -YX -FpD:\bld\tk_1695506172540\work\tcl8.6.13\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -MDd'
TCL_CFLAGS_OPTIMIZE='-nologo -c -W3 -YX -FpD:\bld\tk_1695506172540\work\tcl8.6.13\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -MD'
TCL_CFLAGS_DEBUG='-nologo -c -W3 -YX -FpC:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -MDd'
TCL_CFLAGS_OPTIMIZE='-nologo -c -W3 -YX -FpC:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929\tcl_ThreadedDynamic\ -MD'
# Default linker flags used in an optimized and debuggable build, respectively.
TCL_LDFLAGS_DEBUG='-nologo -machine:AMD64 -debug -debugtype:cv'
@@ -42,12 +42,9 @@ TCL_SHARED_BUILD=1
TCL_LIB_FILE='tcl86t.lib'
# Flag to indicate whether shared libraries need export files.
TCL_NEEDS_EXP_FILE=
TCL_NEEDS_EXP_FILE=''
# String that can be evaluated to generate the part of the export file
# name that comes after the "libxxx" (includes version number, if any,
# extension, and anything else needed). May depend on the variables
# VERSION. On most UNIX systems this is ${VERSION}.exp.
# Deprecated. Same as TCL_UNSHARED_LIB_SUFFIX
TCL_EXPORT_FILE_SUFFIX='86t.lib'
# Additional libraries to use when linking Tcl.
@@ -55,11 +52,11 @@ TCL_LIBS='kernel32.lib advapi32.lib netapi32.lib user32.lib userenv.lib ws2_32.l
# Top-level directory in which Tcl's platform-independent files are
# installed.
TCL_PREFIX='C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library'
TCL_PREFIX='C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library'
# Top-level directory in which Tcl's platform-specific files (e.g.
# executables) are installed.
TCL_EXEC_PREFIX='C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\bin'
TCL_EXEC_PREFIX='C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library\bin'
# Flags to pass to cc when compiling the components of a shared library:
TCL_SHLIB_CFLAGS=''
@@ -107,25 +104,25 @@ TCL_COMPAT_OBJS=''
TCL_RANLIB=''
# -l flag to pass to the linker to pick up the Tcl library
TCL_LIB_FLAG=''
TCL_LIB_FLAG='tcl86t.lib'
# String to pass to linker to pick up the Tcl library from its
# build directory.
TCL_BUILD_LIB_SPEC=''
TCL_BUILD_LIB_SPEC='C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929\tcl86t.lib'
# String to pass to linker to pick up the Tcl library from its
# installed directory.
TCL_LIB_SPEC='C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tcl86t.lib'
TCL_LIB_SPEC='C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library\lib\tcl86t.lib'
# String to pass to the compiler so that an extension can
# find installed Tcl headers.
TCL_INCLUDE_SPEC='-IC:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\include'
TCL_INCLUDE_SPEC='-IC:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library\include'
# Indicates whether a version numbers should be used in -l switches
# ("ok" means it's safe to use switches like -ltcl7.5; "nodots" means
# use switches like -ltcl75). SunOS and FreeBSD require "nodots", for
# example.
TCL_LIB_VERSIONS_OK=''
TCL_LIB_VERSIONS_OK='nodots'
# String that can be evaluated to generate the part of a shared library
# name that comes after the "libxxx" (includes version number, if any,
@@ -146,7 +143,7 @@ TCL_UNSHARED_LIB_SUFFIX='86t.lib'
# different place than the directory containing the source files, this
# points to the location of the sources, not the location where Tcl was
# compiled.
TCL_SRC_DIR='D:\bld\tk_1695506172540\work\tcl8.6.13\win\..'
TCL_SRC_DIR='C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\..'
# List of standard directories in which to look for packages during
# "package require" commands. Contains the "prefix" directory plus also
@@ -164,18 +161,20 @@ TCL_STUB_LIB_FLAG='tclstub86.lib'
# String to pass to linker to pick up the Tcl stub library from its
# build directory.
TCL_BUILD_STUB_LIB_SPEC='-LD:\bld\tk_1695506172540\work\tcl8.6.13\win\Release_AMD64_VC1929 tclstub86.lib'
TCL_BUILD_STUB_LIB_SPEC='-LC:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929 tclstub86.lib'
# String to pass to linker to pick up the Tcl stub library from its
# installed directory.
TCL_STUB_LIB_SPEC='-LC:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib tclstub86.lib'
TCL_STUB_LIB_SPEC='-LC:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library\lib tclstub86.lib'
# Path to the Tcl stub library in the build directory.
TCL_BUILD_STUB_LIB_PATH='D:\bld\tk_1695506172540\work\tcl8.6.13\win\Release_AMD64_VC1929\tclstub86.lib'
TCL_BUILD_STUB_LIB_PATH='C:\b\abs_17sr80_iza\croot\tk_1714770602079\work\tcl8.6.14\win\Release_AMD64_VC1929\tclstub86.lib'
# Path to the Tcl stub library in the install directory.
TCL_STUB_LIB_PATH='C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tclstub86.lib'
TCL_STUB_LIB_PATH='C:/Users/pitak/Desktop/ton/winedata/privatejuliapkg/ImageUtils/.CondaPkg/env\Library\lib\tclstub86.lib'
# Flag, 1: we built Tcl with threads enabled, 0 we didn't
TCL_THREADS=1
# Name of the zlib library that extensions should use
TCL_ZLIB_LIB_NAME='zdll.lib'

Binary file not shown.

View File

@@ -1,26 +0,0 @@
# -*- tcl -*-
# Tcl package index file, version 1.1
#
# Make sure that TDBC is running in a compatible version of Tcl, and
# that TclOO is available.
if {![package vsatisfies [package provide Tcl] 8.6-]} {
return
}
apply {{dir} {
set libraryfile [file join $dir tdbc.tcl]
if {![file exists $libraryfile] && [info exists ::env(TDBC_LIBRARY)]} {
set libraryfile [file join $::env(TDBC_LIBRARY) tdbc.tcl]
}
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded tdbc 1.1.5 \
"package require TclOO;\
[list load [file join $dir tcl9tdbc115t.dll] [string totitle tdbc]]\;\
[list source $libraryfile]"
} else {
package ifneeded tdbc 1.1.5 \
"package require TclOO;\
[list load [file join $dir tdbc115t.dll] [string totitle tdbc]]\;\
[list source $libraryfile]"
}
}} $dir

View File

@@ -1,86 +0,0 @@
'\"
'\" tdbc.n --
'\"
'\" Copyright (c) 2008 by Kevin B. Kenny.
'\"
'\" See the file "license.terms" for information on usage and redistribution of
'\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
.TH "tdbc" n 8.6 Tcl "Tcl Database Connectivity"
'\" .so man.macros
'\" IGNORE
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\" # BS - start boxed text
'\" # ^y = starting y location
'\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
'\" Draw four-sided box normally, but don't draw top of
'\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\" END IGNORE
.BS
.SH "NAME"
tdbc \- Tcl Database Connectivity
.SH "SYNOPSIS"
.nf
package require \fBtdbc 1.0\fR
package require \fBtdbc::\fIdriver version\fR
\fBtdbc::\fIdriver\fB::connection create \fIdb\fR ?\fI\-option value\fR...?
.fi
.BE
.SH "DESCRIPTION"
.PP
Tcl Database Connectivity (TDBC) is a common interface for Tcl
programs to access SQL databases. It is implemented by a series of
database \fIdrivers\fR: separate modules, each of which adapts Tcl to
the interface of one particular database system. All of the drivers
implement a common series of commands for manipulating the database.
These commands are all named dynamically, since they all represent
objects in the database system. They include \fBconnections,\fR
which represent connections to a database; \fBstatements,\fR which
represent SQL statements, and \fBresult sets,\fR which represent
the sets of rows that result from executing statements. All of these
have manual pages of their own, listed under \fBSEE ALSO\fR.
.PP
In addition, TDBC itself has a few service procedures that are chiefly
of interest to driver writers. \fBSEE ALSO\fR also enumerates them.
.SH "SEE ALSO"
Tdbc_Init(3),
tdbc::connection(n), tdbc::mapSqlState(n),
tdbc::resultset(n), tdbc::statement(n), tdbc::tokenize(n),
tdbc::mysql(n), tdbc::odbc(n), tdbc::postgres(n), tdbc::sqlite3(n)
.SH "KEYWORDS"
TDBC, SQL, database, connectivity, connection, resultset, statement
.SH "COPYRIGHT"
Copyright (c) 2008 by Kevin B. Kenny.
'\" Local Variables:
'\" mode: nroff
'\" End:
'\"

View File

@@ -1,922 +0,0 @@
# tdbc.tcl --
#
# Definitions of base classes from which TDBC drivers' connections,
# statements and result sets may inherit.
#
# Copyright (c) 2008 by Kevin B. Kenny
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# RCS: @(#) $Id$
#
#------------------------------------------------------------------------------
package require TclOO
namespace eval ::tdbc {
namespace export connection statement resultset
variable generalError [list TDBC GENERAL_ERROR HY000 {}]
}
#------------------------------------------------------------------------------
#
# tdbc::ParseConvenienceArgs --
#
# Parse the convenience arguments to a TDBC 'execute',
# 'executewithdictionary', or 'foreach' call.
#
# Parameters:
# argv - Arguments to the call
# optsVar -- Name of a variable in caller's scope that will receive
# a dictionary of the supplied options
#
# Results:
# Returns any args remaining after parsing the options.
#
# Side effects:
# Sets the 'opts' dictionary to the options.
#
#------------------------------------------------------------------------------
proc tdbc::ParseConvenienceArgs {argv optsVar} {
variable generalError
upvar 1 $optsVar opts
set opts [dict create -as dicts]
set i 0
# Munch keyword options off the front of the command arguments
foreach {key value} $argv {
if {[string index $key 0] eq {-}} {
switch -regexp -- $key {
-as? {
if {$value ne {dicts} && $value ne {lists}} {
set errorcode $generalError
lappend errorcode badVarType $value
return -code error \
-errorcode $errorcode \
"bad variable type \"$value\":\
must be lists or dicts"
}
dict set opts -as $value
}
-c(?:o(?:l(?:u(?:m(?:n(?:s(?:v(?:a(?:r(?:i(?:a(?:b(?:le?)?)?)?)?)?)?)?)?)?)?)?)?) {
dict set opts -columnsvariable $value
}
-- {
incr i
break
}
default {
set errorcode $generalError
lappend errorcode badOption $key
return -code error \
-errorcode $errorcode \
"bad option \"$key\":\
must be -as or -columnsvariable"
}
}
} else {
break
}
incr i 2
}
return [lrange $argv[set argv {}] $i end]
}
#------------------------------------------------------------------------------
#
# tdbc::connection --
#
# Class that represents a generic connection to a database.
#
#-----------------------------------------------------------------------------
oo::class create ::tdbc::connection {
# statementSeq is the sequence number of the last statement created.
# statementClass is the name of the class that implements the
# 'statement' API.
# primaryKeysStatement is the statement that queries primary keys
# foreignKeysStatement is the statement that queries foreign keys
variable statementSeq primaryKeysStatement foreignKeysStatement
# The base class constructor accepts no arguments. It sets up the
# machinery to do the bookkeeping to keep track of what statements
# are associated with the connection. The derived class constructor
# is expected to set the variable, 'statementClass' to the name
# of the class that represents statements, so that the 'prepare'
# method can invoke it.
constructor {} {
set statementSeq 0
namespace eval Stmt {}
}
# The 'close' method is simply an alternative syntax for destroying
# the connection.
method close {} {
my destroy
}
# The 'prepare' method creates a new statement against the connection,
# giving its constructor the current statement and the SQL code to
# prepare. It uses the 'statementClass' variable set by the constructor
# to get the class to instantiate.
method prepare {sqlcode} {
return [my statementCreate Stmt::[incr statementSeq] [self] $sqlcode]
}
# The 'statementCreate' method delegates to the constructor
# of the class specified by the 'statementClass' variable. It's
# intended for drivers designed before tdbc 1.0b10. Current ones
# should forward this method to the constructor directly.
method statementCreate {name instance sqlcode} {
my variable statementClass
return [$statementClass create $name $instance $sqlcode]
}
# Derived classes are expected to implement the 'prepareCall' method,
# and have it call 'prepare' as needed (or do something else and
# install the resulting statement)
# The 'statements' method lists the statements active against this
# connection.
method statements {} {
info commands Stmt::*
}
# The 'resultsets' method lists the result sets active against this
# connection.
method resultsets {} {
set retval {}
foreach statement [my statements] {
foreach resultset [$statement resultsets] {
lappend retval $resultset
}
}
return $retval
}
# The 'transaction' method executes a block of Tcl code as an
# ACID transaction against the database.
method transaction {script} {
my begintransaction
set status [catch {uplevel 1 $script} result options]
if {$status in {0 2 3 4}} {
set status2 [catch {my commit} result2 options2]
if {$status2 == 1} {
set status 1
set result $result2
set options $options2
}
}
switch -exact -- $status {
0 {
# do nothing
}
2 - 3 - 4 {
set options [dict merge {-level 1} $options[set options {}]]
dict incr options -level
}
default {
my rollback
}
}
return -options $options $result
}
# The 'allrows' method prepares a statement, then executes it with
# a given set of substituents, returning a list of all the rows
# that the statement returns. Optionally, it stores the names of
# the columns in '-columnsvariable'.
# Usage:
# $db allrows ?-as lists|dicts? ?-columnsvariable varName? ?--?
# sql ?dictionary?
method allrows args {
variable ::tdbc::generalError
# Grab keyword-value parameters
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
# Check postitional parameters
set cmd [list [self] prepare]
if {[llength $args] == 1} {
set sqlcode [lindex $args 0]
} elseif {[llength $args] == 2} {
lassign $args sqlcode dict
} else {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? sqlcode ?dictionary?"
}
lappend cmd $sqlcode
# Prepare the statement
set stmt [uplevel 1 $cmd]
# Delegate to the statement to accumulate the results
set cmd [list $stmt allrows {*}$opts --]
if {[info exists dict]} {
lappend cmd $dict
}
set status [catch {
uplevel 1 $cmd
} result options]
# Destroy the statement
catch {
$stmt close
}
return -options $options $result
}
# The 'foreach' method prepares a statement, then executes it with
# a supplied set of substituents. For each row of the result,
# it sets a variable to the row and invokes a script in the caller's
# scope.
#
# Usage:
# $db foreach ?-as lists|dicts? ?-columnsVariable varName? ?--?
# varName sql ?dictionary? script
method foreach args {
variable ::tdbc::generalError
# Grab keyword-value parameters
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
# Check postitional parameters
set cmd [list [self] prepare]
if {[llength $args] == 3} {
lassign $args varname sqlcode script
} elseif {[llength $args] == 4} {
lassign $args varname sqlcode dict script
} else {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? varname sqlcode ?dictionary? script"
}
lappend cmd $sqlcode
# Prepare the statement
set stmt [uplevel 1 $cmd]
# Delegate to the statement to iterate over the results
set cmd [list $stmt foreach {*}$opts -- $varname]
if {[info exists dict]} {
lappend cmd $dict
}
lappend cmd $script
set status [catch {
uplevel 1 $cmd
} result options]
# Destroy the statement
catch {
$stmt close
}
# Adjust return level in the case that the script [return]s
if {$status == 2} {
set options [dict merge {-level 1} $options[set options {}]]
dict incr options -level
}
return -options $options $result
}
# The 'BuildPrimaryKeysStatement' method builds a SQL statement to
# retrieve the primary keys from a database. (It executes once the
# first time the 'primaryKeys' method is executed, and retains the
# prepared statement for reuse.)
method BuildPrimaryKeysStatement {} {
# On some databases, CONSTRAINT_CATALOG is always NULL and
# JOINing to it fails. Check for this case and include that
# JOIN only if catalog names are supplied.
set catalogClause {}
if {[lindex [set count [my allrows -as lists {
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_CATALOG IS NOT NULL}]] 0 0] != 0} {
set catalogClause \
{AND xtable.CONSTRAINT_CATALOG = xcolumn.CONSTRAINT_CATALOG}
}
set primaryKeysStatement [my prepare "
SELECT xtable.TABLE_SCHEMA AS \"tableSchema\",
xtable.TABLE_NAME AS \"tableName\",
xtable.CONSTRAINT_CATALOG AS \"constraintCatalog\",
xtable.CONSTRAINT_SCHEMA AS \"constraintSchema\",
xtable.CONSTRAINT_NAME AS \"constraintName\",
xcolumn.COLUMN_NAME AS \"columnName\",
xcolumn.ORDINAL_POSITION AS \"ordinalPosition\"
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS xtable
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE xcolumn
ON xtable.CONSTRAINT_SCHEMA = xcolumn.CONSTRAINT_SCHEMA
AND xtable.TABLE_NAME = xcolumn.TABLE_NAME
AND xtable.CONSTRAINT_NAME = xcolumn.CONSTRAINT_NAME
$catalogClause
WHERE xtable.TABLE_NAME = :tableName
AND xtable.CONSTRAINT_TYPE = 'PRIMARY KEY'
"]
}
# The default implementation of the 'primarykeys' method uses the
# SQL INFORMATION_SCHEMA to retrieve primary key information. Databases
# that might not have INFORMATION_SCHEMA must overload this method.
method primarykeys {tableName} {
if {![info exists primaryKeysStatement]} {
my BuildPrimaryKeysStatement
}
tailcall $primaryKeysStatement allrows [list tableName $tableName]
}
# The 'BuildForeignKeysStatements' method builds a SQL statement to
# retrieve the foreign keys from a database. (It executes once the
# first time the 'foreignKeys' method is executed, and retains the
# prepared statements for reuse.)
method BuildForeignKeysStatement {} {
# On some databases, CONSTRAINT_CATALOG is always NULL and
# JOINing to it fails. Check for this case and include that
# JOIN only if catalog names are supplied.
set catalogClause1 {}
set catalogClause2 {}
if {[lindex [set count [my allrows -as lists {
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_CATALOG IS NOT NULL}]] 0 0] != 0} {
set catalogClause1 \
{AND fkc.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG}
set catalogClause2 \
{AND pkc.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG}
}
foreach {exists1 clause1} {
0 {}
1 { AND pkc.TABLE_NAME = :primary}
} {
foreach {exists2 clause2} {
0 {}
1 { AND fkc.TABLE_NAME = :foreign}
} {
set stmt [my prepare "
SELECT rc.CONSTRAINT_CATALOG AS \"foreignConstraintCatalog\",
rc.CONSTRAINT_SCHEMA AS \"foreignConstraintSchema\",
rc.CONSTRAINT_NAME AS \"foreignConstraintName\",
rc.UNIQUE_CONSTRAINT_CATALOG
AS \"primaryConstraintCatalog\",
rc.UNIQUE_CONSTRAINT_SCHEMA AS \"primaryConstraintSchema\",
rc.UNIQUE_CONSTRAINT_NAME AS \"primaryConstraintName\",
rc.UPDATE_RULE AS \"updateAction\",
rc.DELETE_RULE AS \"deleteAction\",
pkc.TABLE_CATALOG AS \"primaryCatalog\",
pkc.TABLE_SCHEMA AS \"primarySchema\",
pkc.TABLE_NAME AS \"primaryTable\",
pkc.COLUMN_NAME AS \"primaryColumn\",
fkc.TABLE_CATALOG AS \"foreignCatalog\",
fkc.TABLE_SCHEMA AS \"foreignSchema\",
fkc.TABLE_NAME AS \"foreignTable\",
fkc.COLUMN_NAME AS \"foreignColumn\",
pkc.ORDINAL_POSITION AS \"ordinalPosition\"
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkc
ON fkc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
AND fkc.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA
$catalogClause1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkc
ON pkc.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME
AND pkc.CONSTRAINT_SCHEMA = rc.UNIQUE_CONSTRAINT_SCHEMA
$catalogClause2
AND pkc.ORDINAL_POSITION = fkc.ORDINAL_POSITION
WHERE 1=1
$clause1
$clause2
ORDER BY \"foreignConstraintCatalog\", \"foreignConstraintSchema\", \"foreignConstraintName\", \"ordinalPosition\"
"]
dict set foreignKeysStatement $exists1 $exists2 $stmt
}
}
}
# The default implementation of the 'foreignkeys' method uses the
# SQL INFORMATION_SCHEMA to retrieve primary key information. Databases
# that might not have INFORMATION_SCHEMA must overload this method.
method foreignkeys {args} {
variable ::tdbc::generalError
# Check arguments
set argdict {}
if {[llength $args] % 2 != 0} {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?..."
}
foreach {key value} $args {
if {$key ni {-primary -foreign}} {
set errorcode $generalError
lappend errorcode badOption
return -code error -errorcode $errorcode \
"bad option \"$key\", must be -primary or -foreign"
}
set key [string range $key 1 end]
if {[dict exists $argdict $key]} {
set errorcode $generalError
lappend errorcode dupOption
return -code error -errorcode $errorcode \
"duplicate option \"$key\" supplied"
}
dict set argdict $key $value
}
# Build the statements that query foreign keys. There are four
# of them, one for each combination of whether -primary
# and -foreign is specified.
if {![info exists foreignKeysStatement]} {
my BuildForeignKeysStatement
}
set stmt [dict get $foreignKeysStatement \
[dict exists $argdict primary] \
[dict exists $argdict foreign]]
tailcall $stmt allrows $argdict
}
# Derived classes are expected to implement the 'begintransaction',
# 'commit', and 'rollback' methods.
# Derived classes are expected to implement 'tables' and 'columns' method.
}
#------------------------------------------------------------------------------
#
# Class: tdbc::statement
#
# Class that represents a SQL statement in a generic database
#
#------------------------------------------------------------------------------
oo::class create tdbc::statement {
# resultSetSeq is the sequence number of the last result set created.
# resultSetClass is the name of the class that implements the 'resultset'
# API.
variable resultSetClass resultSetSeq
# The base class constructor accepts no arguments. It initializes
# the machinery for tracking the ownership of result sets. The derived
# constructor is expected to invoke the base constructor, and to
# set a variable 'resultSetClass' to the fully-qualified name of the
# class that represents result sets.
constructor {} {
set resultSetSeq 0
namespace eval ResultSet {}
}
# The 'execute' method on a statement runs the statement with
# a particular set of substituted variables. It actually works
# by creating the result set object and letting that objects
# constructor do the work of running the statement. The creation
# is wrapped in an [uplevel] call because the substitution proces
# may need to access variables in the caller's scope.
# WORKAROUND: Take out the '0 &&' from the next line when
# Bug 2649975 is fixed
if {0 && [package vsatisfies [package provide Tcl] 8.6]} {
method execute args {
tailcall my resultSetCreate \
[namespace current]::ResultSet::[incr resultSetSeq] \
[self] {*}$args
}
} else {
method execute args {
return \
[uplevel 1 \
[list \
[self] resultSetCreate \
[namespace current]::ResultSet::[incr resultSetSeq] \
[self] {*}$args]]
}
}
# The 'ResultSetCreate' method is expected to be a forward to the
# appropriate result set constructor. If it's missing, the driver must
# have been designed for tdbc 1.0b9 and earlier, and the 'resultSetClass'
# variable holds the class name.
method resultSetCreate {name instance args} {
return [uplevel 1 [list $resultSetClass create \
$name $instance {*}$args]]
}
# The 'resultsets' method returns a list of result sets produced by
# the current statement
method resultsets {} {
info commands ResultSet::*
}
# The 'allrows' method executes a statement with a given set of
# substituents, and returns a list of all the rows that the statement
# returns. Optionally, it stores the names of columns in
# '-columnsvariable'.
#
# Usage:
# $statement allrows ?-as lists|dicts? ?-columnsvariable varName? ?--?
# ?dictionary?
method allrows args {
variable ::tdbc::generalError
# Grab keyword-value parameters
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
# Check postitional parameters
set cmd [list [self] execute]
if {[llength $args] == 0} {
# do nothing
} elseif {[llength $args] == 1} {
lappend cmd [lindex $args 0]
} else {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? ?dictionary?"
}
# Get the result set
set resultSet [uplevel 1 $cmd]
# Delegate to the result set's [allrows] method to accumulate
# the rows of the result.
set cmd [list $resultSet allrows {*}$opts]
set status [catch {
uplevel 1 $cmd
} result options]
# Destroy the result set
catch {
rename $resultSet {}
}
# Adjust return level in the case that the script [return]s
if {$status == 2} {
set options [dict merge {-level 1} $options[set options {}]]
dict incr options -level
}
return -options $options $result
}
# The 'foreach' method executes a statement with a given set of
# substituents. It runs the supplied script, substituting the supplied
# named variable. Optionally, it stores the names of columns in
# '-columnsvariable'.
#
# Usage:
# $statement foreach ?-as lists|dicts? ?-columnsvariable varName? ?--?
# variableName ?dictionary? script
method foreach args {
variable ::tdbc::generalError
# Grab keyword-value parameters
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
# Check positional parameters
set cmd [list [self] execute]
if {[llength $args] == 2} {
lassign $args varname script
} elseif {[llength $args] == 3} {
lassign $args varname dict script
lappend cmd $dict
} else {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? varName ?dictionary? script"
}
# Get the result set
set resultSet [uplevel 1 $cmd]
# Delegate to the result set's [foreach] method to evaluate
# the script for each row of the result.
set cmd [list $resultSet foreach {*}$opts -- $varname $script]
set status [catch {
uplevel 1 $cmd
} result options]
# Destroy the result set
catch {
rename $resultSet {}
}
# Adjust return level in the case that the script [return]s
if {$status == 2} {
set options [dict merge {-level 1} $options[set options {}]]
dict incr options -level
}
return -options $options $result
}
# The 'close' method is syntactic sugar for invoking the destructor
method close {} {
my destroy
}
# Derived classes are expected to implement their own constructors,
# plus the following methods:
# paramtype paramName ?direction? type ?scale ?precision??
# Declares the type of a parameter in the statement
}
#------------------------------------------------------------------------------
#
# Class: tdbc::resultset
#
# Class that represents a result set in a generic database.
#
#------------------------------------------------------------------------------
oo::class create tdbc::resultset {
constructor {} { }
# The 'allrows' method returns a list of all rows that a given
# result set returns.
method allrows args {
variable ::tdbc::generalError
# Parse args
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
if {[llength $args] != 0} {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? varName script"
}
# Do -columnsvariable if requested
if {[dict exists $opts -columnsvariable]} {
upvar 1 [dict get $opts -columnsvariable] columns
}
# Assemble the results
if {[dict get $opts -as] eq {lists}} {
set delegate nextlist
} else {
set delegate nextdict
}
set results [list]
while {1} {
set columns [my columns]
while {[my $delegate row]} {
lappend results $row
}
if {![my nextresults]} break
}
return $results
}
# The 'foreach' method runs a script on each row from a result set.
method foreach args {
variable ::tdbc::generalError
# Grab keyword-value parameters
set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
# Check positional parameters
if {[llength $args] != 2} {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? varName script"
}
# Do -columnsvariable if requested
if {[dict exists $opts -columnsvariable]} {
upvar 1 [dict get $opts -columnsvariable] columns
}
# Iterate over the groups of results
while {1} {
# Export column names to caller
set columns [my columns]
# Iterate over the rows of one group of results
upvar 1 [lindex $args 0] row
if {[dict get $opts -as] eq {lists}} {
set delegate nextlist
} else {
set delegate nextdict
}
while {[my $delegate row]} {
set status [catch {
uplevel 1 [lindex $args 1]
} result options]
switch -exact -- $status {
0 - 4 { # OK or CONTINUE
}
2 { # RETURN
set options \
[dict merge {-level 1} $options[set options {}]]
dict incr options -level
return -options $options $result
}
3 { # BREAK
set broken 1
break
}
default { # ERROR or unknown status
return -options $options $result
}
}
}
# Advance to the next group of results if there is one
if {[info exists broken] || ![my nextresults]} {
break
}
}
return
}
# The 'nextrow' method retrieves a row in the form of either
# a list or a dictionary.
method nextrow {args} {
variable ::tdbc::generalError
set opts [dict create -as dicts]
set i 0
# Munch keyword options off the front of the command arguments
foreach {key value} $args {
if {[string index $key 0] eq {-}} {
switch -regexp -- $key {
-as? {
dict set opts -as $value
}
-- {
incr i
break
}
default {
set errorcode $generalError
lappend errorcode badOption $key
return -code error -errorcode $errorcode \
"bad option \"$key\":\
must be -as or -columnsvariable"
}
}
} else {
break
}
incr i 2
}
set args [lrange $args $i end]
if {[llength $args] != 1} {
set errorcode $generalError
lappend errorcode wrongNumArgs
return -code error -errorcode $errorcode \
"wrong # args: should be [lrange [info level 0] 0 1]\
?-option value?... ?--? varName"
}
upvar 1 [lindex $args 0] row
if {[dict get $opts -as] eq {lists}} {
set delegate nextlist
} else {
set delegate nextdict
}
return [my $delegate row]
}
# Derived classes must override 'nextresults' if a single
# statement execution can yield multiple sets of results
method nextresults {} {
return 0
}
# Derived classes must override 'outputparams' if statements can
# have output parameters.
method outputparams {} {
return {}
}
# The 'close' method is syntactic sugar for destroying the result set.
method close {} {
my destroy
}
# Derived classes are expected to implement the following methods:
# constructor and destructor.
# Constructor accepts a statement and an optional
# a dictionary of substituted parameters and
# executes the statement against the database. If
# the dictionary is not supplied, then the default
# is to get params from variables in the caller's scope).
# columns
# -- Returns a list of the names of the columns in the result.
# nextdict variableName
# -- Stores the next row of the result set in the given variable
# in caller's scope, in the form of a dictionary that maps
# column names to values.
# nextlist variableName
# -- Stores the next row of the result set in the given variable
# in caller's scope, in the form of a list of cells.
# rowcount
# -- Returns a count of rows affected by the statement, or -1
# if the count of rows has not been determined.
}

Binary file not shown.

View File

@@ -1,81 +0,0 @@
# tdbcConfig.sh --
#
# This shell script (for sh) is generated automatically by TDBC's configure
# script. It will create shell variables for most of the configuration options
# discovered by the configure script. This script is intended to be included
# by the configure scripts for TDBC extensions so that they don't have to
# figure this all out for themselves.
#
# The information in this file is specific to a single platform.
#
# RCS: @(#) $Id$
# TDBC's version number
tdbc_VERSION=1.1.5
TDBC_VERSION=1.1.5
# Name of the TDBC library - may be either a static or shared library
tdbc_LIB_FILE=tdbc115t.dll
TDBC_LIB_FILE=tdbc115t.dll
# String to pass to the linker to pick up the TDBC library from its build dir
tdbc_BUILD_LIB_SPEC="@tdbc_BUILD_LIB_SPEC@"
TDBC_BUILD_LIB_SPEC="@tdbc_BUILD_LIB_SPEC@"
# String to pass to the linker to pick up the TDBC library from its installed
# dir.
tdbc_LIB_SPEC="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbc115t.dll"
TDBC_LIB_SPEC="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbc115t.dll"
# Name of the TBDC stub library
tdbc_STUB_LIB_FILE="tdbcstub115.lib"
TDBC_STUB_LIB_FILE="tdbcstub115.lib"
# String to pass to the linker to pick up the TDBC stub library from its
# build directory
tdbc_BUILD_STUB_LIB_SPEC="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\Release_AMD64_VC1929\tdbcstub115.lib"
TDBC_BUILD_STUB_LIB_SPEC="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\Release_AMD64_VC1929\tdbcstub115.lib"
# String to pass to the linker to pick up the TDBC stub library from its
# installed directory
tdbc_STUB_LIB_SPEC="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbcstub115.lib"
TDBC_STUB_LIB_SPEC="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbcstub115.lib"
# Path name of the TDBC stub library in its build directory
tdbc_BUILD_STUB_LIB_PATH="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\Release_AMD64_VC1929\tdbcstub115.lib"
TDBC_BUILD_STUB_LIB_PATH="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\Release_AMD64_VC1929\tdbcstub115.lib"
# Path name of the TDBC stub library in its installed directory
tdbc_STUB_LIB_PATH="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbcstub115.lib"
TDBC_STUB_LIB_PATH="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5\tdbcstub115.lib"
# Location of the top-level source directories from which TDBC was built.
# This is the directory that contains doc/, generic/ and so on. If TDBC
# was compiled in a directory other than the source directory, this still
# points to the location of the sources, not the location where TDBC was
# compiled.
tdbc_SRC_DIR="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\.."
TDBC_SRC_DIR="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\.."
# String to pass to the compiler so that an extension can find installed TDBC
# headers
tdbc_INCLUDE_SPEC="-IC:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\..\include"
TDBC_INCLUDE_SPEC="-IC:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\..\include"
# String to pass to the compiler so that an extension can find TDBC headers
# in the source directory
tdbc_BUILD_INCLUDE_SPEC="-ID:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\..\generic"
TDBC_BUILD_INCLUDE_SPEC="-ID:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\..\generic"
# Path name where .tcl files in the tdbc package appear at run time.
tdbc_LIBRARY_PATH="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5"
TDBC_LIBRARY_PATH="C:/Users/naraw/Desktop/New folder/ImageUtils/.CondaPkg/env\Library\lib\tdbc1.1.5"
# Path name where .tcl files in the tdbc package appear at build time.
tdbc_BUILD_LIBRARY_PATH="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\../library"
TDBC_BUILD_LIBRARY_PATH="D:\bld\tk_1695506172540\work\tcl8.6.13\pkgs\tdbc1.1.5\win\../library"
# Additional flags that must be passed to the C compiler to use tdbc
tdbc_CFLAGS=
TDBC_CFLAGS=

View File

@@ -1,376 +0,0 @@
'\"
'\" tdbc::connection.n --
'\"
'\" Copyright (c) 2008 by Kevin B. Kenny.
'\"
'\" See the file "license.terms" for information on usage and redistribution of
'\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
.TH "tdbc::connection" n 8.6 Tcl "Tcl Database Connectivity"
'\" .so man.macros
'\" IGNORE
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\" # BS - start boxed text
'\" # ^y = starting y location
'\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
'\" Draw four-sided box normally, but don't draw top of
'\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\" END IGNORE
.BS
.SH "NAME"
tdbc::connection \- TDBC connection object
.SH "SYNOPSIS"
.nf
package require \fBtdbc 1.0\fR
package require \fBtdbc::\fIdriver version\fR
\fBtdbc::\fIdriver\fB::connection create \fIdb\fR ?\fI\-option value\fR...?
\fIdb \fBconfigure\fR ?\fI\-option value\fR...?
\fIdb \fBclose\fR
\fIdb \fBforeignkeys\fR ?\fI\-primary tableName\fR? ?\fI\-foreign tableName\fR?
\fIdb \fBprepare\fR \fIsql-code\fR
\fIdb \fBpreparecall\fR \fIcall\fR
\fIdb \fBprimarykeys\fR \fItableName\fR
\fIdb \fBstatements\fR
\fIdb \fBresultsets\fR
\fIdb \fBtables\fR ?\fIpattern\fR?
\fIdb \fBcolumns\fR \fItable\fR ?\fIpattern\fR?
\fIdb \fBbegintransaction\fR
\fIdb \fBcommit\fR
\fIdb \fBrollback\fR
\fIdb \fBtransaction\fR \fIscript\fR
.fi
.ad l
.in 14
.ti 7
\fIdb \fBallrows\fR ?\fB\-as lists\fR|\fBdicts\fR? ?\fB\-columnsvariable \fIname\fR? ?\fB\-\-\fR? \fIsql-code\fR ?\fIdictionary\fR?
.br
.ti 7
\fIdb \fBforeach\fR ?\fB\-as lists\fR|\fBdicts\fR? ?\fB\-columnsvariable \fIname\fR? ?\-\-? \fIvarName sqlcode\fR ?\fIdictionary\fR? \fIscript\fR
.ad b
.BE
.SH "DESCRIPTION"
.PP
Every database driver for TDBC (Tcl DataBase Connectivity) implements
a \fIconnection\fR object that represents a connection to a database.
By convention, this object is created by the command,
\fBtdbc::\fIdriver\fB::connection create\fR.
This command accepts the name of a Tcl command that will represent the
connection and a possible set of options (see \fBCONFIGURATION
OPTIONS\fR). It establishes a connection to the database and returns
the name of the newly-created Tcl command.
.PP
The \fBconfigure\fR object command on a database connection, if
presented with no arguments, returns a list of alternating keywords
and values representing the connection's current configuration. If
presented with a single argument \fI\-option\fR, it returns the
configured value of the given option. Otherwise, it must be given an
even number of arguments which are alternating options and values. The
specified options receive the specified values, and nothing is
returned.
.PP
The \fBclose\fR object command on a database connection closes the
connection. All active statements and result sets on the connection
are closed. Any uncommitted transaction is rolled back. The object
command is deleted.
.PP
The \fBprepare\fR object command on a database connection prepares a SQL
statement for execution. The \fIsql-code\fR argument must contain a
single SQL statement to be executed. Bound variables may be
included. The return value is a
newly-created Tcl command that represents the statement. See
\fBtdbc::statement\fR for more detailed discussion of the
SQL accepted by the \fBprepare\fR object command and the
interface accepted by a statement.
.PP
On a database connection where the underlying database and driver
support stored procedures, the \fBpreparecall\fR
object command prepares a call to a stored procedure for execution.
The syntax of the stored procedure call is:
.PP
.CS
?\fIresultvar\fR =? \fIprocname\fR(?\fIarg\fR ?, \fIarg\fR...?)
.CE
.PP
The return value is a
newly-created Tcl command that represents the statement. See
\fBtdbc::statement\fR for the interface accepted by a statement.
.PP
The \fBstatements\fR object command returns a list of statements
that have been created by \fBprepare\fR and \fBpreparecall\fR
statements against the given connection and have not yet been closed.
.PP
The \fBresultsets\fR object command returns a list of result sets
that have been obtained by executing statements prepared using the
given connection and not yet closed.
.PP
The \fBtables\fR object command allows the program to query the
connection for the names of tables that exist in the database.
The optional \fIpattern\fR parameter is a pattern to match the name of
a table. It may contain the SQL wild-card characters '\fB%\fR' and
'\fB_\fR'. The return value is a dictionary whose keys are table names
and whose values are subdictionaries. See the documentation for the
individual database driver for the interpretation of the values.
.PP
The \fBcolumns\fR object command allows the program to query the
connection for the names of columns that exist in a given table.
The optional \fBpattern\fR parameter is a pattern to match the name of
a column. It may contain the SQL wild-card characters '\fB%\fR' and
'\fB_\fR'. The return value is a dictionary whose keys are column names
and whose values are dictionaries. Each of the subdictionaries will
contain at least the following keys and values (and may contain others
whose usage is determined by a specific database driver).
.IP \fBtype\fR
Contains the data type of the column, and will generally be chosen
from the set,
\fBbigint\fR, \fBbinary\fR, \fBbit\fR, \fBchar\fR, \fBdate\fR,
\fBdecimal\fR, \fBdouble\fR, \fBfloat\fR, \fBinteger\fR,
\fBlongvarbinary\fR, \fBlongvarchar\fR, \fBnumeric\fR, \fBreal\fR,
\fBtime\fR, \fBtimestamp\fR, \fBsmallint\fR, \fBtinyint\fR,
\fBvarbinary\fR, and \fBvarchar\fR. (If the column has a type that
cannot be represented as one of the above, \fBtype\fR will contain
a driver-dependent description of the type.)
.IP \fBprecision\fR
Contains the precision of the column in bits, decimal digits, or the
width in characters, according to the type.
.IP \fBscale\fR
Contains the scale of the column (the number of digits after the radix
point), for types that support the concept.
.IP \fBnullable\fR
Contains 1 if the column can contain NULL values, and 0 otherwise.
.PP
The \fBprimarykeys\fR object command allows the program to query the
connection for the primary keys belonging to a given table. The
\fItableName\fR parameter identifies the table being interrogated. The result
is a list of dictionaries enumerating the keys (in a similar format to the
list returned by \fI$connection\fR \fBallrows -as dicts\fR). The keys of the
dictionary may include at least the following. Values that are NULL or
meaningless in a given database are omitted.
.IP \fBtableCatalog\fR
Name of the catalog in which the table appears.
.IP \fBtableSchema\fR
Name of the schema in which the table appears.
.IP \fBtableName\fR
Name of the table owning the primary key.
.IP \fBconstraintCatalog\fR
Name of the catalog in which the primary key constraint appears. In some
database systems, this may not be the same as the table's catalog.
.IP \fBconstraintSchema\fR
Name of the schema in which the primary key constraint appears. In some
database systems, this may not be the same as the table's schema.
.IP \fBconstraintName\fR
Name of the primary key constraint,
.IP \fBcolumnName\fR
Name of a column that is a member of the primary key.
.IP \fBordinalPosition\fR
Ordinal position of the column within the primary key.
.PP
To these columns may be added additional ones that are specific to
a particular database system.
.PP
The \fBforeignkeys\fR object command allows the program to query the
connection for foreign key relationships that apply to a particular table.
The relationships may be constrained to the keys that appear in a
particular table (\fB-foreign\fR \fItableName\fR), the keys that
refer to a particular table (\fB-primary\fR \fItableName\fR), or both.
At least one of \fB-primary\fR and \fB-foreign\fR should be specified,
although some drivers will enumerate all foreign keys in the current
catalog if both options are omitted. The result of the \fBforeignkeys\fR
object command is a list of dictionaries, with one list element per key
(in a similar format to the
list returned by \fI$connection\fR \fBallrows -as dicts\fR). The keys of the
dictionary may include at least the following. Values that are NULL or
meaningless in a given database are omitted.
.IP \fBforeignConstraintCatalog\fR
Catalog in which the foreign key constraint appears.
.IP \fBforeignConstraintSchema\fR
Schema in which the foreign key constraint appears.
.IP \fBforeignConstraintName\fR
Name of the foreign key constraint.
.IP \fBprimaryConstraintCatalog\fR
Catalog holding the primary key constraint (or unique key constraint) on the
column to which the foreign key refers.
.IP \fBprimaryConstraintSchema\fR
Schema holding the primary key constraint (or unique key constraint) on the
column to which the foreign key refers.
.IP \fBprimaryConstraintName\fR
Name of the primary key constraint (or unique key constraint) on the
column to which the foreign key refers.
.IP \fBupdateAction\fR
Action to take when an UPDATE statement invalidates the constraint.
The value will be \fBCASCADE\fR, \fBSET DEFAULT\fR, \fBSET NULL\fR,
\fBRESTRICT\fR, or \fBNO ACTION\fR.
.IP \fBdeleteAction\fR
Action to take when a DELETE statement invalidates the constraint.
The value will be \fBCASCADE\fR, \fBSET DEFAULT\fR, \fBSET NULL\fR,
\fBRESTRICT\fR, or \fBNO ACTION\fR.
.IP \fBprimaryCatalog\fR
Catalog name in which the primary table (the one to which the foreign key
refers) appears.
.IP \fBprimarySchema\fR
Schema name in which the primary table (the one to which the foreign key
refers) appears.
.PP
.IP \fBprimaryTable\fR
Table name of the primary table (the one to which the foreign key
refers).
.IP \fBprimaryColumn\fR
Name of the column to which the foreign key refers.
.IP \fBforeignCatalog\fR
Name of the catalog in which the table containing the foreign key appears.
.IP \fBforeignSchema\fR
Name of the schema in which the table containing the foreign key appears.
.IP \fBforeignTable\fR
Name of the table containing the foreign key.
.IP \fBforeignColumn\fR
Name of the column appearing in the foreign key.
.IP \fBordinalPosition\fR
Position of the column in the foreign key, if the key is a compound key.
.PP
The \fBbegintransaction\fR object command on a database connection
begins a transaction on the database. If the underlying database does
not support atomic, consistent, isolated, durable transactions, the
\fBbegintransaction\fR object command returns an error reporting the
fact. Similarly, if multiple \fBbegintransaction\fR commands are executed
withough an intervening \fBcommit\fR or \fBrollback\fR command, an
error is returned unless the underlying database supports nested
transactions.
.PP
The \fBcommit\fR object command on a database connection ends the most
recent transaction started by \fBbegintransaction\fR and commits
changes to the database.
.PP
The \fBrollback\fR object command on a database connection rolls back
the most recent transaction started by \fBbegintransaction\fR. The
state of the database is as if nothing happened during the
transaction.
.PP
The \fBtransaction\fR object command on a database connection
presents a simple way of bundling a database transaction. It begins a
transaction, and evaluates the supplied \fIscript\fR argument as a Tcl
script in the caller's scope. If \fIscript\fR terminates normally, or
by \fBbreak\fR, \fBcontinue\fR, or \fBreturn\fR, the transaction is
committed (and any action requested by \fBbreak\fR, \fBcontinue\fR, or
\fBreturn\fR takes place). If the commit fails for any reason,
the error in the commit is treated as an error in the \fIscript\fR.
In the case of an error in \fIscript\fR or in the commit,
the transaction is rolled back and the error is
rethrown. Any nonstandard return code from the script
causes the transaction to be rolled back and then is rethrown.
.PP
The \fBallrows\fR object command prepares a SQL statement (given by
the \fIsql-code\fR parameter) to execute against the database.
It then executes it (see \fBtdbc::statement\fR for details) with the
optional \fIdictionary\fR parameter giving bind variables. Finally,
it uses the \fIallrows\fR object command on the result set (see
\fBtdbc::resultset\fR) to construct a list of the results. Finally, both
result set and statement are closed. The return value is the list of
results.
.PP
The \fBforeach\fR object command prepares a SQL statement (given by
the \fIsql-code\fR parameter) to execute against the database.
It then executes it (see \fBtdbc::statement\fR for details) with the
optional \fIdictionary\fR parameter giving bind variables. Finally,
it uses the \fIforeach\fR object command on the result set (see
\fBtdbc::resultset\fR) to evaluate the given \fIscript\fR for each row of
the results. Finally, both result set and statement are closed, even
if the given \fIscript\fR results in a \fBreturn\fR, an error, or
an unusual return code.
.SH "CONFIGURATION OPTIONS"
The configuration options accepted when the connection is created and
on the connection's \fBconfigure\fR object command include the
following, and may include others specific to a database driver.
.IP "\fB\-encoding \fIname\fR"
Specifies the encoding to be used in connecting to the database.
The \fIname\fR should be one of the names accepted by the
\fBencoding\fR command. This option is usually unnecessary; most
database drivers can figure out the encoding in use by themselves.
.IP "\fB\-isolation \fIlevel\fR"
Specifies the transaction isolation level needed for transactions on
the database. The acceptable values for \fIlevel\fR are shown under
\fBTRANSACTION ISOLATION LEVELS\fR.
.IP "\fB\-timeout \fIms\fR"
Specifies the maximum time to wait for a an operation database engine before
reporting an error to the caller. The \fIms\fR argument gives the
maximum time in milliseconds. A value of zero (the default) specifies
that the calling process is to wait indefinitely for database
operations.
.IP "\fB\-readonly \fIflag\fR"
Specifies that the connection will not modify the database (if the
Boolean parameter \fIflag\fR is true), or that it may modify the
database (if \fIflag\fR is false). If \fIflag\fR is true, this option
may have the effect of raising the transaction isolation level to
\fIreadonly\fR.
.SS "TRANSACTION ISOLATION LEVELS"
The acceptable values for the \fB\-isolation\fR configuration option
are as follows:
.IP \fBreaduncommitted\fR
Allows the transaction to read "dirty", that is, uncommitted
data. This isolation level may compromise data integrity, does not
guarantee that foreign keys or uniqueness constraints are satisfied,
and in general does not guarantee data consistency.
.IP \fBreadcommitted\fR
Forbids the transaction from reading "dirty" data, but does not
guarantee repeatable reads; if a transaction reads a row of a database
at a given time, there is no guarantee that the same row will be
available at a later time in the same transaction.
.IP \fBrepeatableread\fR
Guarantees that any row of the database, once read, will have the same
values for the life of a transaction. Still permits "phantom reads"
(that is, newly-added rows appearing if a table is queried a second
time).
.IP \fBserializable\fR
The most restrictive (and most expensive) level of transaction isolation. Any query to the database, if repeated, will return precisely the same results for the life of the transaction, exactly as if the transaction is the only user of the database.
.IP \fBreadonly\fR
Behaves like \fBserializable\fR in that the only results visible to
the transaction are those that were committed prior to the start of
the transaction, but forbids the transaction from modifying the
database.
.PP
A database that does not implement one of these isolation levels
will instead use the next more restrictive isolation level. If the
given level of isolation cannot be obtained, the database interface
throws an error reporting the fact. The default isolation level
is \fBreadcommitted\fR.
.PP
A script should not the isolation level when a transaction is in
progress.
.SH "SEE ALSO"
encoding(n), tdbc(n), tdbc::resultset(n), tdbc::statement(n), tdbc::tokenize(n)
.SH "KEYWORDS"
TDBC, SQL, database, connectivity, connection, resultset, statement
.SH "COPYRIGHT"
Copyright (c) 2008 by Kevin B. Kenny.
'\" Local Variables:
'\" mode: nroff
'\" End:
'\"

View File

@@ -1,93 +0,0 @@
'\"
'\" tdbc_mapSqlState.n --
'\"
'\" Copyright (c) 2009 by Kevin B. Kenny.
'\"
'\" See the file "license.terms" for information on usage and redistribution of
'\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
.TH "tdbc::mapSqlState" n 8.6 Tcl "Tcl Database Connectivity"
'\" .so man.macros
'\" IGNORE
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\" # BS - start boxed text
'\" # ^y = starting y location
'\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
'\" Draw four-sided box normally, but don't draw top of
'\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\" # CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\" # CE - end code excerpt
.de CE
.fi
.RE
..
'\" END IGNORE
.BS
.SH "NAME"
tdbc::mapSqlState \- Map SQLSTATE to error class
.SH "SYNOPSIS"
.nf
package require \fBtdbc 1.0\fR
\fBtdbc::mapSqlState\fR \fIsqlstate\fR
.fi
.BE
.SH "DESCRIPTION"
.PP
The \fBtdbc::mapSqlState\fR command accepts a string that is expected
to be a five-character 'SQL state' as returned from a SQL database when
an error occurs. It examines the first two characters of the string,
and returns an error class as a human- and machine-readable name (for example,
\fBFEATURE_NOT_SUPPORTED\fR, \fBDATA_EXCEPTION\fR or
\fBINVALID_CURSOR_STATE\fR).
.PP
The TDBC specification requires database drivers to return a description
of an error in the error code when an error occurs. The description is
a string that has at least four elements: "\fBTDBC\fR \fIerrorClass\fR
\fIsqlstate\fR \fIdriverName\fR \fIdetails...\fR". The \fBtdbc::mapSqlState\fR
command gives a convenient way for a TDBC driver to generate the
\fIerrorClass\fR element given the SQL state returned from a database.
.SH "SEE ALSO"
tdbc(n), tdbc::tokenize, tdbc::connection(n), tdbc::statement(n), tdbc::resultset(n)
.SH "KEYWORDS"
TDBC, SQL, database, state
.SH "COPYRIGHT"
Copyright (c) 2009 by Kevin B. Kenny.
'\" Local Variables:
'\" mode: nroff
'\" End:
'\"

View File

@@ -1,191 +0,0 @@
'\"
'\" tdbc_resultset.n --
'\"
'\" Copyright (c) 2008 by Kevin B. Kenny.
'\"
'\" See the file "license.terms" for information on usage and redistribution of
'\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
.TH "tdbc::resultset" n 8.6 Tcl "Tcl Database Connectivity"
'\" .so man.macros
'\" IGNORE
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\" # BS - start boxed text
'\" # ^y = starting y location
'\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
'\" Draw four-sided box normally, but don't draw top of
'\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\" # CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\" # CE - end code excerpt
.de CE
.fi
.RE
..
'\" END IGNORE
.BS
.SH "NAME"
tdbc::resultset \- TDBC result set object
.SH "SYNOPSIS"
.nf
package require \fBtdbc 1.0\fR
package require \fBtdbc::\fR\fIdriver version\fR
\fBtdbc::\fR\fIdriver\fR\fB::connection create \fR\fIdb\fR \fI?\-option value\fR...?
\fBset\fR \fIstmt\fR \fB[\fR\fIdb\fR \fBprepare\fR \fIsql-code\fR\fB]\fR
\fBset\fR \fIresultset\fR \fB[\fR\fI$stmt\fR \fBexecute\fR ?\fIargs...\fR?\fB]\fR
\fI$resultset\fR \fBcolumns\fR
\fI$resultset\fR \fBrowcount\fR
\fI$resultset\fR \fBnextrow\fR ?\fB-as\fR \fBlists\fR|\fBdicts\fR? ?\fB--\fR? \fIvarname\fR
\fI$resultset\fR \fBnextlist\fR \fIvarname\fR
\fI$resultset\fR \fBnextdict\fR \fIvarname\fR
\fI$resultset\fR \fBnextresults\fR
.fi
.ad l
.in 14
.ti 7
\fI$resultset\fR \fBallrows\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR?
.br
.ti 7
\fI$resultset\fR \fBforeach\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR? \fIvarname\fR \fIscript\fR
.br
.ti 7
\fI$resultset\fR \fBclose\fR
.ad b
.BE
.SH "DESCRIPTION"
.PP
Every database driver for TDBC (Tcl DataBase Connectivity) implements
a \fIresult set\fR object that represents a the results returned from
executing SQL statement in a database. Instances of this object are created
by executing the \fBexecute\fR object command on a statement object.
.PP
The \fBcolumns\fR object command returns a list of the names of the columns
in the result set. The columns will appear in the same order as they appeared
in the SQL statement that performed the database query. If the SQL statement
does not return a set of columns (for instance, if it is an INSERT,
UPDATE, or DELETE statement), the \fBcolumns\fR command will return an empty
list.
.PP
The \fBrowcount\fR object command returns the number of rows in the database
that were affected by the execution of an INSERT, UPDATE or DELETE statement.
For a SELECT statement, the row count is unspecified.
.PP
The \fBnextlist\fR object command sets the variable given by \fIvarname\fR
in the caller's scope to the next row of the results, expressed as a list
of column values. NULL values are replaced by empty strings. The
columns of the result row appear in the same order in which they
appeared on the SELECT statement. The
return of \fBnextlist\fR is \fB1\fR if the operation succeeded, and
\fB0\fR if the end of the result set was reached.
.PP
The \fBnextdict\fR object command sets the variable given by \fIvarname\fR
in the caller's scope to the next row of the results, expressed as a
dictionary. The dictionary's keys are column names, and the values are
the values of those columns in the row. If a column's value in the row
is NULL, its key is omitted from the dictionary.
The keys appear in the dictionary in the same order in which the
columns appeared on the SELECT statement. The
return of \fBnextdict\fR is \fB1\fR if the operation succeeded, and
\fB0\fR if the end of the result set was reached.
.PP
The \fBnextrow\fR object command is precisely equivalent to the
\fBnextdict\fR or \fBnextlist\fR object command, depending on whether
\fB-as dicts\fR (the default) or \fB-as lists\fR is specified.
.PP
Some databases support the idea of a single statement that returns multiple
sets of results. The \fBnextresults\fR object command is executed, typically
after the \fBnextlist\fR of \fBnextdict\fR object command has returned
\fB0\fR, to advance to the next result set. It returns \fB1\fR if there
is another result set to process, and \fB0\fR if the result set just
processed was the last. After calling \fBnextresults\fR and getting
the return value of \fB1\fR, the caller may once again call \fBcolumns\fR
to get the column descriptions of the next result set, and then return to
calling \fBnextdict\fR or \fBnextlist\fR to process the rows of the
next result set. It is an error to call \fBcolumns\fR, \fBnextdict\fR,
\fBnextlist\fR or \fBnextrow\fR after \fBnextresults\fR has returned \fB0\fR.
.PP
The \fBallrows\fR object command sets the variable designated by the
\fB-columnsvariable\fR option (if present) to the result of the \fBcolumns\fR
object command. It then executes the \fBnextrow\fR object command
repeatedly until the end of the result set is reached. If \fBnextresults\fR
returns a nonzero value, it executes the above two steps (\fBcolumns\fR
followed by iterated \fBnextrow\fR calls) as long as further results are
available. The rows returned by \fBnextrow\fR
are assembled into a Tcl list and become the return value of the
\fBallrows\fR command; the last value returned from \fBcolumns\fR is what
the application will see in \fB-columnsvariable\fR.
.PP
The \fBforeach\fR object command sets the variable designated by the
\fB-columnsvariable\fR option (if present) to the result of the \fBcolumns\fR
object command. It then executes the \fBnextrow\fR object command
repeatedly until the end of the result set is reached, storing the
successive rows in the variable designated by \fIvarName\fR. For each
row, it executes the given \fIscript\fR. If the script terminates with
an error, the error is reported by the \fBforeach\fR command, and
iteration stops. If the script performs a \fBbreak\fR operation, the
iteration terminates prematurely. If the script performs a
\fBcontinue\fR operation, the iteration recommences with the next row.
If the script performs a \fBreturn\fR, results are the same as if a
script outside the control of \fBforeach\fR had returned. Any other
unusual return code terminates the iteration and is reported from the
\fBforeach\fR.
.PP
Once \fBnextrow\fR returns \fB0\fR, the \fBforeach\fR object command
tries to advance to the next result set using \fBnextresults\fR. If
\fBnextresults\fR returns \fB1\fR, the above steps (\fBcolumns\fR and
\fBnextrow\fR, with script invocation) are repeated as long as more
result sets remain. The \fIscript\fR will always see the correct description
of the columns of the current result set in the variable designated
byt \fB-columnsvariable\fR. At the end of the call, the variable
designated by \fB-columnsvariable\fR will have the description of the
columns of the last result set.
.PP
The \fBclose\fR object command deletes the result set and frees any
associated system resources.
.SH "SEE ALSO"
encoding(n), tdbc(n), tdbc::connection(n), tdbc::statement(n), tdbc::tokenize(n)
.SH "KEYWORDS"
TDBC, SQL, database, connectivity, connection, resultset, statement,
bound variable, stored procedure, call
.SH "COPYRIGHT"
Copyright (c) 2008 by Kevin B. Kenny.
'\" Local Variables:
'\" mode: nroff
'\" End:
'\"

View File

@@ -1,236 +0,0 @@
'\"
'\" tdbc_statement.n --
'\"
'\" Copyright (c) 2008 by Kevin B. Kenny.
'\"
'\" See the file "license.terms" for information on usage and redistribution of
'\" this file, and for a DISCLAIMER OF ALL WARRANTIES.
.TH "tdbc::statement" n 8.6 Tcl "Tcl Database Connectivity"
'\" .so man.macros
'\" IGNORE
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
'\" # BS - start boxed text
'\" # ^y = starting y location
'\" # ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\" # BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
'\" Draw four-sided box normally, but don't draw top of
'\" box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\" # CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
'\" # CE - end code excerpt
.de CE
.fi
.RE
..
'\" END IGNORE
.BS
.SH "NAME"
tdbc::statement \- TDBC statement object
.SH "SYNOPSIS"
.nf
package require \fBtdbc 1.0\fR
package require \fBtdbc::\fR\fIdriver version\fR
\fBtdbc::\fR\fIdriver\fR\fB::connection create \fR\fIdb\fR \fI?\-option value\fR...?
\fBset\fR \fIstmt\fR \fB[\fR\fIdb\fR \fBprepare\fR \fIsql-code\fR\fB]\fR
\fBset\fR \fIstmt\fR \fB[\fR\fIdb\fR \fBpreparecall\fR \fIcall\fR\fB]\fR
\fI$stmt\fR \fBparams\fR
\fI$stmt\fR \fBparamtype\fR ?\fIdirection\fR? \fItype\fR ?\fIprecision\fR? ?\fIscale\fR?
\fI$stmt\fR \fBexecute\fR ?\fIdict\fR?
\fI$stmt\fR \fBresultsets\fR
.fi
.ad l
.in 14
.ti 7
\fI$stmt\fR \fBallrows\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR? ?\fIdict\fR
.br
.ti 7
\fI$stmt\fR \fBforeach\fR ?\fB-as lists|dicts\fR? ?\fB-columnsvariable\fR \fIname\fR? ?\fB--\fR? \fIvarName\fR ?\fIdict\fR? \fIscript\fR
.br
.ti 7
\fI$stmt\fR \fBclose\fR
.ad b
.BE
.SH "DESCRIPTION"
.PP
Every database driver for TDBC (Tcl DataBase Connectivity) implements
a \fIstatement\fR object that represents a SQL statement in a
database. Instances of this object are created by executing the
\fBprepare\fR or \fBpreparecall\fR object command on a database
connection.
.PP
The \fBprepare\fR object command against the connection
accepts arbitrary SQL code to be
executed against the database. The SQL code may contain \fIbound
variables\fR, which are strings of alphanumeric characters or
underscores (the first character of the string may not be numeric),
prefixed with a colon (\fB:\fR). If a bound variable appears in the
SQL statement, and is not in a string set off by single or double
quotes, nor in a comment introduced by \fB--\fR, it becomes a value
that is substituted when the statement is executed. A bound variable
becomes a single value (string or numeric) in the resulting
statement. \fIDrivers are responsible for ensuring that the mechanism
for binding variables prevents SQL injection.\fR
.PP
The \fBpreparecall\fR object command against the connection accepts a
stylized statement in the form:
.PP
.CS
\fIprocname\fR \fB(\fR?\fB:\fR\fIvarname\fR? ?\fB,:\fR\fIvarname\fR...?\fB)\fR
.CE
.PP
or
.PP
.CS
\fIvarname\fR \fB=\fR \fIprocname\fR \fB(\fR?\fB:\fR\fIvarname\fR? ?\fB,:\fR\fIvarname\fR...?\fB)\fR
.CE
.PP
This statement represents a call to a stored procedure \fIprocname\fR in the
database. The variable name to the left of the equal sign (if
present), and all variable names that are parameters inside
parentheses, become bound variables.
.PP
The \fBparams\fR method against a statement object enumerates the
bound variables that appear in the statement. The result returned from
the \fBparams\fR method is a dictionary whose keys are the names of
bound variables (listed in the order in which the variables first
appear in the statement), and whose values are dictionaries. The
subdictionaries include at least the following keys (database drivers
may add additional keys that are not in this list).
.IP \fBdirection\fR
Contains one of the keywords, \fBin\fR, \fBout\fR or \fBinout\fR
according to whether the variable is an input to or output from the
statement. Only stored procedure calls will have \fBout\fR or
\fBinout\fR parameters.
.IP \fBtype\fR
Contains the data type of the column, and will generally be chosen
from the set,
\fBbigint\fR, \fBbinary\fR, \fBbit\fR, \fBchar\fR, \fBdate\fR,
\fBdecimal\fR, \fBdouble\fR, \fBfloat\fR, \fBinteger\fR,
\fBlongvarbinary\fR, \fBlongvarchar\fR, \fBnumeric\fR, \fBreal\fR,
\fBtime\fR, \fBtimestamp\fR, \fBsmallint\fR, \fBtinyint\fR,
\fBvarbinary\fR, and \fBvarchar\fR. (If the variable has a type that
cannot be represented as one of the above, \fBtype\fR will contain
a driver-dependent description of the type.)
.IP \fBprecision\fR
Contains the precision of the column in bits, decimal digits, or the
width in characters, according to the type.
.IP \fBscale\fR
Contains the scale of the column (the number of digits after the radix
point), for types that support the concept.
.IP \fBnullable\fR
Contains 1 if the column can contain NULL values, and 0 otherwise.
.PP
The \fBparamtype\fR object command allows the script to specify the
type and direction of parameter transmission of a variable in a
statement. (Some databases provide no method to determine this
information automatically and place the burden on the caller to do
so.) The \fIdirection\fR, \fItype\fR, \fIprecision\fR, \fIscale\fR,
and \fInullable\fR arguments have the same meaning as the
corresponding dictionary values in the \fBparams\fR object command.
.PP
The \fBexecute\fR object command executes the statement. Prior to
executing the statement, values are provided for the bound variables
that appear in it. If the \fIdict\fR parameter is supplied, it is
searched for a key whose name matches the name of the bound
variable. If the key is present, its value becomes the substituted
variable. If not, the value of the substituted variable becomes a SQL
NULL. If the \fIdict\fR parameter is \fInot\fR supplied, the
\fBexecute\fR object command searches for a variable in the caller's
scope whose name matches the name of the bound variable. If one is
found, its value becomes the bound variable's value. If none is found,
the bound variable is assigned a SQL NULL as its value. Once
substitution is finished, the resulting statement is executed. The
return value is a result set object (see \fBtdbc::resultset\fR for
details).
.PP
The \fBresultsets\fR method returns a list of all the result sets that
have been returned by executing the statement and have not yet been
closed.
.PP
The \fBallrows\fR object command executes the statement as with the
\fBexecute\fR object command, accepting an
optional \fIdict\fR parameter giving bind variables. After executing
the statement,
it uses the \fIallrows\fR object command on the result set (see
\fBtdbc::resultset\fR) to construct a list of the results. Finally,
the result set is closed. The return value is the list of
results.
.PP
The \fBforeach\fR object command executes the statement as with the
\fBexecute\fR object command, accepting an
optional \fIdict\fR parameter giving bind variables. After executing
the statement,
it uses the \fIforeach\fR object command on the result set (see
\fBtdbc::resultset\fR) to evaluate the given \fIscript\fR for each row of
the results. Finally, the result set is closed, even
if the given \fIscript\fR results in a \fBreturn\fR, an error, or
an unusual return code.
.PP
The \fBclose\fR object command removes a statement and any result sets
that it has created. All system resources associated with the objects
are freed.
.SH "EXAMPLES"
The following code would look up a telephone number in a directory,
assuming an appropriate SQL schema:
.PP
.CS
package require tdbc::sqlite3
tdbc::sqlite3::connection create db phonebook.sqlite3
set statement [db prepare {
select phone_num from directory
where first_name = :firstname and last_name = :lastname
}]
set firstname Fred
set lastname Flintstone
$statement foreach row {
puts [dict get $row phone_num]
}
$statement close
db close
.CE
.SH "SEE ALSO"
encoding(n), tdbc(n), tdbc::connection(n), tdbc::resultset(n), tdbc::tokenize(n)
.SH "KEYWORDS"
TDBC, SQL, database, connectivity, connection, resultset, statement,
bound variable, stored procedure, call
.SH "COPYRIGHT"
Copyright (c) 2008 by Kevin B. Kenny.
'\" Local Variables:
'\" mode: nroff
'\" End:
'\"

Some files were not shown because too many files have changed in this diff Show More