summaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
8_5_with_8_6_regexpMinor clean-ups (e.g. turn back const -> CONST, as common in 8.5 branch)jan.nijtmans9 years
Coverity_CID_1251203Fix the documentation comment.dkf9 years
ISC_peepholemerge trunkmig12 years
activestate_nre_excised_variant_1_roll_forwardwhile 'info' is destroyed and becoms inaccessible after TclEvalObjEx.andreask14 years
activestate_nre_excised_variant_2_subtractedThe re-creation of this branch should have deleted a few NRE specific testsui...andreask14 years
adjust_fixPatch to the original line continuation commit to fix up TclCompileTokens.dgp11 years
ajuba_ajuba2_2_0_syntheticCreated branch ajuba-ajuba2-2-0-syntheticcvs2fossil24 years
ajuba_ajuba2_2_1_base_syntheticCreated branch ajuba-ajuba2-2-1-base-syntheticcvs2fossil24 years
aku_mem_debug_allow_regularMinor compilation issue fix, make sure variable declaration (via macro) is fi...Joe Mistachkin9 years
aku_reviewDocs for Tcl_CreateChannelHandler() state that the registered handler procdgp10 years
aku_tip_280_cl_perf_trialMerge to feature branchdkf13 years
aku_tkt_6141c15186Update to trunk workaku9 years
amg_array_enum_c_apiCheck in stash. This code probably does not compile as-is. Changes intended...andy7 years
amg_string_insertSimplify implementation of non-bytecoded [string replace]andy7 years
androwishmerge zipfsjan.nijtmans7 years
apn_hash_optSome cleanup of style issues.dkf10 years
array_search_unsetReference ticket number in tests var-13.2 and var-13.3andy8 years
aspect_async_pipedon't panic when EAGAIN - if the pipe is full, we have to drop the messageaspect8 years
aspect_bug_391bc0fd2cglob for hidden files on unix should not require stat()aspect7 years
aspect_lreplace_cleanup[47ac84309b] Import of aspect's branch from his personal repository on chisel...dkf9 years
aspect_lreplace_fixundo erroneous change in [1fa2e32e07]aspect10 years
aspect_lreplace_refixlreplace: more tests, doc improvementaspect9 years
aspect_shimmer_singleton_listsadd some tests for singleton list optimisation [738900]aspect8 years
aspect_string_matchfix advancement of snext: could not cook up a test for this, but the error i...aspect7 years
aspect_tip288Taking a stab at TIP#288 implementation.aspect7 years
avl_strcat_fixStop trimming on first non empty-string.avl7 years
avl_tip_282restrictions on array index confined to lhs.avl8 years
backout_memaccounting(just an experiment, don't look ....) Backout the contributed patch memaccoun...jan.nijtmans9 years
bch_coveritymerge [e11d223695c5468b1bfb3db35ebf54856501fdf0], specifically for ./generic/...bch10 years
better_deprecationmerge trunkjan.nijtmans12 years
better_deprecation_85merge core-8-5-branch.jan.nijtmans12 years
bg_tip_282merge trunkdgp8 years
bsg_0d_radix_prefixMerge core-8-6-branchjan.nijtmans7 years
bug3036566Corrected args -> arg arg ... in msgcat docoehhar11 years
bug_010f4162efAdd test and improve errorInfo.dgp11 years
bug_0520d17284fix chan leak with http keepalive vs close (bug [0520d17284])aspect8 years
bug_05489ce335Backout failed attempt to fix [32ae34e63a].dgp9 years
bug_0b874c344dmerge trunkdgp11 years
bug_0b874c344d_ak_info_frame_coroModified info frame's coro handling to allow for a caller coro without cmdFra...andreask11 years
bug_0b8c387cf7Merge trunk. jan.nijtmans9 years
bug_0c043a175test and fix (thx dgp)Miguel Sofer10 years
bug_0e4d88b650merge 8.5dgp7 years
bug_0f42ff7871Added contributed tests from aspectdgp9 years
bug_11892931189293 Make '<<' redirects binary safe. Don't use strlen() (or equivalent)dgp12 years
bug_1224888Added better way to find executable name on OSX.dkf10 years
bug_12b0997ce7[12b0997ce7] Plug memleak in iocmd.tf-32.0 .dgp10 years
bug_13d3af3ad5 * Give clearer names to some of the state flags and sync them with Windows...max10 years
bug_13d3af3ad5_forkRemove writable shortcut and errorneous workaround to get [connect -async] fa...oehhar11 years
bug_1493a43044Expose the AVOID_RESOLVERS flag to [namespace upvar] implementations, which s...dkf8 years
bug_1536227Cygwin network pathname supportjan.nijtmans12 years
bug_16828b3744Merge tip of core-8-6-branchdgp8 years
bug_1712098rebasejan.nijtmans11 years
bug_1758a0b603merge 8.5dgp10 years
bug_1a25fdfec6Simple change gets most of the effect. Fails to handle backslash. anyone care?dgp9 years
bug_1b0266d8bbSome more cleaning updkf10 years
bug_2152292ChangeLog entrydkf11 years
bug_219866c1e9proposed fix for [219866c1e9]: platform::identify: regexp doesn't match platformjan.nijtmans9 years
bug_2413550Changed position of flag evaluation as proposed by Phil Hoffmanoehhar11 years
bug_2502002New internal eval flag value so that all TclNREvalObjv() callers thatdgp11 years
bug_25842c161fMight as well number tests more conventionally.dkf8 years
bug_272e866f1eremove some dead codedkf11 years
bug_2902268Backport 2902268 fix.dgp13 years
bug_2911139Now really fix test-case http-4.14jan.nijtmans12 years
bug_2992970[2992970] Restore the safety of Tcl_AppendObjToObj(x, x) for bytearrays.dgp11 years
bug_2a94652ee1http state 100 continue handling broken [2a94652ee1]oehhar7 years
bug_2f7cbd01c3Proposed fix for [2f7cbd01c3].jan.nijtmans11 years
bug_2f9df4c4faprevious commit was not quite right, this one should be betterjan.nijtmans10 years
bug_3024359Simplify bug fix so that active claims on the FilesystemRecord list of a threaddgp12 years
bug_3033307very minor style tweaksdkf12 years
bug_3092089new attempt for better fixjan.nijtmans12 years
bug_3154ea2759Bug fix. Have to arrange to only close a catch once. After the spacedgp8 years
bug_31661d2135[31661d2135] Plug memory leak.dgp11 years
bug_3173086Completed patch with mucho comments. Merge 8.5.dgp13 years
bug_3185407Merge from 8.5 branch tipdkf13 years
bug_3202171 * generic/tclNamesp.c: Tighten the detector of nested [namespace code] dgp14 years
bug_3216070bug-3216070jan.nijtmans14 years
bug_3288345[bug-3288345] Wrong Tcl_StatBuf used on Cygwinjan.nijtmans13 years
bug_3293874Rewind from a refactoring that veered into the weeds.dgp13 years
bug_32ae34e63aUpdate tests to account for changed ReflectWatch behavior.dgp9 years
bug_3362446remove some unused codejan.nijtmans12 years
bug_336441ed59Try not to loose FD_CONNECT by switching monitoring off.oehhar10 years
bug_3365156Remove stray refcount bump that caused a memory leak.dkf13 years
bug_3389764Proposed fix for 3389764. Have "path" dup routine duplicate the pattern dgp13 years
bug_33920703392070 More complete prevention of Tcl_Obj reference cycles dgp13 years
bug_3397515Prevent segfaults attempting to use thread maps after they've been deleted.dgp13 years
bug_3401704Use better 'isalnum' predicate ; add test case.ferrieux13 years
bug_3413857Test harness for Tcl_ParseArgsObjvdkf13 years
bug_3414754Purge the old, buggy implementation.dgp13 years
bug_3418547merge trunkdgp8 years
bug_3466099Added source test with utf-8 (without -encoding param), remove too many same ...sebres13 years
bug_3475569yank back debugging codedgp13 years
bug_34805993480599 Make [source] and [load] order of multi-file package happen in sorteddgp13 years
bug_34844023484402 Correct Off-By-One error appending unicode. Thanks to Poor Yorick.dgp13 years
bug_3485833Style guide and tidying up.dgp13 years
bug_3493120*nix segfault cleared: we should reset a thread key after freeing of alloc ca...sebres10 years
bug_3496014[Bug 3496014]: Unecessary memset() in Tcl_SetByteArrayObj()jan.nijtmans12 years
bug_3508771first working version of Cygwin notifierjan.nijtmans12 years
bug_3511806now ready for further field testsjan.nijtmans13 years
bug_3514475[Bug 3514475]: remove TclpGetTimeZone and TclpGetTZNamejan.nijtmans12 years
bug_3519357Do filesystem tests needing /tmp access in a subdir less likely to conflict.dgp12 years
bug_3522560Explicitly declare a channel nonblocking before throwing EAGAIN on write.ferrieux12 years
bug_3525762explicitely specify encoding in DdeCreateStringHandlejan.nijtmans12 years
bug_3525907Use zero-delays instead of finite ones when posting fileevents, because (1) t...ferrieux12 years
bug_3530536two more testcases, showing that only the "deflate" and "inflate" streams don...jan.nijtmans12 years
bug_3532959Revised so that we avoid hashing twice.dgp12 years
bug_3536888translate script parameters for msgcatjan.nijtmans12 years
bug_3544685Fix for 3544685: Threaded build failures on OpenBSD-currentjan.nijtmans12 years
bug_3545363merge trunkdkf12 years
bug_3555001Safer stale config fix for review.dgp12 years
bug_3562640merge core-8-4-branchjan.nijtmans12 years
bug_3562640_altAlternative fix for bug-3562640jan.nijtmans12 years
bug_35647353564735 Protection against namespace var resolvers that unexpectedly returndgp12 years
bug_3566106contributed patch for Solaris 9/x86 supportdgp12 years
bug_3567063merge 8.4dgp12 years
bug_3588687merge trunkdgp12 years
bug_3592747Fix [tailcall] and [yieldto] to not panic in dying namespaces: [Bug 3592747]mig12 years
bug_3598300Proposed solution for Bug 3598300 on MacOSXjan.nijtmans12 years
bug_3598580For Tcl9, do a real Tcl_DecrRefCountjan.nijtmans12 years
bug_3599789Bug 3599789: Proposed fix by Serg G. Bresterjan.nijtmans12 years
bug_3600057merge markdkf11 years
bug_3600057_85*BACKPORT* [3600057]: Filled out missing parts of implementation of [string i...dkf11 years
bug_3600058_tdMerge to fix accidental fork in branch bug-3600058-tdtwylite10 years
bug_3600328merge trunkdkf12 years
bug_3601260merge core-8-5-branchjan.nijtmans12 years
bug_3602706Cherrypick again. Add test.dgp12 years
bug_3603434Fix for Bug 3603434.dgp12 years
bug_3603553Correction to comment in re key buffer size.dkf12 years
bug_3603695Apply a fix for the bug. Passes the test suite now.dkf12 years
bug_3604074New branch bug-3604074 with improved patch to correct fixempties() failuredgp12 years
bug_3604576Finer granulated catchoehhar12 years
bug_3605401[Bug 3605401]: Compiler error with latest mingw-w64 headers.jan.nijtmans12 years
bug_3605447added testdgp12 years
bug_3606121Fixes to namespace-old.testdkf8 years
bug_3606683merge trunkdgp12 years
bug_3606683_84merge 8.4dgp12 years
bug_3606683_85merge 8.5dgp12 years
bug_3607246Correct unbalanced effect of TclInvalidateCmdLiteral() on the refcountsdgp12 years
bug_36073723607372 Correct literal refcounting.dgp12 years
bug_3608360Check for wildcards if we've used FindFirstFile inside NativeAccess.dkf12 years
bug_3608714merge trunkdgp9 years
bug_3609693[3609693] Must strip the internal representation of procedure-like methods indkf11 years
bug_3610026Demand the error message indicating the purpose of the test.dgp11 years
bug_3610383First simple-minded attempt at fix. Fixes the demo script.dgp11 years
bug_3610404merge trunkdgp11 years
bug_3611974minor bug: Don't TclpInitUnlock() here, because the following TclFinalizeLock...jan.nijtmans11 years
bug_3613609Fixed the weird edge case.dkf11 years
bug_3613671unwrapping some of the complexitydkf11 years
bug_3614342Repair TCL_COMPILE_DEBUG guardsdgp11 years
bug_39f6304c2emerge trunkjan.nijtmans8 years
bug_46f801ea5aTry to make good stack trace. Fallback to making not-so-good stack trace.dgp7 years
bug_473946Increase version to 1.2.5jan.nijtmans12 years
bug_47d66253c9Possible fix for [47d66253c92197d30bff280b02e0a9e62f07cee2|47d66253c9]: "lsea...jan.nijtmans10 years
bug_4a0c163d24New test for clock scan, test numbering correctedoehhar9 years
bug_4b61afd660Improve fix and add test.dgp8 years
bug_4dbdd9af14Improve the comments and add a test.dgp8 years
bug_50750c735a[50750c735a] Fix for uninit memory handling issue in zlib transforms.dkf7 years
bug_510001better solution for bug-510001jan.nijtmans13 years
bug_547989[547989] Proposed implementation of the change described in the comments of t...dkf11 years
bug_57945b574aFurther cleanup and enhancements.Joe Mistachkin9 years
bug_57945b574a_without_stubmerge trunkjan.nijtmans9 years
bug_581937ab1eFix bug [581937ab1e]: fire readable event on async socket connect failureoehhar11 years
bug_58b96f6744make [info commands] follow the namespace path from :: (bug [58b96f6744])aspect8 years
bug_593baa032cmerge trunkdgp9 years
bug_5adc350683Also test transfroms that delay.dgp10 years
bug_5adc350683_86merge iogt fixes.dgp10 years
bug_5d170b5ca5merge trunkjan.nijtmans9 years
bug_5f71353740merge trunkgahr@gahr.ch9 years
bug_67aa9a2070merge core-8-6-branchjan.nijtmans7 years
bug_6ca52aec14fix chan leak with http keepalive vs close (bug [6ca52aec14])aspect8 years
bug_716b427f76A few more tweaks to streamline and clarify.dgp7 years
bug_734138ded8Backout checkin 84f992ce50. This fixes test socket-14.11.1 and createsdgp10 years
bug_75b8433707[75b8433707] Plug a subtle memory leak in TclOO. dkf10 years
bug_7a87a9bc5bProposed fix for invalid write, found by valgrind.dkf9 years
bug_7f02ff1efaNew test trace-18.5 for the bug. Updated trace-18.1 which was tuned to it.dgp8 years
bug_80304238acExtra safety against cyclesdgp9 years
bug_85ce4bf928[85ce4bf928] Fix for problems with storing Inf with [binary format R].dkf9 years
bug_86ceb4e2b6merge trunkdgp11 years
bug_879a0747beProposed fix for bug 879a0747bedgp9 years
bug_894da183c8[894da183c8] Fix and test for bug at the point it was introduced.dgp9 years
bug_8bd13f07bdPatch for [8bd13f07bde6fb0631f27927e36461fdefe8ca95|8bd13f07bd]: Closing tcl ...jan.nijtmans7 years
bug_900cb0284bcTweak to make tests a little clearer.dkf8 years
bug_96c3f3b47d1Tcl_GetWideIntFromObj must fail for values between WIDE_MAX+1 and UWIDE_MAX (...aspect8 years
bug_97069ea11aRevert the tests for bug#97069ea11a from socket.test, because it is hard to t...max10 years
bug_9b47029467631832Add test-case which demonstrates the problem. This test-case fails in trunk (...jan.nijtmans9 years
bug_a3309d01dbAdd the missing cleanup bits in INST_UNSET_ARRAY.dgp9 years
bug_adb198c256Pull out of the loop a block of code that can only run in first iteration.dgp7 years
bug_af08e89777Rework the *FinalizeThread*() routines so that the quick exit preferencedgp10 years
bug_b26e38a3e4Fix the bug. Make use of zlib API in this area more like a Tcl API with wrapp...dkf8 years
bug_b5ced5865bProposed workaround for [b5ced5865b]: newer MinGW compilers can link director...jan.nijtmans10 years
bug_b87ad7e914Fix for [b87ad7e9146832d505f9a430d779c5313c440256|b87ad7e914], rebased to cor...jan.nijtmans8 years
bug_b9b2079e6dNew test compile-5.3 for the bug.dgp9 years
bug_ba44e415a0Proposed fix for [ba44e415a0]: "Use of mutexLock causes problem with reactive...jan.nijtmans9 years
bug_bbc304f61a[bbc304f61a] Proposed fix for reflected watch race condition.dgp9 years
bug_bc1a96407atest casesdgp10 years
bug_bd7f17bce8Enable TCL_EVAL_INVOKE support in the Tcl*Eval(Ex)* family.dgp8 years
bug_bdd91c7e43Suggested fix for [bdd91c7e43]: tclsh crashes in [interp delete]jan.nijtmans11 years
bug_c4e230f29brebase against trunkjan.nijtmans11 years
bug_c7d0bc9a549714e0Proposed fix for [c7d0bc9a549714e0]. Thanks to mr_calvinjan.nijtmans8 years
bug_d2ffcca163Limit isalpha(.) calls in the expr parser to only apply to known ASCIIdgp10 years
bug_d3071887dbc7aeac.... oops ....jan.nijtmans9 years
bug_d4e464ae48First attempt to fix bug [d4e464ae48]: tcl 8.5.15/8.61 breaks python make che...jan.nijtmans11 years
bug_d4e7780ca1Additiona patch/suggestion from Gustaf. This indeed fixes the crash in oo.tes...jan.nijtmans8 years
bug_d5ddbc7f49merge trunkdkf10 years
bug_db0a5f6417Make a few tests more resilient to differences in the semantics of pipes betw...dkf8 years
bug_dcc03414f5Revert bug-fix for [2413550], in order to be able to investigate whether it c...jan.nijtmans10 years
bug_dfc08326e3merge trunkjan.nijtmans11 years
bug_e0a7b3e5f8merge 8.5dgp9 years
bug_e21fc32c2aaProposed fix for [e21fc32c2aa]: auto_execok does not check executability on W...jan.nijtmans9 years
bug_e711ffb458New utility routine GetLocalScalarIndex() reduces common caller boilerplatedgp10 years
bug_f1253530cdMerged trunkfvogel9 years
bug_f1253530cd_altAlternative solution for [f1253530cd]jan.nijtmans9 years
bug_f4f44174emove pthread_sigmask() calls to Tcl_WaitForEvent() where they belongaspect8 years
bug_f97d4ee020Make the tests pass.dkf8 years
bug_f9fe90d0fa[f9fe90d0fa]: more path normalization in TclNewFSPathObjaspect7 years
bug_io_32_11merge 8.5dgp10 years
bug_itcl_1b2865Slightly more efficient version as this is Hot Path code.dkf8 years
bug_unknown_no_errorcodePotential fix for issues relating to lack of errorCode setting with unknown c...dkf11 years
bugfix_832a1994c7_for_precompiled_bcFixed bug in parent revision [832a1994c7] unpredictably breaking theandreask11 years
cjo_hydramerge tip-445dgp7 years
compile_ensemble(experiment): Always compile ensembles. Result: 2 test failures in the "histo...jan.nijtmans7 years
contrib_patrick_fradin_code_cleanupmerge trunkdgp12 years
core_8_0_2_syntheticCreated branch core-8-0-2-syntheticcvs2fossil26 years
core_8_0_3_prPost-release revisions to restore building on later platforms.dgp12 years
core_8_0_4_syntheticCreated branch core-8-0-4-syntheticcvs2fossil26 years
core_8_0_5_base_syntheticCreated branch core-8-0-5-base-syntheticcvs2fossil26 years
core_8_0_5_branchApplied patch to fix sockets when the FD_CONNECT never happens redman25 years
core_8_0_5_syntheticCreated branch core-8-0-5-syntheticcvs2fossil26 years
core_8_0_6_branchCreating branch core-8-0-6-branchcvs25 years
core_8_1_0_syntheticCreated branch core-8-1-0-syntheticcvs2fossil25 years
core_8_1_b1_syntheticCreated branch core-8-1-b1-syntheticcvs2fossil26 years
core_8_1_b2_syntheticCreated branch core-8-1-b2-syntheticcvs2fossil26 years
core_8_1_b3_syntheticCreated branch core-8-1-b3-syntheticcvs2fossil26 years
core_8_1_branch_oldFixed problem with LD_SEARCH_FLAGS on Solaris. It's different rjohnson25 years
core_8_2_1_branchFix sh quoting error reported in bash-3.1+ [Bug 1377619] nijtmans15 years
core_8_2_b1_syntheticCreated branch core-8-2-b1-syntheticcvs2fossil25 years
core_8_2_b3_branchRemoved patch to change prototype of Tcl_ListObjGetElements. redman25 years
core_8_3_1_branch[Bug 3030870] make itcl 3.x built with pre-8.6 work in 8.6: nijtmans14 years
core_8_3_1_io_rewrite * generic/tclStubInit.c: hobbs24 years
core_8_3_1_syntheticCreated branch core-8-3-1-syntheticcvs2fossil24 years
core_8_4_20_rcTag for release.dgp11 years
core_8_4_a2_syntheticCreated branch core-8-4-a2-syntheticcvs2fossil24 years
core_8_4_branchmerge releasedgp11 years
core_8_5_10_rcmerge to RCdgp13 years
core_8_5_11_rctag&bag another 8.5.11 RC.dgp13 years
core_8_5_12_rcmerge 8.5dgp12 years
core_8_5_13_rcChangeLog release markdgp12 years
core_8_5_14rcRedate. Retag RC1.dgp12 years
core_8_5_15_rcAdded note to ChangeLog pointing to the fossil timeline for better logging.dgp11 years
core_8_5_16_rc`make dist` allowed README-* fossil droppings to leak into the distribution.dgp10 years
core_8_5_17_rcupdate changesdgp10 years
core_8_5_18_rcrepair nroff breakagedgp10 years
core_8_5_19_rcupdate release datedgp9 years
core_8_5_a5_syntheticCreated branch core-8-5-a5-syntheticcvs2fossil18 years
core_8_5_branch[0e4d88b650] Allow command overwrite when deletion callback deletes namespace.dgp7 years
core_8_5_branch_fix_1997007code review: restore missing "break" to step out from internal cycle "while (...sebres7 years
core_8_6_0_rcmerge trunk, update changes and re-tagdgp12 years
core_8_6_1_rcmerge trunkdgp11 years
core_8_6_2_rcmerge trunk; update changesdgp10 years
core_8_6_3_rcLikely fix for channel mem leaks.dgp10 years
core_8_6_4_rcupdate changesdgp10 years
core_8_6_5_rcmerge trunkdgp9 years
core_8_6_6_rca few test & docs fixesdgp8 years
core_8_6_7_rcbump release datedgp7 years
core_8_6_b2_rcmerge from trunk to rc all but the AI_ADDRCONFIG experimentdgp13 years
core_8_6_b3_rcTag Tcl 8.6b3 for release.dgp12 years
core_8_6_branchRFE [566a999189] - better error message for 32/64 bit mismatch on load.apnadkarni7 years
core_8_6_branch_forkFixup the ensemble rewrite conversions.dgp8 years
core_8_7_a1_rcmerge trunk; rc1dgp7 years
core_stabilizer_branchmerge updates from 8.5 branch dgp16 years
core_stabilizer_merge_syntheticCreated branch core-stabilizer-merge-syntheticcvs2fossil16 years
core_zip_vfsImprovements to Tip#430 based on community input. Added a forward declaration...hypnotoad7 years
core_zip_vfs_c_encoderTweaks to buildhypnotoad10 years
core_zip_vfs_staticAdd Static library link instructions to tclConfig.shhypnotoad10 years
cpuid_on_unixcpuid-on-unixjan.nijtmans12 years
cygwin_environment_changescygwin should use SetEnvironmentVariable for windows envjan.nijtmans12 years
dah_proc_arg_upvarMore comments, fix bug where numArgs should be argCtdah8 years
damkerngt_file_utimeAdd new sub-command: file utime ?ATIME? MTIMEdamkerngt11 years
daves_chop_branchCreating branch daves-chop-branchcvs23 years
daves_mk_branchworks! I feel like a sculpter. Not done, by far. davygrvy23 years
dev_8_1_stubs_branchMerged 8.0 stub changes stanton26 years
dev_hobbs_branchrefactored varname pushing code and some of the bytecode instructions hobbs23 years
dev_stubs_branch* tools/genStubs.tcl: Reorganized code to support mixed generic stanton26 years
dgp_3401704Tidiness, comments, and tests.dgp13 years
dgp_async_socketThese edits make all tests outside of socket-14.* pass on OSX Mavericks.dgp10 years
dgp_bug_findNow fix the bug.dgp8 years
dgp_bye_ctx_eval_flagConsolidate some helper routines.dgp11 years
dgp_bye_location_eval_listDrop TCL_LOCATION_EVAL_LIST now that it is unused.dgp11 years
dgp_channel_flag_repairSimplify the inputProc of [testchannel transform].dgp10 years
dgp_cmd_epochRemove dup line.dgp8 years
dgp_compile_list_shimmerUnless I'm missing something, this patch to TclCompileListCmd() shoulddgp11 years
dgp_defer_string_repTidier version.dkf9 years
dgp_demoFixup restacking tests to expect the right results.dgp10 years
dgp_dup_encoding_fixmerge trunkdgp8 years
dgp_ecrMissed a cleanup line, which created a memleak.dgp8 years
dgp_encoding_flagsSupport TCL_ENCODING_CHAR_LIMIT in TableToUtfProc and EscapeToUtfProc drivers.dgp10 years
dgp_ensemble_rewritemerge 8.6dgp8 years
dgp_eofCorrect some faulty assumptions in the zlib transformation input driver. dgp11 years
dgp_experimentSimplify ReadBytes based on new constraints.dgp11 years
dgp_flush_channelUpdate comment to explain assumptions.dgp10 years
dgp_hoehrmann_decoderFeature branch to explore making use of the Hoehrmann UTF-8 decoder.dgp12 years
dgp_init_bytecodeParameterize TclInitByteCodeObj to callers sense of typePtr.dgp8 years
dgp_list_simplifyRemove the old implementation.dgp13 years
dgp_literal_reformmerge trunkdgp8 years
dgp_may_be_pointlessRevised ReadChars to restore an attempt to make sure we do not short readdgp11 years
dgp_move_buffersmerge trunkdgp10 years
dgp_no_buffer_recycleRevise the logic for setting TCL_ENCODING_END in the outputEncodingFlagsdgp10 years
dgp_optimize_output_stageBe sure to finalize the identity encoding.dgp11 years
dgp_pkg_migrationmerge trunkdgp10 years
dgp_properbytearraymerge novemdgp7 years
dgp_purge_NRRunObjProcTidy the code and add a test.dgp11 years
dgp_read_bytesMerge 8.5.dgp10 years
dgp_read_bytes_detourmissing declarationdgp11 years
dgp_read_charstidy up.dgp11 years
dgp_refactorRefactor code common to merge and insert.dgp7 years
dgp_refactor_merge_syntheticCreated branch dgp-refactor-merge-syntheticcvs2fossil14 years
dgp_remove_string_resultrevert mistaken commitdgp12 years
dgp_reviewequivalentjan.nijtmans11 years
dgp_revise_parsedvarnametypeThere's a "parsedVarName" Tcl_ObjType that remembers how a variable namedgp9 years
dgp_scan_elementmerge trunkjan.nijtmans13 years
dgp_slow_readSame results; simpler logic.dgp10 years
dgp_sprintfStart branch reducing use of sprintf().dgp11 years
dgp_stack_depth_testerReport pc value when VERIFY fails.dgp11 years
dgp_stackedstdchanFix for core bug yet to be named/numbered.dgp12 years
dgp_stop_regexp_test_crashBackout the contributed patch memaccounting from Postgres since it changesdgp@users.sourceforge.net9 years
dgp_string_catReplace indexing with pointer increments.dgp8 years
dgp_string_findOptimize case of all single-byte chars.dgp8 years
dgp_stringcat_delaystringrepDon't test the impossible.dgp7 years
dgp_switch_compileDrop old code.dgp13 years
dgp_tailcall_errorinfoSuppress additions to the -errorinfo from a tailcall-invoked command.dgp9 years
dgp_tailcall_errorinfo_altDifferent solution to the tailcall impact on -errorinfo.dgp9 years
dgp_tcs_rewrite[assemble] compile syntax error into bytecode reporting syntax error message.dgp11 years
dgp_thread_leaksUse the Thread package instead of the [testthread] command to do dgp13 years
dgp_trunk_flag_repairSame improvements to the zlib transform operations.dgp10 years
dgp_trunk_readmerge trunkdgp10 years
dgp_win_specific_strictUpon further review, due the order of #include of headers, we do not havedgp10 years
dgp_writebytes_optimizeMake simplificiations possible when we know just bytes are getting copieddgp10 years
dkf_64bit_support_branchAdded test for meaning of tcl_platform(wordSize) dkf23 years
dkf_alias_encodingmerge trunkdkf12 years
dkf_asm_crash_20131022merge trunkdgp11 years
dkf_bcc_optimizemerge trunkdkf11 years
dkf_better_try_compilationFix the problems with code generation; behavior now appears correct.dkf11 years
dkf_bytecode_8_6compilation of [string is]dkf11 years
dkf_bytecode_8_6_evalmerge main working branchdkf11 years
dkf_bytecode_8_6_joinmerge main working branchdkf11 years
dkf_bytecode_8_6_nextmerge main working branch; made opcode work by getting callback ordering rightdkf11 years
dkf_bytecode_8_6_string_isimprove the disassemblydkf11 years
dkf_bytecode_8_6_string_replaceprecondition was wrong, and needed to flush part of the string/internal repdkf11 years
dkf_bytecode_8_6_yieldfix INST_YIELD so that it worksmig12 years
dkf_bytecode_optimizermerge trunkdkf11 years
dkf_command_typemerge trunkdkf11 years
dkf_compile_improvementsmerge trunkdkf11 years
dkf_dict_with_compiledAdd the other instructions to the assembler's nous.dkf13 years
dkf_documentation_figuresmerge trunkdkf12 years
dkf_expose_ptrgetvarmerge trunkdkf7 years
dkf_expose_ptrgetvar_8_6Expose some of the core variable access APIs. dkf7 years
dkf_http_cookiesmerge trunkdkf10 years
dkf_improved_disassemblerTidy things up a bit more.dkf10 years
dkf_loop_exception_range_workAnd the last bits that need fixing; the code is still less efficient than des...dkf11 years
dkf_namespace_as_ensembleAdd ChangeLog entry.dkf14 years
dkf_notifier_pollmerge trunkdkf12 years
dkf_oo_override_definition_namespacesThink-o fix...dkf7 years
dkf_quieter_compilesmore quieting of excessively-noisy messagesdkf11 years
dkf_reviewremove uninitialized variable and the code that used it mig11 years
dkf_utf16_branchmerge trunkdkf12 years
dkf_wait_with_pollExperimental branch on whether to use poll() instead of select().dkf8 years
dogeen_assembler_branchmerge trunkKevin B Kenny14 years
dogeen_assembler_merge_syntheticCreated branch dogeen-assembler-merge-syntheticcvs2fossil14 years
drh_micro_optimizationMerge trunkjan.nijtmans8 years
editorconfigEditorconfig support (experimental)jan.nijtmans8 years
empty_bodiesmerge trunkMiguel Sofer9 years
experimentmerge 8.5dgp10 years
experimentalFix typo in previous check-in.Joe Mistachkin9 years
ferrieux_naclAdd a local copy of reference JS demo at same fps. Add an interactive tclsh p...ferrieux13 years
fix_1997007merge core-8-6-branchjan.nijtmans7 years
fix_42202ba1e5ff566ebug fix for [42202ba1e5ff566e0f9abb9f890e460fbc6c1c5c]: segfault by coro injectsebres7 years
fix_8_5_578155d5a19b348dstability fix: try to avoid segfault using released object, in error case of ...sebres7 years
fix_win_native_accessmerge to bugfix branchdgp13 years
fix_windows_zlibFix for the cases where a dynamic build is usedhypnotoad10 years
forgiving_pkgconfigoopsjan.nijtmans12 years
freq_3010352_implFRQ 3010352 implementationjan.nijtmans13 years
frq_3527238merge trunkjan.nijtmans12 years
frq_3544967same fore Makefile.injan.nijtmans12 years
frq_3579001merge trunkjan.nijtmans12 years
frq_3599786Experimental: categories added to man pages; enhance tcltk-man2html to use ca...twylite12 years
gahr_split_installCreate new branch named "gahr-split-install"gahr9 years
gahr_ticket_dee3d66bc7[dee3d66bc7] Remove 'any' afgahr9 years
gahr_ticket_e6f27aa56fmerge trunkjan.nijtmans8 years
gahr_tip_447Merge trunkgahr8 years
griffin_numlevelsmerge 8.5dgp12 years
htmlCopyrightsFixFix the generated copyright sections in the HTML help file.Joe Mistachkin8 years
htmlhelpFixSet the default topic, enable full-text search, and put all help output files...Joe Mistachkin8 years
http3Checkpoint of work in progress.dkf7 years
hypnotoadUpdating hypnotoad branchtne10 years
hypnotoad_bug_3598385Merging in changes from trunkseandeelywoods12 years
hypnotoad_prefer_native_8_6Bringing patch up to date with the latest trunkhypnotoad11 years
hypnotoad_vexprBringing vexpr up to date with the latest trunk.hypnotoad11 years
info_linkednameAdd [info linkedname] introspection commandmlafon7 years
initsubsystemsmerge trunkjan.nijtmans7 years
initsubsystems2revert previous 2 commits: Setting argv0 as well is not a good idea. Needs to...jan.nijtmans12 years
initsubsystems2_splitHow would it look like, if the various initializations were split in separate...jan.nijtmans12 years
iocmd_leaksConstrain test iocmd.tf-32.1 to be skipped during valgrinding. It contains a dgp13 years
iosTesting patches for iOS supportKevin Walzer10 years
irontclThe 'clean' target should delete the generated 'nmhlp-out.txt' file as well.Joe Mistachkin7 years
jcr_notifier_pollMerge from trunkevilotto10 years
je_tty_cleanupCreate new branch named "je-tty-cleanup"joe12 years
jenglish_termios_cleanup... which means struct TtyState can be replaced with struct FileState.joe12 years
jn_0d_radix_prefixmerge trunkjan.nijtmans7 years
jn_Tcl_requirementLet Tcl 8.7 allow Tk 8.7 to be used by defaultjan.nijtmans9 years
jn_emptystringMerge trunk. Don't use ListObjLength() in tclStrToD.cjan.nijtmans8 years
jn_frq_3257396merge latest trunkjan.nijtmans13 years
jn_no_struct_namesunnecessary hook struct definitionsjan.nijtmans12 years
jn_unc_vfsintegrate QNX special path handling better with TIP #402jan.nijtmans12 years
jn_wide_printfImplement all possible TCL_LL_MODIFIER formats in Tcl_ObjPrintf(), can be "ll...jan.nijtmans8 years
kbk_clock_encoding_ensemblesMake 'clock' and 'encoding' into compilable ensembles that play with safe int...Kevin B Kenny8 years
kennykb_numerics_branchmerge updates from HEAD dgp19 years
kennykb_tip_22_33 * Typo correction. dgp23 years
kennykb_tip_22_33_botchedDevelopment branch for TIPs 22 and 33 Kevin B Kenny23 years
lanam_array_for_implMerge trunkandy8 years
libtommath'const'ify all libtommath functions, will appear in next libtommath version. ...jan.nijtmans7 years
libtommath_1_0Restore bn_mp_radix_size.c to exact copy of libtommath-1.0 version: Since the...jan.nijtmans8 years
libtommath_1_0_1Merge libtommath 1.0.1 finaljan.nijtmans7 years
libtommath_tcl_fixes_75(experiment) See: [https://github.com/libtom/libtommath/pull/75] proposal by ...jan.nijtmans7 years
littleMerge 8.6.5dgp8 years
macosx_8_4_branchadded macosx-8-4-branch ChangeLog entries das22 years
masterMerge latest 'const'ification changes from libtommath (develop branch, will b...jan.nijtmans7 years
merge_tzdata_to_trunkMerge Forkvenkat8 years
micro_optMerge tip-444gahr8 years
mig_alloc_reformmerge trunkmig12 years
mig_catch_compilerallow simple optimization of the OK case, at the cost of some code duplicationmig11 years
mig_errstill no goodmig12 years
mig_no280merge trunkmig11 years
mig_nre_modscode reordering, no func changesMiguel Sofer9 years
mig_opt2replace indirect with direct jumps where possible; little effect for now, pen...Miguel Sofer9 years
mig_opt2_tmp(NON_PORTABLE) insure good cache alignment of NRE_callbackMiguel Sofer9 years
mig_opt_foreachchange NULL to INT2PTR(0), for claritymig11 years
mig_optimize*** ABANDONED - see branch mig-opt2 *** Miguel Sofer9 years
mig_review[010f4162ef] Repair effect of trace errors on -errorinfo and -errorstack.dgp11 years
mig_stacklevelsstop looking at the C-stack depthmig11 years
mig_strip_brutalmerge no280, emptymig12 years
mig_tailcall_cleanupmore commentsMiguel Sofer10 years
mig_tmpupdate the range data for code that was moved to the endMiguel Sofer9 years
mig_tmp_optimizeMaking the optimizer pluggable by extensions; please review for committing to...mig11 years
minimal_fix_for_3598300_problemsAs minimal a fix for the issues with [3598300] as I can make.dkf12 years
miniz*** NON WORKING BUILD *** hypnotoad10 years
mistachkin_review**TIP #285 untested by the testsuite if the thread extension is not available...mig11 years
mistakeCheck in reference implementation of TIP 452.gerald7 years
mistake_20110314Revert previous commit: I was not aware that we have a fork of libtommathjan.nijtmans14 years
mistake_20110314aRevert previous commit: I was not aware that we have a fork of libtommathjan.nijtmans14 years
mistkae[50750c735a] Possible fix for uninit memory handling issue in [zlib].dkf7 years
mod_8_3_4_branch * generic/tclProc.c (TclCloneProc): Fixed leaking of 'procNew', andreas_kupries21 years
more_macrosmerge trunkjan.nijtmans11 years
msgcat_dyn_localeAdded tests for mcforgetpackage, mcpackagelocale and mcpackageconfigoehhar9 years
msofer_bcEngineupdated some comments Miguel Sofer23 years
msofer_wcodes_branch * generic/tclExecute.c: fixing an error in INST_LNOT and Miguel Sofer19 years
msvc_with_64bit_zlib1_dllExperiment: MSVC build now links with 64-bit zlib1.dlljan.nijtmans12 years
no_shimmer_string_lengthfix broken lset tests, now all test-cases pass!jan.nijtmans12 years
no_smartrefAttempt to get new clock code working without the need for smartref.jan.nijtmans7 years
nonmonotonic_obj_allocZap outdated comment.ferrieux10 years
notifierIntroduce new function TclInitThreadAlloc(), symmetric with TclFinalizeThread...jan.nijtmans8 years
novemMerge trunkjan.nijtmans7 years
novem_64bit_sizesmerge novemdkf11 years
novem_ak_iframe_directCleaning up some of the internals of TIP #280.andreask12 years
novem_ak_preserve_experimentsThis branch explores the performance implications of relacing the andreask12 years
novem_bighashMerge novemjan.nijtmans8 years
novem_bug_3598300merge novemjan.nijtmans10 years
novem_demo_bug_3588687now change magic value, to demonstrate better solutionjan.nijtmans12 years
novem_freeifrefcountzeroFix correct cleanup in more situations, using a new macro TclFreeIfRefCountZerojan.nijtmans12 years
novem_more_memory_APImerge novemjan.nijtmans7 years
novem_no_register_objtypesuse longValue as internal repr in stead of wideValue. jan.nijtmans12 years
novem_no_shimmer_string_lengthNew experiment (ended), regarding non-shimmering "string length"jan.nijtmans12 years
novem_no_startcmdmerge changes from trunkdkf12 years
novem_numbers_eiasWIP getting rid of the ::tcl_precision variabledgp12 years
novem_purge_literalsBranch to investigate what happens when we no longer maintain shareddgp12 years
novem_reduced_bytecodesmerge main novem branchdkf12 years
novem_reduced_symbol_exportimprove compatibility with initsubsystems branchjan.nijtmans11 years
novem_remove_string_resultNo string result -> no more need for TCL_RESULT_SIZEdgp12 years
novem_remove_vamerge novemjan.nijtmans12 years
novem_rename_memory_APIRename the memory routines so that Tcl_Alloc/Tcl_Free/etc become the recommendeddgp12 years
novem_reviewProposed rollback of the TCL_STUB_MAGIC change on novem branch.dgp12 years
novem_saveresult_as_macroImplement Tcl_SaveResult/Tcl_DiscardResult/Tcl_RestoreResult as macrojan.nijtmans12 years
novem_supportdo some Tcl_EvalEx, for test-purposes, demonstrating a crashjan.nijtmans12 years
novem_two_layer_listFirst sketches of a two-layer data structure for storing Tcl lists.dgp12 years
novem_unversioned_stubmerge novem. Some more fixes.jan.nijtmans12 years
off_8_4_branchWrap test-case over multiple lines.jan.nijtmans12 years
off_trunkAdded tooltip generation to contents and keywords pages.dkf12 years
on_hold_84<i>On-hold at Don Porter's request.</i> jan.nijtmans12 years
on_hold_85<i>On hold at Don Porter's request</i> jan.nijtmans12 years
on_hold_trunk<i>on-hold at Don Porter's request</i> jan.nijtmans12 years
oo_copy_nsImprove docs, add tests, fix a corner case in the implementation.dkf7 years
other_64bit_candidatesThis doesn't compile! Just a reminder to myself which other API's/fields/what...jan.nijtmans12 years
package_filesFlightAware feedback: "Aside: Any way to find out what the pkgIndex.tcl file ...jan.nijtmans8 years
panic_noreturnDecorate Tcl_Panic and Tcl_PanicVA with the noreturn option, alowing further ...jan.nijtmans9 years
prevent_inlinePrevent inlining of StackGrowsDown(), in case of cross-compilingjan.nijtmans12 years
privatexjan.nijtmans13 years
pseudotrunk_2011_03_08More gcc warnings: variable set but not usedjan.nijtmans14 years
pyk_emptystringmerge trunkjan.nijtmans8 years
pyk_expr_numericHarmonize tests with expr implementation.pooryorick8 years
pyk_listdictstringrepAdd back constraint that direct dict->list conversion is only done when no st...pooryorick8 years
pyk_pkgrequirenreNRE-enable [package ifneeded] scripts.pooryorick8 years
pyk_trunkmerge pyk-listdictstringreppooryorick8 years
remove_pathappend_intrepmerge trunkdgp13 years
remove_trim_headerRevert Makefile.in changes and remove added tclStringTrim.h header. jan.nijtmans11 years
revert_3396731Repaired the lost performance in the copy loop hotspots. Now meets or dgp13 years
rfe_1711975Tcl_MainEx() (like Tk_MainEx())jan.nijtmans13 years
rfe_3216010Merge to feature branchdkf13 years
rfe_3389978More efficient/robust implementation of function TclNativeCreateNativeRep(). jan.nijtmans10 years
rfe_3432962Submitted patch on interactive use of the rc file.dgp12 years
rfe_3464401merge to feature branchjan.nijtmans13 years
rfe_3473670merge trunkjan.nijtmans13 years
rfe_6c0d7aec67merge core-8-6-branchjan.nijtmans7 years
rfe_854941Minor simplification and correct TCL_NORETURN decorationjan.nijtmans9 years
rfe_b42b208ba4Only write back file attributes if any of them really changed.jan.nijtmans11 years
rfe_dfc08326e3The Tcl 9.0 way of how [dfc08326e3] should be fixed: Real integration of TclO...jan.nijtmans11 years
rfe_notifier_forkFixed test case variable clash with 'folder'oehhar11 years
rmax_ipv6_branchcomplete a comment in socket.testmax13 years
rmax_ipv6_merge_syntheticCreated branch rmax-ipv6-merge-syntheticcvs2fossil14 years
robust_async_connect_testsmerge trunkjan.nijtmans10 years
scriptics_sc_1_0_branchCreating branch scriptics-sc-1-0-branchcvs25 years
scriptics_sc_1_1_branchCreating branch scriptics-sc-1-1-branchcvs25 years
scriptics_sc_2_0_b2_syntheticCreated branch scriptics-sc-2-0-b2-syntheticcvs2fossil25 years
scriptics_sc_2_0_b5_syntheticCreated branch scriptics-sc-2-0-b5-syntheticcvs2fossil25 years
scriptics_sc_2_0_fixed_syntheticCreated branch scriptics-sc-2-0-fixed-syntheticcvs2fossil25 years
scriptics_tclpro_1_2added missing files, changed to handle CRLF translations stanton25 years
scriptics_tclpro_1_2_oldUpdated patchlevel for final release. rjohnson25 years
scriptics_tclpro_1_2_syntheticCreated branch scriptics-tclpro-1-2-syntheticcvs2fossil26 years
scriptics_tclpro_1_3_b2_branchFixed so patchlevel is included in installer strings. stanton25 years
scriptics_tclpro_1_3_b3_syntheticCreated branch scriptics-tclpro-1-3-b3-syntheticcvs2fossil25 years
sebres_8_5_event_perf_branchmerge (integrate) sebres-event-perf-fix-busy-waitsebres7 years
sebres_8_5_timerate[win32] optimized calibration cycle (makes Tcl for windows "RTS" resp. NRT-ca...sebres7 years
sebres_8_6_clock_speedupsmall amend with forgetten static keyword by optionsebres7 years
sebres_8_6_clock_speedup_cr1fixed overflow of year (resp. julianday), closes ticket [16e4fc3096]; test ca...sebres7 years
sebres_8_6_event_perf_branchmerge sebres-event-perf-fix-busy-waitsebres7 years
sebres_8_6_timerateman for timerate (doc/timerate.n)sebres7 years
sebres_clean_core_8_5generic: reduced diffs to trunk, win: clean code after bug [f00009f7ce] was f...sebres9 years
sebres_clock_speedupCreate new branch named "sebres-clock-speedup"sebres8 years
sebres_clock_tz_fixclock - FreeScan (resp. Oldscan): repair scanning date/time with TZ using '+'...sebres9 years
sebres_event_perf_fix_busy_waitavoid busy wait if new short block-time will be set within service event-cycl...sebres7 years
sebres_optimized_8_5merge bugfixdkf13 years
sebres_trunk_clock_speedupmerge sebres-8-6-clock-speedupsebres7 years
sebres_trunk_timeratereintergrate (merge back) "sebres-8-6-timerate" into "sebres-trunk-timerate"sebres7 years
semverRe-base to trunk. Now versioned as 8.7.0-alpha.2jan.nijtmans7 years
stwo_dev86Change the return type of Tcl_RegisterChannel from void to Tcl_Channel and ha...stu7 years
tclPlatformEngineUpdate comment with TIP number.Joe Mistachkin9 years
tcl_nosize(Bad idea)jan.nijtmans12 years
tclchan_assertionsbackout backwards-incompatible experiment that was accidentally committedbch10 years
tclpro_1_5_0_syntheticCreated branch tclpro-1-5-0-syntheticcvs2fossil24 years
tcltest_verbose_descGeneralization: desc is now appended to most events.ferrieux10 years
tgl_pg_reAdapted new tests contributed from Tom Lane @postgres.dgp9 years
thread_leaksstop segfaultdgp13 years
ticket_9b2e636361Allocate encoding name, so caller of Tcl_RegisterConfig() doesn't need to kee...jan.nijtmans11 years
ticket_e770d92d6Patch to add support for higher baud rates under Unix Ticket [e770d92d76]]hypnotoad9 years
tip280_test_coverageRevert the revised macros used in developing the new tests.dgp11 years
tip404_tcl8_5Correct build version and backported 973091ef75oehhar12 years
tip429_only_idRecognize that "id" is the K combinator in disguise. Rename it as "K" and ext...ferrieux10 years
tip_106_implfix handling of closing '\0' for -binary datajan.nijtmans12 years
tip_162_branchread() errors or EOF shall not prevent write(). This allows for proper grace...davygrvy16 years
tip_257_implementation_branchRenamed functions to reduce confusion and added to header file. dkf18 years
tip_257_implementation_branch_root_syntheticCreated branch tip-257-implementation-branch-root-syntheticcvs2fossil18 years
tip_257_merge1_branch_20061020T1300add tclOO* files das18 years
tip_278_branch * tests/namespace-old.test (5.4 6.12,14,15): Miguel Sofer18 years
tip_282merge trunkdgp7 years
tip_302Added patch for win/configure.in into win/configure.acoehhar9 years
tip_312merge trunkjan.nijtmans7 years
tip_318_updatemerge trunkjan.nijtmans12 years
tip_388_implmerge trunk to feature branchjan.nijtmans13 years
tip_389_implmerge trunkjan.nijtmans7 years
tip_395_with_alt_namealternative TIP 395 implementation:jan.nijtmans13 years
tip_398_implCompat flag, test, and doc update.ferrieux12 years
tip_400_implmerge trunkdkf12 years
tip_401merge trunkdgp12 years
tip_404ChangeLog entry addedoehhar12 years
tip_405_impl_tdmerge trunkdkf12 years
tip_427Documented "fconfigure $h -connecting" on socket man pageoehhar10 years
tip_428Merge trunkoehhar10 years
tip_429merge trunkferrieux10 years
tip_436Added tests.dkf9 years
tip_440_altRedo TIP #440 alternative again, now using "info runtime".jan.nijtmans9 years
tip_440_backportBackport of TIP #440.Joe Mistachkin9 years
tip_444merge trunkgahr8 years
tip_445More TIP 445 conversion of the "path" Tcl_ObjType.dgp7 years
tip_445_forkmerge trunkdgp8 years
tip_445_rejectConvert the "bytearray" Tcl_ObjType to use the proposed Tcl_ObjIntRepdgp9 years
tip_452Tests for ::http::Write done.gerald7 years
tip_456Further experimental follow-up: Add internal function TclOpenTcpClientEx(), a...jan.nijtmans8 years
tip_456_forkmerge forkjan.nijtmans8 years
tip_457TIP#457: Update named group endingmlafon7 years
tip_458merge trunkdgp7 years
tip_458_experimentExperiment, does this work? Still to be tested: Eliminate variable triggerPip...jan.nijtmans7 years
tip_463merge trunkdgp7 years
tip_465Deal with backslashes in ${...}, change "char" to "character" in error, fix t...avl8 years
tip_468merge (minor style issues from) trunkjan.nijtmans7 years
tip_468_bisMerge "tip-468" branch. Add new function Tcl_OpenTcpClientEx() with same chan...jan.nijtmans7 years
tip_469Make it work again with new epoll Notifieravl427 years
tip_470merge trunkdkf7 years
tip_473Documentation correction; issue pointed out by DGP.dkf7 years
tip_59_implementation2002-04-05 Daniel Steffen <das@users.sourceforge.net> das23 years
tip_improve_execFirst part of upcoming TIP - Improving [exec]'s syntax : the syntax extension...ferrieux11 years
tk_bug_9eb55debc5Was handling the flushing at the end of the stream wrongly.dkf8 years
tkt3328635_posix_monotonic_clockMerge trunkjan.nijtmans7 years
tkt_04e26c02c0Make sure not to miss bignumsgahr7 years
tkt_414d10346bAnother attempt to cleanup stale remnants of the notifier subsystem.Joe Mistachkin11 years
tkt_4d5ae7d88a[4d5ae7d88a] Restore default-to-error logic in TcpConnectgahr8 years
unbreak_tclcompilerPartial revert of [a16752c252] bug fix to stop crashes in buggy tclcompiler.dgp11 years
unknown_rewritemerge trunkdgp12 years
unprovenwipdgp13 years
unsetThreadDataAlso finalize the condition variables for each notifier thread.Joe Mistachkin11 years
unwantedmerge trunkdgp7 years
updateextended* added some docco for [update] changes.colin8 years
vc_reformAdd default-* targetsapnadkarni7 years
vs_ide_compilemerge core-8-5-branchjan.nijtmans8 years
werner_utf_max_6Patches by Christian Werner, supporting TCL_UTF_MAX=6 on Windows. Doesn't wor...jan.nijtmans9 years
win32_armSupport compiling Tcl for Win32 on ARM.Joe Mistachkin11 years
winFixesmerge core-8-6-branch. Undo changes to coffbase.txt (they cause overlap with Tk)jan.nijtmans8 years
win_console_panicRebase to trunkjan.nijtmans7 years
win_sock_async_connect_race_fixsocket -async and gets/puts stall on windows (Ticket [336441ed59]) andreask11 years
z_modifierMerge trunkjan.nijtmans7 years
zipfsMerge core-8-6-branch, fallback for MAP_FILEjan.nijtmans7 years
zippy_fifoReduce the list walking by keeping lastPtr fields.dgp9 years
zlib_1_2_6[Frq 3483854] zlib-1.2.6jan.nijtmans13 years
 
TagDownloadAuthorAge
core-9-0-0core-9-0-0.zip  core-9-0-0.tar.gz  core-9-0-0.tar.bz2  jan.nijtmans5 days
minorminor.zip  minor.tar.gz  minor.tar.bz2  dkf8 days
core-bug-e38dce74e2core-bug-e38dce74e2.zip  core-bug-e38dce74e2.tar.gz  core-bug-e38dce74e2.tar.bz2  jan.nijtmans9 days
core-bug-02d5d65d70adab97core-bug-02d5d65d70adab97.zip  core-bug-02d5d65d70adab97.tar.gz  core-bug-02d5d65d70adab97.tar.bz2  sebres2 weeks
core-8-6-15core-8-6-15.zip  core-8-6-15.tar.gz  core-8-6-15.tar.bz2  dgp3 weeks
core-bug-945d2387d7core-bug-945d2387d7.zip  core-bug-945d2387d7.tar.gz  core-bug-945d2387d7.tar.bz2  apnadkarni5 weeks
core-bug-a82f8b15d1core-bug-a82f8b15d1.zip  core-bug-a82f8b15d1.tar.gz  core-bug-a82f8b15d1.tar.bz2  jan.nijtmans5 weeks
core-bug-304d30677acore-bug-304d30677a.zip  core-bug-304d30677a.tar.gz  core-bug-304d30677a.tar.bz2  apnadkarni6 weeks
core-apn-encoding-testscore-apn-encoding-tests.zip  core-apn-encoding-tests.tar.gz  core-apn-encoding-tests.tar.bz2  apnadkarni6 weeks
core-bug-3968086595core-bug-3968086595.zip  core-bug-3968086595.tar.gz  core-bug-3968086595.tar.bz2  pooryorick7 weeks
core-zipfs-consolidationcore-zipfs-consolidation.zip  core-zipfs-consolidation.tar.gz  core-zipfs-consolidation.tar.bz2  apnadkarni7 weeks
core-bug-fccb9f322fcore-bug-fccb9f322f.zip  core-bug-fccb9f322f.tar.gz  core-bug-fccb9f322f.tar.bz2  apnadkarni8 weeks
core-9-0-b3core-9-0-b3.zip  core-9-0-b3.tar.gz  core-9-0-b3.tar.bz2  dgp9 weeks
core-bug-0439e1e1a3core-bug-0439e1e1a3.zip  core-bug-0439e1e1a3.tar.gz  core-bug-0439e1e1a3.tar.bz2  jan.nijtmans3 months
core-apn-info-framecore-apn-info-frame.zip  core-apn-info-frame.tar.gz  core-apn-info-frame.tar.bz2  apnadkarni3 months
core-tip-699core-tip-699.zip  core-tip-699.tar.gz  core-tip-699.tar.bz2  jan.nijtmans3 months
core-apn-icucore-apn-icu.zip  core-apn-icu.tar.gz  core-apn-icu.tar.bz2  apnadkarni3 months
core-apn-no-injectcore-apn-no-inject.zip  core-apn-no-inject.tar.gz  core-apn-no-inject.tar.bz2  apnadkarni3 months
core-bug-1d26e580cfcore-bug-1d26e580cf.zip  core-bug-1d26e580cf.tar.gz  core-bug-1d26e580cf.tar.bz2  jan.nijtmans4 months
core-bug-407b70361ccore-bug-407b70361c.zip  core-bug-407b70361c.tar.gz  core-bug-407b70361c.tar.bz2  jan.nijtmans4 months
core-9-0-b2core-9-0-b2.zip  core-9-0-b2.tar.gz  core-9-0-b2.tar.bz2  dgp4 months
core-fix-79474c58800cdf94core-fix-79474c58800cdf94.zip  core-fix-79474c58800cdf94.tar.gz  core-fix-79474c58800cdf94.tar.bz2  sebres5 months
dkf/to-redodkf/to-redo.zip  dkf/to-redo.tar.gz  dkf/to-redo.tar.bz2  dkf5 months
core-bug-9a8ce8af3dcore-bug-9a8ce8af3d.zip  core-bug-9a8ce8af3d.tar.gz  core-bug-9a8ce8af3d.tar.bz2  apnadkarni5 months
core-bug-ef23a85ac6core-bug-ef23a85ac6.zip  core-bug-ef23a85ac6.tar.gz  core-bug-ef23a85ac6.tar.bz2  jan.nijtmans5 months
core-tip-626core-tip-626.zip  core-tip-626.tar.gz  core-tip-626.tar.bz2  jan.nijtmans5 months
core-bug-18f4a94d03core-bug-18f4a94d03.zip  core-bug-18f4a94d03.tar.gz  core-bug-18f4a94d03.tar.bz2  jan.nijtmans5 months
core-bug-e155cedf33core-bug-e155cedf33.zip  core-bug-e155cedf33.tar.gz  core-bug-e155cedf33.tar.bz2  jan.nijtmans6 months
core-bug-ac7592e73c10d04bcore-bug-ac7592e73c10d04b.zip  core-bug-ac7592e73c10d04b.tar.gz  core-bug-ac7592e73c10d04b.tar.bz2  jan.nijtmans6 months
core-libtommath-1.3core-libtommath-1.3.zip  core-libtommath-1.3.tar.gz  core-libtommath-1.3.tar.bz2  jan.nijtmans6 months
core-clock-speedup-cr2core-clock-speedup-cr2.zip  core-clock-speedup-cr2.tar.gz  core-clock-speedup-cr2.tar.bz2  sebres7 months
core-tip-688-candidatecore-tip-688-candidate.zip  core-tip-688-candidate.tar.gz  core-tip-688-candidate.tar.bz2  jan.nijtmans7 months
core-bug-910d67a229fe7f65core-bug-910d67a229fe7f65.zip  core-bug-910d67a229fe7f65.tar.gz  core-bug-910d67a229fe7f65.tar.bz2  sebres7 months
core-8-6-14core-8-6-14.zip  core-8-6-14.tar.gz  core-8-6-14.tar.bz2  dgp7 months
core-tip-652core-tip-652.zip  core-tip-652.tar.gz  core-tip-652.tar.bz2  pooryorick8 months
core-9-0-b1core-9-0-b1.zip  core-9-0-b1.tar.gz  core-9-0-b1.tar.bz2  dgp9 months
core-9-0-b1-rc4core-9-0-b1-rc4.zip  core-9-0-b1-rc4.tar.gz  core-9-0-b1-rc4.tar.bz2  dgp9 months
core-tip-661-candidatecore-tip-661-candidate.zip  core-tip-661-candidate.tar.gz  core-tip-661-candidate.tar.bz2  jan.nijtmans10 months
closedclosed.zip  closed.tar.gz  closed.tar.bz2  jan.nijtmans13 months
core-tip-657-candidatecore-tip-657-candidate.zip  core-tip-657-candidate.tar.gz  core-tip-657-candidate.tar.bz2  jan.nijtmans15 months
core-tip-558-candidatecore-tip-558-candidate.zip  core-tip-558-candidate.tar.gz  core-tip-558-candidate.tar.bz2  jan.nijtmans17 months
core-tip-626-candidatecore-tip-626-candidate.zip  core-tip-626-candidate.tar.gz  core-tip-626-candidate.tar.bz2  jan.nijtmans17 months
tip-656-pre-capitip-656-pre-capi.zip  tip-656-pre-capi.tar.gz  tip-656-pre-capi.tar.bz2  apnadkarni19 months
jan-b8f575aa23jan-b8f575aa23.zip  jan-b8f575aa23.tar.gz  jan-b8f575aa23.tar.bz2  jan.nijtmans22 months
core-8-6-13core-8-6-13.zip  core-8-6-13.tar.gz  core-8-6-13.tar.bz2  dgp22 months
tip607-encoding-failindextip607-encoding-failindex.zip  tip607-encoding-failindex.tar.gz  tip607-encoding-failindex.tar.bz2  oehhar3 years
tip601-encoding-failindextip601-encoding-failindex.zip  tip601-encoding-failindex.tar.gz  tip601-encoding-failindex.tar.bz2  oehhar3 years
core-8-6-12core-8-6-12.zip  core-8-6-12.tar.gz  core-8-6-12.tar.bz2  dgp3 years
core-9-0-a3core-9-0-a3.zip  core-9-0-a3.tar.gz  core-9-0-a3.tar.bz2  dgp3 years
core-8-7-a5core-8-7-a5.zip  core-8-7-a5.tar.gz  core-8-7-a5.tar.bz2  dgp3 years
core-8-6-11core-8-6-11.zip  core-8-6-11.tar.gz  core-8-6-11.tar.bz2  dgp4 years
core-8-7a3core-8-7a3.zip  core-8-7a3.tar.gz  core-8-7a3.tar.bz2  dgp5 years
core-9-0-a1core-9-0-a1.zip  core-9-0-a1.tar.gz  core-9-0-a1.tar.bz2  dgp5 years
core-8-7-a3core-8-7-a3.zip  core-8-7-a3.tar.gz  core-8-7-a3.tar.bz2  dgp5 years
core-8-6-10core-8-6-10.zip  core-8-6-10.tar.gz  core-8-6-10.tar.bz2  dgp5 years
please_don't_mess_with_branches_just_for_debugging!please_don't_mess_with_branches_just_for_debugging!.zip  please_don't_mess_with_branches_just_for_debugging!.tar.gz  please_don't_mess_with_branches_just_for_debugging!.tar.bz2  jan.nijtmans5 years
core-8-6-9core-8-6-9.zip  core-8-6-9.tar.gz  core-8-6-9.tar.bz2  dgp6 years
rc4rc4.zip  rc4.tar.gz  rc4.tar.bz2  dgp6 years
core-8-6-8core-8-6-8.zip  core-8-6-8.tar.gz  core-8-6-8.tar.bz2  dgp7 years
vc_reform_tests_passvc_reform_tests_pass.zip  vc_reform_tests_pass.tar.gz  vc_reform_tests_pass.tar.bz2  7 years
vc-reform-tests-passvc-reform-tests-pass.zip  vc-reform-tests-pass.tar.gz  vc-reform-tests-pass.tar.bz2  apnadkarni7 years
releaserelease.zip  release.tar.gz  release.tar.bz2  7 years
core_8_7_a1core_8_7_a1.zip  core_8_7_a1.tar.gz  core_8_7_a1.tar.bz2  7 years
rc1rc1.zip  rc1.tar.gz  rc1.tar.bz2  7 years
core-8-7-a1core-8-7-a1.zip  core-8-7-a1.tar.gz  core-8-7-a1.tar.bz2  dgp7 years
rc0rc0.zip  rc0.tar.gz  rc0.tar.bz2  7 years
core_8_6_7core_8_6_7.zip  core_8_6_7.tar.gz  core_8_6_7.tar.bz2  7 years
core-8-6-7core-8-6-7.zip  core-8-6-7.tar.gz  core-8-6-7.tar.bz2  dgp7 years
bg-tip-282bg-tip-282.zip  bg-tip-282.tar.gz  bg-tip-282.tar.bz2  ferrieux8 years
bg_tip_282bg_tip_282.zip  bg_tip_282.tar.gz  bg_tip_282.tar.bz2  8 years
mistakemistake.zip  mistake.tar.gz  mistake.tar.bz2  8 years
tip_456tip_456.zip  tip_456.tar.gz  tip_456.tar.bz2  8 years
tip-456tip-456.zip  tip-456.tar.gz  tip-456.tar.bz2  jan.nijtmans8 years
core_8_6_6core_8_6_6.zip  core_8_6_6.tar.gz  core_8_6_6.tar.bz2  8 years
core-8-6-6core-8-6-6.zip  core-8-6-6.tar.gz  core-8-6-6.tar.bz2  dgp8 years
minor_changeminor_change.zip  minor_change.tar.gz  minor_change.tar.bz2  8 years
bug-3154ea2759bug-3154ea2759.zip  bug-3154ea2759.tar.gz  bug-3154ea2759.tar.bz2  kbk8 years
bug_3154ea2759bug_3154ea2759.zip  bug_3154ea2759.tar.gz  bug_3154ea2759.tar.bz2  8 years
potential_incompatibilitypotential_incompatibility.zip  potential_incompatibility.tar.gz  potential_incompatibility.tar.bz2  8 years
core_8_6_5core_8_6_5.zip  core_8_6_5.tar.gz  core_8_6_5.tar.bz2  9 years
core-8-6-5core-8-6-5.zip  core-8-6-5.tar.gz  core-8-6-5.tar.bz2  dgp9 years
gahr_bug_5f71353740gahr_bug_5f71353740.zip  gahr_bug_5f71353740.tar.gz  gahr_bug_5f71353740.tar.bz2  9 years
core_8_5_19core_8_5_19.zip  core_8_5_19.tar.gz  core_8_5_19.tar.bz2  9 years
core-8-5-19core-8-5-19.zip  core-8-5-19.tar.gz  core-8-5-19.tar.bz2  dgp9 years
tip_412tip_412.zip  tip_412.tar.gz  tip_412.tar.bz2  9 years
tip-412tip-412.zip  tip-412.tar.gz  tip-412.tar.bz2  oehhar9 years
testedtested.zip  tested.tar.gz  tested.tar.bz2  9 years
core_8_6_4core_8_6_4.zip  core_8_6_4.tar.gz  core_8_6_4.tar.bz2  10 years
core-8-6-4core-8-6-4.zip  core-8-6-4.tar.gz  core-8-6-4.tar.bz2  dgp10 years
core_8_5_18core_8_5_18.zip  core_8_5_18.tar.gz  core_8_5_18.tar.bz2  10 years
core-8-5-18core-8-5-18.zip  core-8-5-18.tar.gz  core-8-5-18.tar.bz2  dgp10 years
core_8_6_3core_8_6_3.zip  core_8_6_3.tar.gz  core_8_6_3.tar.bz2  10 years
core-8-6-3core-8-6-3.zip  core-8-6-3.tar.gz  core-8-6-3.tar.bz2  dgp10 years
core_8_5_17core_8_5_17.zip  core_8_5_17.tar.gz  core_8_5_17.tar.bz2  10 years
core-8-5-17core-8-5-17.zip  core-8-5-17.tar.gz  core-8-5-17.tar.bz2  dgp10 years
core_8_6_2core_8_6_2.zip  core_8_6_2.tar.gz  core_8_6_2.tar.bz2  10 years
rc3rc3.zip  rc3.tar.gz  rc3.tar.bz2  10 years
core-8-6-2core-8-6-2.zip  core-8-6-2.tar.gz  core-8-6-2.tar.bz2  dgp10 years
core_8_5_16core_8_5_16.zip  core_8_5_16.tar.gz  core_8_5_16.tar.bz2  10 years
core-8-5-16core-8-5-16.zip  core-8-5-16.tar.gz  core-8-5-16.tar.bz2  dgp10 years
tip_99tip_99.zip  tip_99.tar.gz  tip_99.tar.bz2  11 years
core_8_6_1core_8_6_1.zip  core_8_6_1.tar.gz  core_8_6_1.tar.bz2  11 years
core-8-6-1core-8-6-1.zip  core-8-6-1.tar.gz  core-8-6-1.tar.bz2  dgp11 years
core_8_5_15core_8_5_15.zip  core_8_5_15.tar.gz  core_8_5_15.tar.bz2  11 years
core-8-5-15core-8-5-15.zip  core-8-5-15.tar.gz  core-8-5-15.tar.bz2  dgp11 years
mig_reviewmig_review.zip  mig_review.tar.gz  mig_review.tar.bz2  11 years
mig-reviewmig-review.zip  mig-review.tar.gz  mig-review.tar.bz2  dgp11 years
core-8-4-20core-8-4-20.zip  core-8-4-20.tar.gz  core-8-4-20.tar.bz2  dgp11 years
core_8_4_20core_8_4_20.zip  core_8_4_20.tar.gz  core_8_4_20.tar.bz2  11 years
rc2rc2.zip  rc2.tar.gz  rc2.tar.bz2  11 years
core-8-5-14core-8-5-14.zip  core-8-5-14.tar.gz  core-8-5-14.tar.bz2  dgp12 years
core_8_5_14core_8_5_14.zip  core_8_5_14.tar.gz  core_8_5_14.tar.bz2  12 years
mig_retestmig_retest.zip  mig_retest.tar.gz  mig_retest.tar.bz2  12 years
mig-retestmig-retest.zip  mig-retest.tar.gz  mig-retest.tar.bz2  mig12 years
mig_no280_mistakemig_no280_mistake.zip  mig_no280_mistake.tar.gz  mig_no280_mistake.tar.bz2  12 years
mig-no280-mistakemig-no280-mistake.zip  mig-no280-mistake.tar.gz  mig-no280-mistake.tar.bz2  mig12 years
mig_alloc_reform_Z2mig_alloc_reform_Z2.zip  mig_alloc_reform_Z2.tar.gz  mig_alloc_reform_Z2.tar.bz2  12 years
mig-alloc-reform-Z2mig-alloc-reform-Z2.zip  mig-alloc-reform-Z2.tar.gz  mig-alloc-reform-Z2.tar.bz2  mig12 years
bug_3598385bug_3598385.zip  bug_3598385.tar.gz  bug_3598385.tar.bz2  12 years
bug-3598385bug-3598385.zip  bug-3598385.tar.gz  bug-3598385.tar.bz2  hypnotoad12 years
core_8_6_0core_8_6_0.zip  core_8_6_0.tar.gz  core_8_6_0.tar.bz2  12 years
core-8-6-0core-8-6-0.zip  core-8-6-0.tar.gz  core-8-6-0.tar.bz2  dgp12 years
core_8_5_13core_8_5_13.zip  core_8_5_13.tar.gz  core_8_5_13.tar.bz2  12 years
core-8-5-13core-8-5-13.zip  core-8-5-13.tar.gz  core-8-5-13.tar.bz2  dgp12 years
merge_to_trunkmerge_to_trunk.zip  merge_to_trunk.tar.gz  merge_to_trunk.tar.bz2  12 years
merge-to-trunkmerge-to-trunk.zip  merge-to-trunk.tar.gz  merge-to-trunk.tar.bz2  dkf12 years
tip_votetip_vote.zip  tip_vote.tar.gz  tip_vote.tar.bz2  12 years
tip-votetip-vote.zip  tip-vote.tar.gz  tip-vote.tar.bz2  dkf12 years
core_8_6_b3core_8_6_b3.zip  core_8_6_b3.tar.gz  core_8_6_b3.tar.bz2  12 years
core-8-6-b3core-8-6-b3.zip  core-8-6-b3.tar.gz  core-8-6-b3.tar.bz2  dgp12 years
core_8_5_12core_8_5_12.zip  core_8_5_12.tar.gz  core_8_5_12.tar.bz2  12 years
core-8-5-12core-8-5-12.zip  core-8-5-12.tar.gz  core-8-5-12.tar.bz2  dgp12 years
core_8_5_11core_8_5_11.zip  core_8_5_11.tar.gz  core_8_5_11.tar.bz2  13 years
core-8-5-11core-8-5-11.zip  core-8-5-11.tar.gz  core-8-5-11.tar.bz2  dgp13 years
core_8_6_b2core_8_6_b2.zip  core_8_6_b2.tar.gz  core_8_6_b2.tar.bz2  13 years
core-8-6-b2core-8-6-b2.zip  core-8-6-b2.tar.gz  core-8-6-b2.tar.bz2  dgp13 years
core_8_5_10core_8_5_10.zip  core_8_5_10.tar.gz  core_8_5_10.tar.bz2  13 years
core-8-5-10core-8-5-10.zip  core-8-5-10.tar.gz  core-8-5-10.tar.bz2  dgp13 years
corresponds_to_TclOO_0_6_3corresponds_to_TclOO_0_6_3.zip  corresponds_to_TclOO_0_6_3.tar.gz  corresponds_to_TclOO_0_6_3.tar.bz2  13 years
corresponds-to-TclOO-0-6-3corresponds-to-TclOO-0-6-3.zip  corresponds-to-TclOO-0-6-3.tar.gz  corresponds-to-TclOO-0-6-3.tar.bz2  dkf13 years
libtommath_merge_0_42_0libtommath_merge_0_42_0.zip  libtommath_merge_0_42_0.tar.gz  libtommath_merge_0_42_0.tar.bz2  14 years
libtommath-merge-0-42-0libtommath-merge-0-42-0.zip  libtommath-merge-0-42-0.tar.gz  libtommath-merge-0-42-0.tar.bz2  dkf14 years
Bug_3185009Bug_3185009.zip  Bug_3185009.tar.gz  Bug_3185009.tar.bz2  14 years
core_8_1_0core_8_1_0.zip  core_8_1_0.tar.gz  core_8_1_0.tar.bz2  14 years
core_8_1_1core_8_1_1.zip  core_8_1_1.tar.gz  core_8_1_1.tar.bz2  14 years
core_8_1_b3core_8_1_b3.zip  core_8_1_b3.tar.gz  core_8_1_b3.tar.bz2  14 years
core_8_4_a1core_8_4_a1.zip  core_8_4_a1.tar.gz  core_8_4_a1.tar.bz2  14 years
core_8_4_a2core_8_4_a2.zip  core_8_4_a2.tar.gz  core_8_4_a2.tar.bz2  14 years
core_8_4_a3core_8_4_a3.zip  core_8_4_a3.tar.gz  core_8_4_a3.tar.bz2  14 years
core_8_4_a4core_8_4_a4.zip  core_8_4_a4.tar.gz  core_8_4_a4.tar.bz2  14 years
core_8_4_b1core_8_4_b1.zip  core_8_4_b1.tar.gz  core_8_4_b1.tar.bz2  14 years
core_8_5_0core_8_5_0.zip  core_8_5_0.tar.gz  core_8_5_0.tar.bz2  14 years
core_8_5_1core_8_5_1.zip  core_8_5_1.tar.gz  core_8_5_1.tar.bz2  14 years
core_8_5_2core_8_5_2.zip  core_8_5_2.tar.gz  core_8_5_2.tar.bz2  14 years
core_stabilizer_mergecore_stabilizer_merge.zip  core_stabilizer_merge.tar.gz  core_stabilizer_merge.tar.bz2  14 years
dogeen_assembler_splitdogeen_assembler_split.zip  dogeen_assembler_split.tar.gz  dogeen_assembler_split.tar.bz2  14 years
macosx_8_4_premerge_2002_08_31_branchmacosx_8_4_premerge_2002_08_31_branch.zip  macosx_8_4_premerge_2002_08_31_branch.tar.gz  macosx_8_4_premerge_2002_08_31_branch.tar.bz2  14 years
macosx_premerge_6_9_02macosx_premerge_6_9_02.zip  macosx_premerge_6_9_02.tar.gz  macosx_premerge_6_9_02.tar.bz2  14 years
merge_8_3_1_io_rewrite_07_26_00merge_8_3_1_io_rewrite_07_26_00.zip  merge_8_3_1_io_rewrite_07_26_00.tar.gz  merge_8_3_1_io_rewrite_07_26_00.tar.bz2  14 years
tclpro_1_5_0tclpro_1_5_0.zip  tclpro_1_5_0.tar.gz  tclpro_1_5_0.tar.bz2  14 years
tip_257_implementation_branch_roottip_257_implementation_branch_root.zip  tip_257_implementation_branch_root.tar.gz  tip_257_implementation_branch_root.tar.bz2  14 years
tip_278_branch_roottip_278_branch_root.zip  tip_278_branch_root.tar.gz  tip_278_branch_root.tar.bz2  14 years
core_8_0_2core_8_0_2.zip  core_8_0_2.tar.gz  core_8_0_2.tar.bz2  14 years
core_8_0_3core_8_0_3.zip  core_8_0_3.tar.gz  core_8_0_3.tar.bz2  14 years
core_8_0_4core_8_0_4.zip  core_8_0_4.tar.gz  core_8_0_4.tar.bz2  14 years
core_8_0_5core_8_0_5.zip  core_8_0_5.tar.gz  core_8_0_5.tar.bz2  14 years
core_8_0_5_basecore_8_0_5_base.zip  core_8_0_5_base.tar.gz  core_8_0_5_base.tar.bz2  14 years
core_8_1_b1core_8_1_b1.zip  core_8_1_b1.tar.gz  core_8_1_b1.tar.bz2  14 years
core_8_1_b2core_8_1_b2.zip  core_8_1_b2.tar.gz  core_8_1_b2.tar.bz2  14 years
core_8_4_0core_8_4_0.zip  core_8_4_0.tar.gz  core_8_4_0.tar.bz2  14 years
core_8_4_1core_8_4_1.zip  core_8_4_1.tar.gz  core_8_4_1.tar.bz2  14 years
core_8_4_2core_8_4_2.zip  core_8_4_2.tar.gz  core_8_4_2.tar.bz2  14 years
core_8_4_3core_8_4_3.zip  core_8_4_3.tar.gz  core_8_4_3.tar.bz2  14 years
core_8_4_4core_8_4_4.zip  core_8_4_4.tar.gz  core_8_4_4.tar.bz2  14 years
core_8_4_5core_8_4_5.zip  core_8_4_5.tar.gz  core_8_4_5.tar.bz2  14 years
core_8_4_6core_8_4_6.zip  core_8_4_6.tar.gz  core_8_4_6.tar.bz2  14 years
core_8_4_7core_8_4_7.zip  core_8_4_7.tar.gz  core_8_4_7.tar.bz2  14 years
core_8_4_8core_8_4_8.zip  core_8_4_8.tar.gz  core_8_4_8.tar.bz2  14 years
core_8_4_9core_8_4_9.zip  core_8_4_9.tar.gz  core_8_4_9.tar.bz2  14 years
core_8_6_b1core_8_6_b1.zip  core_8_6_b1.tar.gz  core_8_6_b1.tar.bz2  14 years
rmax_ipv6_mergermax_ipv6_merge.zip  rmax_ipv6_merge.tar.gz  rmax_ipv6_merge.tar.bz2  14 years
scriptics_sc_1_0_basescriptics_sc_1_0_base.zip  scriptics_sc_1_0_base.tar.gz  scriptics_sc_1_0_base.tar.bz2  14 years
scriptics_tclpro_1_2_b1scriptics_tclpro_1_2_b1.zip  scriptics_tclpro_1_2_b1.tar.gz  scriptics_tclpro_1_2_b1.tar.bz2  14 years
scriptics_tclpro_1_2_b2scriptics_tclpro_1_2_b2.zip  scriptics_tclpro_1_2_b2.tar.gz  scriptics_tclpro_1_2_b2.tar.bz2  14 years
tip_278_20061009tip_278_20061009.zip  tip_278_20061009.tar.gz  tip_278_20061009.tar.bz2  14 years
ajuba_ajuba2_2_1_baseajuba_ajuba2_2_1_base.zip  ajuba_ajuba2_2_1_base.tar.gz  ajuba_ajuba2_2_1_base.tar.bz2  14 years
core_8_0_6_basecore_8_0_6_base.zip  core_8_0_6_base.tar.gz  core_8_0_6_base.tar.bz2  14 years
core_8_1_merge_3_9_99core_8_1_merge_3_9_99.zip  core_8_1_merge_3_9_99.tar.gz  core_8_1_merge_3_9_99.tar.bz2  14 years
core_8_2_b3_basecore_8_2_b3_base.zip  core_8_2_b3_base.tar.gz  core_8_2_b3_base.tar.bz2  14 years
core_8_3_1core_8_3_1.zip  core_8_3_1.tar.gz  core_8_3_1.tar.bz2  14 years
core_8_3_2core_8_3_2.zip  core_8_3_2.tar.gz  core_8_3_2.tar.bz2  14 years
core_8_3_3core_8_3_3.zip  core_8_3_3.tar.gz  core_8_3_3.tar.bz2  14 years
core_8_3_4core_8_3_4.zip  core_8_3_4.tar.gz  core_8_3_4.tar.bz2  14 years
core_8_3_5core_8_3_5.zip  core_8_3_5.tar.gz  core_8_3_5.tar.bz2  14 years
core_8_3_b1core_8_3_b1.zip  core_8_3_b1.tar.gz  core_8_3_b1.tar.bz2  14 years
core_8_3_b2core_8_3_b2.zip  core_8_3_b2.tar.gz  core_8_3_b2.tar.bz2  14 years
core_8_6_a1core_8_6_a1.zip  core_8_6_a1.tar.gz  core_8_6_a1.tar.bz2  14 years
core_8_6_a2core_8_6_a2.zip  core_8_6_a2.tar.gz  core_8_6_a2.tar.bz2  14 years
core_8_6_a3core_8_6_a3.zip  core_8_6_a3.tar.gz  core_8_6_a3.tar.bz2  14 years
dev_stubs_merge_8_1_3_9_99dev_stubs_merge_8_1_3_9_99.zip  dev_stubs_merge_8_1_3_9_99.tar.gz  dev_stubs_merge_8_1_3_9_99.tar.bz2  14 years
dogeen_assembler_mergedogeen_assembler_merge.zip  dogeen_assembler_merge.tar.gz  dogeen_assembler_merge.tar.bz2  14 years
macosx_8_4_branchpointmacosx_8_4_branchpoint.zip  macosx_8_4_branchpoint.tar.gz  macosx_8_4_branchpoint.tar.bz2  14 years
macosx_8_4_merge_2002_08_20_trunkmacosx_8_4_merge_2002_08_20_trunk.zip  macosx_8_4_merge_2002_08_20_trunk.tar.gz  macosx_8_4_merge_2002_08_20_trunk.tar.bz2  14 years
macosx_8_4_merge_2002_08_30_trunkmacosx_8_4_merge_2002_08_30_trunk.zip  macosx_8_4_merge_2002_08_30_trunk.tar.gz  macosx_8_4_merge_2002_08_30_trunk.tar.bz2  14 years
scriptics_bc_1_0_b1scriptics_bc_1_0_b1.zip  scriptics_bc_1_0_b1.tar.gz  scriptics_bc_1_0_b1.tar.bz2  14 years
scriptics_sc_1_0scriptics_sc_1_0.zip  scriptics_sc_1_0.tar.gz  scriptics_sc_1_0.tar.bz2  14 years
scriptics_sc_1_1scriptics_sc_1_1.zip  scriptics_sc_1_1.tar.gz  scriptics_sc_1_1.tar.bz2  14 years
scriptics_sc_2_0_b2scriptics_sc_2_0_b2.zip  scriptics_sc_2_0_b2.tar.gz  scriptics_sc_2_0_b2.tar.bz2  14 years
scriptics_sc_2_0_b5scriptics_sc_2_0_b5.zip  scriptics_sc_2_0_b5.tar.gz  scriptics_sc_2_0_b5.tar.bz2  14 years
scriptics_tclpro_1_2_a1scriptics_tclpro_1_2_a1.zip  scriptics_tclpro_1_2_a1.tar.gz  scriptics_tclpro_1_2_a1.tar.bz2  14 years
tclpro_1_4_0tclpro_1_4_0.zip  tclpro_1_4_0.tar.gz  tclpro_1_4_0.tar.bz2  14 years
tclpro_1_4_1tclpro_1_4_1.zip  tclpro_1_4_1.tar.gz  tclpro_1_4_1.tar.bz2  14 years
tip_257_implementation_branch_patchpoint_20061020T1300tip_257_implementation_branch_patchpoint_20061020T1300.zip  tip_257_implementation_branch_patchpoint_20061020T1300.tar.gz  tip_257_implementation_branch_patchpoint_20061020T1300.tar.bz2  14 years
ajuba_ajuba2_2_0ajuba_ajuba2_2_0.zip  ajuba_ajuba2_2_0.tar.gz  ajuba_ajuba2_2_0.tar.bz2  14 years
core_8_1_merge_latestcore_8_1_merge_latest.zip  core_8_1_merge_latest.tar.gz  core_8_1_merge_latest.tar.bz2  14 years
core_8_2_b1core_8_2_b1.zip  core_8_2_b1.tar.gz  core_8_2_b1.tar.bz2  14 years
core_8_2_b2core_8_2_b2.zip  core_8_2_b2.tar.gz  core_8_2_b2.tar.bz2  14 years
core_8_3_0core_8_3_0.zip  core_8_3_0.tar.gz  core_8_3_0.tar.bz2  14 years
core_8_4_18core_8_4_18.zip  core_8_4_18.tar.gz  core_8_4_18.tar.bz2  14 years
core_8_4_19core_8_4_19.zip  core_8_4_19.tar.gz  core_8_4_19.tar.bz2  14 years
core_8_5_a1core_8_5_a1.zip  core_8_5_a1.tar.gz  core_8_5_a1.tar.bz2  14 years
core_8_5_a2core_8_5_a2.zip  core_8_5_a2.tar.gz  core_8_5_a2.tar.bz2  14 years
core_8_5_a3core_8_5_a3.zip  core_8_5_a3.tar.gz  core_8_5_a3.tar.bz2  14 years
core_8_5_a4core_8_5_a4.zip  core_8_5_a4.tar.gz  core_8_5_a4.tar.bz2  14 years
core_8_5_a5core_8_5_a5.zip  core_8_5_a5.tar.gz  core_8_5_a5.tar.bz2  14 years
core_8_5_a6core_8_5_a6.zip  core_8_5_a6.tar.gz  core_8_5_a6.tar.bz2  14 years
core_8_5_b1core_8_5_b1.zip  core_8_5_b1.tar.gz  core_8_5_b1.tar.bz2  14 years
core_8_5_b2core_8_5_b2.zip  core_8_5_b2.tar.gz  core_8_5_b2.tar.bz2  14 years
core_8_5_b3core_8_5_b3.zip  core_8_5_b3.tar.gz  core_8_5_b3.tar.bz2  14 years
dgp_refactor_mergedgp_refactor_merge.zip  dgp_refactor_merge.tar.gz  dgp_refactor_merge.tar.bz2  14 years
kennykb_numerics_branch_20050915kennykb_numerics_branch_20050915.zip  kennykb_numerics_branch_20050915.tar.gz  kennykb_numerics_branch_20050915.tar.bz2  14 years
kennykb_numerics_branch_20051008kennykb_numerics_branch_20051008.zip  kennykb_numerics_branch_20051008.tar.gz  kennykb_numerics_branch_20051008.tar.bz2  14 years
macosx_8_4_merge_2002_08_20_branchmacosx_8_4_merge_2002_08_20_branch.zip  macosx_8_4_merge_2002_08_20_branch.tar.gz  macosx_8_4_merge_2002_08_20_branch.tar.bz2  14 years
macosx_8_4_merge_2002_08_30_branchmacosx_8_4_merge_2002_08_30_branch.zip  macosx_8_4_merge_2002_08_30_branch.tar.gz  macosx_8_4_merge_2002_08_30_branch.tar.bz2  14 years
macosx_8_4_merge_2002_08_31_trunkmacosx_8_4_merge_2002_08_31_trunk.zip  macosx_8_4_merge_2002_08_31_trunk.tar.gz  macosx_8_4_merge_2002_08_31_trunk.tar.bz2  14 years
merge_to_mainline_5_21_99merge_to_mainline_5_21_99.zip  merge_to_mainline_5_21_99.tar.gz  merge_to_mainline_5_21_99.tar.bz2  14 years
msofer_wcodes_20050611msofer_wcodes_20050611.zip  msofer_wcodes_20050611.tar.gz  msofer_wcodes_20050611.tar.bz2  14 years
msofer_wcodes_branch_20051007msofer_wcodes_branch_20051007.zip  msofer_wcodes_branch_20051007.tar.gz  msofer_wcodes_branch_20051007.tar.bz2  14 years
scriptics_sc_1_1_basescriptics_sc_1_1_base.zip  scriptics_sc_1_1_base.tar.gz  scriptics_sc_1_1_base.tar.bz2  14 years
scriptics_sc_2_0_b1scriptics_sc_2_0_b1.zip  scriptics_sc_2_0_b1.tar.gz  scriptics_sc_2_0_b1.tar.bz2  14 years
scriptics_tclpro_1_2scriptics_tclpro_1_2.zip  scriptics_tclpro_1_2.tar.gz  scriptics_tclpro_1_2.tar.bz2  14 years
scriptics_tclpro_1_3_0scriptics_tclpro_1_3_0.zip  scriptics_tclpro_1_3_0.tar.gz  scriptics_tclpro_1_3_0.tar.bz2  14 years
core_8_1_1_basecore_8_1_1_base.zip  core_8_1_1_base.tar.gz  core_8_1_1_base.tar.bz2  14 years
core_8_2_0core_8_2_0.zip  core_8_2_0.tar.gz  core_8_2_0.tar.bz2  14 years
core_8_2_1core_8_2_1.zip  core_8_2_1.tar.gz  core_8_2_1.tar.bz2  14 years
core_8_2_2core_8_2_2.zip  core_8_2_2.tar.gz  core_8_2_2.tar.bz2  14 years
core_8_2_3core_8_2_3.zip  core_8_2_3.tar.gz  core_8_2_3.tar.bz2  14 years
core_8_4_10core_8_4_10.zip  core_8_4_10.tar.gz  core_8_4_10.tar.bz2  14 years
core_8_4_11core_8_4_11.zip  core_8_4_11.tar.gz  core_8_4_11.tar.bz2  14 years
core_8_4_12core_8_4_12.zip  core_8_4_12.tar.gz  core_8_4_12.tar.bz2  14 years
core_8_4_13core_8_4_13.zip  core_8_4_13.tar.gz  core_8_4_13.tar.bz2  14 years
core_8_4_14core_8_4_14.zip  core_8_4_14.tar.gz  core_8_4_14.tar.bz2  14 years
core_8_4_15core_8_4_15.zip  core_8_4_15.tar.gz  core_8_4_15.tar.bz2  14 years
core_8_4_16core_8_4_16.zip  core_8_4_16.tar.gz  core_8_4_16.tar.bz2  14 years
core_8_4_17core_8_4_17.zip  core_8_4_17.tar.gz  core_8_4_17.tar.bz2  14 years
core_8_5_8core_8_5_8.zip  core_8_5_8.tar.gz  core_8_5_8.tar.bz2  14 years
core_8_5_9core_8_5_9.zip  core_8_5_9.tar.gz  core_8_5_9.tar.bz2  14 years
macosx_8_4_premerge_2002_08_31_trunkmacosx_8_4_premerge_2002_08_31_trunk.zip  macosx_8_4_premerge_2002_08_31_trunk.tar.gz  macosx_8_4_premerge_2002_08_31_trunk.tar.bz2  14 years
scriptics_sc_1_1_b1scriptics_sc_1_1_b1.zip  scriptics_sc_1_1_b1.tar.gz  scriptics_sc_1_1_b1.tar.bz2  14 years
scriptics_sc_2_0_fixedscriptics_sc_2_0_fixed.zip  scriptics_sc_2_0_fixed.tar.gz  scriptics_sc_2_0_fixed.tar.bz2  14 years
scriptics_tclpro_1_3_b3scriptics_tclpro_1_3_b3.zip  scriptics_tclpro_1_3_b3.tar.gz  scriptics_tclpro_1_3_b3.tar.bz2  14 years
scriptics_tclpro_1_3_b4scriptics_tclpro_1_3_b4.zip  scriptics_tclpro_1_3_b4.tar.gz  scriptics_tclpro_1_3_b4.tar.bz2  14 years
core_8_4_b2core_8_4_b2.zip  core_8_4_b2.tar.gz  core_8_4_b2.tar.bz2  14 years
core_8_5_3core_8_5_3.zip  core_8_5_3.tar.gz  core_8_5_3.tar.bz2  14 years
core_8_5_4core_8_5_4.zip  core_8_5_4.tar.gz  core_8_5_4.tar.bz2  14 years
core_8_5_5core_8_5_5.zip  core_8_5_5.tar.gz  core_8_5_5.tar.bz2  14 years
core_8_5_6core_8_5_6.zip  core_8_5_6.tar.gz  core_8_5_6.tar.bz2  14 years
core_8_5_7core_8_5_7.zip  core_8_5_7.tar.gz  core_8_5_7.tar.bz2  14 years
scriptics_tclpro_1_3_b1scriptics_tclpro_1_3_b1.zip  scriptics_tclpro_1_3_b1.tar.gz  scriptics_tclpro_1_3_b1.tar.bz2  14 years
scriptics_tclpro_1_3_b2scriptics_tclpro_1_3_b2.zip  scriptics_tclpro_1_3_b2.tar.gz  scriptics_tclpro_1_3_b2.tar.bz2  14 years
dgp-refactor-mergedgp-refactor-merge.zip  dgp-refactor-merge.tar.gz  dgp-refactor-merge.tar.bz2  cvs2fossil14 years
dogeen-assembler-mergedogeen-assembler-merge.zip  dogeen-assembler-merge.tar.gz  dogeen-assembler-merge.tar.bz2  cvs2fossil14 years
rmax-ipv6-mergermax-ipv6-merge.zip  rmax-ipv6-merge.tar.gz  rmax-ipv6-merge.tar.bz2  cvs2fossil14 years
dogeen-assembler-splitdogeen-assembler-split.zip  dogeen-assembler-split.tar.gz  dogeen-assembler-split.tar.bz2  nijtmans14 years
core-8-5-9core-8-5-9.zip  core-8-5-9.tar.gz  core-8-5-9.tar.bz2  dgp14 years
core-8-5-8core-8-5-8.zip  core-8-5-8.tar.gz  core-8-5-8.tar.bz2  dgp15 years
core-8-5-7core-8-5-7.zip  core-8-5-7.tar.gz  core-8-5-7.tar.bz2  dgp15 years
core-8-6-b1core-8-6-b1.zip  core-8-6-b1.tar.gz  core-8-6-b1.tar.bz2  dgp16 years
core-8-5-6core-8-5-6.zip  core-8-5-6.tar.gz  core-8-5-6.tar.bz2  dgp16 years
core-8-5-5core-8-5-5.zip  core-8-5-5.tar.gz  core-8-5-5.tar.bz2  dgp16 years
core-8-6-a3core-8-6-a3.zip  core-8-6-a3.tar.gz  core-8-6-a3.tar.bz2  dgp16 years
core-8-6-a2core-8-6-a2.zip  core-8-6-a2.tar.gz  core-8-6-a2.tar.bz2  dgp16 years
core-8-5-4core-8-5-4.zip  core-8-5-4.tar.gz  core-8-5-4.tar.bz2  dgp16 years
core-stabilizer-mergecore-stabilizer-merge.zip  core-stabilizer-merge.tar.gz  core-stabilizer-merge.tar.bz2  cvs2fossil16 years
core-8-5-3core-8-5-3.zip  core-8-5-3.tar.gz  core-8-5-3.tar.bz2  dgp16 years
core-8-6-a1core-8-6-a1.zip  core-8-6-a1.tar.gz  core-8-6-a1.tar.bz2  dgp16 years
core-8-4-19core-8-4-19.zip  core-8-4-19.tar.gz  core-8-4-19.tar.bz2  dgp16 years
core-8-5-2core-8-5-2.zip  core-8-5-2.tar.gz  core-8-5-2.tar.bz2  dgp17 years
core-8-4-18core-8-4-18.zip  core-8-4-18.tar.gz  core-8-4-18.tar.bz2  dgp17 years
core-8-5-1core-8-5-1.zip  core-8-5-1.tar.gz  core-8-5-1.tar.bz2  dgp17 years
core-8-4-17core-8-4-17.zip  core-8-4-17.tar.gz  core-8-4-17.tar.bz2  dgp17 years
core-8-5-0core-8-5-0.zip  core-8-5-0.tar.gz  core-8-5-0.tar.bz2  dgp17 years
core-8-5-b3core-8-5-b3.zip  core-8-5-b3.tar.gz  core-8-5-b3.tar.bz2  dgp17 years
core-8-5-b2core-8-5-b2.zip  core-8-5-b2.tar.gz  core-8-5-b2.tar.bz2  dgp17 years
core-8-5-b1core-8-5-b1.zip  core-8-5-b1.tar.gz  core-8-5-b1.tar.bz2  das17 years
core-8-4-16core-8-4-16.zip  core-8-4-16.tar.gz  core-8-4-16.tar.bz2  das17 years
core-8-4-15core-8-4-15.zip  core-8-4-15.tar.gz  core-8-4-15.tar.bz2  dgp17 years
core-8-5-a6core-8-5-a6.zip  core-8-5-a6.tar.gz  core-8-5-a6.tar.bz2  hobbs17 years
core-8-5-a5core-8-5-a5.zip  core-8-5-a5.tar.gz  core-8-5-a5.tar.bz2  cvs2fossil18 years
tip-257-implementation-branch-patchpoint-20061020T1300tip-257-implementation-branch-patchpoint-20061020T1300.zip  tip-257-implementation-branch-patchpoint-20061020T1300.tar.gz  tip-257-implementation-branch-patchpoint-20061020T1300.tar.bz2  dkf18 years
core-8-4-14core-8-4-14.zip  core-8-4-14.tar.gz  core-8-4-14.tar.bz2  dgp18 years
tip-278-20061009tip-278-20061009.zip  tip-278-20061009.tar.gz  tip-278-20061009.tar.bz2  msofer18 years
tip-278-branch-roottip-278-branch-root.zip  tip-278-branch-root.tar.gz  tip-278-branch-root.tar.bz2  patthoyts18 years
tip-257-implementation-branch-roottip-257-implementation-branch-root.zip  tip-257-implementation-branch-root.tar.gz  tip-257-implementation-branch-root.tar.bz2  cvs2fossil18 years
core-8-5-a4core-8-5-a4.zip  core-8-5-a4.tar.gz  core-8-5-a4.tar.bz2  dgp18 years
core-8-4-13core-8-4-13.zip  core-8-4-13.tar.gz  core-8-4-13.tar.bz2  dgp18 years
core-8-4-12core-8-4-12.zip  core-8-4-12.tar.gz  core-8-4-12.tar.bz2  dgp19 years
kennykb-numerics-branch-20051008kennykb-numerics-branch-20051008.zip  kennykb-numerics-branch-20051008.tar.gz  kennykb-numerics-branch-20051008.tar.bz2  hobbs19 years
msofer-wcodes-branch-20051007msofer-wcodes-branch-20051007.zip  msofer-wcodes-branch-20051007.tar.gz  msofer-wcodes-branch-20051007.tar.bz2  hobbs19 years
kennykb-numerics-branch-20050915kennykb-numerics-branch-20050915.zip  kennykb-numerics-branch-20050915.tar.gz  kennykb-numerics-branch-20050915.tar.bz2  dgp19 years
core-8-4-11core-8-4-11.zip  core-8-4-11.tar.gz  core-8-4-11.tar.bz2  dgp19 years
msofer-wcodes-20050611msofer-wcodes-20050611.zip  msofer-wcodes-20050611.tar.gz  msofer-wcodes-20050611.tar.bz2  dkf19 years
core-8-5-a3core-8-5-a3.zip  core-8-5-a3.tar.gz  core-8-5-a3.tar.bz2  hobbs19 years
core-8-4-10core-8-4-10.zip  core-8-4-10.tar.gz  core-8-4-10.tar.bz2  das19 years
core-8-5-a2core-8-5-a2.zip  core-8-5-a2.tar.gz  core-8-5-a2.tar.bz2  hobbs20 years
core-8-4-9core-8-4-9.zip  core-8-4-9.tar.gz  core-8-4-9.tar.bz2  hobbs20 years
core-8-4-8core-8-4-8.zip  core-8-4-8.tar.gz  core-8-4-8.tar.bz2  rmax20 years
core-8-4-7core-8-4-7.zip  core-8-4-7.tar.gz  core-8-4-7.tar.bz2  hobbs20 years
core-8-5-a1core-8-5-a1.zip  core-8-5-a1.tar.gz  core-8-5-a1.tar.bz2  hobbs21 years
core-8-4-6core-8-4-6.zip  core-8-4-6.tar.gz  core-8-4-6.tar.bz2  dgp21 years
core-8-4-5core-8-4-5.zip  core-8-4-5.tar.gz  core-8-4-5.tar.bz2  hobbs21 years
core-8-4-4core-8-4-4.zip  core-8-4-4.tar.gz  core-8-4-4.tar.bz2  hobbs21 years
core-8-4-3core-8-4-3.zip  core-8-4-3.tar.gz  core-8-4-3.tar.bz2  hobbs21 years
core-8-4-2core-8-4-2.zip  core-8-4-2.tar.gz  core-8-4-2.tar.bz2  das22 years
core-8-4-1core-8-4-1.zip  core-8-4-1.tar.gz  core-8-4-1.tar.bz2  hobbs22 years
core-8-3-5core-8-3-5.zip  core-8-3-5.tar.gz  core-8-3-5.tar.bz2  hobbs22 years
core-8-4-0core-8-4-0.zip  core-8-4-0.tar.gz  core-8-4-0.tar.bz2  hobbs22 years
macosx-8-4-merge-2002-08-31-trunkmacosx-8-4-merge-2002-08-31-trunk.zip  macosx-8-4-merge-2002-08-31-trunk.tar.gz  macosx-8-4-merge-2002-08-31-trunk.tar.bz2  das22 years
macosx-8-4-premerge-2002-08-31-branchmacosx-8-4-premerge-2002-08-31-branch.zip  macosx-8-4-premerge-2002-08-31-branch.tar.gz  macosx-8-4-premerge-2002-08-31-branch.tar.bz2  das22 years
macosx-8-4-merge-2002-08-30-branchmacosx-8-4-merge-2002-08-30-branch.zip  macosx-8-4-merge-2002-08-30-branch.tar.gz  macosx-8-4-merge-2002-08-30-branch.tar.bz2  das22 years
macosx-8-4-merge-2002-08-30-trunkmacosx-8-4-merge-2002-08-30-trunk.zip  macosx-8-4-merge-2002-08-30-trunk.tar.gz  macosx-8-4-merge-2002-08-30-trunk.tar.bz2  andreas_kupries22 years
macosx-8-4-premerge-2002-08-31-trunkmacosx-8-4-premerge-2002-08-31-trunk.zip  macosx-8-4-premerge-2002-08-31-trunk.tar.gz  macosx-8-4-premerge-2002-08-31-trunk.tar.bz2  andreas_kupries22 years
macosx-8-4-merge-2002-08-20-branchmacosx-8-4-merge-2002-08-20-branch.zip  macosx-8-4-merge-2002-08-20-branch.tar.gz  macosx-8-4-merge-2002-08-20-branch.tar.bz2  das22 years
macosx-8-4-merge-2002-08-20-trunkmacosx-8-4-merge-2002-08-20-trunk.zip  macosx-8-4-merge-2002-08-20-trunk.tar.gz  macosx-8-4-merge-2002-08-20-trunk.tar.bz2  dgp22 years
core-8-4-b2core-8-4-b2.zip  core-8-4-b2.tar.gz  core-8-4-b2.tar.bz2  hobbs22 years
core-8-4-b1core-8-4-b1.zip  core-8-4-b1.tar.gz  core-8-4-b1.tar.bz2  hobbs22 years
tip-99tip-99.zip  tip-99.tar.gz  tip-99.tar.bz2  vincentdarley22 years
core-8-4-a4core-8-4-a4.zip  core-8-4-a4.tar.gz  core-8-4-a4.tar.bz2  hobbs23 years
macosx-premerge-6-9-02macosx-premerge-6-9-02.zip  macosx-premerge-6-9-02.tar.gz  macosx-premerge-6-9-02.tar.bz2  das23 years
core-8-3-4core-8-3-4.zip  core-8-3-4.tar.gz  core-8-3-4.tar.bz2  hobbs23 years
macosx-8-4-branchpointmacosx-8-4-branchpoint.zip  macosx-8-4-branchpoint.tar.gz  macosx-8-4-branchpoint.tar.bz2  dgp23 years
core-8-4-a3core-8-4-a3.zip  core-8-4-a3.tar.gz  core-8-4-a3.tar.bz2  hobbs23 years
core-8-3-3core-8-3-3.zip  core-8-3-3.tar.gz  core-8-3-3.tar.bz2  hobbs23 years
core-8-4-a2core-8-4-a2.zip  core-8-4-a2.tar.gz  core-8-4-a2.tar.bz2  cvs2fossil24 years
core-8-3-2core-8-3-2.zip  core-8-3-2.tar.gz  core-8-3-2.tar.bz2  hobbs24 years
tclpro-1-4-1tclpro-1-4-1.zip  tclpro-1-4-1.tar.gz  tclpro-1-4-1.tar.bz2  hobbs24 years
tclpro-1-5-0tclpro-1-5-0.zip  tclpro-1-5-0.tar.gz  tclpro-1-5-0.tar.bz2  cvs2fossil24 years
tclpro-1-4-0tclpro-1-4-0.zip  tclpro-1-4-0.tar.gz  tclpro-1-4-0.tar.bz2  hobbs24 years
ajuba-ajuba2-2-1-baseajuba-ajuba2-2-1-base.zip  ajuba-ajuba2-2-1-base.tar.gz  ajuba-ajuba2-2-1-base.tar.bz2  cvs2fossil24 years
merge-8-3-1-io-rewrite-07-26-00merge-8-3-1-io-rewrite-07-26-00.zip  merge-8-3-1-io-rewrite-07-26-00.tar.gz  merge-8-3-1-io-rewrite-07-26-00.tar.bz2  hobbs24 years
core-8-4-a1core-8-4-a1.zip  core-8-4-a1.tar.gz  core-8-4-a1.tar.bz2  hobbs24 years
ajuba-ajuba2-2-0ajuba-ajuba2-2-0.zip  ajuba-ajuba2-2-0.tar.gz  ajuba-ajuba2-2-0.tar.bz2  cvs2fossil24 years
core-8-3-1core-8-3-1.zip  core-8-3-1.tar.gz  core-8-3-1.tar.bz2  cvs2fossil24 years
scriptics-sc-2-0-b2scriptics-sc-2-0-b2.zip  scriptics-sc-2-0-b2.tar.gz  scriptics-sc-2-0-b2.tar.bz2  cvs2fossil25 years
scriptics-sc-2-0-b5scriptics-sc-2-0-b5.zip  scriptics-sc-2-0-b5.tar.gz  scriptics-sc-2-0-b5.tar.bz2  cvs2fossil25 years
scriptics-sc-2-0-fixedscriptics-sc-2-0-fixed.zip  scriptics-sc-2-0-fixed.tar.gz  scriptics-sc-2-0-fixed.tar.bz2  cvs2fossil25 years
scriptics-sc-2-0-b1scriptics-sc-2-0-b1.zip  scriptics-sc-2-0-b1.tar.gz  scriptics-sc-2-0-b1.tar.bz2  sandeep25 years
core-8-3-0core-8-3-0.zip  core-8-3-0.tar.gz  core-8-3-0.tar.bz2  hobbs25 years
core-8-3-b2core-8-3-b2.zip  core-8-3-b2.tar.gz  core-8-3-b2.tar.bz2  hobbs25 years
core-8-3-b1core-8-3-b1.zip  core-8-3-b1.tar.gz  core-8-3-b1.tar.bz2  hobbs25 years
core-8-2-3core-8-2-3.zip  core-8-2-3.tar.gz  core-8-2-3.tar.bz2  jenn25 years
scriptics-sc-1-1scriptics-sc-1-1.zip  scriptics-sc-1-1.tar.gz  scriptics-sc-1-1.tar.bz2  jenn25 years
scriptics-sc-1-1-b1scriptics-sc-1-1-b1.zip  scriptics-sc-1-1-b1.tar.gz  scriptics-sc-1-1-b1.tar.bz2  cvs25 years
scriptics-sc-1-1-basescriptics-sc-1-1-base.zip  scriptics-sc-1-1-base.tar.gz  scriptics-sc-1-1-base.tar.bz2  cvs25 years
core-8-2-2core-8-2-2.zip  core-8-2-2.tar.gz  core-8-2-2.tar.bz2  cvs25 years
scriptics-sc-1-0scriptics-sc-1-0.zip  scriptics-sc-1-0.tar.gz  scriptics-sc-1-0.tar.bz2  cvs25 years
scriptics-sc-1-0-basescriptics-sc-1-0-base.zip  scriptics-sc-1-0-base.tar.gz  scriptics-sc-1-0-base.tar.bz2  cvs25 years
core-8-2-1core-8-2-1.zip  core-8-2-1.tar.gz  core-8-2-1.tar.bz2  hobbs25 years
scriptics-bc-1-0-b1scriptics-bc-1-0-b1.zip  scriptics-bc-1-0-b1.tar.gz  scriptics-bc-1-0-b1.tar.bz2  hobbs25 years
core-8-2-0core-8-2-0.zip  core-8-2-0.tar.gz  core-8-2-0.tar.bz2  welch25 years
scriptics-tclpro-1-3-0scriptics-tclpro-1-3-0.zip  scriptics-tclpro-1-3-0.tar.gz  scriptics-tclpro-1-3-0.tar.bz2  welch25 years
core-8-2-b3-basecore-8-2-b3-base.zip  core-8-2-b3-base.tar.gz  core-8-2-b3-base.tar.bz2  redman25 years
core-8-2-b2core-8-2-b2.zip  core-8-2-b2.tar.gz  core-8-2-b2.tar.bz2  redman25 years
scriptics-tclpro-1-3-b4scriptics-tclpro-1-3-b4.zip  scriptics-tclpro-1-3-b4.tar.gz  scriptics-tclpro-1-3-b4.tar.bz2  redman25 years
core-8-2-b1core-8-2-b1.zip  core-8-2-b1.tar.gz  core-8-2-b1.tar.bz2  cvs2fossil25 years
scriptics-tclpro-1-3-b3scriptics-tclpro-1-3-b3.zip  scriptics-tclpro-1-3-b3.tar.gz  scriptics-tclpro-1-3-b3.tar.bz2  cvs2fossil25 years
core-8-1-1core-8-1-1.zip  core-8-1-1.tar.gz  core-8-1-1.tar.bz2  stanton25 years
merge-to-mainline-5/21/99merge-to-mainline-5/21/99.zip  merge-to-mainline-5/21/99.tar.gz  merge-to-mainline-5/21/99.tar.bz2  redman25 years
scriptics-tclpro-1-3-b2scriptics-tclpro-1-3-b2.zip  scriptics-tclpro-1-3-b2.tar.gz  scriptics-tclpro-1-3-b2.tar.bz2  redman25 years
core-8-1-1-basecore-8-1-1-base.zip  core-8-1-1-base.tar.gz  core-8-1-1-base.tar.bz2  redman25 years
scriptics-tclpro-1-3-b1scriptics-tclpro-1-3-b1.zip  scriptics-tclpro-1-3-b1.tar.gz  scriptics-tclpro-1-3-b1.tar.bz2  redman25 years
core-8-1-0core-8-1-0.zip  core-8-1-0.tar.gz  core-8-1-0.tar.bz2  cvs2fossil25 years
core-8-0-6-basecore-8-0-6-base.zip  core-8-0-6-base.tar.gz  core-8-0-6-base.tar.bz2  cvs25 years
core-8-1-b3core-8-1-b3.zip  core-8-1-b3.tar.gz  core-8-1-b3.tar.bz2  cvs2fossil26 years
core-8-0-5core-8-0-5.zip  core-8-0-5.tar.gz  core-8-0-5.tar.bz2  cvs2fossil26 years
core-8-1-b2core-8-1-b2.zip  core-8-1-b2.tar.gz  core-8-1-b2.tar.bz2  cvs2fossil26 years
core-8-1-merge-latestcore-8-1-merge-latest.zip  core-8-1-merge-latest.tar.gz  core-8-1-merge-latest.tar.bz2  stanton26 years
core-8-1-merge-3/9/99core-8-1-merge-3/9/99.zip  core-8-1-merge-3/9/99.tar.gz  core-8-1-merge-3/9/99.tar.bz2  stanton26 years
dev-stubs-merge-8-1-3/9/99dev-stubs-merge-8-1-3/9/99.zip  dev-stubs-merge-8-1-3/9/99.tar.gz  dev-stubs-merge-8-1-3/9/99.tar.bz2  stanton26 years
scriptics-tclpro-1-2scriptics-tclpro-1-2.zip  scriptics-tclpro-1-2.tar.gz  scriptics-tclpro-1-2.tar.bz2  cvs2fossil26 years
scriptics-tclpro-1-2-b2scriptics-tclpro-1-2-b2.zip  scriptics-tclpro-1-2-b2.tar.gz  scriptics-tclpro-1-2-b2.tar.bz2  stanton26 years
core-8-0-5-basecore-8-0-5-base.zip  core-8-0-5-base.tar.gz  core-8-0-5-base.tar.bz2  cvs2fossil26 years
scriptics-tclpro-1-2-b1scriptics-tclpro-1-2-b1.zip  scriptics-tclpro-1-2-b1.tar.gz  scriptics-tclpro-1-2-b1.tar.bz2  welch26 years
scriptics-tclpro-1-2-a1scriptics-tclpro-1-2-a1.zip  scriptics-tclpro-1-2-a1.tar.gz  scriptics-tclpro-1-2-a1.tar.bz2  surles26 years
core-8-1-b1core-8-1-b1.zip  core-8-1-b1.tar.gz  core-8-1-b1.tar.bz2  cvs2fossil26 years
core-8-0-4core-8-0-4.zip  core-8-0-4.tar.gz  core-8-0-4.tar.bz2  cvs2fossil26 years
core-8-0-3core-8-0-3.zip  core-8-0-3.tar.gz  core-8-0-3.tar.bz2  stanton26 years
core-8-0-2core-8-0-2.zip  core-8-0-2.tar.gz  core-8-0-2.tar.bz2  cvs2fossil26 years
ass="hl kwb">$currPos } then { break } if { $newPos < $currPos } { set ok 0 break } } } if { !$ok } { continue } # Remember the best possibility for extracting date information set currPrio $prio set currFieldPos $fPos set currCodeBurst $parseAction } return $currCodeBurst } #---------------------------------------------------------------------- # # EnterLocale -- # # Switch [mclocale] to a given locale if necessary # # Parameters: # locale -- Desired locale # # Results: # Returns the locale that was previously current. # # Side effects: # Does [mclocale]. If necessary, loades the designated locale's files. # #---------------------------------------------------------------------- proc ::tcl::clock::EnterLocale { locale } { if { $locale eq {system} } { if { $::tcl_platform(platform) ne {windows} } { # On a non-windows platform, the 'system' locale is the same as # the 'current' locale set locale current } else { # On a windows platform, the 'system' locale is adapted from the # 'current' locale by applying the date and time formats from the # Control Panel. First, load the 'current' locale if it's not yet # loaded mcpackagelocale set [mclocale] # Make a new locale string for the system locale, and get the # Control Panel information set locale [mclocale]_windows if { ! [mcpackagelocale present $locale] } { LoadWindowsDateTimeFormats $locale } } } if { $locale eq {current}} { set locale [mclocale] } # Eventually load the locale mcpackagelocale set $locale } #---------------------------------------------------------------------- # # LoadWindowsDateTimeFormats -- # # Load the date/time formats from the Control Panel in Windows and # convert them so that they're usable by Tcl. # # Parameters: # locale - Name of the locale in whose message catalog # the converted formats are to be stored. # # Results: # None. # # Side effects: # Updates the given message catalog with the locale strings. # # Presumes that on entry, [mclocale] is set to the current locale, so that # default strings can be obtained if the Registry query fails. # #---------------------------------------------------------------------- proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { # Bail out if we can't find the Registry variable NoRegistry if { [info exists NoRegistry] } return if { ![catch { registry get "HKEY_CURRENT_USER\\Control Panel\\International" \ sShortDate } string] } { set quote {} set datefmt {} foreach { unquoted quoted } [split $string '] { append datefmt $quote [string map { dddd %A ddd %a dd %d d %e MMMM %B MMM %b MM %m M %N yyyy %Y yy %y y %y gg {} } $unquoted] if { $quoted eq {} } { set quote ' } else { set quote $quoted } } ::msgcat::mcset $locale DATE_FORMAT $datefmt } if { ![catch { registry get "HKEY_CURRENT_USER\\Control Panel\\International" \ sLongDate } string] } { set quote {} set ldatefmt {} foreach { unquoted quoted } [split $string '] { append ldatefmt $quote [string map { dddd %A ddd %a dd %d d %e MMMM %B MMM %b MM %m M %N yyyy %Y yy %y y %y gg {} } $unquoted] if { $quoted eq {} } { set quote ' } else { set quote $quoted } } ::msgcat::mcset $locale LOCALE_DATE_FORMAT $ldatefmt } if { ![catch { registry get "HKEY_CURRENT_USER\\Control Panel\\International" \ sTimeFormat } string] } { set quote {} set timefmt {} foreach { unquoted quoted } [split $string '] { append timefmt $quote [string map { HH %H H %k hh %I h %l mm %M m %M ss %S s %S tt %p t %p } $unquoted] if { $quoted eq {} } { set quote ' } else { set quote $quoted } } ::msgcat::mcset $locale TIME_FORMAT $timefmt } catch { ::msgcat::mcset $locale DATE_TIME_FORMAT "$datefmt $timefmt" } catch { ::msgcat::mcset $locale LOCALE_DATE_TIME_FORMAT "$ldatefmt $timefmt" } return } #---------------------------------------------------------------------- # # LocalizeFormat -- # # Map away locale-dependent format groups in a clock format. # # Parameters: # locale -- Current [mclocale] locale, supplied to avoid # an extra call # format -- Format supplied to [clock scan] or [clock format] # # Results: # Returns the string with locale-dependent composite format groups # substituted out. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::LocalizeFormat { locale format } { # message catalog key to cache this format set key FORMAT_$format if { [::msgcat::mcexists -exactlocale -exactnamespace $key] } { return [mc $key] } # Handle locale-dependent format groups by mapping them out of the format # string. Note that the order of the [string map] operations is # significant because later formats can refer to later ones; for example # %c can refer to %X, which in turn can refer to %T. set list { %% %% %D %m/%d/%Y %+ {%a %b %e %H:%M:%S %Z %Y} } lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]] lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]] lappend list %R [string map $list [mc TIME_FORMAT_24]] lappend list %r [string map $list [mc TIME_FORMAT_12]] lappend list %X [string map $list [mc TIME_FORMAT]] lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]] lappend list %x [string map $list [mc DATE_FORMAT]] lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]] lappend list %c [string map $list [mc DATE_TIME_FORMAT]] lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]] set format [string map $list $format] ::msgcat::mcset $locale $key $format return $format } #---------------------------------------------------------------------- # # FormatNumericTimeZone -- # # Formats a time zone as +hhmmss # # Parameters: # z - Time zone in seconds east of Greenwich # # Results: # Returns the time zone formatted in a numeric form # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::FormatNumericTimeZone { z } { if { $z < 0 } { set z [expr { - $z }] set retval - } else { set retval + } append retval [::format %02d [expr { $z / 3600 }]] set z [expr { $z % 3600 }] append retval [::format %02d [expr { $z / 60 }]] set z [expr { $z % 60 }] if { $z != 0 } { append retval [::format %02d $z] } return $retval } #---------------------------------------------------------------------- # # FormatStarDate -- # # Formats a date as a StarDate. # # Parameters: # date - Dictionary containing 'year', 'dayOfYear', and # 'localSeconds' fields. # # Results: # Returns the given date formatted as a StarDate. # # Side effects: # None. # # Jeff Hobbs put this in to support an atrocious pun about Tcl being # "Enterprise ready." Now we're stuck with it. # #---------------------------------------------------------------------- proc ::tcl::clock::FormatStarDate { date } { variable Roddenberry # Get day of year, zero based set doy [expr { [dict get $date dayOfYear] - 1 }] # Determine whether the year is a leap year set lp [IsGregorianLeapYear $date] # Convert day of year to a fractional year if { $lp } { set fractYear [expr { 1000 * $doy / 366 }] } else { set fractYear [expr { 1000 * $doy / 365 }] } # Put together the StarDate return [::format "Stardate %02d%03d.%1d" \ [expr { [dict get $date year] - $Roddenberry }] \ $fractYear \ [expr { [dict get $date localSeconds] % 86400 / ( 86400 / 10 ) }]] } #---------------------------------------------------------------------- # # ParseStarDate -- # # Parses a StarDate # # Parameters: # year - Year from the Roddenberry epoch # fractYear - Fraction of a year specifiying the day of year. # fractDay - Fraction of a day # # Results: # Returns a count of seconds from the Posix epoch. # # Side effects: # None. # # Jeff Hobbs put this in to support an atrocious pun about Tcl being # "Enterprise ready." Now we're stuck with it. # #---------------------------------------------------------------------- proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { variable Roddenberry # Build a tentative date from year and fraction. set date [dict create \ gregorian 1 \ era CE \ year [expr { $year + $Roddenberry }] \ dayOfYear [expr { $fractYear * 365 / 1000 + 1 }]] set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]] # Determine whether the given year is a leap year set lp [IsGregorianLeapYear $date] # Reconvert the fractional year according to whether the given year is a # leap year if { $lp } { dict set date dayOfYear \ [expr { $fractYear * 366 / 1000 + 1 }] } else { dict set date dayOfYear \ [expr { $fractYear * 365 / 1000 + 1 }] } dict unset date julianDay dict unset date gregorian set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]] return [expr { 86400 * [dict get $date julianDay] - 210866803200 + ( 86400 / 10 ) * $fractDay }] } #---------------------------------------------------------------------- # # ScanWide -- # # Scans a wide integer from an input # # Parameters: # str - String containing a decimal wide integer # # Results: # Returns the string as a pure wide integer. Throws an error if the # string is misformatted or out of range. # #---------------------------------------------------------------------- proc ::tcl::clock::ScanWide { str } { set count [::scan $str {%ld %c} result junk] if { $count != 1 } { return -code error -errorcode [list CLOCK notAnInteger $str] \ "\"$str\" is not an integer" } if { [incr result 0] != $str } { return -code error -errorcode [list CLOCK integervalueTooLarge] \ "integer value too large to represent" } return $result } #---------------------------------------------------------------------- # # InterpretTwoDigitYear -- # # Given a date that contains only the year of the century, determines # the target value of a two-digit year. # # Parameters: # date - Dictionary containing fields of the date. # baseTime - Base time relative to which the date is expressed. # twoDigitField - Name of the field that stores the two-digit year. # Default is 'yearOfCentury' # fourDigitField - Name of the field that will receive the four-digit # year. Default is 'year' # # Results: # Returns the dictionary augmented with the four-digit year, stored in # the given key. # # Side effects: # None. # # The current rule for interpreting a two-digit year is that the year shall be # between 1937 and 2037, thus staying within the range of a 32-bit signed # value for time. This rule may change to a sliding window in future # versions, so the 'baseTime' parameter (which is currently ignored) is # provided in the procedure signature. # #---------------------------------------------------------------------- proc ::tcl::clock::InterpretTwoDigitYear { date baseTime { twoDigitField yearOfCentury } { fourDigitField year } } { set yr [dict get $date $twoDigitField] if { $yr <= 37 } { dict set date $fourDigitField [expr { $yr + 2000 }] } else { dict set date $fourDigitField [expr { $yr + 1900 }] } return $date } #---------------------------------------------------------------------- # # AssignBaseYear -- # # Places the number of the current year into a dictionary. # # Parameters: # date - Dictionary value to update # baseTime - Base time from which to extract the year, expressed # in seconds from the Posix epoch # timezone - the time zone in which the date is being scanned # changeover - the Julian Day on which the Gregorian calendar # was adopted in the target locale. # # Results: # Returns the dictionary with the current year assigned. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } { variable TZData # Find the Julian Day Number corresponding to the base time, and # find the Gregorian year corresponding to that Julian Day. set date2 [GetDateFields $baseTime $TZData($timezone) $changeover] # Store the converted year dict set date era [dict get $date2 era] dict set date year [dict get $date2 year] return $date } #---------------------------------------------------------------------- # # AssignBaseIso8601Year -- # # Determines the base year in the ISO8601 fiscal calendar. # # Parameters: # date - Dictionary containing the fields of the date that # is to be augmented with the base year. # baseTime - Base time expressed in seconds from the Posix epoch. # timeZone - Target time zone # changeover - Julian Day of adoption of the Gregorian calendar in # the target locale. # # Results: # Returns the given date with "iso8601Year" set to the # base year. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} { variable TZData # Find the Julian Day Number corresponding to the base time set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover] # Calculate the ISO8601 date and transfer the year dict set date era CE dict set date iso8601Year [dict get $date2 iso8601Year] return $date } #---------------------------------------------------------------------- # # AssignBaseMonth -- # # Places the number of the current year and month into a # dictionary. # # Parameters: # date - Dictionary value to update # baseTime - Time from which the year and month are to be # obtained, expressed in seconds from the Posix epoch. # timezone - Name of the desired time zone # changeover - Julian Day on which the Gregorian calendar was adopted. # # Results: # Returns the dictionary with the base year and month assigned. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} { variable TZData # Find the year and month corresponding to the base time set date2 [GetDateFields $baseTime $TZData($timezone) $changeover] dict set date era [dict get $date2 era] dict set date year [dict get $date2 year] dict set date month [dict get $date2 month] return $date } #---------------------------------------------------------------------- # # AssignBaseWeek -- # # Determines the base year and week in the ISO8601 fiscal calendar. # # Parameters: # date - Dictionary containing the fields of the date that # is to be augmented with the base year and week. # baseTime - Base time expressed in seconds from the Posix epoch. # changeover - Julian Day on which the Gregorian calendar was adopted # in the target locale. # # Results: # Returns the given date with "iso8601Year" set to the # base year and "iso8601Week" to the week number. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} { variable TZData # Find the Julian Day Number corresponding to the base time set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover] # Calculate the ISO8601 date and transfer the year dict set date era CE dict set date iso8601Year [dict get $date2 iso8601Year] dict set date iso8601Week [dict get $date2 iso8601Week] return $date } #---------------------------------------------------------------------- # # AssignBaseJulianDay -- # # Determines the base day for a time-of-day conversion. # # Parameters: # date - Dictionary that is to get the base day # baseTime - Base time expressed in seconds from the Posix epoch # changeover - Julian day on which the Gregorian calendar was # adpoted in the target locale. # # Results: # Returns the given dictionary augmented with a 'julianDay' field # that contains the base day. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } { variable TZData # Find the Julian Day Number corresponding to the base time set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover] dict set date julianDay [dict get $date2 julianDay] return $date } #---------------------------------------------------------------------- # # InterpretHMSP -- # # Interprets a time in the form "hh:mm:ss am". # # Parameters: # date -- Dictionary containing "hourAMPM", "minute", "second" # and "amPmIndicator" fields. # # Results: # Returns the number of seconds from local midnight. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::InterpretHMSP { date } { set hr [dict get $date hourAMPM] if { $hr == 12 } { set hr 0 } if { [dict get $date amPmIndicator] } { incr hr 12 } dict set date hour $hr return [InterpretHMS $date[set date {}]] } #---------------------------------------------------------------------- # # InterpretHMS -- # # Interprets a 24-hour time "hh:mm:ss" # # Parameters: # date -- Dictionary containing the "hour", "minute" and "second" # fields. # # Results: # Returns the given dictionary augmented with a "secondOfDay" # field containing the number of seconds from local midnight. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::InterpretHMS { date } { return [expr { ( [dict get $date hour] * 60 + [dict get $date minute] ) * 60 + [dict get $date second] }] } #---------------------------------------------------------------------- # # GetSystemTimeZone -- # # Determines the system time zone, which is the default for the # 'clock' command if no other zone is supplied. # # Parameters: # None. # # Results: # Returns the system time zone. # # Side effects: # Stores the sustem time zone in the 'CachedSystemTimeZone' # variable, since determining it may be an expensive process. # #---------------------------------------------------------------------- proc ::tcl::clock::GetSystemTimeZone {} { variable CachedSystemTimeZone variable TimeZoneBad if {[set result [getenv TCL_TZ]] ne {}} { set timezone $result } 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 } set CachedSystemTimeZone $timezone } if { ![dict exists $TimeZoneBad $timezone] } { dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}] } if { [dict get $TimeZoneBad $timezone] } { return :localtime } else { return $timezone } } #---------------------------------------------------------------------- # # ConvertLegacyTimeZone -- # # Given an alphanumeric time zone identifier and the system time zone, # convert the alphanumeric identifier to an unambiguous time zone. # # Parameters: # tzname - Name of the time zone to convert # # Results: # Returns a time zone name corresponding to tzname, but in an # unambiguous form, generally +hhmm. # # This procedure is implemented primarily to allow the parsing of RFC822 # date/time strings. Processing a time zone name on input is not recommended # practice, because there is considerable room for ambiguity; for instance, is # BST Brazilian Standard Time, or British Summer Time? # #---------------------------------------------------------------------- proc ::tcl::clock::ConvertLegacyTimeZone { tzname } { variable LegacyTimeZone set tzname [string tolower $tzname] if { ![dict exists $LegacyTimeZone $tzname] } { return -code error -errorcode [list CLOCK badTZName $tzname] \ "time zone \"$tzname\" not found" } return [dict get $LegacyTimeZone $tzname] } #---------------------------------------------------------------------- # # SetupTimeZone -- # # Given the name or specification of a time zone, sets up its in-memory # data. # # Parameters: # tzname - Name of a time zone # # Results: # Unless the time zone is ':localtime', sets the TZData array to contain # the lookup table for local<->UTC conversion. Returns an error if the # time zone cannot be parsed. # #---------------------------------------------------------------------- proc ::tcl::clock::SetupTimeZone { timezone } { variable TZData if {! [info exists TZData($timezone)] } { variable MINWIDE if { $timezone eq {:localtime} } { # Nothing to do, we'll convert using the localtime function } elseif { [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \ -> s hh mm ss] } then { # Make a fixed offset ::scan $hh %d hh if { $mm eq {} } { set mm 0 } else { ::scan $mm %d mm } if { $ss eq {} } { set ss 0 } else { ::scan $ss %d ss } set offset [expr { ( $hh * 60 + $mm ) * 60 + $ss }] if { $s eq {-} } { set offset [expr { - $offset }] } set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]] } elseif { [string index $timezone 0] eq {:} } { # Convert using a time zone file if { [catch { LoadTimeZoneFile [string range $timezone 1 end] }] && [catch { LoadZoneinfoFile [string range $timezone 1 end] }] } then { return -code error \ -errorcode [list CLOCK badTimeZone $timezone] \ "time zone \"$timezone\" not found" } } elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } { # This looks like a POSIX time zone - try to process it if { [catch {ProcessPosixTimeZone $tzfields} data opts] } { if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } { dict unset opts -errorinfo } return -options $opts $data } else { set TZData($timezone) $data } } else { # We couldn't parse this as a POSIX time zone. Try again with a # time zone file - this time without a colon if { [catch { LoadTimeZoneFile $timezone }] && [catch { LoadZoneinfoFile $timezone } - opts] } { dict unset opts -errorinfo return -options $opts "time zone $timezone not found" } set TZData($timezone) $TZData(:$timezone) } } return } #---------------------------------------------------------------------- # # GuessWindowsTimeZone -- # # Determines the system time zone on windows. # # Parameters: # None. # # Results: # Returns a time zone specifier that corresponds to the system time zone # information found in the Registry. # # Bugs: # Fixed dates for DST change are unimplemented at present, because no # time zone information supplied with Windows actually uses them! # # On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified, # GuessWindowsTimeZone looks in the Registry for the system time zone # information. It then attempts to find an entry in WinZoneInfo for a time # zone that uses the same rules. If it finds one, it returns it; otherwise, # it constructs a Posix-style time zone string and returns that. # #---------------------------------------------------------------------- proc ::tcl::clock::GuessWindowsTimeZone {} { variable WinZoneInfo variable NoRegistry variable TimeZoneBad if { [info exists NoRegistry] } { return :localtime } # Dredge time zone information out of the registry if { [catch { set rpath HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\TimeZoneInformation set data [list \ [expr { -60 * [registry get $rpath Bias] }] \ [expr { -60 * [registry get $rpath StandardBias] }] \ [expr { -60 \ * [registry get $rpath DaylightBias] }]] set stdtzi [registry get $rpath StandardStart] foreach ind {0 2 14 4 6 8 10 12} { binary scan $stdtzi @${ind}s val lappend data $val } set daytzi [registry get $rpath DaylightStart] foreach ind {0 2 14 4 6 8 10 12} { binary scan $daytzi @${ind}s val lappend data $val } }] } { # Missing values in the Registry - bail out return :localtime } # Make up a Posix time zone specifier if we can't find one. Check here # that the tzdata file exists, in case we're running in an environment # (e.g. starpack) where tzdata is incomplete. (Bug 1237907) if { [dict exists $WinZoneInfo $data] } { set tzname [dict get $WinZoneInfo $data] if { ! [dict exists $TimeZoneBad $tzname] } { dict set TimeZoneBad $tzname [catch {SetupTimeZone $tzname}] } } else { set tzname {} } if { $tzname eq {} || [dict get $TimeZoneBad $tzname] } { lassign $data \ bias stdBias dstBias \ stdYear stdMonth stdDayOfWeek stdDayOfMonth \ stdHour stdMinute stdSecond stdMillisec \ dstYear dstMonth dstDayOfWeek dstDayOfMonth \ dstHour dstMinute dstSecond dstMillisec set stdDelta [expr { $bias + $stdBias }] set dstDelta [expr { $bias + $dstBias }] if { $stdDelta <= 0 } { set stdSignum + set stdDelta [expr { - $stdDelta }] set dispStdSignum - } else { set stdSignum - set dispStdSignum + } set hh [::format %02d [expr { $stdDelta / 3600 }]] set mm [::format %02d [expr { ($stdDelta / 60 ) % 60 }]] set ss [::format %02d [expr { $stdDelta % 60 }]] set tzname {} append tzname < $dispStdSignum $hh $mm > $stdSignum $hh : $mm : $ss if { $stdMonth >= 0 } { if { $dstDelta <= 0 } { set dstSignum + set dstDelta [expr { - $dstDelta }] set dispDstSignum - } else { set dstSignum - set dispDstSignum + } set hh [::format %02d [expr { $dstDelta / 3600 }]] set mm [::format %02d [expr { ($dstDelta / 60 ) % 60 }]] set ss [::format %02d [expr { $dstDelta % 60 }]] append tzname < $dispDstSignum $hh $mm > $dstSignum $hh : $mm : $ss if { $dstYear == 0 } { append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek } else { # I have not been able to find any locale on which Windows # converts time zone on a fixed day of the year, hence don't # know how to interpret the fields. If someone can inform me, # I'd be glad to code it up. For right now, we bail out in # such a case. return :localtime } append tzname / [::format %02d $dstHour] \ : [::format %02d $dstMinute] \ : [::format %02d $dstSecond] if { $stdYear == 0 } { append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek } else { # I have not been able to find any locale on which Windows # converts time zone on a fixed day of the year, hence don't # know how to interpret the fields. If someone can inform me, # I'd be glad to code it up. For right now, we bail out in # such a case. return :localtime } append tzname / [::format %02d $stdHour] \ : [::format %02d $stdMinute] \ : [::format %02d $stdSecond] } dict set WinZoneInfo $data $tzname } return [dict get $WinZoneInfo $data] } #---------------------------------------------------------------------- # # LoadTimeZoneFile -- # # Load the data file that specifies the conversion between a # given time zone and Greenwich. # # Parameters: # fileName -- Name of the file to load # # Results: # None. # # Side effects: # TZData(:fileName) contains the time zone data # #---------------------------------------------------------------------- proc ::tcl::clock::LoadTimeZoneFile { fileName } { variable DataDir variable TZData if { [info exists TZData($fileName)] } { return } # Since an unsafe interp uses the [clock] command in the parent, this code # is security sensitive. Make sure that the path name cannot escape the # given directory. if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } { return -code error \ -errorcode [list CLOCK badTimeZone $:fileName] \ "time zone \":$fileName\" not valid" } try { source [file join $DataDir $fileName] } on error {} { return -code error \ -errorcode [list CLOCK badTimeZone :$fileName] \ "time zone \":$fileName\" not found" } return } #---------------------------------------------------------------------- # # LoadZoneinfoFile -- # # Loads a binary time zone information file in Olson format. # # Parameters: # fileName - Relative path name of the file to load. # # Results: # Returns an empty result normally; returns an error if no Olson file # was found or the file was malformed in some way. # # Side effects: # TZData(:fileName) contains the time zone data # #---------------------------------------------------------------------- proc ::tcl::clock::LoadZoneinfoFile { fileName } { variable ZoneinfoPaths # Since an unsafe interp uses the [clock] command in the parent, this code # is security sensitive. Make sure that the path name cannot escape the # given directory. if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } { return -code error \ -errorcode [list CLOCK badTimeZone $:fileName] \ "time zone \":$fileName\" not valid" } foreach d $ZoneinfoPaths { set fname [file join $d $fileName] if { [file readable $fname] && [file isfile $fname] } { break } unset fname } ReadZoneinfoFile $fileName $fname } #---------------------------------------------------------------------- # # ReadZoneinfoFile -- # # Loads a binary time zone information file in Olson format. # # Parameters: # fileName - Name of the time zone (relative path name of the # file). # fname - Absolute path name of the file. # # Results: # Returns an empty result normally; returns an error if no Olson file # was found or the file was malformed in some way. # # Side effects: # TZData(:fileName) contains the time zone data # #---------------------------------------------------------------------- proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { variable MINWIDE variable TZData if { ![file exists $fname] } { return -code error "$fileName not found" } if { [file size $fname] > 262144 } { return -code error "$fileName too big" } # Suck in all the data from the file set f [open $fname r] fconfigure $f -translation binary set d [read $f] 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. binary scan $d a4a1x15IIIIII \ magic version nIsGMT nIsStd nLeap nTime nType nChar set seek 44 set ilen 4 set iformat I if { $magic != {TZif} } { return -code error "$fileName not a time zone information file" } if { $nType > 255 } { return -code error "$fileName contains too many time types" } # Accept only Posix-style zoneinfo. Sorry, 'leaps' bigots. if { $nLeap != 0 } { return -code error "$fileName contains leap seconds" } # In a version 2 file, we use the second part of the file, which contains # 64-bit transition times. if {$version eq "2"} { set seek [expr { 44 + 5 * $nTime + 6 * $nType + 4 * $nLeap + $nIsStd + $nIsGMT + $nChar }] binary scan $d @${seek}a4a1x15IIIIII \ magic version nIsGMT nIsStd nLeap nTime nType nChar if {$magic ne {TZif}} { return -code error "seek address $seek miscomputed, magic = $magic" } set iformat W set ilen 8 incr seek 44 } # Next come ${nTime} transition times, followed by ${nTime} time type # codes. The type codes are unsigned 1-byte quantities. We insert an # arbitrary start time in front of the transitions. binary scan $d @${seek}${iformat}${nTime}c${nTime} times tempCodes incr seek [expr { ($ilen + 1) * $nTime }] set times [linsert $times 0 $MINWIDE] set codes {} foreach c $tempCodes { lappend codes [expr { $c & 0xFF }] } set codes [linsert $codes 0 0] # Next come ${nType} time type descriptions, each of which has an offset # (seconds east of GMT), a DST indicator, and an index into the # abbreviation text. for { set i 0 } { $i < $nType } { incr i } { binary scan $d @${seek}Icc gmtOff isDst abbrInd lappend types [list $gmtOff $isDst $abbrInd] incr seek 6 } # Next come $nChar characters of time zone name abbreviations, which are # null-terminated. # We build them up into a dictionary indexed by character index, because # that's what's in the indices above. binary scan $d @${seek}a${nChar} abbrs incr seek ${nChar} set abbrList [split $abbrs \0] set i 0 set abbrevs {} foreach a $abbrList { for {set j 0} {$j <= [string length $a]} {incr j} { dict set abbrevs $i [string range $a $j end] incr i } } # Package up a list of tuples, each of which contains transition time, # seconds east of Greenwich, DST flag and time zone abbreviation. set r {} set lastTime $MINWIDE foreach t $times c $codes { if { $t < $lastTime } { return -code error "$fileName has times out of order" } set lastTime $t lassign [lindex $types $c] gmtoff isDst abbrInd set abbrev [dict get $abbrevs $abbrInd] lappend r [list $t $gmtoff $isDst $abbrev] } # In a version 2 file, there is also a POSIX-style time zone description # at the very end of the file. To get to it, skip over nLeap leap second # values (8 bytes each), # nIsStd standard/DST indicators and nIsGMT UTC/local indicators. if {$version eq {2}} { set seek [expr {$seek + 8 * $nLeap + $nIsStd + $nIsGMT + 1}] set last [string first \n $d $seek] set posix [string range $d $seek [expr {$last-1}]] if {[llength $posix] > 0} { set posixFields [ParsePosixTimeZone $posix] foreach tuple [ProcessPosixTimeZone $posixFields] { lassign $tuple t gmtoff isDst abbrev if {$t > $lastTime} { lappend r $tuple } } } } set TZData(:$fileName) $r return } #---------------------------------------------------------------------- # # ParsePosixTimeZone -- # # Parses the TZ environment variable in Posix form # # Parameters: # tz Time zone specifier to be interpreted # # Results: # Returns a dictionary whose values contain the various pieces of the # time zone specification. # # Side effects: # None. # # Errors: # Throws an error if the syntax of the time zone is incorrect. # # The following keys are present in the dictionary: # stdName - Name of the time zone when Daylight Saving Time # is not in effect. # stdSignum - Sign (+, -, or empty) of the offset from Greenwich # to the given (non-DST) time zone. + and the empty # string denote zones west of Greenwich, - denotes east # of Greenwich; this is contrary to the ISO convention # but follows Posix. # stdHours - Hours part of the offset from Greenwich to the given # (non-DST) time zone. # stdMinutes - Minutes part of the offset from Greenwich to the # given (non-DST) time zone. Empty denotes zero. # stdSeconds - Seconds part of the offset from Greenwich to the # given (non-DST) time zone. Empty denotes zero. # dstName - Name of the time zone when DST is in effect, or the # empty string if the time zone does not observe Daylight # Saving Time. # dstSignum, dstHours, dstMinutes, dstSeconds - # Fields corresponding to stdSignum, stdHours, stdMinutes, # stdSeconds for the Daylight Saving Time version of the # time zone. If dstHours is empty, it is presumed to be 1. # startDayOfYear - The ordinal number of the day of the year on which # Daylight Saving Time begins. If this field is # empty, then DST begins on a given month-week-day, # as below. # startJ - The letter J, or an empty string. If a J is present in # this field, then startDayOfYear does not count February 29 # even in leap years. # startMonth - The number of the month in which Daylight Saving Time # begins, supplied if startDayOfYear is empty. If both # startDayOfYear and startMonth are empty, then US rules # are presumed. # startWeekOfMonth - The number of the week in the month in which # Daylight Saving Time begins, in the range 1-5. # 5 denotes the last week of the month even in a # 4-week month. # startDayOfWeek - The number of the day of the week (Sunday=0, # Saturday=6) on which Daylight Saving Time begins. # startHours - The hours part of the time of day at which Daylight # Saving Time begins. An empty string is presumed to be 2. # startMinutes - The minutes part of the time of day at which DST begins. # An empty string is presumed zero. # startSeconds - The seconds part of the time of day at which DST begins. # An empty string is presumed zero. # endDayOfYear, endJ, endMonth, endWeekOfMonth, endDayOfWeek, # endHours, endMinutes, endSeconds - # Specify the end of DST in the same way that the start* fields # specify the beginning of DST. # # This procedure serves only to break the time specifier into fields. No # attempt is made to canonicalize the fields or supply default values. # #---------------------------------------------------------------------- proc ::tcl::clock::ParsePosixTimeZone { tz } { if {[regexp -expanded -nocase -- { ^ # 1 - Standard time zone name ([[:alpha:]]+ | <[-+[:alnum:]]+>) # 2 - Standard time zone offset, signum ([-+]?) # 3 - Standard time zone offset, hours ([[:digit:]]{1,2}) (?: # 4 - Standard time zone offset, minutes : ([[:digit:]]{1,2}) (?: # 5 - Standard time zone offset, seconds : ([[:digit:]]{1,2} ) )? )? (?: # 6 - DST time zone name ([[:alpha:]]+ | <[-+[:alnum:]]+>) (?: (?: # 7 - DST time zone offset, signum ([-+]?) # 8 - DST time zone offset, hours ([[:digit:]]{1,2}) (?: # 9 - DST time zone offset, minutes : ([[:digit:]]{1,2}) (?: # 10 - DST time zone offset, seconds : ([[:digit:]]{1,2}) )? )? )? (?: , (?: # 11 - Optional J in n and Jn form 12 - Day of year ( J ? ) ( [[:digit:]]+ ) | M # 13 - Month number 14 - Week of month 15 - Day of week ( [[:digit:]] + ) [.] ( [[:digit:]] + ) [.] ( [[:digit:]] + ) ) (?: # 16 - Start time of DST - hours / ( [[:digit:]]{1,2} ) (?: # 17 - Start time of DST - minutes : ( [[:digit:]]{1,2} ) (?: # 18 - Start time of DST - seconds : ( [[:digit:]]{1,2} ) )? )? )? , (?: # 19 - Optional J in n and Jn form 20 - Day of year ( J ? ) ( [[:digit:]]+ ) | M # 21 - Month number 22 - Week of month 23 - Day of week ( [[:digit:]] + ) [.] ( [[:digit:]] + ) [.] ( [[:digit:]] + ) ) (?: # 24 - End time of DST - hours / ( [[:digit:]]{1,2} ) (?: # 25 - End time of DST - minutes : ( [[:digit:]]{1,2} ) (?: # 26 - End time of DST - seconds : ( [[:digit:]]{1,2} ) )? )? )? )? )? )? $ } $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \ x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \ x(startJ) x(startDayOfYear) \ x(startMonth) x(startWeekOfMonth) x(startDayOfWeek) \ x(startHours) x(startMinutes) x(startSeconds) \ x(endJ) x(endDayOfYear) \ x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \ x(endHours) x(endMinutes) x(endSeconds)] } { # it's a good timezone return [array get x] } return -code error\ -errorcode [list CLOCK badTimeZone $tz] \ "unable to parse time zone specification \"$tz\"" } #---------------------------------------------------------------------- # # ProcessPosixTimeZone -- # # Handle a Posix time zone after it's been broken out into fields. # # Parameters: # z - Dictionary returned from 'ParsePosixTimeZone' # # Results: # Returns time zone information for the 'TZData' array. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::ProcessPosixTimeZone { z } { variable MINWIDE variable TZData # Determine the standard time zone name and seconds east of Greenwich set stdName [dict get $z stdName] if { [string index $stdName 0] eq {<} } { set stdName [string range $stdName 1 end-1] } if { [dict get $z stdSignum] eq {-} } { set stdSignum +1 } else { set stdSignum -1 } set stdHours [lindex [::scan [dict get $z stdHours] %d] 0] if { [dict get $z stdMinutes] ne {} } { set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0] } else { set stdMinutes 0 } if { [dict get $z stdSeconds] ne {} } { set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0] } else { set stdSeconds 0 } set stdOffset [expr { (($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum }] set data [list [list $MINWIDE $stdOffset 0 $stdName]] # If there's no daylight zone, we're done set dstName [dict get $z dstName] if { $dstName eq {} } { return $data } if { [string index $dstName 0] eq {<} } { set dstName [string range $dstName 1 end-1] } # Determine the daylight name if { [dict get $z dstSignum] eq {-} } { set dstSignum +1 } else { set dstSignum -1 } if { [dict get $z dstHours] eq {} } { set dstOffset [expr { 3600 + $stdOffset }] } else { set dstHours [lindex [::scan [dict get $z dstHours] %d] 0] if { [dict get $z dstMinutes] ne {} } { set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0] } else { set dstMinutes 0 } if { [dict get $z dstSeconds] ne {} } { set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0] } else { set dstSeconds 0 } set dstOffset [expr { (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum }] } # Fill in defaults for European or US DST rules # US start time is the second Sunday in March # EU start time is the last Sunday in March # US end time is the first Sunday in November. # EU end time is the last Sunday in October if { [dict get $z startDayOfYear] eq {} && [dict get $z startMonth] eq {} } then { if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { # EU dict set z startWeekOfMonth 5 if {$stdHours>2} { dict set z startHours 2 } else { dict set z startHours [expr {$stdHours+1}] } } else { # US dict set z startWeekOfMonth 2 dict set z startHours 2 } dict set z startMonth 3 dict set z startDayOfWeek 0 dict set z startMinutes 0 dict set z startSeconds 0 } if { [dict get $z endDayOfYear] eq {} && [dict get $z endMonth] eq {} } then { if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { # EU dict set z endMonth 10 dict set z endWeekOfMonth 5 if {$stdHours>2} { dict set z endHours 3 } else { dict set z endHours [expr {$stdHours+2}] } } else { # US dict set z endMonth 11 dict set z endWeekOfMonth 1 dict set z endHours 2 } dict set z endDayOfWeek 0 dict set z endMinutes 0 dict set z endSeconds 0 } # Put DST in effect in all years from 1916 to 2099. for { set y 1916 } { $y < 2100 } { incr y } { set startTime [DeterminePosixDSTTime $z start $y] incr startTime [expr { - wide($stdOffset) }] set endTime [DeterminePosixDSTTime $z end $y] incr endTime [expr { - wide($dstOffset) }] if { $startTime < $endTime } { lappend data \ [list $startTime $dstOffset 1 $dstName] \ [list $endTime $stdOffset 0 $stdName] } else { lappend data \ [list $endTime $stdOffset 0 $stdName] \ [list $startTime $dstOffset 1 $dstName] } } return $data } #---------------------------------------------------------------------- # # DeterminePosixDSTTime -- # # Determines the time that Daylight Saving Time starts or ends from a # Posix time zone specification. # # Parameters: # z - Time zone data returned from ParsePosixTimeZone. # Missing fields are expected to be filled in with # default values. # bound - The word 'start' or 'end' # y - The year for which the transition time is to be determined. # # Results: # Returns the transition time as a count of seconds from the epoch. The # time is relative to the wall clock, not UTC. # #---------------------------------------------------------------------- proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { variable FEB_28 # Determine the start or end day of DST set date [dict create era CE year $y] set doy [dict get $z ${bound}DayOfYear] if { $doy ne {} } { # Time was specified as a day of the year if { [dict get $z ${bound}J] ne {} && [IsGregorianLeapYear $y] && ( $doy > $FEB_28 ) } { incr doy } dict set date dayOfYear $doy set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222] } else { # Time was specified as a day of the week within a month dict set date month [dict get $z ${bound}Month] dict set date dayOfWeek [dict get $z ${bound}DayOfWeek] set dowim [dict get $z ${bound}WeekOfMonth] if { $dowim >= 5 } { set dowim -1 } dict set date dayOfWeekInMonth $dowim set date [GetJulianDayFromEraYearMonthWeekDay $date[set date {}] 2361222] } set jd [dict get $date julianDay] set seconds [expr { wide($jd) * wide(86400) - wide(210866803200) }] set h [dict get $z ${bound}Hours] if { $h eq {} } { set h 2 } else { set h [lindex [::scan $h %d] 0] } set m [dict get $z ${bound}Minutes] if { $m eq {} } { set m 0 } else { set m [lindex [::scan $m %d] 0] } set s [dict get $z ${bound}Seconds] if { $s eq {} } { set s 0 } else { set s [lindex [::scan $s %d] 0] } set tod [expr { ( $h * 60 + $m ) * 60 + $s }] return [expr { $seconds + $tod }] } #---------------------------------------------------------------------- # # GetLocaleEra -- # # Given local time expressed in seconds from the Posix epoch, # determine localized era and year within the era. # # Parameters: # date - Dictionary that must contain the keys, 'localSeconds', # whose value is expressed as the appropriate local time; # and 'year', whose value is the Gregorian year. # etable - Value of the LOCALE_ERAS key in the message catalogue # for the target locale. # # Results: # Returns the dictionary, augmented with the keys, 'localeEra' and # 'localeYear'. # #---------------------------------------------------------------------- proc ::tcl::clock::GetLocaleEra { date etable } { set index [BSearch $etable [dict get $date localSeconds]] if { $index < 0} { dict set date localeEra \ [::format %02d [expr { [dict get $date year] / 100 }]] dict set date localeYear [expr { [dict get $date year] % 100 }] } else { dict set date localeEra [lindex $etable $index 1] dict set date localeYear [expr { [dict get $date year] - [lindex $etable $index 2] }] } return $date } #---------------------------------------------------------------------- # # GetJulianDayFromEraYearDay -- # # Given a year, month and day on the Gregorian calendar, determines # the Julian Day Number beginning at noon on that date. # # Parameters: # date -- A dictionary in which the 'era', 'year', and # 'dayOfYear' slots are populated. The calendar in use # is determined by the date itself relative to: # changeover -- Julian day on which the Gregorian calendar was # adopted in the current locale. # # Results: # Returns the given dictionary augmented with a 'julianDay' key whose # value is the desired Julian Day Number, and a 'gregorian' key that # specifies whether the calendar is Gregorian (1) or Julian (0). # # Side effects: # None. # # Bugs: # This code needs to be moved to the C layer. # #---------------------------------------------------------------------- proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} { # Get absolute year number from the civil year switch -exact -- [dict get $date era] { BCE { set year [expr { 1 - [dict get $date year] }] } CE { set year [dict get $date year] } } set ym1 [expr { $year - 1 }] # Try the Gregorian calendar first. dict set date gregorian 1 set jd [expr { 1721425 + [dict get $date dayOfYear] + ( 365 * $ym1 ) + ( $ym1 / 4 ) - ( $ym1 / 100 ) + ( $ym1 / 400 ) }] # If the date is before the Gregorian change, use the Julian calendar. if { $jd < $changeover } { dict set date gregorian 0 set jd [expr { 1721423 + [dict get $date dayOfYear] + ( 365 * $ym1 ) + ( $ym1 / 4 ) }] } dict set date julianDay $jd return $date } #---------------------------------------------------------------------- # # GetJulianDayFromEraYearMonthWeekDay -- # # Determines the Julian Day number corresponding to the nth given # day-of-the-week in a given month. # # Parameters: # date - Dictionary containing the keys, 'era', 'year', 'month' # 'weekOfMonth', 'dayOfWeek', and 'dayOfWeekInMonth'. # changeover - Julian Day of adoption of the Gregorian calendar # # Results: # Returns the given dictionary, augmented with a 'julianDay' key. # # Side effects: # None. # # Bugs: # This code needs to be moved to the C layer. # #---------------------------------------------------------------------- proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { # Come up with a reference day; either the zeroeth day of the given month # (dayOfWeekInMonth >= 0) or the seventh day of the following month # (dayOfWeekInMonth < 0) set date2 $date set week [dict get $date dayOfWeekInMonth] if { $week >= 0 } { dict set date2 dayOfMonth 0 } else { dict incr date2 month dict set date2 dayOfMonth 7 } set date2 [GetJulianDayFromEraYearMonthDay $date2[set date2 {}] \ $changeover] set wd0 [WeekdayOnOrBefore [dict get $date dayOfWeek] \ [dict get $date2 julianDay]] dict set date julianDay [expr { $wd0 + 7 * $week }] return $date } #---------------------------------------------------------------------- # # IsGregorianLeapYear -- # # Determines whether a given date represents a leap year in the # Gregorian calendar. # # Parameters: # date -- The date to test. The fields, 'era', 'year' and 'gregorian' # must be set. # # Results: # Returns 1 if the year is a leap year, 0 otherwise. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::IsGregorianLeapYear { date } { switch -exact -- [dict get $date era] { BCE { set year [expr { 1 - [dict get $date year]}] } CE { set year [dict get $date year] } } if { $year % 4 != 0 } { return 0 } elseif { ![dict get $date gregorian] } { return 1 } elseif { $year % 400 == 0 } { return 1 } elseif { $year % 100 == 0 } { return 0 } else { return 1 } } #---------------------------------------------------------------------- # # WeekdayOnOrBefore -- # # Determine the nearest day of week (given by the 'weekday' parameter, # Sunday==0) on or before a given Julian Day. # # Parameters: # weekday -- Day of the week # j -- Julian Day number # # Results: # Returns the Julian Day Number of the desired date. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::WeekdayOnOrBefore { weekday j } { set k [expr { ( $weekday + 6 ) % 7 }] return [expr { $j - ( $j - $k ) % 7 }] } #---------------------------------------------------------------------- # # BSearch -- # # Service procedure that does binary search in several places inside the # 'clock' command. # # Parameters: # list - List of lists, sorted in ascending order by the # first elements # key - Value to search for # # Results: # Returns the index of the greatest element in $list that is less than # or equal to $key. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::BSearch { list key } { if {[llength $list] == 0} { return -1 } if { $key < [lindex $list 0 0] } { return -1 } set l 0 set u [expr { [llength $list] - 1 }] while { $l < $u } { # At this point, we know that # $k >= [lindex $list $l 0] # Either $u == [llength $list] or else $k < [lindex $list $u+1 0] # We find the midpoint of the interval {l,u} rounded UP, compare # against it, and set l or u to maintain the invariant. Note that the # interval shrinks at each step, guaranteeing convergence. set m [expr { ( $l + $u + 1 ) / 2 }] if { $key >= [lindex $list $m 0] } { set l $m } else { set u [expr { $m - 1 }] } } return $l } #---------------------------------------------------------------------- # # clock add -- # # Adds an offset to a given time. # # Syntax: # clock add clockval ?count unit?... ?-option value? # # Parameters: # clockval -- Starting time value # count -- Amount of a unit of time to add # unit -- Unit of time to add, must be one of: # years year months month weeks week # days day hours hour minutes minute # seconds second # # Options: # -gmt BOOLEAN # (Deprecated) Flag synonymous with '-timezone :GMT' # -timezone ZONE # Name of the time zone in which calculations are to be done. # -locale NAME # Name of the locale in which calculations are to be done. # Used to determine the Gregorian change date. # # Results: # Returns the given time adjusted by the given offset(s) in # order. # # Notes: # It is possible that adding a number of months or years will adjust the # day of the month as well. For instance, the time at one month after # 31 January is either 28 or 29 February, because February has fewer # than 31 days. # #---------------------------------------------------------------------- proc ::tcl::clock::add { clockval args } { if { [llength $args] % 2 != 0 } { set cmdName "clock add" return -code error \ -errorcode [list CLOCK wrongNumArgs] \ "wrong \# args: should be\ \"$cmdName clockval ?number units?...\ ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\"" } if { [catch { expr {wide($clockval)} } result] } { return -code error $result } set offsets {} set gmt 0 set locale c set timezone [GetSystemTimeZone] foreach { a b } $args { if { [string is integer -strict $a] } { lappend offsets $a $b } else { switch -exact -- $a { -g - -gm - -gmt { set gmt $b } -l - -lo - -loc - -loca - -local - -locale { set locale [string tolower $b] } -t - -ti - -tim - -time - -timez - -timezo - -timezon - -timezone { set timezone $b } default { throw [list CLOCK badOption $a] \ "bad option \"$a\",\ must be -gmt, -locale or -timezone" } } } } # Check options for validity if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } { return -code error \ -errorcode [list CLOCK gmtWithTimezone] \ "cannot use -gmt and -timezone in same call" } if { [catch { expr { wide($clockval) } } result] } { return -code error "expected integer but got \"$clockval\"" } if { ![string is boolean -strict $gmt] } { return -code error "expected boolean value but got \"$gmt\"" } elseif { $gmt } { set timezone :GMT } EnterLocale $locale set changeover [mc GREGORIAN_CHANGE_DATE] if {[catch {SetupTimeZone $timezone} retval opts]} { dict unset opts -errorinfo return -options $opts $retval } try { foreach { quantity unit } $offsets { switch -exact -- $unit { years - year { set clockval [AddMonths [expr { 12 * $quantity }] \ $clockval $timezone $changeover] } months - month { set clockval [AddMonths $quantity $clockval $timezone \ $changeover] } weeks - week { set clockval [AddDays [expr { 7 * $quantity }] \ $clockval $timezone $changeover] } days - day { set clockval [AddDays $quantity $clockval $timezone \ $changeover] } hours - hour { set clockval [expr { 3600 * $quantity + $clockval }] } minutes - minute { set clockval [expr { 60 * $quantity + $clockval }] } seconds - second { set clockval [expr { $quantity + $clockval }] } default { throw [list CLOCK badUnit $unit] \ "unknown unit \"$unit\", must be \ years, months, weeks, days, hours, minutes or seconds" } } } return $clockval } trap CLOCK {result opts} { # Conceal the innards of [clock] when it's an expected error dict unset opts -errorinfo return -options $opts $result } } #---------------------------------------------------------------------- # # AddMonths -- # # Add a given number of months to a given clock value in a given # time zone. # # Parameters: # months - Number of months to add (may be negative) # clockval - Seconds since the epoch before the operation # timezone - Time zone in which the operation is to be performed # # Results: # Returns the new clock value as a number of seconds since # the epoch. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AddMonths { months clockval timezone changeover } { variable DaysInRomanMonthInCommonYear variable DaysInRomanMonthInLeapYear variable TZData # Convert the time to year, month, day, and fraction of day. set date [GetDateFields $clockval $TZData($timezone) $changeover] dict set date secondOfDay [expr { [dict get $date localSeconds] % 86400 }] dict set date tzName $timezone # Add the requisite number of months set m [dict get $date month] incr m $months incr m -1 set delta [expr { $m / 12 }] set mm [expr { $m % 12 }] dict set date month [expr { $mm + 1 }] dict incr date year $delta # If the date doesn't exist in the current month, repair it if { [IsGregorianLeapYear $date] } { set hath [lindex $DaysInRomanMonthInLeapYear $mm] } else { set hath [lindex $DaysInRomanMonthInCommonYear $mm] } if { [dict get $date dayOfMonth] > $hath } { dict set date dayOfMonth $hath } # Reconvert to a number of seconds set date [GetJulianDayFromEraYearMonthDay \ $date[set date {}]\ $changeover] dict set date localSeconds [expr { -210866803200 + ( 86400 * wide([dict get $date julianDay]) ) + [dict get $date secondOfDay] }] set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \ $changeover] return [dict get $date seconds] } #---------------------------------------------------------------------- # # AddDays -- # # Add a given number of days to a given clock value in a given time # zone. # # Parameters: # days - Number of days to add (may be negative) # clockval - Seconds since the epoch before the operation # timezone - Time zone in which the operation is to be performed # changeover - Julian Day on which the Gregorian calendar was adopted # in the target locale. # # Results: # Returns the new clock value as a number of seconds since the epoch. # # Side effects: # None. # #---------------------------------------------------------------------- proc ::tcl::clock::AddDays { days clockval timezone changeover } { variable TZData # Convert the time to Julian Day set date [GetDateFields $clockval $TZData($timezone) $changeover] dict set date secondOfDay [expr { [dict get $date localSeconds] % 86400 }] dict set date tzName $timezone # Add the requisite number of days dict incr date julianDay $days # Reconvert to a number of seconds dict set date localSeconds [expr { -210866803200 + ( 86400 * wide([dict get $date julianDay]) ) + [dict get $date secondOfDay] }] set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \ $changeover] return [dict get $date seconds] } #---------------------------------------------------------------------- # # ChangeCurrentLocale -- # # The global locale was changed within msgcat. # Clears the buffered parse functions of the current locale. # # Parameters: # loclist (ignored) # # Results: # None. # # Side effects: # Buffered parse functions are cleared. # #---------------------------------------------------------------------- proc ::tcl::clock::ChangeCurrentLocale {args} { variable FormatProc variable LocaleNumeralCache variable CachedSystemTimeZone variable TimeZoneBad foreach p [info procs [namespace current]::scanproc'*'current] { rename $p {} } foreach p [info procs [namespace current]::formatproc'*'current] { rename $p {} } catch {array unset FormatProc *'current} set LocaleNumeralCache {} } #---------------------------------------------------------------------- # # ClearCaches -- # # Clears all caches to reclaim the memory used in [clock] # # Parameters: # None. # # Results: # None. # # Side effects: # Caches are cleared. # #---------------------------------------------------------------------- proc ::tcl::clock::ClearCaches {} { variable FormatProc variable LocaleNumeralCache variable CachedSystemTimeZone variable TimeZoneBad foreach p [info procs [namespace current]::scanproc'*] { rename $p {} } foreach p [info procs [namespace current]::formatproc'*] { rename $p {} } catch {unset FormatProc} set LocaleNumeralCache {} catch {unset CachedSystemTimeZone} set TimeZoneBad {} InitTZData }