Hex Artifact Content

Artifact d13061de126e86646030b6478995d00b748cf766:


0000: 23 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55  #ifdef KIT_INCLU
0010: 44 45 53 5f 54 4b 0a 23 20 20 69 6e 63 6c 75 64  DES_TK.#  includ
0020: 65 20 3c 74 6b 2e 68 3e 0a 23 65 6c 73 65 0a 23  e <tk.h>.#else.#
0030: 20 20 69 6e 63 6c 75 64 65 20 3c 74 63 6c 2e 68    include <tcl.h
0040: 3e 0a 23 65 6e 64 69 66 20 2f 2a 20 4b 49 54 5f  >.#endif /* KIT_
0050: 49 4e 43 4c 55 44 45 53 5f 54 4b 20 2a 2f 0a 0a  INCLUDES_TK */..
0060: 23 69 66 64 65 66 20 5f 57 49 4e 33 32 0a 23 20  #ifdef _WIN32.# 
0070: 20 64 65 66 69 6e 65 20 57 49 4e 33 32 5f 4c 45   define WIN32_LE
0080: 41 4e 5f 41 4e 44 5f 4d 45 41 4e 0a 23 20 20 69  AN_AND_MEAN.#  i
0090: 6e 63 6c 75 64 65 20 3c 77 69 6e 64 6f 77 73 2e  nclude <windows.
00a0: 68 3e 0a 23 20 20 75 6e 64 65 66 20 57 49 4e 33  h>.#  undef WIN3
00b0: 32 5f 4c 45 41 4e 5f 41 4e 44 5f 4d 45 41 4e 0a  2_LEAN_AND_MEAN.
00c0: 23 65 6e 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32  #endif /* _WIN32
00d0: 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48 41 56 45   */..#ifdef HAVE
00e0: 5f 53 54 52 49 4e 47 5f 48 0a 23 20 20 69 6e 63  _STRING_H.#  inc
00f0: 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a  lude <string.h>.
0100: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 48 41  #endif.#ifdef HA
0110: 56 45 5f 53 54 52 49 4e 47 53 5f 48 0a 23 20 20  VE_STRINGS_H.#  
0120: 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 73  include <strings
0130: 2e 68 3e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  .h>.#endif.#ifde
0140: 66 20 48 41 56 45 5f 44 4c 46 43 4e 5f 48 0a 23  f HAVE_DLFCN_H.#
0150: 20 20 69 6e 63 6c 75 64 65 20 3c 64 6c 66 63 6e    include <dlfcn
0160: 2e 68 3e 0a 23 65 6e 64 69 66 0a 0a 23 69 6e 63  .h>.#endif..#inc
0170: 6c 75 64 65 20 22 74 63 6c 49 6e 74 2e 68 22 0a  lude "tclInt.h".
0180: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 56  .#if defined(HAV
0190: 45 5f 54 43 4c 5f 47 45 54 45 4e 43 4f 44 49 4e  E_TCL_GETENCODIN
01a0: 47 4e 41 4d 45 46 52 4f 4d 45 4e 56 49 52 4f 4e  GNAMEFROMENVIRON
01b0: 4d 45 4e 54 29 20 26 26 20 64 65 66 69 6e 65 64  MENT) && defined
01c0: 28 48 41 56 45 5f 54 43 4c 5f 53 45 54 53 59 53  (HAVE_TCL_SETSYS
01d0: 54 45 4d 45 4e 43 4f 44 49 4e 47 29 0a 23 20 20  TEMENCODING).#  
01e0: 64 65 66 69 6e 65 20 54 43 4c 4b 49 54 5f 43 41  define TCLKIT_CA
01f0: 4e 5f 53 45 54 5f 45 4e 43 4f 44 49 4e 47 20 31  N_SET_ENCODING 1
0200: 0a 23 65 6e 64 69 66 0a 23 69 66 20 31 30 20 2a  .#endif.#if 10 *
0210: 20 54 43 4c 5f 4d 41 4a 4f 52 5f 56 45 52 53 49   TCL_MAJOR_VERSI
0220: 4f 4e 20 2b 20 54 43 4c 5f 4d 49 4e 4f 52 5f 56  ON + TCL_MINOR_V
0230: 45 52 53 49 4f 4e 20 3c 20 38 35 0a 23 20 20 64  ERSION < 85.#  d
0240: 65 66 69 6e 65 20 54 43 4c 4b 49 54 5f 52 45 51  efine TCLKIT_REQ
0250: 55 49 52 45 5f 54 43 4c 45 58 45 43 55 54 41 42  UIRE_TCLEXECUTAB
0260: 4c 45 4e 41 4d 45 20 31 0a 23 65 6e 64 69 66 0a  LENAME 1.#endif.
0270: 23 69 66 20 31 30 20 2a 20 54 43 4c 5f 4d 41 4a  #if 10 * TCL_MAJ
0280: 4f 52 5f 56 45 52 53 49 4f 4e 20 2b 20 54 43 4c  OR_VERSION + TCL
0290: 5f 4d 49 4e 4f 52 5f 56 45 52 53 49 4f 4e 20 3c  _MINOR_VERSION <
02a0: 20 38 35 0a 23 20 20 64 65 66 69 6e 65 20 4b 49   85.#  define KI
02b0: 54 5f 49 4e 43 4c 55 44 45 53 5f 50 57 42 20 31  T_INCLUDES_PWB 1
02c0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 31 30 20 2a  .#endif.#if 10 *
02d0: 20 54 43 4c 5f 4d 41 4a 4f 52 5f 56 45 52 53 49   TCL_MAJOR_VERSI
02e0: 4f 4e 20 2b 20 54 43 4c 5f 4d 49 4e 4f 52 5f 56  ON + TCL_MINOR_V
02f0: 45 52 53 49 4f 4e 20 3c 20 38 36 0a 23 20 20 64  ERSION < 86.#  d
0300: 65 66 69 6e 65 20 4b 49 54 5f 49 4e 43 4c 55 44  efine KIT_INCLUD
0310: 45 53 5f 5a 4c 49 42 20 31 0a 23 65 6e 64 69 66  ES_ZLIB 1.#endif
0320: 0a 0a 54 63 6c 5f 41 70 70 49 6e 69 74 50 72 6f  ..Tcl_AppInitPro
0330: 63 20 56 66 73 5f 49 6e 69 74 2c 20 52 65 63 68  c Vfs_Init, Rech
0340: 61 6e 5f 49 6e 69 74 3b 0a 54 63 6c 5f 41 70 70  an_Init;.Tcl_App
0350: 49 6e 69 74 50 72 6f 63 20 56 66 73 5f 6b 69 74  InitProc Vfs_kit
0360: 64 6c 6c 5f 64 61 74 61 5f 74 63 6c 5f 49 6e 69  dll_data_tcl_Ini
0370: 74 3b 0a 23 69 66 64 65 66 20 4b 49 54 5f 49 4e  t;.#ifdef KIT_IN
0380: 43 4c 55 44 45 53 5f 4d 4b 34 54 43 4c 0a 54 63  CLUDES_MK4TCL.Tc
0390: 6c 5f 41 70 70 49 6e 69 74 50 72 6f 63 20 4d 6b  l_AppInitProc Mk
03a0: 34 74 63 6c 5f 49 6e 69 74 3b 0a 23 65 6e 64 69  4tcl_Init;.#endi
03b0: 66 0a 23 69 66 64 65 66 20 4b 49 54 5f 49 4e 43  f.#ifdef KIT_INC
03c0: 4c 55 44 45 53 5f 50 57 42 0a 54 63 6c 5f 41 70  LUDES_PWB.Tcl_Ap
03d0: 70 49 6e 69 74 50 72 6f 63 20 50 77 62 5f 49 6e  pInitProc Pwb_In
03e0: 69 74 3b 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  it;.#endif.#ifde
03f0: 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f 5a  f KIT_INCLUDES_Z
0400: 4c 49 42 0a 54 63 6c 5f 41 70 70 49 6e 69 74 50  LIB.Tcl_AppInitP
0410: 72 6f 63 20 5a 6c 69 62 5f 49 6e 69 74 3b 0a 23  roc Zlib_Init;.#
0420: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 54 43 4c  endif.#ifdef TCL
0430: 5f 54 48 52 45 41 44 53 0a 54 63 6c 5f 41 70 70  _THREADS.Tcl_App
0440: 49 6e 69 74 50 72 6f 63 20 54 68 72 65 61 64 5f  InitProc Thread_
0450: 49 6e 69 74 3b 0a 23 65 6e 64 69 66 0a 23 69 66  Init;.#endif.#if
0460: 64 65 66 20 5f 57 49 4e 33 32 0a 54 63 6c 5f 41  def _WIN32.Tcl_A
0470: 70 70 49 6e 69 74 50 72 6f 63 20 44 64 65 5f 49  ppInitProc Dde_I
0480: 6e 69 74 2c 20 52 65 67 69 73 74 72 79 5f 49 6e  nit, Registry_In
0490: 69 74 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20  it;.#endif../*. 
04a0: 2a 20 54 68 69 73 20 54 63 6c 20 63 6f 64 65 20  * This Tcl code 
04b0: 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65  is invoked whene
04c0: 76 65 72 20 54 63 6c 5f 49 6e 69 74 28 29 20 69  ver Tcl_Init() i
04d0: 73 20 63 61 6c 6c 65 64 20 6f 6e 20 61 6e 0a 20  s called on an. 
04e0: 2a 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 20  * interpreter.  
04f0: 49 74 20 73 68 6f 75 6c 64 20 6d 6f 75 6e 74 20  It should mount 
0500: 75 70 20 74 68 65 20 56 46 53 20 61 6e 64 20 6d  up the VFS and m
0510: 61 6b 65 20 65 76 65 72 79 74 68 69 6e 67 20 72  ake everything r
0520: 65 61 64 79 20 66 6f 72 0a 20 2a 20 74 68 61 74  eady for. * that
0530: 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 6f 20   interpreter to 
0540: 64 6f 20 69 74 73 20 6a 6f 62 2e 0a 20 2a 2f 0a  do its job.. */.
0550: 73 74 61 74 69 63 20 63 68 61 72 20 2a 70 72 65  static char *pre
0560: 49 6e 69 74 43 6d 64 20 3d 0a 22 70 72 6f 63 20  InitCmd =."proc 
0570: 74 63 6c 4b 69 74 49 6e 69 74 20 7b 7d 20 7b 5c  tclKitInit {} {\
0580: 6e 22 0a 09 22 72 65 6e 61 6d 65 20 74 63 6c 4b  n".."rename tclK
0590: 69 74 49 6e 69 74 20 7b 7d 5c 6e 22 0a 23 69 66  itInit {}\n".#if
05a0: 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53  def KIT_INCLUDES
05b0: 5f 5a 4c 49 42 0a 09 22 63 61 74 63 68 20 7b 20  _ZLIB.."catch { 
05c0: 6c 6f 61 64 20 7b 7d 20 7a 6c 69 62 20 7d 5c 6e  load {} zlib }\n
05d0: 22 0a 23 65 6e 64 69 66 0a 09 22 6c 6f 61 64 20  ".#endif.."load 
05e0: 7b 7d 20 74 63 6c 6b 69 74 3a 3a 69 6e 69 74 5c  {} tclkit::init\
05f0: 6e 22 0a 09 22 6c 6f 61 64 20 7b 7d 20 72 65 63  n".."load {} rec
0600: 68 61 6e 5c 6e 22 0a 09 22 6c 6f 61 64 20 7b 7d  han\n".."load {}
0610: 20 76 66 73 5c 6e 22 0a 09 22 6c 6f 61 64 20 7b   vfs\n".."load {
0620: 7d 20 76 66 73 5f 6b 69 74 64 6c 6c 5f 64 61 74  } vfs_kitdll_dat
0630: 61 5f 74 63 6c 5c 6e 22 0a 23 69 66 64 65 66 20  a_tcl\n".#ifdef 
0640: 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f 4d 4b 34  KIT_INCLUDES_MK4
0650: 54 43 4c 0a 09 22 63 61 74 63 68 20 7b 20 6c 6f  TCL.."catch { lo
0660: 61 64 20 7b 7d 20 4d 6b 34 74 63 6c 20 7d 5c 6e  ad {} Mk4tcl }\n
0670: 22 0a 23 65 6e 64 69 66 0a 23 69 6e 63 6c 75 64  ".#endif.#includ
0680: 65 20 22 76 66 73 5f 6b 69 74 64 6c 6c 2e 74 63  e "vfs_kitdll.tc
0690: 6c 2e 68 22 0a 09 22 69 66 20 7b 21 5b 66 69 6c  l.h".."if {![fil
06a0: 65 20 65 78 69 73 74 73 20 5c 22 2f 2e 4b 49 54  e exists \"/.KIT
06b0: 44 4c 4c 5f 54 43 4c 2f 62 6f 6f 74 2e 74 63 6c  DLL_TCL/boot.tcl
06c0: 5c 22 5d 7d 20 7b 5c 6e 22 0a 09 09 22 76 66 73  \"]} {\n"..."vfs
06d0: 3a 3a 6b 69 74 64 6c 6c 3a 3a 4d 6f 75 6e 74 20  ::kitdll::Mount 
06e0: 74 63 6c 20 2f 2e 4b 49 54 44 4c 4c 5f 54 43 4c  tcl /.KITDLL_TCL
06f0: 5c 6e 22 0a 09 09 22 73 65 74 20 3a 3a 69 6e 69  \n"..."set ::ini
0700: 74 56 46 53 20 31 5c 6e 22 0a 09 22 7d 5c 6e 22  tVFS 1\n".."}\n"
0710: 0a 09 22 73 65 74 20 66 20 5b 6f 70 65 6e 20 5c  .."set f [open \
0720: 22 2f 2e 4b 49 54 44 4c 4c 5f 54 43 4c 2f 62 6f  "/.KITDLL_TCL/bo
0730: 6f 74 2e 74 63 6c 5c 22 5d 5c 6e 22 0a 09 22 73  ot.tcl\"]\n".."s
0740: 65 74 20 73 20 5b 72 65 61 64 20 24 66 5d 5c 6e  et s [read $f]\n
0750: 22 0a 09 22 63 6c 6f 73 65 20 24 66 5c 6e 22 0a  ".."close $f\n".
0760: 09 22 3a 3a 74 63 6c 6b 69 74 3a 3a 69 6e 69 74  ."::tclkit::init
0770: 3a 3a 69 6e 69 74 49 6e 74 65 72 70 5c 6e 22 0a  ::initInterp\n".
0780: 09 22 72 65 6e 61 6d 65 20 3a 3a 74 63 6c 6b 69  ."rename ::tclki
0790: 74 3a 3a 69 6e 69 74 3a 3a 69 6e 69 74 49 6e 74  t::init::initInt
07a0: 65 72 70 20 7b 7d 5c 6e 22 0a 09 22 75 70 6c 65  erp {}\n".."uple
07b0: 76 65 6c 20 23 30 20 24 73 5c 6e 22 0a 23 69 66  vel #0 $s\n".#if
07c0: 20 64 65 66 69 6e 65 64 28 4b 49 54 5f 49 4e 43   defined(KIT_INC
07d0: 4c 55 44 45 53 5f 54 4b 29 20 26 26 20 64 65 66  LUDES_TK) && def
07e0: 69 6e 65 64 28 4b 49 54 5f 54 4b 5f 56 45 52 53  ined(KIT_TK_VERS
07f0: 49 4f 4e 29 0a 09 22 70 61 63 6b 61 67 65 20 69  ION).."package i
0800: 66 6e 65 65 64 65 64 20 54 6b 20 22 20 4b 49 54  fneeded Tk " KIT
0810: 5f 54 4b 5f 56 45 52 53 49 4f 4e 20 22 20 7b 5c  _TK_VERSION " {\
0820: 6e 22 0a 09 09 22 6c 6f 61 64 20 7b 7d 20 54 6b  n"..."load {} Tk
0830: 5c 6e 22 0a 09 22 7d 5c 6e 22 0a 23 65 6e 64 69  \n".."}\n".#endi
0840: 66 0a 23 69 66 64 65 66 20 5f 57 49 4e 33 32 0a  f.#ifdef _WIN32.
0850: 09 22 63 61 74 63 68 20 7b 6c 6f 61 64 20 7b 7d  ."catch {load {}
0860: 20 64 64 65 7d 5c 6e 22 0a 09 22 63 61 74 63 68   dde}\n".."catch
0870: 20 7b 6c 6f 61 64 20 7b 7d 20 72 65 67 69 73 74   {load {} regist
0880: 72 79 7d 5c 6e 22 0a 23 65 6e 64 69 66 20 2f 2a  ry}\n".#endif /*
0890: 20 5f 57 49 4e 33 32 20 2a 2f 0a 22 7d 5c 6e 22   _WIN32 */."}\n"
08a0: 0a 22 74 63 6c 4b 69 74 49 6e 69 74 22 3b 0a 0a  ."tclKitInit";..
08b0: 23 69 66 64 65 66 20 48 41 56 45 5f 41 43 43 45  #ifdef HAVE_ACCE
08c0: 50 54 41 42 4c 45 5f 44 4c 41 44 44 52 0a 2f 2a  PTABLE_DLADDR./*
08d0: 20 53 79 6d 62 6f 6c 20 74 6f 20 72 65 73 6f 6c   Symbol to resol
08e0: 76 65 20 61 67 61 69 6e 73 74 20 64 6c 61 64 64  ve against dladd
08f0: 72 28 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f  r() */.static vo
0900: 69 64 20 5f 74 63 6c 6b 69 74 5f 64 75 6d 6d 79  id _tclkit_dummy
0910: 5f 66 75 6e 63 28 76 6f 69 64 29 20 7b 0a 09 72  _func(void) {..r
0920: 65 74 75 72 6e 3b 0a 7d 0a 0a 69 6e 74 20 6d 61  eturn;.}..int ma
0930: 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61  in(int argc, cha
0940: 72 20 2a 2a 61 72 67 76 29 3b 0a 23 65 6e 64 69  r **argv);.#endi
0950: 66 20 2f 2a 20 48 41 56 45 5f 41 43 43 45 50 54  f /* HAVE_ACCEPT
0960: 41 42 4c 45 5f 44 4c 41 44 44 52 20 2a 2f 0a 0a  ABLE_DLADDR */..
0970: 2f 2a 0a 20 2a 20 54 68 69 73 20 66 75 6e 63 74  /*. * This funct
0980: 69 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ion will return 
0990: 61 20 70 61 74 68 6e 61 6d 65 20 77 65 20 63 61  a pathname we ca
09a0: 6e 20 6f 70 65 6e 28 29 20 74 6f 20 74 72 65 61  n open() to trea
09b0: 74 20 61 73 20 61 20 56 46 53 2c 0a 20 2a 20 68  t as a VFS,. * h
09c0: 6f 70 65 66 75 6c 6c 79 0a 20 2a 2f 0a 73 74 61  opefully. */.sta
09d0: 74 69 63 20 63 68 61 72 20 2a 66 69 6e 64 5f 74  tic char *find_t
09e0: 63 6c 6b 69 74 5f 64 6c 6c 5f 70 61 74 68 28 76  clkit_dll_path(v
09f0: 6f 69 64 29 20 7b 0a 23 69 66 64 65 66 20 48 41  oid) {.#ifdef HA
0a00: 56 45 5f 41 43 43 45 50 54 41 42 4c 45 5f 44 4c  VE_ACCEPTABLE_DL
0a10: 41 44 44 52 0a 09 44 6c 5f 69 6e 66 6f 20 73 79  ADDR..Dl_info sy
0a20: 6d 69 6e 66 6f 3b 0a 09 69 6e 74 20 64 6c 61 64  minfo;..int dlad
0a30: 64 72 5f 72 65 74 3b 0a 23 65 6e 64 69 66 20 2f  dr_ret;.#endif /
0a40: 2a 20 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c  * HAVE_ACCEPTABL
0a50: 45 5f 44 4c 41 44 44 52 20 2a 2f 0a 23 69 66 64  E_DLADDR */.#ifd
0a60: 65 66 20 5f 57 49 4e 33 32 0a 09 54 43 48 41 52  ef _WIN32..TCHAR
0a70: 20 6d 6f 64 75 6c 65 6e 61 6d 65 5b 38 31 39 32   modulename[8192
0a80: 5d 3b 0a 09 44 57 4f 52 44 20 67 6d 66 6e 5f 72  ];..DWORD gmfn_r
0a90: 65 74 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 57  et;.#endif /* _W
0aa0: 49 4e 33 32 20 2a 2f 0a 0a 23 69 66 64 65 66 20  IN32 */..#ifdef 
0ab0: 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45 5f  HAVE_ACCEPTABLE_
0ac0: 44 4c 41 44 44 52 0a 09 64 6c 61 64 64 72 5f 72  DLADDR..dladdr_r
0ad0: 65 74 20 3d 20 64 6c 61 64 64 72 28 26 5f 74 63  et = dladdr(&_tc
0ae0: 6c 6b 69 74 5f 64 75 6d 6d 79 5f 66 75 6e 63 2c  lkit_dummy_func,
0af0: 20 26 73 79 6d 69 6e 66 6f 29 3b 0a 09 69 66 20   &syminfo);..if 
0b00: 28 64 6c 61 64 64 72 5f 72 65 74 20 21 3d 20 30  (dladdr_ret != 0
0b10: 29 20 7b 0a 09 09 69 66 20 28 73 79 6d 69 6e 66  ) {...if (syminf
0b20: 6f 2e 64 6c 69 5f 66 6e 61 6d 65 20 26 26 20 73  o.dli_fname && s
0b30: 79 6d 69 6e 66 6f 2e 64 6c 69 5f 66 6e 61 6d 65  yminfo.dli_fname
0b40: 5b 30 5d 20 21 3d 20 27 5c 30 27 29 20 7b 0a 09  [0] != '\0') {..
0b50: 09 09 72 65 74 75 72 6e 28 73 74 72 64 75 70 28  ..return(strdup(
0b60: 73 79 6d 69 6e 66 6f 2e 64 6c 69 5f 66 6e 61 6d  syminfo.dli_fnam
0b70: 65 29 29 3b 0a 09 09 7d 0a 09 7d 0a 23 65 6e 64  e));...}..}.#end
0b80: 69 66 20 2f 2a 20 48 41 56 45 5f 41 43 43 45 50  if /* HAVE_ACCEP
0b90: 54 41 42 4c 45 5f 44 4c 41 44 44 52 20 2a 2f 0a  TABLE_DLADDR */.
0ba0: 0a 23 69 66 64 65 66 20 5f 57 49 4e 33 32 0a 09  .#ifdef _WIN32..
0bb0: 67 6d 66 6e 5f 72 65 74 20 3d 20 47 65 74 4d 6f  gmfn_ret = GetMo
0bc0: 64 75 6c 65 46 69 6c 65 4e 61 6d 65 28 54 63 6c  duleFileName(Tcl
0bd0: 57 69 6e 47 65 74 54 63 6c 49 6e 73 74 61 6e 63  WinGetTclInstanc
0be0: 65 28 29 2c 20 6d 6f 64 75 6c 65 6e 61 6d 65 2c  e(), modulename,
0bf0: 20 73 69 7a 65 6f 66 28 6d 6f 64 75 6c 65 6e 61   sizeof(modulena
0c00: 6d 65 29 20 2f 20 73 69 7a 65 6f 66 28 6d 6f 64  me) / sizeof(mod
0c10: 75 6c 65 6e 61 6d 65 5b 30 5d 29 20 2d 20 31 29  ulename[0]) - 1)
0c20: 3b 0a 0a 09 69 66 20 28 67 6d 66 6e 5f 72 65 74  ;...if (gmfn_ret
0c30: 20 21 3d 20 30 29 20 7b 0a 09 09 72 65 74 75 72   != 0) {...retur
0c40: 6e 28 73 74 72 64 75 70 28 6d 6f 64 75 6c 65 6e  n(strdup(modulen
0c50: 61 6d 65 29 29 3b 0a 09 7d 0a 23 65 6e 64 69 66  ame));..}.#endif
0c60: 20 2f 2a 20 5f 57 49 4e 33 32 20 2a 2f 0a 0a 09   /* _WIN32 */...
0c70: 72 65 74 75 72 6e 28 4e 55 4c 4c 29 3b 0a 7d 0a  return(NULL);.}.
0c80: 0a 2f 2a 20 53 65 74 45 78 65 63 4e 61 6d 65 20  ./* SetExecName 
0c90: 2d 2d 0a 09 0a 20 20 20 48 61 63 6b 20 74 6f 20  --...   Hack to 
0ca0: 67 65 74 20 61 72 6f 75 6e 64 20 54 63 6c 20 62  get around Tcl b
0cb0: 75 67 20 31 32 32 34 38 38 38 2e 0a 2a 2f 0a 73  ug 1224888..*/.s
0cc0: 74 61 74 69 63 20 76 6f 69 64 20 53 65 74 45 78  tatic void SetEx
0cd0: 65 63 4e 61 6d 65 28 54 63 6c 5f 49 6e 74 65 72  ecName(Tcl_Inter
0ce0: 70 20 2a 69 6e 74 65 72 70 2c 20 63 6f 6e 73 74  p *interp, const
0cf0: 20 63 68 61 72 20 2a 70 61 74 68 29 20 7b 0a 23   char *path) {.#
0d00: 69 66 64 65 66 20 54 43 4c 4b 49 54 5f 52 45 51  ifdef TCLKIT_REQ
0d10: 55 49 52 45 5f 54 43 4c 45 58 45 43 55 54 41 42  UIRE_TCLEXECUTAB
0d20: 4c 45 4e 41 4d 45 0a 09 74 63 6c 45 78 65 63 75  LENAME..tclExecu
0d30: 74 61 62 6c 65 4e 61 6d 65 20 3d 20 73 74 72 64  tableName = strd
0d40: 75 70 28 70 61 74 68 29 3b 0a 23 65 6e 64 69 66  up(path);.#endif
0d50: 20 20 0a 09 54 63 6c 5f 46 69 6e 64 45 78 65 63    ..Tcl_FindExec
0d60: 75 74 61 62 6c 65 28 70 61 74 68 29 3b 0a 0a 09  utable(path);...
0d70: 72 65 74 75 72 6e 3b 0a 7d 0a 09 0a 73 74 61 74  return;.}...stat
0d80: 69 63 20 76 6f 69 64 20 46 69 6e 64 41 6e 64 53  ic void FindAndS
0d90: 65 74 45 78 65 63 4e 61 6d 65 28 54 63 6c 5f 49  etExecName(Tcl_I
0da0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 29 20 7b  nterp *interp) {
0db0: 0a 09 69 6e 74 20 6c 65 6e 20 3d 20 30 3b 0a 09  ..int len = 0;..
0dc0: 54 63 6c 5f 4f 62 6a 20 2a 65 78 65 63 4e 61 6d  Tcl_Obj *execNam
0dd0: 65 4f 62 6a 3b 0a 09 54 63 6c 5f 4f 62 6a 20 2a  eObj;..Tcl_Obj *
0de0: 6c 6f 62 6a 76 5b 31 5d 3b 0a 23 69 66 64 65 66  lobjv[1];.#ifdef
0df0: 20 48 41 56 45 5f 52 45 41 44 4c 49 4e 4b 0a 09   HAVE_READLINK..
0e00: 73 73 69 7a 65 5f 74 20 72 65 61 64 6c 69 6e 6b  ssize_t readlink
0e10: 5f 72 65 74 3b 0a 09 63 68 61 72 20 65 78 65 5f  _ret;..char exe_
0e20: 62 75 66 5b 34 30 39 36 5d 3b 0a 23 65 6e 64 69  buf[4096];.#endi
0e30: 66 20 2f 2a 20 48 41 56 45 5f 52 45 41 44 4c 49  f /* HAVE_READLI
0e40: 4e 4b 20 2a 2f 0a 23 69 66 64 65 66 20 48 41 56  NK */.#ifdef HAV
0e50: 45 5f 41 43 43 45 50 54 41 42 4c 45 5f 44 4c 41  E_ACCEPTABLE_DLA
0e60: 44 44 52 0a 09 44 6c 5f 69 6e 66 6f 20 73 79 6d  DDR..Dl_info sym
0e70: 69 6e 66 6f 3b 0a 09 69 6e 74 20 64 6c 61 64 64  info;..int dladd
0e80: 72 5f 72 65 74 3b 0a 23 65 6e 64 69 66 20 2f 2a  r_ret;.#endif /*
0e90: 20 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45   HAVE_ACCEPTABLE
0ea0: 5f 44 4c 41 44 44 52 20 2a 2f 0a 0a 23 69 66 64  _DLADDR */..#ifd
0eb0: 65 66 20 48 41 56 45 5f 52 45 41 44 4c 49 4e 4b  ef HAVE_READLINK
0ec0: 0a 09 69 66 20 28 54 63 6c 5f 47 65 74 4e 61 6d  ..if (Tcl_GetNam
0ed0: 65 4f 66 45 78 65 63 75 74 61 62 6c 65 28 29 20  eOfExecutable() 
0ee0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 72 65 61  == NULL) {...rea
0ef0: 64 6c 69 6e 6b 5f 72 65 74 20 3d 20 72 65 61 64  dlink_ret = read
0f00: 6c 69 6e 6b 28 22 2f 70 72 6f 63 2f 73 65 6c 66  link("/proc/self
0f10: 2f 65 78 65 22 2c 20 65 78 65 5f 62 75 66 2c 20  /exe", exe_buf, 
0f20: 73 69 7a 65 6f 66 28 65 78 65 5f 62 75 66 29 20  sizeof(exe_buf) 
0f30: 2d 20 31 29 3b 0a 09 09 0a 09 09 69 66 20 28 72  - 1);......if (r
0f40: 65 61 64 6c 69 6e 6b 5f 72 65 74 20 3e 20 30 20  eadlink_ret > 0 
0f50: 26 26 20 72 65 61 64 6c 69 6e 6b 5f 72 65 74 20  && readlink_ret 
0f60: 3c 20 28 73 69 7a 65 6f 66 28 65 78 65 5f 62 75  < (sizeof(exe_bu
0f70: 66 29 20 2d 20 31 29 29 20 7b 0a 09 09 09 65 78  f) - 1)) {....ex
0f80: 65 5f 62 75 66 5b 72 65 61 64 6c 69 6e 6b 5f 72  e_buf[readlink_r
0f90: 65 74 5d 20 3d 20 27 5c 30 27 3b 0a 09 09 09 0a  et] = '\0';.....
0fa0: 09 09 09 53 65 74 45 78 65 63 4e 61 6d 65 28 69  ...SetExecName(i
0fb0: 6e 74 65 72 70 2c 20 65 78 65 5f 62 75 66 29 3b  nterp, exe_buf);
0fc0: 0a 09 09 09 0a 09 09 09 72 65 74 75 72 6e 3b 0a  ........return;.
0fd0: 09 09 7d 0a 09 7d 0a 09 0a 09 69 66 20 28 54 63  ..}..}....if (Tc
0fe0: 6c 5f 47 65 74 4e 61 6d 65 4f 66 45 78 65 63 75  l_GetNameOfExecu
0ff0: 74 61 62 6c 65 28 29 20 3d 3d 20 4e 55 4c 4c 29  table() == NULL)
1000: 20 7b 0a 09 09 72 65 61 64 6c 69 6e 6b 5f 72 65   {...readlink_re
1010: 74 20 3d 20 72 65 61 64 6c 69 6e 6b 28 22 2f 70  t = readlink("/p
1020: 72 6f 63 2f 63 75 72 70 72 6f 63 2f 66 69 6c 65  roc/curproc/file
1030: 22 2c 20 65 78 65 5f 62 75 66 2c 20 73 69 7a 65  ", exe_buf, size
1040: 6f 66 28 65 78 65 5f 62 75 66 29 20 2d 20 31 29  of(exe_buf) - 1)
1050: 3b 09 09 09 09 09 09 09 09 09 09 09 09 20 0a 0a  ;............ ..
1060: 09 09 69 66 20 28 72 65 61 64 6c 69 6e 6b 5f 72  ..if (readlink_r
1070: 65 74 20 3e 20 30 20 26 26 20 72 65 61 64 6c 69  et > 0 && readli
1080: 6e 6b 5f 72 65 74 20 3c 20 28 73 69 7a 65 6f 66  nk_ret < (sizeof
1090: 28 65 78 65 5f 62 75 66 29 20 2d 20 31 29 29 20  (exe_buf) - 1)) 
10a0: 7b 0a 09 09 09 65 78 65 5f 62 75 66 5b 72 65 61  {....exe_buf[rea
10b0: 64 6c 69 6e 6b 5f 72 65 74 5d 20 3d 20 27 5c 30  dlink_ret] = '\0
10c0: 27 3b 0a 0a 09 09 09 69 66 20 28 73 74 72 63 6d  ';.....if (strcm
10d0: 70 28 65 78 65 5f 62 75 66 2c 20 22 75 6e 6b 6e  p(exe_buf, "unkn
10e0: 6f 77 6e 22 29 20 21 3d 20 30 29 20 7b 0a 09 09  own") != 0) {...
10f0: 09 09 53 65 74 45 78 65 63 4e 61 6d 65 28 69 6e  ..SetExecName(in
1100: 74 65 72 70 2c 20 65 78 65 5f 62 75 66 29 3b 0a  terp, exe_buf);.
1110: 0a 09 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 09  .....return;....
1120: 7d 0a 09 09 7d 0a 09 7d 0a 23 65 6e 64 69 66 20  }...}..}.#endif 
1130: 2f 2a 20 48 41 56 45 5f 52 45 41 44 4c 49 4e 4b  /* HAVE_READLINK
1140: 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48 41 56 45   */..#ifdef HAVE
1150: 5f 41 43 43 45 50 54 41 42 4c 45 5f 44 4c 41 44  _ACCEPTABLE_DLAD
1160: 44 52 0a 09 69 66 20 28 54 63 6c 5f 47 65 74 4e  DR..if (Tcl_GetN
1170: 61 6d 65 4f 66 45 78 65 63 75 74 61 62 6c 65 28  ameOfExecutable(
1180: 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 64  ) == NULL) {...d
1190: 6c 61 64 64 72 5f 72 65 74 20 3d 20 64 6c 61 64  laddr_ret = dlad
11a0: 64 72 28 26 6d 61 69 6e 2c 20 26 73 79 6d 69 6e  dr(&main, &symin
11b0: 66 6f 29 3b 0a 09 09 69 66 20 28 64 6c 61 64 64  fo);...if (dladd
11c0: 72 5f 72 65 74 20 21 3d 20 30 29 20 7b 0a 09 09  r_ret != 0) {...
11d0: 09 53 65 74 45 78 65 63 4e 61 6d 65 28 69 6e 74  .SetExecName(int
11e0: 65 72 70 2c 20 73 79 6d 69 6e 66 6f 2e 64 6c 69  erp, syminfo.dli
11f0: 5f 66 6e 61 6d 65 29 3b 0a 09 09 7d 0a 09 7d 0a  _fname);...}..}.
1200: 23 65 6e 64 69 66 20 2f 2a 20 48 41 56 45 5f 41  #endif /* HAVE_A
1210: 43 43 45 50 54 41 42 4c 45 5f 44 4c 41 44 44 52  CCEPTABLE_DLADDR
1220: 20 2a 2f 0a 0a 09 69 66 20 28 54 63 6c 5f 47 65   */...if (Tcl_Ge
1230: 74 4e 61 6d 65 4f 66 45 78 65 63 75 74 61 62 6c  tNameOfExecutabl
1240: 65 28 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09  e() == NULL) {..
1250: 09 6c 6f 62 6a 76 5b 30 5d 20 3d 20 54 63 6c 5f  .lobjv[0] = Tcl_
1260: 47 65 74 56 61 72 32 45 78 28 69 6e 74 65 72 70  GetVar2Ex(interp
1270: 2c 20 22 61 72 67 76 30 22 2c 20 4e 55 4c 4c 2c  , "argv0", NULL,
1280: 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59   TCL_GLOBAL_ONLY
1290: 29 3b 0a 09 09 65 78 65 63 4e 61 6d 65 4f 62 6a  );...execNameObj
12a0: 20 3d 20 54 63 6c 5f 46 53 4a 6f 69 6e 54 6f 50   = Tcl_FSJoinToP
12b0: 61 74 68 28 54 63 6c 5f 46 53 47 65 74 43 77 64  ath(Tcl_FSGetCwd
12c0: 28 69 6e 74 65 72 70 29 2c 20 31 2c 20 6c 6f 62  (interp), 1, lob
12d0: 6a 76 29 3b 0a 0a 09 09 53 65 74 45 78 65 63 4e  jv);....SetExecN
12e0: 61 6d 65 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f  ame(interp, Tcl_
12f0: 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a  GetStringFromObj
1300: 28 65 78 65 63 4e 61 6d 65 4f 62 6a 2c 20 26 6c  (execNameObj, &l
1310: 65 6e 29 29 3b 0a 0a 09 09 72 65 74 75 72 6e 3b  en));....return;
1320: 0a 09 7d 0a 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a  ..}...return;.}.
1330: 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 66 75 6e  ../*. * This fun
1340: 63 74 69 6f 6e 20 65 78 69 73 74 73 20 74 6f 20  ction exists to 
1350: 61 6c 6c 6f 77 20 43 20 63 6f 64 65 20 74 6f 20  allow C code to 
1360: 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 70 61 72  initialize a par
1370: 74 69 63 75 6c 61 72 0a 20 2a 20 69 6e 74 65 72  ticular. * inter
1380: 70 72 65 74 65 72 2e 0a 20 2a 2f 0a 73 74 61 74  preter.. */.stat
1390: 69 63 20 69 6e 74 20 74 63 6c 6b 69 74 5f 69 6e  ic int tclkit_in
13a0: 69 74 5f 69 6e 69 74 69 6e 74 65 72 70 28 43 6c  it_initinterp(Cl
13b0: 69 65 6e 74 44 61 74 61 20 63 64 2c 20 54 63 6c  ientData cd, Tcl
13c0: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c  _Interp *interp,
13d0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f   int objc, Tcl_O
13e0: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d  bj *CONST objv[]
13f0: 29 20 7b 0a 09 63 68 61 72 20 2a 6b 69 74 64 6c  ) {..char *kitdl
1400: 6c 5f 70 61 74 68 3b 0a 23 69 66 64 65 66 20 54  l_path;.#ifdef T
1410: 43 4c 4b 49 54 5f 43 41 4e 5f 53 45 54 5f 45 4e  CLKIT_CAN_SET_EN
1420: 43 4f 44 49 4e 47 0a 09 54 63 6c 5f 44 53 74 72  CODING..Tcl_DStr
1430: 69 6e 67 20 65 6e 63 6f 64 69 6e 67 4e 61 6d 65  ing encodingName
1440: 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 54 43 4c 4b  ;.#endif /* TCLK
1450: 49 54 5f 43 41 4e 5f 53 45 54 5f 45 4e 43 4f 44  IT_CAN_SET_ENCOD
1460: 49 4e 47 20 2a 2f 0a 0a 0a 23 69 66 64 65 66 20  ING */...#ifdef 
1470: 5f 57 49 4e 33 32 0a 09 54 63 6c 5f 53 65 74 56  _WIN32..Tcl_SetV
1480: 61 72 28 69 6e 74 65 72 70 2c 20 22 74 63 6c 5f  ar(interp, "tcl_
1490: 72 63 46 69 6c 65 4e 61 6d 65 22 2c 20 22 7e 2f  rcFileName", "~/
14a0: 74 63 6c 6b 69 74 72 63 2e 74 63 6c 22 2c 20 54  tclkitrc.tcl", T
14b0: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b  CL_GLOBAL_ONLY);
14c0: 0a 23 65 6c 73 65 20 20 20 0a 09 54 63 6c 5f 53  .#else   ..Tcl_S
14d0: 65 74 56 61 72 28 69 6e 74 65 72 70 2c 20 22 74  etVar(interp, "t
14e0: 63 6c 5f 72 63 46 69 6c 65 4e 61 6d 65 22 2c 20  cl_rcFileName", 
14f0: 22 7e 2f 2e 74 63 6c 6b 69 74 72 63 22 2c 20 54  "~/.tclkitrc", T
1500: 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b  CL_GLOBAL_ONLY);
1510: 0a 23 65 6e 64 69 66 0a 0a 09 6b 69 74 64 6c 6c  .#endif...kitdll
1520: 5f 70 61 74 68 20 3d 20 66 69 6e 64 5f 74 63 6c  _path = find_tcl
1530: 6b 69 74 5f 64 6c 6c 5f 70 61 74 68 28 29 3b 0a  kit_dll_path();.
1540: 09 69 66 20 28 6b 69 74 64 6c 6c 5f 70 61 74 68  .if (kitdll_path
1550: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 54 63   != NULL) {...Tc
1560: 6c 5f 53 65 74 56 61 72 28 69 6e 74 65 72 70 2c  l_SetVar(interp,
1570: 20 22 74 63 6c 4b 69 74 46 69 6c 65 6e 61 6d 65   "tclKitFilename
1580: 22 2c 20 6b 69 74 64 6c 6c 5f 70 61 74 68 2c 20  ", kitdll_path, 
1590: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29  TCL_GLOBAL_ONLY)
15a0: 3b 0a 0a 09 09 66 72 65 65 28 6b 69 74 64 6c 6c  ;....free(kitdll
15b0: 5f 70 61 74 68 29 3b 0a 09 7d 0a 0a 09 46 69 6e  _path);..}...Fin
15c0: 64 41 6e 64 53 65 74 45 78 65 63 4e 61 6d 65 28  dAndSetExecName(
15d0: 69 6e 74 65 72 70 29 3b 0a 0a 23 69 66 64 65 66  interp);..#ifdef
15e0: 20 54 43 4c 4b 49 54 5f 43 41 4e 5f 53 45 54 5f   TCLKIT_CAN_SET_
15f0: 45 4e 43 4f 44 49 4e 47 0a 09 2f 2a 20 53 65 74  ENCODING../* Set
1600: 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 66 72   the encoding fr
1610: 6f 6d 20 74 68 65 20 45 6e 76 69 72 6f 6e 6d 65  om the Environme
1620: 6e 74 20 2a 2f 0a 09 54 63 6c 5f 47 65 74 45 6e  nt */..Tcl_GetEn
1630: 63 6f 64 69 6e 67 4e 61 6d 65 46 72 6f 6d 45 6e  codingNameFromEn
1640: 76 69 72 6f 6e 6d 65 6e 74 28 26 65 6e 63 6f 64  vironment(&encod
1650: 69 6e 67 4e 61 6d 65 29 3b 0a 09 54 63 6c 5f 53  ingName);..Tcl_S
1660: 65 74 53 79 73 74 65 6d 45 6e 63 6f 64 69 6e 67  etSystemEncoding
1670: 28 4e 55 4c 4c 2c 20 54 63 6c 5f 44 53 74 72 69  (NULL, Tcl_DStri
1680: 6e 67 56 61 6c 75 65 28 26 65 6e 63 6f 64 69 6e  ngValue(&encodin
1690: 67 4e 61 6d 65 29 29 3b 0a 09 54 63 6c 5f 53 65  gName));..Tcl_Se
16a0: 74 56 61 72 28 69 6e 74 65 72 70 2c 20 22 74 63  tVar(interp, "tc
16b0: 6c 6b 69 74 5f 73 79 73 74 65 6d 5f 65 6e 63 6f  lkit_system_enco
16c0: 64 69 6e 67 22 2c 20 54 63 6c 5f 44 53 74 72 69  ding", Tcl_DStri
16d0: 6e 67 56 61 6c 75 65 28 26 65 6e 63 6f 64 69 6e  ngValue(&encodin
16e0: 67 4e 61 6d 65 29 2c 20 54 43 4c 5f 47 4c 4f 42  gName), TCL_GLOB
16f0: 41 4c 5f 4f 4e 4c 59 29 3b 0a 09 54 63 6c 5f 44  AL_ONLY);..Tcl_D
1700: 53 74 72 69 6e 67 46 72 65 65 28 26 65 6e 63 6f  StringFree(&enco
1710: 64 69 6e 67 4e 61 6d 65 29 3b 0a 23 65 6e 64 69  dingName);.#endi
1720: 66 20 20 0a 0a 09 72 65 74 75 72 6e 28 54 43 4c  f  ...return(TCL
1730: 5f 4f 4b 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 43  _OK);.}../*. * C
1740: 72 65 61 74 65 20 61 20 70 61 63 6b 61 67 65 20  reate a package 
1750: 66 6f 72 20 69 6e 69 74 69 61 6c 69 7a 69 6e 67  for initializing
1760: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 69 6e   a particular in
1770: 74 65 72 70 72 65 74 65 72 2e 20 20 54 68 69 73  terpreter.  This
1780: 20 69 73 0a 20 2a 20 6f 75 72 20 68 6f 6f 6b 20   is. * our hook 
1790: 74 6f 20 68 61 76 65 20 54 63 6c 20 69 6e 76 6f  to have Tcl invo
17a0: 6b 65 20 43 20 63 6f 6d 6d 61 6e 64 73 20 77 68  ke C commands wh
17b0: 65 6e 20 63 72 65 61 74 69 6e 67 20 61 6e 20 69  en creating an i
17c0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 20 2a 20 54  nterpreter.. * T
17d0: 68 65 20 70 72 65 49 6e 69 74 43 6d 64 20 77 69  he preInitCmd wi
17e0: 6c 6c 20 6c 6f 61 64 20 74 68 65 20 70 61 63 6b  ll load the pack
17f0: 61 67 65 20 69 6e 20 74 68 65 20 6e 65 77 20 69  age in the new i
1800: 6e 74 65 72 70 72 65 74 65 72 20 61 6e 64 20 69  nterpreter and i
1810: 6e 76 6f 6b 65 0a 20 2a 20 74 68 69 73 20 66 75  nvoke. * this fu
1820: 6e 63 74 69 6f 6e 2e 0a 20 2a 2f 0a 69 6e 74 20  nction.. */.int 
1830: 54 63 6c 6b 69 74 5f 69 6e 69 74 5f 49 6e 69 74  Tclkit_init_Init
1840: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74  (Tcl_Interp *int
1850: 65 72 70 29 20 7b 0a 09 54 63 6c 5f 43 6f 6d 6d  erp) {..Tcl_Comm
1860: 61 6e 64 20 74 63 6c 43 72 65 61 74 43 6f 6d 6d  and tclCreatComm
1870: 5f 72 65 74 3b 0a 09 69 6e 74 20 74 63 6c 50 6b  _ret;..int tclPk
1880: 67 50 72 6f 76 5f 72 65 74 3b 0a 0a 09 74 63 6c  gProv_ret;...tcl
1890: 43 72 65 61 74 43 6f 6d 6d 5f 72 65 74 20 3d 20  CreatComm_ret = 
18a0: 54 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 6f 6d  Tcl_CreateObjCom
18b0: 6d 61 6e 64 28 69 6e 74 65 72 70 2c 20 22 3a 3a  mand(interp, "::
18c0: 74 63 6c 6b 69 74 3a 3a 69 6e 69 74 3a 3a 69 6e  tclkit::init::in
18d0: 69 74 49 6e 74 65 72 70 22 2c 20 74 63 6c 6b 69  itInterp", tclki
18e0: 74 5f 69 6e 69 74 5f 69 6e 69 74 69 6e 74 65 72  t_init_initinter
18f0: 70 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b 0a  p, NULL, NULL);.
1900: 09 69 66 20 28 21 74 63 6c 43 72 65 61 74 43 6f  .if (!tclCreatCo
1910: 6d 6d 5f 72 65 74 29 20 7b 0a 09 09 72 65 74 75  mm_ret) {...retu
1920: 72 6e 28 54 43 4c 5f 45 52 52 4f 52 29 3b 0a 09  rn(TCL_ERROR);..
1930: 7d 0a 0a 09 74 63 6c 50 6b 67 50 72 6f 76 5f 72  }...tclPkgProv_r
1940: 65 74 20 3d 20 54 63 6c 5f 50 6b 67 50 72 6f 76  et = Tcl_PkgProv
1950: 69 64 65 28 69 6e 74 65 72 70 2c 20 22 74 63 6c  ide(interp, "tcl
1960: 6b 69 74 3a 3a 69 6e 69 74 22 2c 20 22 31 2e 30  kit::init", "1.0
1970: 22 29 3b 0a 0a 09 72 65 74 75 72 6e 28 74 63 6c  ");...return(tcl
1980: 50 6b 67 50 72 6f 76 5f 72 65 74 29 3b 0a 7d 0a  PkgProv_ret);.}.
1990: 0a 2f 2a 0a 20 2a 20 49 6e 69 74 69 61 6c 69 7a  ./*. * Initializ
19a0: 65 20 74 68 65 20 54 63 6c 20 73 79 73 74 65 6d  e the Tcl system
19b0: 20 77 68 65 6e 20 77 65 20 61 72 65 20 6c 6f 61   when we are loa
19c0: 64 65 64 2c 20 74 68 61 74 20 77 61 79 20 54 63  ded, that way Tc
19d0: 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a 20 61  l functions. * a
19e0: 72 65 20 72 65 61 64 79 20 74 6f 20 62 65 20 75  re ready to be u
19f0: 73 65 64 20 77 68 65 6e 20 69 6e 76 6f 6b 65 64  sed when invoked
1a00: 2e 0a 20 2a 2f 0a 76 6f 69 64 20 5f 5f 61 74 74  .. */.void __att
1a10: 72 69 62 75 74 65 5f 5f 28 28 63 6f 6e 73 74 72  ribute__((constr
1a20: 75 63 74 6f 72 29 29 20 5f 54 63 6c 6b 69 74 5f  uctor)) _Tclkit_
1a30: 49 6e 69 74 28 76 6f 69 64 29 20 7b 0a 09 54 63  Init(void) {..Tc
1a40: 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65 28  l_StaticPackage(
1a50: 30 2c 20 22 74 63 6c 6b 69 74 3a 3a 69 6e 69 74  0, "tclkit::init
1a60: 22 2c 20 54 63 6c 6b 69 74 5f 69 6e 69 74 5f 49  ", Tclkit_init_I
1a70: 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 09 54 63 6c  nit, NULL);..Tcl
1a80: 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65 28 30  _StaticPackage(0
1a90: 2c 20 22 72 65 63 68 61 6e 22 2c 20 52 65 63 68  , "rechan", Rech
1aa0: 61 6e 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a  an_Init, NULL);.
1ab0: 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61  .Tcl_StaticPacka
1ac0: 67 65 28 30 2c 20 22 76 66 73 22 2c 20 56 66 73  ge(0, "vfs", Vfs
1ad0: 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 09 54  _Init, NULL);..T
1ae0: 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65  cl_StaticPackage
1af0: 28 30 2c 20 22 76 66 73 5f 6b 69 74 64 6c 6c 5f  (0, "vfs_kitdll_
1b00: 64 61 74 61 5f 74 63 6c 22 2c 20 56 66 73 5f 6b  data_tcl", Vfs_k
1b10: 69 74 64 6c 6c 5f 64 61 74 61 5f 74 63 6c 5f 49  itdll_data_tcl_I
1b20: 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23 69 66 64  nit, NULL);.#ifd
1b30: 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f  ef KIT_INCLUDES_
1b40: 5a 4c 49 42 0a 20 20 20 20 20 20 20 20 54 63 6c  ZLIB.        Tcl
1b50: 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65 28 30  _StaticPackage(0
1b60: 2c 20 22 7a 6c 69 62 22 2c 20 5a 6c 69 62 5f 49  , "zlib", Zlib_I
1b70: 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e 64  nit, NULL);.#end
1b80: 69 66 0a 23 69 66 64 65 66 20 4b 49 54 5f 49 4e  if.#ifdef KIT_IN
1b90: 43 4c 55 44 45 53 5f 4d 4b 34 54 43 4c 0a 09 54  CLUDES_MK4TCL..T
1ba0: 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65  cl_StaticPackage
1bb0: 28 30 2c 20 22 4d 6b 34 74 63 6c 22 2c 20 4d 6b  (0, "Mk4tcl", Mk
1bc0: 34 74 63 6c 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29  4tcl_Init, NULL)
1bd0: 3b 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ;.#endif.#ifdef 
1be0: 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f 50 57 42  KIT_INCLUDES_PWB
1bf0: 0a 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b  ..Tcl_StaticPack
1c00: 61 67 65 28 30 2c 20 22 70 77 62 22 2c 20 50 77  age(0, "pwb", Pw
1c10: 62 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23  b_Init, NULL);.#
1c20: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 54 43 4c  endif.#ifdef TCL
1c30: 5f 54 48 52 45 41 44 53 0a 09 54 63 6c 5f 53 74  _THREADS..Tcl_St
1c40: 61 74 69 63 50 61 63 6b 61 67 65 28 30 2c 20 22  aticPackage(0, "
1c50: 54 68 72 65 61 64 22 2c 20 54 68 72 65 61 64 5f  Thread", Thread_
1c60: 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e  Init, NULL);.#en
1c70: 64 69 66 0a 23 69 66 64 65 66 20 5f 57 49 4e 33  dif.#ifdef _WIN3
1c80: 32 0a 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63  2..Tcl_StaticPac
1c90: 6b 61 67 65 28 30 2c 20 22 64 64 65 22 2c 20 44  kage(0, "dde", D
1ca0: 64 65 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a  de_Init, NULL);.
1cb0: 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61  .Tcl_StaticPacka
1cc0: 67 65 28 30 2c 20 22 72 65 67 69 73 74 72 79 22  ge(0, "registry"
1cd0: 2c 20 52 65 67 69 73 74 72 79 5f 49 6e 69 74 2c  , Registry_Init,
1ce0: 20 4e 55 4c 4c 29 3b 0a 23 65 6e 64 69 66 0a 23   NULL);.#endif.#
1cf0: 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44  ifdef KIT_INCLUD
1d00: 45 53 5f 54 4b 0a 09 54 63 6c 5f 53 74 61 74 69  ES_TK..Tcl_Stati
1d10: 63 50 61 63 6b 61 67 65 28 30 2c 20 22 54 6b 22  cPackage(0, "Tk"
1d20: 2c 20 54 6b 5f 49 6e 69 74 2c 20 54 6b 5f 53 61  , Tk_Init, Tk_Sa
1d30: 66 65 49 6e 69 74 29 3b 0a 23 65 6e 64 69 66 20  feInit);.#endif 
1d40: 20 0a 0a 09 54 63 6c 53 65 74 50 72 65 49 6e 69   ...TclSetPreIni
1d50: 74 53 63 72 69 70 74 28 70 72 65 49 6e 69 74 43  tScript(preInitC
1d60: 6d 64 29 3b 0a 0a 09 72 65 74 75 72 6e 3b 0a 7d  md);...return;.}
1d70: 0a                                               .