Hex Artifact Content

Artifact 50169ff8c38f87c1dc5ffa39092e2f81ac1c7ddc:


0000: 2f 2a 20 0a 20 2a 20 74 63 6c 41 70 70 49 6e 69  /* . * tclAppIni
0010: 74 2e 63 20 2d 2d 0a 20 2a 0a 20 2a 20 20 50 72  t.c --. *. *  Pr
0020: 6f 76 69 64 65 73 20 61 20 64 65 66 61 75 6c 74  ovides a default
0030: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
0040: 6d 61 69 6e 20 70 72 6f 67 72 61 6d 20 61 6e 64  main program and
0050: 20 54 63 6c 5f 41 70 70 49 6e 69 74 0a 20 2a 20   Tcl_AppInit. * 
0060: 20 70 72 6f 63 65 64 75 72 65 20 66 6f 72 20 54   procedure for T
0070: 63 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  cl applications 
0080: 28 77 69 74 68 6f 75 74 20 54 6b 29 2e 20 20 4e  (without Tk).  N
0090: 6f 74 65 20 74 68 61 74 20 74 68 69 73 0a 20 2a  ote that this. *
00a0: 20 20 70 72 6f 67 72 61 6d 20 6d 75 73 74 20 62    program must b
00b0: 65 20 62 75 69 6c 74 20 69 6e 20 57 69 6e 33 32  e built in Win32
00c0: 20 63 6f 6e 73 6f 6c 65 20 6d 6f 64 65 20 74 6f   console mode to
00d0: 20 77 6f 72 6b 20 70 72 6f 70 65 72 6c 79 2e 0a   work properly..
00e0: 20 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20   *. * Copyright 
00f0: 28 63 29 20 31 39 39 36 2d 31 39 39 37 20 62 79  (c) 1996-1997 by
0100: 20 53 75 6e 20 4d 69 63 72 6f 73 79 73 74 65 6d   Sun Microsystem
0110: 73 2c 20 49 6e 63 2e 0a 20 2a 20 43 6f 70 79 72  s, Inc.. * Copyr
0120: 69 67 68 74 20 28 63 29 20 31 39 39 38 2d 31 39  ight (c) 1998-19
0130: 39 39 20 62 79 20 53 63 72 69 70 74 69 63 73 20  99 by Scriptics 
0140: 43 6f 72 70 6f 72 61 74 69 6f 6e 2e 0a 20 2a 20  Corporation.. * 
0150: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30  Copyright (c) 20
0160: 30 30 2d 32 30 30 32 20 4a 65 61 6e 2d 43 6c 61  00-2002 Jean-Cla
0170: 75 64 65 20 57 69 70 70 6c 65 72 20 3c 6a 63 77  ude Wippler <jcw
0180: 40 65 71 75 69 34 2e 63 6f 6d 3e 0a 20 2a 0a 20  @equi4.com>. *. 
0190: 2a 20 53 65 65 20 74 68 65 20 66 69 6c 65 20 22  * See the file "
01a0: 6c 69 63 65 6e 73 65 2e 74 65 72 6d 73 22 20 66  license.terms" f
01b0: 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f  or information o
01c0: 6e 20 75 73 61 67 65 20 61 6e 64 20 72 65 64 69  n usage and redi
01d0: 73 74 72 69 62 75 74 69 6f 6e 0a 20 2a 20 6f 66  stribution. * of
01e0: 20 74 68 69 73 20 66 69 6c 65 2c 20 61 6e 64 20   this file, and 
01f0: 66 6f 72 20 61 20 44 49 53 43 4c 41 49 4d 45 52  for a DISCLAIMER
0200: 20 4f 46 20 41 4c 4c 20 57 41 52 52 41 4e 54 49   OF ALL WARRANTI
0210: 45 53 2e 0a 20 2a 0a 20 2a 20 52 43 53 3a 20 40  ES.. *. * RCS: @
0220: 28 23 29 20 24 49 64 24 0a 20 2a 2f 0a 0a 23 69  (#) $Id$. */..#i
0230: 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45  fdef KIT_INCLUDE
0240: 53 5f 54 4b 0a 23 20 20 69 6e 63 6c 75 64 65 20  S_TK.#  include 
0250: 3c 74 6b 2e 68 3e 0a 23 65 6e 64 69 66 20 2f 2a  <tk.h>.#endif /*
0260: 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f 54 4b   KIT_INCLUDES_TK
0270: 20 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 3c 74 63   */.#include <tc
0280: 6c 2e 68 3e 0a 0a 23 69 66 64 65 66 20 5f 57 49  l.h>..#ifdef _WI
0290: 4e 33 32 0a 23 20 20 64 65 66 69 6e 65 20 57 49  N32.#  define WI
02a0: 4e 33 32 5f 4c 45 41 4e 5f 41 4e 44 5f 4d 45 41  N32_LEAN_AND_MEA
02b0: 4e 0a 23 20 20 69 6e 63 6c 75 64 65 20 3c 77 69  N.#  include <wi
02c0: 6e 64 6f 77 73 2e 68 3e 0a 23 20 20 75 6e 64 65  ndows.h>.#  unde
02d0: 66 20 57 49 4e 33 32 5f 4c 45 41 4e 5f 41 4e 44  f WIN32_LEAN_AND
02e0: 5f 4d 45 41 4e 0a 23 65 6e 64 69 66 20 2f 2a 20  _MEAN.#endif /* 
02f0: 5f 57 49 4e 33 32 20 2a 2f 0a 0a 23 69 66 6e 64  _WIN32 */..#ifnd
0300: 65 66 20 4d 42 5f 54 41 53 4b 4d 4f 44 41 4c 0a  ef MB_TASKMODAL.
0310: 23 20 20 64 65 66 69 6e 65 20 4d 42 5f 54 41 53  #  define MB_TAS
0320: 4b 4d 4f 44 41 4c 20 30 0a 23 65 6e 64 69 66 20  KMODAL 0.#endif 
0330: 2f 2a 20 4d 42 5f 54 41 53 4b 4d 4f 44 41 4c 20  /* MB_TASKMODAL 
0340: 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 22 74 63  */..#include "tc
0350: 6c 49 6e 74 2e 68 22 0a 0a 23 69 66 64 65 66 20  lInt.h"..#ifdef 
0360: 48 41 56 45 5f 55 4e 49 53 54 44 5f 48 0a 23 20  HAVE_UNISTD_H.# 
0370: 20 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64   include <unistd
0380: 2e 68 3e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  .h>.#endif.#ifde
0390: 66 20 48 41 56 45 5f 53 54 52 49 4e 47 5f 48 0a  f HAVE_STRING_H.
03a0: 23 20 20 69 6e 63 6c 75 64 65 20 3c 73 74 72 69  #  include <stri
03b0: 6e 67 2e 68 3e 0a 23 65 6e 64 69 66 0a 23 69 66  ng.h>.#endif.#if
03c0: 64 65 66 20 48 41 56 45 5f 53 54 52 49 4e 47 53  def HAVE_STRINGS
03d0: 5f 48 0a 23 20 20 69 6e 63 6c 75 64 65 20 3c 73  _H.#  include <s
03e0: 74 72 69 6e 67 73 2e 68 3e 0a 23 65 6e 64 69 66  trings.h>.#endif
03f0: 0a 0a 2f 2a 20 46 6f 72 20 64 6c 61 64 64 72 28  ../* For dladdr(
0400: 29 20 61 6e 64 20 44 6c 5f 69 6e 66 6f 20 2a 2f  ) and Dl_info */
0410: 0a 23 69 66 64 65 66 20 48 41 56 45 5f 44 4c 46  .#ifdef HAVE_DLF
0420: 43 4e 5f 48 0a 23 20 20 69 6e 63 6c 75 64 65 20  CN_H.#  include 
0430: 3c 64 6c 66 63 6e 2e 68 3e 0a 23 65 6e 64 69 66  <dlfcn.h>.#endif
0440: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 48 41  ..#if defined(HA
0450: 56 45 5f 54 43 4c 5f 47 45 54 45 4e 43 4f 44 49  VE_TCL_GETENCODI
0460: 4e 47 4e 41 4d 45 46 52 4f 4d 45 4e 56 49 52 4f  NGNAMEFROMENVIRO
0470: 4e 4d 45 4e 54 29 20 26 26 20 64 65 66 69 6e 65  NMENT) && define
0480: 64 28 48 41 56 45 5f 54 43 4c 5f 53 45 54 53 59  d(HAVE_TCL_SETSY
0490: 53 54 45 4d 45 4e 43 4f 44 49 4e 47 29 0a 23 20  STEMENCODING).# 
04a0: 20 64 65 66 69 6e 65 20 54 43 4c 4b 49 54 5f 43   define TCLKIT_C
04b0: 41 4e 5f 53 45 54 5f 45 4e 43 4f 44 49 4e 47 20  AN_SET_ENCODING 
04c0: 31 0a 23 65 6e 64 69 66 0a 23 69 66 20 31 30 20  1.#endif.#if 10 
04d0: 2a 20 54 43 4c 5f 4d 41 4a 4f 52 5f 56 45 52 53  * TCL_MAJOR_VERS
04e0: 49 4f 4e 20 2b 20 54 43 4c 5f 4d 49 4e 4f 52 5f  ION + TCL_MINOR_
04f0: 56 45 52 53 49 4f 4e 20 3c 20 38 35 0a 23 20 20  VERSION < 85.#  
0500: 64 65 66 69 6e 65 20 54 43 4c 4b 49 54 5f 52 45  define TCLKIT_RE
0510: 51 55 49 52 45 5f 54 43 4c 45 58 45 43 55 54 41  QUIRE_TCLEXECUTA
0520: 42 4c 45 4e 41 4d 45 20 31 0a 23 65 6e 64 69 66  BLENAME 1.#endif
0530: 0a 0a 23 69 66 20 31 30 20 2a 20 54 43 4c 5f 4d  ..#if 10 * TCL_M
0540: 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 20 2b 20 54  AJOR_VERSION + T
0550: 43 4c 5f 4d 49 4e 4f 52 5f 56 45 52 53 49 4f 4e  CL_MINOR_VERSION
0560: 20 3c 20 38 35 0a 23 20 20 64 65 66 69 6e 65 20   < 85.#  define 
0570: 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f 50 57 42  KIT_INCLUDES_PWB
0580: 20 31 0a 23 65 6e 64 69 66 0a 23 69 66 20 31 30   1.#endif.#if 10
0590: 20 2a 20 54 43 4c 5f 4d 41 4a 4f 52 5f 56 45 52   * TCL_MAJOR_VER
05a0: 53 49 4f 4e 20 2b 20 54 43 4c 5f 4d 49 4e 4f 52  SION + TCL_MINOR
05b0: 5f 56 45 52 53 49 4f 4e 20 3c 20 38 36 0a 23 20  _VERSION < 86.# 
05c0: 20 64 65 66 69 6e 65 20 4b 49 54 5f 49 4e 43 4c   define KIT_INCL
05d0: 55 44 45 53 5f 5a 4c 49 42 20 31 0a 23 65 6e 64  UDES_ZLIB 1.#end
05e0: 69 66 0a 0a 23 69 66 64 65 66 20 4b 49 54 5f 49  if..#ifdef KIT_I
05f0: 4e 43 4c 55 44 45 53 5f 49 54 43 4c 0a 54 63 6c  NCLUDES_ITCL.Tcl
0600: 5f 41 70 70 49 6e 69 74 50 72 6f 63 09 49 74 63  _AppInitProc.Itc
0610: 6c 5f 49 6e 69 74 3b 0a 23 65 6e 64 69 66 0a 23  l_Init;.#endif.#
0620: 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44  ifdef KIT_INCLUD
0630: 45 53 5f 4d 4b 34 54 43 4c 0a 54 63 6c 5f 41 70  ES_MK4TCL.Tcl_Ap
0640: 70 49 6e 69 74 50 72 6f 63 09 4d 6b 34 74 63 6c  pInitProc.Mk4tcl
0650: 5f 49 6e 69 74 3b 0a 23 65 6e 64 69 66 0a 54 63  _Init;.#endif.Tc
0660: 6c 5f 41 70 70 49 6e 69 74 50 72 6f 63 20 56 66  l_AppInitProc Vf
0670: 73 5f 49 6e 69 74 2c 20 52 65 63 68 61 6e 5f 49  s_Init, Rechan_I
0680: 6e 69 74 3b 0a 23 69 66 64 65 66 20 4b 49 54 5f  nit;.#ifdef KIT_
0690: 49 4e 43 4c 55 44 45 53 5f 50 57 42 0a 54 63 6c  INCLUDES_PWB.Tcl
06a0: 5f 41 70 70 49 6e 69 74 50 72 6f 63 09 50 77 62  _AppInitProc.Pwb
06b0: 5f 49 6e 69 74 3b 0a 23 65 6e 64 69 66 0a 23 69  _Init;.#endif.#i
06c0: 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45  fdef KIT_INCLUDE
06d0: 53 5f 5a 4c 49 42 0a 54 63 6c 5f 41 70 70 49 6e  S_ZLIB.Tcl_AppIn
06e0: 69 74 50 72 6f 63 20 5a 6c 69 62 5f 49 6e 69 74  itProc Zlib_Init
06f0: 3b 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ;.#endif.#ifdef 
0700: 4b 49 54 5f 53 54 4f 52 41 47 45 5f 43 56 46 53  KIT_STORAGE_CVFS
0710: 0a 54 63 6c 5f 41 70 70 49 6e 69 74 50 72 6f 63  .Tcl_AppInitProc
0720: 20 43 76 66 73 5f 64 61 74 61 5f 74 63 6c 5f 49   Cvfs_data_tcl_I
0730: 6e 69 74 3b 0a 23 65 6e 64 69 66 0a 23 69 66 64  nit;.#endif.#ifd
0740: 65 66 20 54 43 4c 5f 54 48 52 45 41 44 53 0a 54  ef TCL_THREADS.T
0750: 63 6c 5f 41 70 70 49 6e 69 74 50 72 6f 63 09 54  cl_AppInitProc.T
0760: 68 72 65 61 64 5f 49 6e 69 74 3b 0a 23 65 6e 64  hread_Init;.#end
0770: 69 66 0a 23 69 66 64 65 66 20 5f 57 49 4e 33 32  if.#ifdef _WIN32
0780: 0a 54 63 6c 5f 41 70 70 49 6e 69 74 50 72 6f 63  .Tcl_AppInitProc
0790: 09 44 64 65 5f 49 6e 69 74 2c 20 52 65 67 69 73  .Dde_Init, Regis
07a0: 74 72 79 5f 49 6e 69 74 3b 0a 23 65 6e 64 69 66  try_Init;.#endif
07b0: 0a 0a 23 69 66 64 65 66 20 54 43 4c 4b 49 54 5f  ..#ifdef TCLKIT_
07c0: 44 4c 4c 0a 23 20 20 64 65 66 69 6e 65 20 54 43  DLL.#  define TC
07d0: 4c 4b 49 54 5f 4d 4f 55 4e 54 50 4f 49 4e 54 20  LKIT_MOUNTPOINT 
07e0: 22 2f 2e 4b 49 54 44 4c 4c 5f 54 43 4c 22 0a 23  "/.KITDLL_TCL".#
07f0: 20 20 64 65 66 69 6e 65 20 54 43 4c 4b 49 54 5f    define TCLKIT_
0800: 56 46 53 53 4f 55 52 43 45 20 22 24 3a 3a 74 63  VFSSOURCE "$::tc
0810: 6c 4b 69 74 46 69 6c 65 6e 61 6d 65 22 0a 23 65  lKitFilename".#e
0820: 6c 73 65 0a 23 20 20 64 65 66 69 6e 65 20 54 43  lse.#  define TC
0830: 4c 4b 49 54 5f 4d 4f 55 4e 54 50 4f 49 4e 54 20  LKIT_MOUNTPOINT 
0840: 22 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65 78 65  "[info nameofexe
0850: 63 75 74 61 62 6c 65 5d 22 0a 23 20 20 64 65 66  cutable]".#  def
0860: 69 6e 65 20 54 43 4c 4b 49 54 5f 56 46 53 53 4f  ine TCLKIT_VFSSO
0870: 55 52 43 45 20 22 5b 69 6e 66 6f 20 6e 61 6d 65  URCE "[info name
0880: 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 22 0a 23  ofexecutable]".#
0890: 65 6e 64 69 66 20 2f 2a 20 54 43 4c 4b 49 54 5f  endif /* TCLKIT_
08a0: 44 4c 4c 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48  DLL */..#ifdef H
08b0: 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45 5f 44  AVE_ACCEPTABLE_D
08c0: 4c 41 44 44 52 0a 23 20 20 69 66 64 65 66 20 4b  LADDR.#  ifdef K
08d0: 49 54 53 48 5f 4e 45 45 44 5f 57 49 4e 4d 41 49  ITSH_NEED_WINMAI
08e0: 4e 0a 23 20 20 20 20 69 66 64 65 66 20 5f 57 49  N.#    ifdef _WI
08f0: 4e 33 32 5f 57 43 45 0a 69 6e 74 20 77 57 69 6e  N32_WCE.int wWin
0900: 4d 61 69 6e 28 48 49 4e 53 54 41 4e 43 45 20 68  Main(HINSTANCE h
0910: 49 6e 73 74 61 6e 63 65 2c 20 48 49 4e 53 54 41  Instance, HINSTA
0920: 4e 43 45 20 68 50 72 65 76 49 6e 73 74 61 6e 63  NCE hPrevInstanc
0930: 65 2c 20 4c 50 53 54 52 20 6c 70 73 7a 43 6d 64  e, LPSTR lpszCmd
0940: 4c 69 6e 65 2c 20 69 6e 74 20 6e 43 6d 64 53 68  Line, int nCmdSh
0950: 6f 77 29 3b 0a 23 20 20 20 20 65 6c 73 65 0a 69  ow);.#    else.i
0960: 6e 74 20 57 69 6e 4d 61 69 6e 28 48 49 4e 53 54  nt WinMain(HINST
0970: 41 4e 43 45 20 68 49 6e 73 74 61 6e 63 65 2c 20  ANCE hInstance, 
0980: 48 49 4e 53 54 41 4e 43 45 20 68 50 72 65 76 49  HINSTANCE hPrevI
0990: 6e 73 74 61 6e 63 65 2c 20 4c 50 53 54 52 20 6c  nstance, LPSTR l
09a0: 70 73 7a 43 6d 64 4c 69 6e 65 2c 20 69 6e 74 20  pszCmdLine, int 
09b0: 6e 43 6d 64 53 68 6f 77 29 3b 0a 23 20 20 20 20  nCmdShow);.#    
09c0: 65 6e 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32 5f  endif /* _WIN32_
09d0: 57 43 45 20 2a 2f 0a 23 20 20 65 6e 64 69 66 20  WCE */.#  endif 
09e0: 2f 2a 20 4b 49 54 53 48 5f 4e 45 45 44 5f 57 49  /* KITSH_NEED_WI
09f0: 4e 4d 41 49 4e 20 2a 2f 0a 69 6e 74 20 6d 61 69  NMAIN */.int mai
0a00: 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72  n(int argc, char
0a10: 20 2a 2a 61 72 67 76 29 3b 0a 23 65 6e 64 69 66   **argv);.#endif
0a20: 20 2f 2a 20 48 41 56 45 5f 41 43 43 45 50 54 41   /* HAVE_ACCEPTA
0a30: 42 4c 45 5f 44 4c 41 44 44 52 20 2a 2f 0a 0a 23  BLE_DLADDR */..#
0a40: 69 66 64 65 66 20 54 43 4c 4b 49 54 5f 52 45 51  ifdef TCLKIT_REQ
0a50: 55 49 52 45 5f 54 43 4c 45 58 45 43 55 54 41 42  UIRE_TCLEXECUTAB
0a60: 4c 45 4e 41 4d 45 0a 63 68 61 72 20 2a 74 63 6c  LENAME.char *tcl
0a70: 45 78 65 63 75 74 61 62 6c 65 4e 61 6d 65 3b 0a  ExecutableName;.
0a80: 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 20 41  #endif../*. *  A
0a90: 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 61  ttempt to load a
0aa0: 20 22 62 6f 6f 74 2e 74 63 6c 22 20 65 6e 74 72   "boot.tcl" entr
0ab0: 79 20 66 72 6f 6d 20 74 68 65 20 65 6d 62 65 64  y from the embed
0ac0: 64 65 64 20 4d 65 74 61 4b 69 74 20 66 69 6c 65  ded MetaKit file
0ad0: 2e 0a 20 2a 20 20 49 66 20 74 68 65 72 65 20 69  .. *  If there i
0ae0: 73 6e 27 74 20 6f 6e 65 2c 20 74 72 79 20 74 6f  sn't one, try to
0af0: 20 6f 70 65 6e 20 61 20 72 65 67 75 6c 61 72 20   open a regular 
0b00: 22 73 65 74 75 70 2e 74 63 6c 22 20 66 69 6c 65  "setup.tcl" file
0b10: 20 69 6e 73 74 65 61 64 2e 0a 20 2a 20 20 49 66   instead.. *  If
0b20: 20 74 68 61 74 20 66 61 69 6c 73 2c 20 74 68 69   that fails, thi
0b30: 73 20 63 6f 64 65 20 77 69 6c 6c 20 74 68 72 6f  s code will thro
0b40: 77 20 61 6e 20 65 72 72 6f 72 2c 20 75 73 69 6e  w an error, usin
0b50: 67 20 61 20 6d 65 73 73 61 67 65 20 62 6f 78 2e  g a message box.
0b60: 0a 20 2a 2f 0a 2f 2a 0a 20 2a 20 54 68 69 73 20  . */./*. * This 
0b70: 54 63 6c 20 63 6f 64 65 20 69 73 20 69 6e 76 6f  Tcl code is invo
0b80: 6b 65 64 20 77 68 65 6e 65 76 65 72 20 54 63 6c  ked whenever Tcl
0b90: 5f 49 6e 69 74 28 29 20 69 73 20 63 61 6c 6c 65  _Init() is calle
0ba0: 64 20 6f 6e 20 61 6e 0a 20 2a 20 69 6e 74 65 72  d on an. * inter
0bb0: 70 72 65 74 65 72 2e 20 20 49 74 20 73 68 6f 75  preter.  It shou
0bc0: 6c 64 20 6d 6f 75 6e 74 20 75 70 20 74 68 65 20  ld mount up the 
0bd0: 56 46 53 20 61 6e 64 20 6d 61 6b 65 20 65 76 65  VFS and make eve
0be0: 72 79 74 68 69 6e 67 20 72 65 61 64 79 20 66 6f  rything ready fo
0bf0: 72 0a 20 2a 20 74 68 61 74 20 69 6e 74 65 72 70  r. * that interp
0c00: 72 65 74 65 72 20 74 6f 20 64 6f 20 69 74 73 20  reter to do its 
0c10: 6a 6f 62 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20  job.. */.static 
0c20: 63 68 61 72 20 2a 70 72 65 49 6e 69 74 43 6d 64  char *preInitCmd
0c30: 20 3d 20 0a 23 69 66 20 64 65 66 69 6e 65 64 28   = .#if defined(
0c40: 5f 57 49 4e 33 32 5f 57 43 45 29 20 26 26 20 21  _WIN32_WCE) && !
0c50: 64 65 66 69 6e 65 64 28 54 43 4c 4b 49 54 5f 44  defined(TCLKIT_D
0c60: 4c 4c 29 0a 2f 2a 20 73 69 6c 6c 79 20 68 61 63  LL)./* silly hac
0c70: 6b 20 74 6f 20 67 65 74 20 77 69 6e 63 65 20 70  k to get wince p
0c80: 6f 72 74 20 74 6f 20 6c 61 75 6e 63 68 2c 20 73  ort to launch, s
0c90: 6f 6d 65 20 73 6f 72 74 20 6f 66 20 73 74 64 7b  ome sort of std{
0ca0: 69 6e 2c 6f 75 74 2c 65 72 72 7d 20 70 72 6f 62  in,out,err} prob
0cb0: 6c 65 6d 20 2a 2f 0a 22 6f 70 65 6e 20 2f 6b 69  lem */."open /ki
0cc0: 74 6f 75 74 2e 74 78 74 20 61 3b 20 6f 70 65 6e  tout.txt a; open
0cd0: 20 2f 6b 69 74 6f 75 74 2e 74 78 74 20 61 3b 20   /kitout.txt a; 
0ce0: 6f 70 65 6e 20 2f 6b 69 74 6f 75 74 2e 74 78 74  open /kitout.txt
0cf0: 20 61 5c 6e 22 0a 2f 2a 20 74 68 69 73 20 74 6f   a\n"./* this to
0d00: 6f 20 73 65 65 6d 73 20 74 6f 20 62 65 20 6e 65  o seems to be ne
0d10: 65 64 65 64 20 6f 6e 20 77 69 6e 63 65 20 2d 20  eded on wince - 
0d20: 69 74 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  it appears to be
0d30: 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65 20   related to the 
0d40: 61 62 6f 76 65 20 2a 2f 0a 22 63 61 74 63 68 20  above */."catch 
0d50: 7b 72 65 6e 61 6d 65 20 73 6f 75 72 63 65 20 3a  {rename source :
0d60: 3a 74 63 6c 3a 3a 73 6f 75 72 63 65 7d 5c 6e 22  :tcl::source}\n"
0d70: 0a 22 70 72 6f 63 20 73 6f 75 72 63 65 20 66 69  ."proc source fi
0d80: 6c 65 20 7b 5c 6e 22 0a 09 22 73 65 74 20 6f 6c  le {\n".."set ol
0d90: 64 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5c  d [info script]\
0da0: 6e 22 0a 09 22 69 6e 66 6f 20 73 63 72 69 70 74  n".."info script
0db0: 20 24 66 69 6c 65 5c 6e 22 0a 09 22 73 65 74 20   $file\n".."set 
0dc0: 66 69 64 20 5b 6f 70 65 6e 20 24 66 69 6c 65 5d  fid [open $file]
0dd0: 5c 6e 22 0a 09 22 73 65 74 20 64 61 74 61 20 5b  \n".."set data [
0de0: 72 65 61 64 20 24 66 69 64 5d 5c 6e 22 0a 09 22  read $fid]\n".."
0df0: 63 6c 6f 73 65 20 24 66 69 64 5c 6e 22 0a 09 22  close $fid\n".."
0e00: 73 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20  set code [catch 
0e10: 7b 75 70 6c 65 76 65 6c 20 31 20 24 64 61 74 61  {uplevel 1 $data
0e20: 7d 20 72 65 73 5d 5c 6e 22 0a 09 22 69 6e 66 6f  } res]\n".."info
0e30: 20 73 63 72 69 70 74 20 24 6f 6c 64 5c 6e 22 0a   script $old\n".
0e40: 09 22 69 66 20 7b 24 63 6f 64 65 20 3d 3d 20 32  ."if {$code == 2
0e50: 7d 20 7b 20 73 65 74 20 63 6f 64 65 20 30 20 7d  } { set code 0 }
0e60: 5c 6e 22 0a 09 22 72 65 74 75 72 6e 20 2d 63 6f  \n".."return -co
0e70: 64 65 20 24 63 6f 64 65 20 24 72 65 73 5c 6e 22  de $code $res\n"
0e80: 0a 22 7d 5c 6e 22 0a 23 65 6e 64 69 66 20 2f 2a  ."}\n".#endif /*
0e90: 20 5f 57 49 4e 33 32 5f 57 43 45 20 26 26 20 21   _WIN32_WCE && !
0ea0: 54 43 4c 4b 49 54 5f 44 4c 4c 20 2a 2f 0a 22 70  TCLKIT_DLL */."p
0eb0: 72 6f 63 20 74 63 6c 4b 69 74 49 6e 69 74 20 7b  roc tclKitInit {
0ec0: 7d 20 7b 5c 6e 22 0a 09 22 72 65 6e 61 6d 65 20  } {\n".."rename 
0ed0: 74 63 6c 4b 69 74 49 6e 69 74 20 7b 7d 5c 6e 22  tclKitInit {}\n"
0ee0: 0a 09 22 63 61 74 63 68 20 7b 20 6c 6f 61 64 20  .."catch { load 
0ef0: 7b 7d 20 76 66 73 20 7d 5c 6e 22 0a 23 69 66 64  {} vfs }\n".#ifd
0f00: 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f  ef KIT_INCLUDES_
0f10: 5a 4c 49 42 0a 09 22 63 61 74 63 68 20 7b 20 6c  ZLIB.."catch { l
0f20: 6f 61 64 20 7b 7d 20 7a 6c 69 62 20 7d 5c 6e 22  oad {} zlib }\n"
0f30: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 4b  .#endif.#ifdef K
0f40: 49 54 5f 49 4e 43 4c 55 44 45 53 5f 4d 4b 34 54  IT_INCLUDES_MK4T
0f50: 43 4c 0a 09 22 63 61 74 63 68 20 7b 20 6c 6f 61  CL.."catch { loa
0f60: 64 20 7b 7d 20 4d 6b 34 74 63 6c 20 7d 5c 6e 22  d {} Mk4tcl }\n"
0f70: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 54  .#endif.#ifdef T
0f80: 43 4c 4b 49 54 5f 44 4c 4c 0a 09 22 6c 6f 61 64  CLKIT_DLL.."load
0f90: 20 7b 7d 20 74 63 6c 6b 69 74 3a 3a 69 6e 69 74   {} tclkit::init
0fa0: 5c 6e 22 0a 09 22 3a 3a 74 63 6c 6b 69 74 3a 3a  \n".."::tclkit::
0fb0: 69 6e 69 74 3a 3a 69 6e 69 74 49 6e 74 65 72 70  init::initInterp
0fc0: 5c 6e 22 0a 09 22 72 65 6e 61 6d 65 20 3a 3a 74  \n".."rename ::t
0fd0: 63 6c 6b 69 74 3a 3a 69 6e 69 74 3a 3a 69 6e 69  clkit::init::ini
0fe0: 74 49 6e 74 65 72 70 20 7b 7d 5c 6e 22 0a 23 65  tInterp {}\n".#e
0ff0: 6e 64 69 66 20 2f 2a 20 54 43 4c 4b 49 54 5f 44  ndif /* TCLKIT_D
1000: 4c 4c 20 2a 2f 0a 09 22 73 65 74 20 62 6f 6f 74  LL */.."set boot
1010: 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  file [file join 
1020: 22 20 54 43 4c 4b 49 54 5f 4d 4f 55 4e 54 50 4f  " TCLKIT_MOUNTPO
1030: 49 4e 54 20 22 20 62 6f 6f 74 2e 74 63 6c 5d 5c  INT " boot.tcl]\
1040: 6e 22 0a 09 22 69 66 20 7b 5b 66 69 6c 65 20 65  n".."if {[file e
1050: 78 69 73 74 73 20 24 62 6f 6f 74 66 69 6c 65 5d  xists $bootfile]
1060: 7d 20 7b 5c 6e 22 0a 09 09 22 63 61 74 63 68 20  } {\n"..."catch 
1070: 7b 5c 6e 22 0a 09 09 09 22 73 65 74 20 66 20 5b  {\n"...."set f [
1080: 6f 70 65 6e 20 24 62 6f 6f 74 66 69 6c 65 5d 5c  open $bootfile]\
1090: 6e 22 0a 09 09 09 22 73 65 74 20 73 20 5b 72 65  n"...."set s [re
10a0: 61 64 20 24 66 5d 5c 6e 22 0a 09 09 09 22 63 6c  ad $f]\n"...."cl
10b0: 6f 73 65 20 24 66 5c 6e 22 0a 09 09 22 7d 5c 6e  ose $f\n"..."}\n
10c0: 22 0a 09 22 7d 20 65 6c 73 65 20 7b 5c 6e 22 0a  ".."} else {\n".
10d0: 09 09 22 73 65 74 20 3a 3a 54 43 4c 4b 49 54 5f  .."set ::TCLKIT_
10e0: 49 4e 49 54 56 46 53 20 31 5c 6e 22 0a 09 22 7d  INITVFS 1\n".."}
10f0: 5c 6e 22 0a 23 69 66 64 65 66 20 4b 49 54 5f 53  \n".#ifdef KIT_S
1100: 54 4f 52 41 47 45 5f 4d 4b 34 0a 09 22 73 65 74  TORAGE_MK4.."set
1110: 20 3a 3a 74 63 6c 4b 69 74 53 74 6f 72 61 67 65   ::tclKitStorage
1120: 20 5c 22 6d 6b 34 5c 22 5c 6e 22 0a 09 22 69 66   \"mk4\"\n".."if
1130: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1140: 73 5d 7d 20 7b 5c 6e 22 0a 09 09 22 6d 6b 3a 3a  s]} {\n"..."mk::
1150: 66 69 6c 65 20 6f 70 65 6e 20 65 78 65 20 22 20  file open exe " 
1160: 54 43 4c 4b 49 54 5f 56 46 53 53 4f 55 52 43 45  TCLKIT_VFSSOURCE
1170: 20 22 20 2d 72 65 61 64 6f 6e 6c 79 5c 6e 22 0a   " -readonly\n".
1180: 09 09 22 73 65 74 20 6e 20 5b 6d 6b 3a 3a 73 65  .."set n [mk::se
1190: 6c 65 63 74 20 65 78 65 2e 64 69 72 73 21 30 2e  lect exe.dirs!0.
11a0: 66 69 6c 65 73 20 6e 61 6d 65 20 62 6f 6f 74 2e  files name boot.
11b0: 74 63 6c 5d 5c 6e 22 0a 09 09 22 69 66 20 7b 24  tcl]\n"..."if {$
11c0: 6e 20 21 3d 20 5c 22 5c 22 7d 20 7b 5c 6e 22 0a  n != \"\"} {\n".
11d0: 09 09 09 22 73 65 74 20 73 20 5b 6d 6b 3a 3a 67  ..."set s [mk::g
11e0: 65 74 20 65 78 65 2e 64 69 72 73 21 30 2e 66 69  et exe.dirs!0.fi
11f0: 6c 65 73 21 24 6e 20 63 6f 6e 74 65 6e 74 73 5d  les!$n contents]
1200: 5c 6e 22 0a 09 09 09 22 69 66 20 7b 21 5b 73 74  \n"...."if {![st
1210: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 73 5d 7d  ring length $s]}
1220: 20 7b 20 65 72 72 6f 72 20 5c 22 65 6d 70 74 79   { error \"empty
1230: 20 62 6f 6f 74 2e 74 63 6c 5c 22 20 7d 5c 6e 22   boot.tcl\" }\n"
1240: 0a 09 09 09 22 63 61 74 63 68 20 7b 6c 6f 61 64  ...."catch {load
1250: 20 7b 7d 20 7a 6c 69 62 7d 5c 6e 22 0a 09 09 09   {} zlib}\n"....
1260: 22 69 66 20 7b 5b 6d 6b 3a 3a 67 65 74 20 65 78  "if {[mk::get ex
1270: 65 2e 64 69 72 73 21 30 2e 66 69 6c 65 73 21 24  e.dirs!0.files!$
1280: 6e 20 73 69 7a 65 5d 20 21 3d 20 5b 73 74 72 69  n size] != [stri
1290: 6e 67 20 6c 65 6e 67 74 68 20 24 73 5d 7d 20 7b  ng length $s]} {
12a0: 5c 6e 22 0a 09 09 09 09 22 73 65 74 20 73 20 5b  \n"....."set s [
12b0: 7a 6c 69 62 20 64 65 63 6f 6d 70 72 65 73 73 20  zlib decompress 
12c0: 24 73 5d 5c 6e 22 0a 09 09 09 22 7d 5c 6e 22 0a  $s]\n"...."}\n".
12d0: 09 09 22 7d 5c 6e 22 0a 09 22 7d 5c 6e 22 0a 23  .."}\n".."}\n".#
12e0: 65 6e 64 69 66 20 2f 2a 20 4b 49 54 5f 53 54 4f  endif /* KIT_STO
12f0: 52 41 47 45 5f 4d 4b 34 20 2a 2f 0a 23 69 66 64  RAGE_MK4 */.#ifd
1300: 65 66 20 4b 49 54 5f 53 54 4f 52 41 47 45 5f 5a  ef KIT_STORAGE_Z
1310: 49 50 0a 09 22 73 65 74 20 3a 3a 74 63 6c 4b 69  IP.."set ::tclKi
1320: 74 53 74 6f 72 61 67 65 20 5c 22 7a 69 70 5c 22  tStorage \"zip\"
1330: 5c 6e 22 0a 09 22 69 66 20 7b 21 5b 69 6e 66 6f  \n".."if {![info
1340: 20 65 78 69 73 74 73 20 73 5d 7d 20 7b 5c 6e 22   exists s]} {\n"
1350: 0a 23 20 20 69 6e 63 6c 75 64 65 20 22 7a 69 70  .#  include "zip
1360: 76 66 73 2e 74 63 6c 2e 68 22 0a 09 09 22 63 61  vfs.tcl.h"..."ca
1370: 74 63 68 20 7b 5c 6e 22 0a 09 09 09 22 73 65 74  tch {\n"...."set
1380: 20 3a 3a 74 63 6c 4b 69 74 53 74 6f 72 61 67 65   ::tclKitStorage
1390: 5f 66 64 20 5b 3a 3a 7a 69 70 3a 3a 6f 70 65 6e  _fd [::zip::open
13a0: 20 22 20 54 43 4c 4b 49 54 5f 56 46 53 53 4f 55   " TCLKIT_VFSSOU
13b0: 52 43 45 20 22 5d 5c 6e 22 0a 09 09 09 22 3a 3a  RCE "]\n"...."::
13c0: 7a 69 70 3a 3a 73 74 61 74 20 24 3a 3a 74 63 6c  zip::stat $::tcl
13d0: 4b 69 74 53 74 6f 72 61 67 65 5f 66 64 20 62 6f  KitStorage_fd bo
13e0: 6f 74 2e 74 63 6c 20 73 62 5c 6e 22 0a 09 09 09  ot.tcl sb\n"....
13f0: 22 73 65 65 6b 20 24 3a 3a 74 63 6c 4b 69 74 53  "seek $::tclKitS
1400: 74 6f 72 61 67 65 5f 66 64 20 24 73 62 28 69 6e  torage_fd $sb(in
1410: 6f 29 5c 6e 22 0a 09 09 09 22 3a 3a 7a 69 70 3a  o)\n"...."::zip:
1420: 3a 44 61 74 61 20 24 3a 3a 74 63 6c 4b 69 74 53  :Data $::tclKitS
1430: 74 6f 72 61 67 65 5f 66 64 20 73 62 20 73 5c 6e  torage_fd sb s\n
1440: 22 0a 09 09 22 7d 5c 6e 22 0a 09 22 7d 5c 6e 22  "..."}\n".."}\n"
1450: 0a 23 65 6e 64 69 66 20 2f 2a 20 4b 49 54 5f 53  .#endif /* KIT_S
1460: 54 4f 52 41 47 45 5f 5a 49 50 20 2a 2f 0a 23 69  TORAGE_ZIP */.#i
1470: 66 64 65 66 20 4b 49 54 5f 53 54 4f 52 41 47 45  fdef KIT_STORAGE
1480: 5f 43 56 46 53 0a 09 22 73 65 74 20 3a 3a 74 63  _CVFS.."set ::tc
1490: 6c 4b 69 74 53 74 6f 72 61 67 65 20 5c 22 63 76  lKitStorage \"cv
14a0: 66 73 5c 22 5c 6e 22 0a 09 22 6c 6f 61 64 20 7b  fs\"\n".."load {
14b0: 7d 20 72 65 63 68 61 6e 5c 6e 22 0a 09 22 6c 6f  } rechan\n".."lo
14c0: 61 64 20 7b 7d 20 63 76 66 73 5f 64 61 74 61 5f  ad {} cvfs_data_
14d0: 74 63 6c 5c 6e 22 0a 23 69 6e 63 6c 75 64 65 20  tcl\n".#include 
14e0: 22 63 76 66 73 2e 74 63 6c 2e 68 22 0a 09 22 69  "cvfs.tcl.h".."i
14f0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1500: 20 73 5d 7d 20 7b 5c 6e 22 0a 09 09 22 63 61 74   s]} {\n"..."cat
1510: 63 68 20 7b 5c 6e 22 0a 09 09 09 22 73 65 74 20  ch {\n"...."set 
1520: 73 20 5b 3a 3a 76 66 73 3a 3a 63 76 66 73 3a 3a  s [::vfs::cvfs::
1530: 64 61 74 61 3a 3a 67 65 74 44 61 74 61 20 74 63  data::getData tc
1540: 6c 20 62 6f 6f 74 2e 74 63 6c 5d 5c 6e 22 0a 09  l boot.tcl]\n"..
1550: 09 22 7d 5c 6e 22 0a 09 22 7d 5c 6e 22 0a 23 65  ."}\n".."}\n".#e
1560: 6e 64 69 66 20 2f 2a 20 4b 49 54 5f 53 54 4f 52  ndif /* KIT_STOR
1570: 41 47 45 5f 43 56 46 53 20 2a 2f 0a 23 69 66 6e  AGE_CVFS */.#ifn
1580: 64 65 66 20 54 43 4c 4b 49 54 5f 44 4c 4c 0a 09  def TCLKIT_DLL..
1590: 22 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73  "if {![info exis
15a0: 74 73 20 73 5d 7d 20 7b 5c 6e 22 0a 09 09 22 73  ts s]} {\n"..."s
15b0: 65 74 20 66 20 5b 6f 70 65 6e 20 73 65 74 75 70  et f [open setup
15c0: 2e 74 63 6c 5d 5c 6e 22 0a 09 09 22 73 65 74 20  .tcl]\n"..."set 
15d0: 73 20 5b 72 65 61 64 20 24 66 5d 5c 6e 22 0a 09  s [read $f]\n"..
15e0: 09 22 63 6c 6f 73 65 20 24 66 5c 6e 22 0a 09 22  ."close $f\n".."
15f0: 7d 5c 6e 22 0a 23 65 6e 64 69 66 20 2f 2a 20 21  }\n".#endif /* !
1600: 54 43 4c 4b 49 54 5f 44 4c 4c 20 2a 2f 0a 23 69  TCLKIT_DLL */.#i
1610: 66 64 65 66 20 54 43 4c 4b 49 54 5f 44 4c 4c 0a  fdef TCLKIT_DLL.
1620: 09 22 73 65 74 20 3a 3a 54 43 4c 4b 49 54 5f 54  ."set ::TCLKIT_T
1630: 59 50 45 20 5c 22 6b 69 74 64 6c 6c 5c 22 5c 6e  YPE \"kitdll\"\n
1640: 22 0a 23 65 6c 73 65 0a 09 22 73 65 74 20 3a 3a  ".#else.."set ::
1650: 54 43 4c 4b 49 54 5f 54 59 50 45 20 5c 22 74 63  TCLKIT_TYPE \"tc
1660: 6c 6b 69 74 5c 22 5c 6e 22 0a 23 65 6e 64 69 66  lkit\"\n".#endif
1670: 20 2f 2a 20 54 43 4c 4b 49 54 5f 44 4c 4c 20 2a   /* TCLKIT_DLL *
1680: 2f 0a 09 22 73 65 74 20 3a 3a 54 43 4c 4b 49 54  /.."set ::TCLKIT
1690: 5f 4d 4f 55 4e 54 50 4f 49 4e 54 20 22 20 54 43  _MOUNTPOINT " TC
16a0: 4c 4b 49 54 5f 4d 4f 55 4e 54 50 4f 49 4e 54 20  LKIT_MOUNTPOINT 
16b0: 22 5c 6e 22 0a 09 22 73 65 74 20 3a 3a 54 43 4c  "\n".."set ::TCL
16c0: 4b 49 54 5f 56 46 53 53 4f 55 52 43 45 20 22 20  KIT_VFSSOURCE " 
16d0: 54 43 4c 4b 49 54 5f 56 46 53 53 4f 55 52 43 45  TCLKIT_VFSSOURCE
16e0: 20 22 5c 6e 22 0a 09 22 73 65 74 20 3a 3a 54 43   "\n".."set ::TC
16f0: 4c 4b 49 54 5f 4d 4f 55 4e 54 50 4f 49 4e 54 5f  LKIT_MOUNTPOINT_
1700: 56 41 52 20 7b 22 20 54 43 4c 4b 49 54 5f 4d 4f  VAR {" TCLKIT_MO
1710: 55 4e 54 50 4f 49 4e 54 20 22 7d 5c 6e 22 0a 09  UNTPOINT "}\n"..
1720: 22 73 65 74 20 3a 3a 54 43 4c 4b 49 54 5f 56 46  "set ::TCLKIT_VF
1730: 53 53 4f 55 52 43 45 5f 56 41 52 20 7b 22 20 54  SSOURCE_VAR {" T
1740: 43 4c 4b 49 54 5f 56 46 53 53 4f 55 52 43 45 20  CLKIT_VFSSOURCE 
1750: 22 7d 5c 6e 22 0a 09 22 75 70 6c 65 76 65 6c 20  "}\n".."uplevel 
1760: 23 30 20 24 73 5c 6e 22 0a 23 69 66 20 64 65 66  #0 $s\n".#if def
1770: 69 6e 65 64 28 4b 49 54 5f 49 4e 43 4c 55 44 45  ined(KIT_INCLUDE
1780: 53 5f 54 4b 29 20 26 26 20 64 65 66 69 6e 65 64  S_TK) && defined
1790: 28 4b 49 54 5f 54 4b 5f 56 45 52 53 49 4f 4e 29  (KIT_TK_VERSION)
17a0: 0a 09 22 70 61 63 6b 61 67 65 20 69 66 6e 65 65  .."package ifnee
17b0: 64 65 64 20 54 6b 20 22 20 4b 49 54 5f 54 4b 5f  ded Tk " KIT_TK_
17c0: 56 45 52 53 49 4f 4e 20 22 20 7b 5c 6e 22 0a 09  VERSION " {\n"..
17d0: 09 22 6c 6f 61 64 20 7b 7d 20 54 6b 5c 6e 22 0a  ."load {} Tk\n".
17e0: 09 22 7d 5c 6e 22 0a 23 65 6e 64 69 66 0a 23 69  ."}\n".#endif.#i
17f0: 66 64 65 66 20 5f 57 49 4e 33 32 0a 09 22 63 61  fdef _WIN32.."ca
1800: 74 63 68 20 7b 6c 6f 61 64 20 7b 7d 20 64 64 65  tch {load {} dde
1810: 7d 5c 6e 22 0a 09 22 63 61 74 63 68 20 7b 6c 6f  }\n".."catch {lo
1820: 61 64 20 7b 7d 20 72 65 67 69 73 74 72 79 7d 5c  ad {} registry}\
1830: 6e 22 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 57 49  n".#endif /* _WI
1840: 4e 33 32 20 2a 2f 0a 09 22 72 65 74 75 72 6e 20  N32 */.."return 
1850: 30 5c 6e 22 0a 22 7d 5c 6e 22 0a 22 74 63 6c 4b  0\n"."}\n"."tclK
1860: 69 74 49 6e 69 74 22 3b 0a 0a 73 74 61 74 69 63  itInit";..static
1870: 20 63 6f 6e 73 74 20 63 68 61 72 20 69 6e 69 74   const char init
1880: 53 63 72 69 70 74 5b 5d 20 3d 0a 22 69 66 20 7b  Script[] =."if {
1890: 5b 66 69 6c 65 20 69 73 66 69 6c 65 20 5b 66 69  [file isfile [fi
18a0: 6c 65 20 6a 6f 69 6e 20 5b 69 6e 66 6f 20 6e 61  le join [info na
18b0: 6d 65 6f 66 65 78 65 5d 20 6d 61 69 6e 2e 74 63  meofexe] main.tc
18c0: 6c 5d 5d 7d 20 7b 5c 6e 22 0a 09 22 69 66 20 7b  l]]} {\n".."if {
18d0: 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 63  [info commands c
18e0: 6f 6e 73 6f 6c 65 5d 20 21 3d 20 7b 7d 7d 20 7b  onsole] != {}} {
18f0: 20 63 6f 6e 73 6f 6c 65 20 68 69 64 65 20 7d 5c   console hide }\
1900: 6e 22 0a 09 22 73 65 74 20 74 63 6c 5f 69 6e 74  n".."set tcl_int
1910: 65 72 61 63 74 69 76 65 20 30 5c 6e 22 0a 09 22  eractive 0\n".."
1920: 69 6e 63 72 20 61 72 67 63 5c 6e 22 0a 09 22 73  incr argc\n".."s
1930: 65 74 20 61 72 67 76 20 5b 6c 69 6e 73 65 72 74  et argv [linsert
1940: 20 24 61 72 67 76 20 30 20 24 61 72 67 76 30 5d   $argv 0 $argv0]
1950: 5c 6e 22 0a 09 22 73 65 74 20 61 72 67 76 30 20  \n".."set argv0 
1960: 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 69 6e 66 6f  [file join [info
1970: 20 6e 61 6d 65 6f 66 65 78 65 5d 20 6d 61 69 6e   nameofexe] main
1980: 2e 74 63 6c 5d 5c 6e 22 0a 22 7d 20 65 6c 73 65  .tcl]\n"."} else
1990: 20 63 6f 6e 74 69 6e 75 65 5c 6e 22 3b 0a 0a 2f   continue\n";../
19a0: 2a 20 53 65 74 45 78 65 63 4e 61 6d 65 20 2d 2d  * SetExecName --
19b0: 0a 0a 20 20 20 48 61 63 6b 20 74 6f 20 67 65 74  ..   Hack to get
19c0: 20 61 72 6f 75 6e 64 20 54 63 6c 20 62 75 67 20   around Tcl bug 
19d0: 31 32 32 34 38 38 38 2e 0a 2a 2f 0a 73 74 61 74  1224888..*/.stat
19e0: 69 63 20 76 6f 69 64 20 53 65 74 45 78 65 63 4e  ic void SetExecN
19f0: 61 6d 65 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a  ame(Tcl_Interp *
1a00: 69 6e 74 65 72 70 2c 20 63 6f 6e 73 74 20 63 68  interp, const ch
1a10: 61 72 20 2a 70 61 74 68 29 20 7b 0a 23 69 66 64  ar *path) {.#ifd
1a20: 65 66 20 54 43 4c 4b 49 54 5f 52 45 51 55 49 52  ef TCLKIT_REQUIR
1a30: 45 5f 54 43 4c 45 58 45 43 55 54 41 42 4c 45 4e  E_TCLEXECUTABLEN
1a40: 41 4d 45 0a 09 74 63 6c 45 78 65 63 75 74 61 62  AME..tclExecutab
1a50: 6c 65 4e 61 6d 65 20 3d 20 73 74 72 64 75 70 28  leName = strdup(
1a60: 70 61 74 68 29 3b 0a 23 65 6e 64 69 66 0a 09 54  path);.#endif..T
1a70: 63 6c 5f 46 69 6e 64 45 78 65 63 75 74 61 62 6c  cl_FindExecutabl
1a80: 65 28 70 61 74 68 29 3b 0a 0a 09 72 65 74 75 72  e(path);...retur
1a90: 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69  n;.}..static voi
1aa0: 64 20 46 69 6e 64 41 6e 64 53 65 74 45 78 65 63  d FindAndSetExec
1ab0: 4e 61 6d 65 28 54 63 6c 5f 49 6e 74 65 72 70 20  Name(Tcl_Interp 
1ac0: 2a 69 6e 74 65 72 70 29 20 7b 0a 09 69 6e 74 20  *interp) {..int 
1ad0: 6c 65 6e 20 3d 20 30 3b 0a 09 54 63 6c 5f 4f 62  len = 0;..Tcl_Ob
1ae0: 6a 20 2a 65 78 65 63 4e 61 6d 65 4f 62 6a 3b 0a  j *execNameObj;.
1af0: 09 54 63 6c 5f 4f 62 6a 20 2a 6c 6f 62 6a 76 5b  .Tcl_Obj *lobjv[
1b00: 31 5d 3b 0a 23 69 66 64 65 66 20 48 41 56 45 5f  1];.#ifdef HAVE_
1b10: 52 45 41 44 4c 49 4e 4b 0a 09 73 73 69 7a 65 5f  READLINK..ssize_
1b20: 74 20 72 65 61 64 6c 69 6e 6b 5f 72 65 74 3b 0a  t readlink_ret;.
1b30: 09 63 68 61 72 20 65 78 65 5f 62 75 66 5b 34 30  .char exe_buf[40
1b40: 39 36 5d 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 48  96];.#endif /* H
1b50: 41 56 45 5f 52 45 41 44 4c 49 4e 4b 20 2a 2f 0a  AVE_READLINK */.
1b60: 23 69 66 64 65 66 20 48 41 56 45 5f 41 43 43 45  #ifdef HAVE_ACCE
1b70: 50 54 41 42 4c 45 5f 44 4c 41 44 44 52 0a 09 44  PTABLE_DLADDR..D
1b80: 6c 5f 69 6e 66 6f 20 73 79 6d 69 6e 66 6f 3b 0a  l_info syminfo;.
1b90: 09 69 6e 74 20 64 6c 61 64 64 72 5f 72 65 74 3b  .int dladdr_ret;
1ba0: 0a 23 65 6e 64 69 66 20 2f 2a 20 48 41 56 45 5f  .#endif /* HAVE_
1bb0: 41 43 43 45 50 54 41 42 4c 45 5f 44 4c 41 44 44  ACCEPTABLE_DLADD
1bc0: 52 20 2a 2f 20 0a 0a 23 69 66 64 65 66 20 48 41  R */ ..#ifdef HA
1bd0: 56 45 5f 52 45 41 44 4c 49 4e 4b 0a 09 69 66 20  VE_READLINK..if 
1be0: 28 54 63 6c 5f 47 65 74 4e 61 6d 65 4f 66 45 78  (Tcl_GetNameOfEx
1bf0: 65 63 75 74 61 62 6c 65 28 29 20 3d 3d 20 4e 55  ecutable() == NU
1c00: 4c 4c 29 20 7b 0a 09 09 72 65 61 64 6c 69 6e 6b  LL) {...readlink
1c10: 5f 72 65 74 20 3d 20 72 65 61 64 6c 69 6e 6b 28  _ret = readlink(
1c20: 22 2f 70 72 6f 63 2f 73 65 6c 66 2f 65 78 65 22  "/proc/self/exe"
1c30: 2c 20 65 78 65 5f 62 75 66 2c 20 73 69 7a 65 6f  , exe_buf, sizeo
1c40: 66 28 65 78 65 5f 62 75 66 29 20 2d 20 31 29 3b  f(exe_buf) - 1);
1c50: 0a 0a 09 09 69 66 20 28 72 65 61 64 6c 69 6e 6b  ....if (readlink
1c60: 5f 72 65 74 20 3e 20 30 20 26 26 20 72 65 61 64  _ret > 0 && read
1c70: 6c 69 6e 6b 5f 72 65 74 20 3c 20 28 73 69 7a 65  link_ret < (size
1c80: 6f 66 28 65 78 65 5f 62 75 66 29 20 2d 20 31 29  of(exe_buf) - 1)
1c90: 29 20 7b 0a 09 09 09 65 78 65 5f 62 75 66 5b 72  ) {....exe_buf[r
1ca0: 65 61 64 6c 69 6e 6b 5f 72 65 74 5d 20 3d 20 27  eadlink_ret] = '
1cb0: 5c 30 27 3b 0a 0a 09 09 09 53 65 74 45 78 65 63  \0';.....SetExec
1cc0: 4e 61 6d 65 28 69 6e 74 65 72 70 2c 20 65 78 65  Name(interp, exe
1cd0: 5f 62 75 66 29 3b 0a 0a 09 09 09 72 65 74 75 72  _buf);.....retur
1ce0: 6e 3b 0a 09 09 7d 0a 09 7d 0a 0a 09 69 66 20 28  n;...}..}...if (
1cf0: 54 63 6c 5f 47 65 74 4e 61 6d 65 4f 66 45 78 65  Tcl_GetNameOfExe
1d00: 63 75 74 61 62 6c 65 28 29 20 3d 3d 20 4e 55 4c  cutable() == NUL
1d10: 4c 29 20 7b 0a 09 09 72 65 61 64 6c 69 6e 6b 5f  L) {...readlink_
1d20: 72 65 74 20 3d 20 72 65 61 64 6c 69 6e 6b 28 22  ret = readlink("
1d30: 2f 70 72 6f 63 2f 63 75 72 70 72 6f 63 2f 66 69  /proc/curproc/fi
1d40: 6c 65 22 2c 20 65 78 65 5f 62 75 66 2c 20 73 69  le", exe_buf, si
1d50: 7a 65 6f 66 28 65 78 65 5f 62 75 66 29 20 2d 20  zeof(exe_buf) - 
1d60: 31 29 3b 0a 0a 09 09 69 66 20 28 72 65 61 64 6c  1);....if (readl
1d70: 69 6e 6b 5f 72 65 74 20 3e 20 30 20 26 26 20 72  ink_ret > 0 && r
1d80: 65 61 64 6c 69 6e 6b 5f 72 65 74 20 3c 20 28 73  eadlink_ret < (s
1d90: 69 7a 65 6f 66 28 65 78 65 5f 62 75 66 29 20 2d  izeof(exe_buf) -
1da0: 20 31 29 29 20 7b 0a 09 09 09 65 78 65 5f 62 75   1)) {....exe_bu
1db0: 66 5b 72 65 61 64 6c 69 6e 6b 5f 72 65 74 5d 20  f[readlink_ret] 
1dc0: 3d 20 27 5c 30 27 3b 0a 0a 09 09 09 69 66 20 28  = '\0';.....if (
1dd0: 73 74 72 63 6d 70 28 65 78 65 5f 62 75 66 2c 20  strcmp(exe_buf, 
1de0: 22 75 6e 6b 6e 6f 77 6e 22 29 20 21 3d 20 30 29  "unknown") != 0)
1df0: 20 7b 0a 09 09 09 09 53 65 74 45 78 65 63 4e 61   {.....SetExecNa
1e00: 6d 65 28 69 6e 74 65 72 70 2c 20 65 78 65 5f 62  me(interp, exe_b
1e10: 75 66 29 3b 0a 0a 09 09 09 09 72 65 74 75 72 6e  uf);......return
1e20: 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 7d 0a 23 65  ;....}...}..}.#e
1e30: 6e 64 69 66 20 2f 2a 20 48 41 56 45 5f 52 45 41  ndif /* HAVE_REA
1e40: 44 4c 49 4e 4b 20 2a 2f 0a 0a 23 69 66 64 65 66  DLINK */..#ifdef
1e50: 20 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45   HAVE_ACCEPTABLE
1e60: 5f 44 4c 41 44 44 52 0a 23 20 20 69 66 6e 64 65  _DLADDR.#  ifnde
1e70: 66 20 54 43 4c 4b 49 54 5f 44 4c 4c 0a 09 69 66  f TCLKIT_DLL..if
1e80: 20 28 54 63 6c 5f 47 65 74 4e 61 6d 65 4f 66 45   (Tcl_GetNameOfE
1e90: 78 65 63 75 74 61 62 6c 65 28 29 20 3d 3d 20 4e  xecutable() == N
1ea0: 55 4c 4c 29 20 7b 0a 09 09 64 6c 61 64 64 72 5f  ULL) {...dladdr_
1eb0: 72 65 74 20 3d 20 64 6c 61 64 64 72 28 26 53 65  ret = dladdr(&Se
1ec0: 74 45 78 65 63 4e 61 6d 65 2c 20 26 73 79 6d 69  tExecName, &symi
1ed0: 6e 66 6f 29 3b 0a 09 09 69 66 20 28 64 6c 61 64  nfo);...if (dlad
1ee0: 64 72 5f 72 65 74 20 21 3d 20 30 29 20 7b 0a 09  dr_ret != 0) {..
1ef0: 09 09 53 65 74 45 78 65 63 4e 61 6d 65 28 69 6e  ..SetExecName(in
1f00: 74 65 72 70 2c 20 73 79 6d 69 6e 66 6f 2e 64 6c  terp, syminfo.dl
1f10: 69 5f 66 6e 61 6d 65 29 3b 0a 0a 09 09 09 72 65  i_fname);.....re
1f20: 74 75 72 6e 3b 0a 09 09 7d 0a 09 7d 0a 23 20 20  turn;...}..}.#  
1f30: 65 6e 64 69 66 20 2f 2a 20 21 54 43 4c 4b 49 54  endif /* !TCLKIT
1f40: 5f 44 4c 4c 20 2a 2f 0a 0a 23 20 20 69 66 64 65  _DLL */..#  ifde
1f50: 66 20 4b 49 54 53 48 5f 4e 45 45 44 5f 57 49 4e  f KITSH_NEED_WIN
1f60: 4d 41 49 4e 0a 09 69 66 20 28 54 63 6c 5f 47 65  MAIN..if (Tcl_Ge
1f70: 74 4e 61 6d 65 4f 66 45 78 65 63 75 74 61 62 6c  tNameOfExecutabl
1f80: 65 28 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 23  e() == NULL) {.#
1f90: 20 20 20 20 69 66 64 65 66 20 5f 57 49 4e 33 32      ifdef _WIN32
1fa0: 5f 57 43 45 0a 09 09 64 6c 61 64 64 72 5f 72 65  _WCE...dladdr_re
1fb0: 74 20 3d 20 64 6c 61 64 64 72 28 26 57 69 6e 4d  t = dladdr(&WinM
1fc0: 61 69 6e 2c 20 26 73 79 6d 69 6e 66 6f 29 3b 0a  ain, &syminfo);.
1fd0: 23 20 20 20 20 65 6c 73 65 0a 09 09 64 6c 61 64  #    else...dlad
1fe0: 64 72 5f 72 65 74 20 3d 20 64 6c 61 64 64 72 28  dr_ret = dladdr(
1ff0: 26 77 57 69 6e 4d 61 69 6e 2c 20 26 73 79 6d 69  &wWinMain, &symi
2000: 6e 66 6f 29 3b 0a 23 20 20 20 20 65 6e 64 69 66  nfo);.#    endif
2010: 20 2f 2a 20 5f 57 49 4e 33 32 5f 57 43 45 20 2a   /* _WIN32_WCE *
2020: 2f 0a 0a 09 09 69 66 20 28 64 6c 61 64 64 72 5f  /....if (dladdr_
2030: 72 65 74 20 21 3d 20 30 29 20 7b 0a 09 09 09 53  ret != 0) {....S
2040: 65 74 45 78 65 63 4e 61 6d 65 28 69 6e 74 65 72  etExecName(inter
2050: 70 2c 20 73 79 6d 69 6e 66 6f 2e 64 6c 69 5f 66  p, syminfo.dli_f
2060: 6e 61 6d 65 29 3b 0a 0a 09 09 09 72 65 74 75 72  name);.....retur
2070: 6e 3b 0a 09 09 7d 0a 09 7d 0a 23 20 20 65 6e 64  n;...}..}.#  end
2080: 69 66 20 2f 2a 20 4b 49 54 53 48 5f 4e 45 45 44  if /* KITSH_NEED
2090: 5f 57 49 4e 4d 41 49 4e 20 2a 2f 0a 0a 09 69 66  _WINMAIN */...if
20a0: 20 28 54 63 6c 5f 47 65 74 4e 61 6d 65 4f 66 45   (Tcl_GetNameOfE
20b0: 78 65 63 75 74 61 62 6c 65 28 29 20 3d 3d 20 4e  xecutable() == N
20c0: 55 4c 4c 29 20 7b 0a 09 09 64 6c 61 64 64 72 5f  ULL) {...dladdr_
20d0: 72 65 74 20 3d 20 64 6c 61 64 64 72 28 26 6d 61  ret = dladdr(&ma
20e0: 69 6e 2c 20 26 73 79 6d 69 6e 66 6f 29 3b 0a 09  in, &syminfo);..
20f0: 09 69 66 20 28 64 6c 61 64 64 72 5f 72 65 74 20  .if (dladdr_ret 
2100: 21 3d 20 30 29 20 7b 0a 09 09 09 53 65 74 45 78  != 0) {....SetEx
2110: 65 63 4e 61 6d 65 28 69 6e 74 65 72 70 2c 20 73  ecName(interp, s
2120: 79 6d 69 6e 66 6f 2e 64 6c 69 5f 66 6e 61 6d 65  yminfo.dli_fname
2130: 29 3b 0a 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09  );.....return;..
2140: 09 7d 0a 09 7d 0a 23 65 6e 64 69 66 20 2f 2a 20  .}..}.#endif /* 
2150: 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45 5f  HAVE_ACCEPTABLE_
2160: 44 4c 41 44 44 52 20 2a 2f 0a 0a 09 69 66 20 28  DLADDR */...if (
2170: 54 63 6c 5f 47 65 74 4e 61 6d 65 4f 66 45 78 65  Tcl_GetNameOfExe
2180: 63 75 74 61 62 6c 65 28 29 20 3d 3d 20 4e 55 4c  cutable() == NUL
2190: 4c 29 20 7b 0a 09 09 6c 6f 62 6a 76 5b 30 5d 20  L) {...lobjv[0] 
21a0: 3d 20 54 63 6c 5f 47 65 74 56 61 72 32 45 78 28  = Tcl_GetVar2Ex(
21b0: 69 6e 74 65 72 70 2c 20 22 61 72 67 76 30 22 2c  interp, "argv0",
21c0: 20 4e 55 4c 4c 2c 20 54 43 4c 5f 47 4c 4f 42 41   NULL, TCL_GLOBA
21d0: 4c 5f 4f 4e 4c 59 29 3b 0a 09 09 65 78 65 63 4e  L_ONLY);...execN
21e0: 61 6d 65 4f 62 6a 20 3d 20 54 63 6c 5f 46 53 4a  ameObj = Tcl_FSJ
21f0: 6f 69 6e 54 6f 50 61 74 68 28 54 63 6c 5f 46 53  oinToPath(Tcl_FS
2200: 47 65 74 43 77 64 28 69 6e 74 65 72 70 29 2c 20  GetCwd(interp), 
2210: 31 2c 20 6c 6f 62 6a 76 29 3b 0a 0a 09 09 53 65  1, lobjv);....Se
2220: 74 45 78 65 63 4e 61 6d 65 28 69 6e 74 65 72 70  tExecName(interp
2230: 2c 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 46  , Tcl_GetStringF
2240: 72 6f 6d 4f 62 6a 28 65 78 65 63 4e 61 6d 65 4f  romObj(execNameO
2250: 62 6a 2c 20 26 6c 65 6e 29 29 3b 0a 0a 09 09 72  bj, &len));....r
2260: 65 74 75 72 6e 3b 0a 09 7d 0a 0a 09 72 65 74 75  eturn;..}...retu
2270: 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f  rn;.}..static vo
2280: 69 64 20 5f 54 63 6c 6b 69 74 5f 47 65 6e 65 72  id _Tclkit_Gener
2290: 69 63 5f 49 6e 69 74 28 76 6f 69 64 29 20 7b 0a  ic_Init(void) {.
22a0: 23 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55  #ifdef KIT_INCLU
22b0: 44 45 53 5f 49 54 43 4c 0a 09 54 63 6c 5f 53 74  DES_ITCL..Tcl_St
22c0: 61 74 69 63 50 61 63 6b 61 67 65 28 30 2c 20 22  aticPackage(0, "
22d0: 49 74 63 6c 22 2c 20 49 74 63 6c 5f 49 6e 69 74  Itcl", Itcl_Init
22e0: 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e 64 69 66 20  , NULL);.#endif 
22f0: 0a 23 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c  .#ifdef KIT_INCL
2300: 55 44 45 53 5f 4d 4b 34 54 43 4c 0a 09 54 63 6c  UDES_MK4TCL..Tcl
2310: 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65 28 30  _StaticPackage(0
2320: 2c 20 22 4d 6b 34 74 63 6c 22 2c 20 4d 6b 34 74  , "Mk4tcl", Mk4t
2330: 63 6c 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a  cl_Init, NULL);.
2340: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 4b 49  #endif.#ifdef KI
2350: 54 5f 49 4e 43 4c 55 44 45 53 5f 50 57 42 0a 09  T_INCLUDES_PWB..
2360: 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67  Tcl_StaticPackag
2370: 65 28 30 2c 20 22 70 77 62 22 2c 20 50 77 62 5f  e(0, "pwb", Pwb_
2380: 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e  Init, NULL);.#en
2390: 64 69 66 20 0a 09 54 63 6c 5f 53 74 61 74 69 63  dif ..Tcl_Static
23a0: 50 61 63 6b 61 67 65 28 30 2c 20 22 72 65 63 68  Package(0, "rech
23b0: 61 6e 22 2c 20 52 65 63 68 61 6e 5f 49 6e 69 74  an", Rechan_Init
23c0: 2c 20 4e 55 4c 4c 29 3b 0a 09 54 63 6c 5f 53 74  , NULL);..Tcl_St
23d0: 61 74 69 63 50 61 63 6b 61 67 65 28 30 2c 20 22  aticPackage(0, "
23e0: 76 66 73 22 2c 20 56 66 73 5f 49 6e 69 74 2c 20  vfs", Vfs_Init, 
23f0: 4e 55 4c 4c 29 3b 0a 23 69 66 64 65 66 20 4b 49  NULL);.#ifdef KI
2400: 54 5f 49 4e 43 4c 55 44 45 53 5f 5a 4c 49 42 0a  T_INCLUDES_ZLIB.
2410: 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61  .Tcl_StaticPacka
2420: 67 65 28 30 2c 20 22 7a 6c 69 62 22 2c 20 5a 6c  ge(0, "zlib", Zl
2430: 69 62 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a  ib_Init, NULL);.
2440: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 4b 49  #endif.#ifdef KI
2450: 54 5f 53 54 4f 52 41 47 45 5f 43 56 46 53 0a 09  T_STORAGE_CVFS..
2460: 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67  Tcl_StaticPackag
2470: 65 28 30 2c 20 22 63 76 66 73 5f 64 61 74 61 5f  e(0, "cvfs_data_
2480: 74 63 6c 22 2c 20 43 76 66 73 5f 64 61 74 61 5f  tcl", Cvfs_data_
2490: 74 63 6c 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b  tcl_Init, NULL);
24a0: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 54  .#endif.#ifdef T
24b0: 43 4c 5f 54 48 52 45 41 44 53 0a 09 54 63 6c 5f  CL_THREADS..Tcl_
24c0: 53 74 61 74 69 63 50 61 63 6b 61 67 65 28 30 2c  StaticPackage(0,
24d0: 20 22 54 68 72 65 61 64 22 2c 20 54 68 72 65 61   "Thread", Threa
24e0: 64 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a 23  d_Init, NULL);.#
24f0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 5f 57 49  endif.#ifdef _WI
2500: 4e 33 32 0a 09 54 63 6c 5f 53 74 61 74 69 63 50  N32..Tcl_StaticP
2510: 61 63 6b 61 67 65 28 30 2c 20 22 64 64 65 22 2c  ackage(0, "dde",
2520: 20 44 64 65 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29   Dde_Init, NULL)
2530: 3b 0a 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63  ;..Tcl_StaticPac
2540: 6b 61 67 65 28 30 2c 20 22 72 65 67 69 73 74 72  kage(0, "registr
2550: 79 22 2c 20 52 65 67 69 73 74 72 79 5f 49 6e 69  y", Registry_Ini
2560: 74 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e 64 69 66  t, NULL);.#endif
2570: 0a 23 69 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c  .#ifdef KIT_INCL
2580: 55 44 45 53 5f 54 4b 0a 09 54 63 6c 5f 53 74 61  UDES_TK..Tcl_Sta
2590: 74 69 63 50 61 63 6b 61 67 65 28 30 2c 20 22 54  ticPackage(0, "T
25a0: 6b 22 2c 20 54 6b 5f 49 6e 69 74 2c 20 54 6b 5f  k", Tk_Init, Tk_
25b0: 53 61 66 65 49 6e 69 74 29 3b 0a 23 65 6e 64 69  SafeInit);.#endi
25c0: 66 0a 0a 09 54 63 6c 53 65 74 50 72 65 49 6e 69  f...TclSetPreIni
25d0: 74 53 63 72 69 70 74 28 70 72 65 49 6e 69 74 43  tScript(preInitC
25e0: 6d 64 29 3b 0a 0a 09 72 65 74 75 72 6e 3b 0a 7d  md);...return;.}
25f0: 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 54  ..static void _T
2600: 63 6c 6b 69 74 5f 49 6e 74 65 72 70 5f 49 6e 69  clkit_Interp_Ini
2610: 74 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e  t(Tcl_Interp *in
2620: 74 65 72 70 29 20 7b 0a 23 69 66 64 65 66 20 54  terp) {.#ifdef T
2630: 43 4c 4b 49 54 5f 43 41 4e 5f 53 45 54 5f 45 4e  CLKIT_CAN_SET_EN
2640: 43 4f 44 49 4e 47 0a 09 54 63 6c 5f 44 53 74 72  CODING..Tcl_DStr
2650: 69 6e 67 20 65 6e 63 6f 64 69 6e 67 4e 61 6d 65  ing encodingName
2660: 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 54 43 4c 4b  ;.#endif /* TCLK
2670: 49 54 5f 43 41 4e 5f 53 45 54 5f 45 4e 43 4f 44  IT_CAN_SET_ENCOD
2680: 49 4e 47 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20  ING */..#ifndef 
2690: 54 43 4c 4b 49 54 5f 44 4c 4c 0a 09 2f 2a 20 74  TCLKIT_DLL../* t
26a0: 68 65 20 74 63 6c 5f 72 63 46 69 6c 65 4e 61 6d  he tcl_rcFileNam
26b0: 65 20 76 61 72 69 61 62 6c 65 20 6f 6e 6c 79 20  e variable only 
26c0: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 69 6e  exists in the in
26d0: 69 74 69 61 6c 20 69 6e 74 65 72 70 72 65 74 65  itial interprete
26e0: 72 20 2a 2f 0a 23 20 20 69 66 64 65 66 20 5f 57  r */.#  ifdef _W
26f0: 49 4e 33 32 0a 09 54 63 6c 5f 53 65 74 56 61 72  IN32..Tcl_SetVar
2700: 28 69 6e 74 65 72 70 2c 20 22 74 63 6c 5f 72 63  (interp, "tcl_rc
2710: 46 69 6c 65 4e 61 6d 65 22 2c 20 22 7e 2f 74 63  FileName", "~/tc
2720: 6c 6b 69 74 72 63 2e 74 63 6c 22 2c 20 54 43 4c  lkitrc.tcl", TCL
2730: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 23  _GLOBAL_ONLY);.#
2740: 20 20 65 6c 73 65 0a 09 54 63 6c 5f 53 65 74 56    else..Tcl_SetV
2750: 61 72 28 69 6e 74 65 72 70 2c 20 22 74 63 6c 5f  ar(interp, "tcl_
2760: 72 63 46 69 6c 65 4e 61 6d 65 22 2c 20 22 7e 2f  rcFileName", "~/
2770: 2e 74 63 6c 6b 69 74 72 63 22 2c 20 54 43 4c 5f  .tclkitrc", TCL_
2780: 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 23 20  GLOBAL_ONLY);.# 
2790: 20 65 6e 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32   endif /* _WIN32
27a0: 20 2a 2f 0a 23 65 6e 64 69 66 20 2f 2a 20 21 54   */.#endif /* !T
27b0: 43 4c 4b 49 54 5f 44 4c 4c 20 2a 2f 0a 0a 23 69  CLKIT_DLL */..#i
27c0: 66 64 65 66 20 54 43 4c 4b 49 54 5f 43 41 4e 5f  fdef TCLKIT_CAN_
27d0: 53 45 54 5f 45 4e 43 4f 44 49 4e 47 0a 09 2f 2a  SET_ENCODING../*
27e0: 20 53 65 74 20 74 68 65 20 65 6e 63 6f 64 69 6e   Set the encodin
27f0: 67 20 66 72 6f 6d 20 74 68 65 20 45 6e 76 69 72  g from the Envir
2800: 6f 6e 6d 65 6e 74 20 2a 2f 0a 09 54 63 6c 5f 47  onment */..Tcl_G
2810: 65 74 45 6e 63 6f 64 69 6e 67 4e 61 6d 65 46 72  etEncodingNameFr
2820: 6f 6d 45 6e 76 69 72 6f 6e 6d 65 6e 74 28 26 65  omEnvironment(&e
2830: 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 3b 0a 09 54  ncodingName);..T
2840: 63 6c 5f 53 65 74 53 79 73 74 65 6d 45 6e 63 6f  cl_SetSystemEnco
2850: 64 69 6e 67 28 4e 55 4c 4c 2c 20 54 63 6c 5f 44  ding(NULL, Tcl_D
2860: 53 74 72 69 6e 67 56 61 6c 75 65 28 26 65 6e 63  StringValue(&enc
2870: 6f 64 69 6e 67 4e 61 6d 65 29 29 3b 0a 09 54 63  odingName));..Tc
2880: 6c 5f 53 65 74 56 61 72 28 69 6e 74 65 72 70 2c  l_SetVar(interp,
2890: 20 22 74 63 6c 6b 69 74 5f 73 79 73 74 65 6d 5f   "tclkit_system_
28a0: 65 6e 63 6f 64 69 6e 67 22 2c 20 54 63 6c 5f 44  encoding", Tcl_D
28b0: 53 74 72 69 6e 67 56 61 6c 75 65 28 26 65 6e 63  StringValue(&enc
28c0: 6f 64 69 6e 67 4e 61 6d 65 29 2c 20 30 29 3b 0a  odingName), 0);.
28d0: 09 54 63 6c 5f 44 53 74 72 69 6e 67 46 72 65 65  .Tcl_DStringFree
28e0: 28 26 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 3b  (&encodingName);
28f0: 0a 23 65 6e 64 69 66 20 2f 2a 20 54 43 4c 4b 49  .#endif /* TCLKI
2900: 54 5f 43 41 4e 5f 53 45 54 5f 45 4e 43 4f 44 49  T_CAN_SET_ENCODI
2910: 4e 47 20 2a 2f 0a 0a 09 2f 2a 20 48 61 63 6b 20  NG */.../* Hack 
2920: 74 6f 20 67 65 74 20 61 72 6f 75 6e 64 20 54 63  to get around Tc
2930: 6c 20 62 75 67 20 31 32 32 34 38 38 38 2e 20 20  l bug 1224888.  
2940: 54 68 69 73 20 6d 75 73 74 20 62 65 20 72 75 6e  This must be run
2950: 20 68 65 72 65 20 61 6e 64 0a 09 20 2a 20 69 6e   here and.. * in
2960: 20 4c 69 62 72 61 72 79 50 61 74 68 4f 62 6a 43   LibraryPathObjC
2970: 6d 64 20 62 65 63 61 75 73 65 20 74 68 69 73 20  md because this 
2980: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6e  information is n
2990: 65 65 64 65 64 20 62 6f 74 68 0a 09 20 2a 20 62  eeded both.. * b
29a0: 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20  efore and after 
29b0: 74 68 61 74 20 63 6f 6d 6d 61 6e 64 20 69 73 20  that command is 
29c0: 72 75 6e 2e 20 2a 2f 0a 09 46 69 6e 64 41 6e 64  run. */..FindAnd
29d0: 53 65 74 45 78 65 63 4e 61 6d 65 28 69 6e 74 65  SetExecName(inte
29e0: 72 70 29 3b 0a 0a 09 72 65 74 75 72 6e 3b 0a 7d  rp);...return;.}
29f0: 0a 0a 23 69 66 6e 64 65 66 20 54 43 4c 4b 49 54  ..#ifndef TCLKIT
2a00: 5f 44 4c 4c 0a 69 6e 74 20 54 63 6c 4b 69 74 5f  _DLL.int TclKit_
2a10: 41 70 70 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65  AppInit(Tcl_Inte
2a20: 72 70 20 2a 69 6e 74 65 72 70 29 20 7b 0a 23 69  rp *interp) {.#i
2a30: 66 64 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45  fdef KIT_INCLUDE
2a40: 53 5f 54 4b 0a 23 20 20 69 66 64 65 66 20 5f 57  S_TK.#  ifdef _W
2a50: 49 4e 33 32 0a 23 20 20 20 20 69 66 6e 64 65 66  IN32.#    ifndef
2a60: 20 5f 57 49 4e 33 32 5f 57 43 45 0a 09 63 68 61   _WIN32_WCE..cha
2a70: 72 20 6d 73 67 42 75 66 5b 32 30 34 39 5d 3b 0a  r msgBuf[2049];.
2a80: 23 20 20 20 20 65 6e 64 69 66 20 2f 2a 20 21 5f  #    endif /* !_
2a90: 57 49 4e 33 32 5f 57 43 45 20 2a 2f 0a 23 20 20  WIN32_WCE */.#  
2aa0: 65 6e 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32 20  endif /* _WIN32 
2ab0: 2a 2f 0a 23 65 6e 64 69 66 20 2f 2a 20 4b 49 54  */.#endif /* KIT
2ac0: 5f 49 4e 43 4c 55 44 45 53 5f 54 4b 20 2a 2f 0a  _INCLUDES_TK */.
2ad0: 0a 09 2f 2a 20 50 65 72 66 6f 72 6d 20 63 6f 6d  ../* Perform com
2ae0: 6d 6f 6e 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  mon initializati
2af0: 6f 6e 20 2a 2f 0a 09 5f 54 63 6c 6b 69 74 5f 47  on */.._Tclkit_G
2b00: 65 6e 65 72 69 63 5f 49 6e 69 74 28 29 3b 0a 0a  eneric_Init();..
2b10: 09 5f 54 63 6c 6b 69 74 5f 49 6e 74 65 72 70 5f  ._Tclkit_Interp_
2b20: 49 6e 69 74 28 69 6e 74 65 72 70 29 3b 0a 0a 09  Init(interp);...
2b30: 69 66 20 28 54 63 6c 5f 49 6e 69 74 28 69 6e 74  if (Tcl_Init(int
2b40: 65 72 70 29 20 3d 3d 20 54 43 4c 5f 45 52 52 4f  erp) == TCL_ERRO
2b50: 52 29 20 7b 0a 09 09 67 6f 74 6f 20 65 72 72 6f  R) {...goto erro
2b60: 72 3b 0a 09 7d 0a 0a 23 69 66 64 65 66 20 4b 49  r;..}..#ifdef KI
2b70: 54 5f 49 4e 43 4c 55 44 45 53 5f 54 4b 0a 23 20  T_INCLUDES_TK.# 
2b80: 20 69 66 64 65 66 20 5f 57 49 4e 33 32 0a 09 69   ifdef _WIN32..i
2b90: 66 20 28 54 6b 5f 49 6e 69 74 28 69 6e 74 65 72  f (Tk_Init(inter
2ba0: 70 29 20 3d 3d 20 54 43 4c 5f 45 52 52 4f 52 29  p) == TCL_ERROR)
2bb0: 20 7b 0a 09 09 67 6f 74 6f 20 65 72 72 6f 72 3b   {...goto error;
2bc0: 0a 09 7d 0a 09 69 66 20 28 54 6b 5f 43 72 65 61  ..}..if (Tk_Crea
2bd0: 74 65 43 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77 28  teConsoleWindow(
2be0: 69 6e 74 65 72 70 29 20 3d 3d 20 54 43 4c 5f 45  interp) == TCL_E
2bf0: 52 52 4f 52 29 20 7b 0a 09 09 67 6f 74 6f 20 65  RROR) {...goto e
2c00: 72 72 6f 72 3b 0a 09 7d 0a 23 20 20 65 6e 64 69  rror;..}.#  endi
2c10: 66 20 2f 2a 20 5f 57 49 4e 33 32 20 2a 2f 0a 23  f /* _WIN32 */.#
2c20: 65 6e 64 69 66 20 2f 2a 20 4b 49 54 5f 49 4e 43  endif /* KIT_INC
2c30: 4c 55 44 45 53 5f 54 4b 20 2a 2f 0a 0a 09 2f 2a  LUDES_TK */.../*
2c40: 20 6d 65 73 73 79 20 62 65 63 61 75 73 65 20 54   messy because T
2c50: 63 6c 53 65 74 53 74 61 72 74 75 70 53 63 72 69  clSetStartupScri
2c60: 70 74 50 61 74 68 20 69 73 20 63 61 6c 6c 65 64  ptPath is called
2c70: 20 73 6c 69 67 68 74 6c 79 20 74 6f 6f 20 6c 61   slightly too la
2c80: 74 65 20 2a 2f 0a 09 69 66 20 28 54 63 6c 5f 45  te */..if (Tcl_E
2c90: 76 61 6c 28 69 6e 74 65 72 70 2c 20 69 6e 69 74  val(interp, init
2ca0: 53 63 72 69 70 74 29 20 3d 3d 20 54 43 4c 5f 4f  Script) == TCL_O
2cb0: 4b 29 20 7b 0a 09 09 54 63 6c 5f 4f 62 6a 2a 20  K) {...Tcl_Obj* 
2cc0: 70 61 74 68 3b 0a 23 69 66 64 65 66 20 48 41 56  path;.#ifdef HAV
2cd0: 45 5f 54 43 4c 53 45 54 53 54 41 52 54 55 50 53  E_TCLSETSTARTUPS
2ce0: 43 52 49 50 54 50 41 54 48 0a 09 09 70 61 74 68  CRIPTPATH...path
2cf0: 20 3d 20 54 63 6c 47 65 74 53 74 61 72 74 75 70   = TclGetStartup
2d00: 53 63 72 69 70 74 50 61 74 68 28 29 3b 0a 09 09  ScriptPath();...
2d10: 54 63 6c 53 65 74 53 74 61 72 74 75 70 53 63 72  TclSetStartupScr
2d20: 69 70 74 50 61 74 68 28 54 63 6c 5f 47 65 74 4f  iptPath(Tcl_GetO
2d30: 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29  bjResult(interp)
2d40: 29 3b 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64  );.#elif defined
2d50: 28 48 41 56 45 5f 54 43 4c 5f 53 45 54 53 54 41  (HAVE_TCL_SETSTA
2d60: 52 54 55 50 53 43 52 49 50 54 29 0a 09 09 70 61  RTUPSCRIPT)...pa
2d70: 74 68 20 3d 20 54 63 6c 5f 47 65 74 53 74 61 72  th = Tcl_GetStar
2d80: 74 75 70 53 63 72 69 70 74 28 4e 55 4c 4c 29 3b  tupScript(NULL);
2d90: 0a 09 09 54 63 6c 5f 53 65 74 53 74 61 72 74 75  ...Tcl_SetStartu
2da0: 70 53 63 72 69 70 74 28 54 63 6c 5f 47 65 74 4f  pScript(Tcl_GetO
2db0: 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29  bjResult(interp)
2dc0: 2c 20 4e 55 4c 4c 29 3b 0a 23 65 6e 64 69 66 0a  , NULL);.#endif.
2dd0: 09 09 69 66 20 28 70 61 74 68 20 3d 3d 20 4e 55  ..if (path == NU
2de0: 4c 4c 29 20 7b 0a 09 09 09 54 63 6c 5f 45 76 61  LL) {....Tcl_Eva
2df0: 6c 28 69 6e 74 65 72 70 2c 20 22 69 6e 63 72 20  l(interp, "incr 
2e00: 61 72 67 63 20 2d 31 3b 20 73 65 74 20 61 72 67  argc -1; set arg
2e10: 76 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 76 20  v [lrange $argv 
2e20: 31 20 65 6e 64 5d 22 29 3b 0a 09 09 7d 0a 09 7d  1 end]");...}..}
2e30: 0a 0a 09 54 63 6c 5f 53 65 74 56 61 72 28 69 6e  ...Tcl_SetVar(in
2e40: 74 65 72 70 2c 20 22 65 72 72 6f 72 49 6e 66 6f  terp, "errorInfo
2e50: 22 2c 20 22 22 2c 20 54 43 4c 5f 47 4c 4f 42 41  ", "", TCL_GLOBA
2e60: 4c 5f 4f 4e 4c 59 29 3b 0a 09 54 63 6c 5f 52 65  L_ONLY);..Tcl_Re
2e70: 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  setResult(interp
2e80: 29 3b 0a 0a 09 72 65 74 75 72 6e 20 54 43 4c 5f  );...return TCL_
2e90: 4f 4b 3b 0a 0a 65 72 72 6f 72 3a 0a 23 69 66 64  OK;..error:.#ifd
2ea0: 65 66 20 4b 49 54 5f 49 4e 43 4c 55 44 45 53 5f  ef KIT_INCLUDES_
2eb0: 54 4b 0a 23 20 20 69 66 64 65 66 20 5f 57 49 4e  TK.#  ifdef _WIN
2ec0: 33 32 0a 09 4d 65 73 73 61 67 65 42 65 65 70 28  32..MessageBeep(
2ed0: 4d 42 5f 49 43 4f 4e 45 58 43 4c 41 4d 41 54 49  MB_ICONEXCLAMATI
2ee0: 4f 4e 29 3b 0a 23 20 20 20 20 69 66 6e 64 65 66  ON);.#    ifndef
2ef0: 20 5f 57 49 4e 33 32 5f 57 43 45 0a 09 73 6e 70   _WIN32_WCE..snp
2f00: 72 69 6e 74 66 28 6d 73 67 42 75 66 2c 20 73 69  rintf(msgBuf, si
2f10: 7a 65 6f 66 28 6d 73 67 42 75 66 29 2c 0a 09 09  zeof(msgBuf),...
2f20: 22 41 20 63 72 69 74 69 63 61 6c 20 65 72 72 6f  "A critical erro
2f30: 72 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e 20  r has occurred. 
2f40: 20 50 6c 65 61 73 65 20 72 65 70 6f 72 74 20 74   Please report t
2f50: 68 69 73 20 74 6f 20 74 68 65 20 54 63 6c 6b 69  his to the Tclki
2f60: 74 20 76 65 6e 64 6f 72 2e 5c 6e 49 6e 74 65 72  t vendor.\nInter
2f70: 70 72 65 74 65 72 20 52 65 74 75 72 6e 65 64 3a  preter Returned:
2f80: 20 25 73 5c 6e 45 72 72 6f 72 20 49 6e 66 6f 3a   %s\nError Info:
2f90: 20 25 73 22 2c 0a 09 09 54 63 6c 5f 47 65 74 53   %s",...Tcl_GetS
2fa0: 74 72 69 6e 67 52 65 73 75 6c 74 28 69 6e 74 65  tringResult(inte
2fb0: 72 70 29 2c 0a 09 09 54 63 6c 5f 47 65 74 56 61  rp),...Tcl_GetVa
2fc0: 72 28 69 6e 74 65 72 70 2c 20 22 65 72 72 6f 72  r(interp, "error
2fd0: 49 6e 66 6f 22 2c 20 54 43 4c 5f 47 4c 4f 42 41  Info", TCL_GLOBA
2fe0: 4c 5f 4f 4e 4c 59 29 29 3b 0a 0a 09 4d 65 73 73  L_ONLY));...Mess
2ff0: 61 67 65 42 6f 78 28 4e 55 4c 4c 2c 20 6d 73 67  ageBox(NULL, msg
3000: 42 75 66 2c 20 22 45 72 72 6f 72 20 69 6e 20 54  Buf, "Error in T
3010: 63 6c 4b 69 74 22 2c 0a 09 09 4d 42 5f 49 43 4f  clKit",...MB_ICO
3020: 4e 53 54 4f 50 20 7c 20 4d 42 5f 4f 4b 20 7c 20  NSTOP | MB_OK | 
3030: 4d 42 5f 54 41 53 4b 4d 4f 44 41 4c 20 7c 20 4d  MB_TASKMODAL | M
3040: 42 5f 53 45 54 46 4f 52 45 47 52 4f 55 4e 44 29  B_SETFOREGROUND)
3050: 3b 0a 0a 09 45 78 69 74 50 72 6f 63 65 73 73 28  ;...ExitProcess(
3060: 31 29 3b 0a 23 20 20 20 20 65 6e 64 69 66 20 2f  1);.#    endif /
3070: 2a 20 21 5f 57 49 4e 33 32 5f 57 43 45 20 2a 2f  * !_WIN32_WCE */
3080: 0a 20 20 20 20 2f 2a 20 77 65 20 77 6f 6e 27 74  .    /* we won't
3090: 20 72 65 61 63 68 20 74 68 69 73 2c 20 62 75 74   reach this, but
30a0: 20 77 65 20 6e 65 65 64 20 74 68 65 20 72 65 74   we need the ret
30b0: 75 72 6e 20 2a 2f 0a 23 20 20 65 6e 64 69 66 20  urn */.#  endif 
30c0: 2f 2a 20 5f 57 49 4e 33 32 20 2a 2f 0a 23 65 6e  /* _WIN32 */.#en
30d0: 64 69 66 20 2f 2a 20 4b 49 54 5f 49 4e 43 4c 55  dif /* KIT_INCLU
30e0: 44 45 53 5f 54 4b 20 2a 2f 0a 0a 09 72 65 74 75  DES_TK */...retu
30f0: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 7d 0a  rn TCL_ERROR;.}.
3100: 23 65 6e 64 69 66 20 2f 2a 20 21 54 43 4c 4b 49  #endif /* !TCLKI
3110: 54 5f 44 4c 4c 20 2a 2f 0a 0a 0a 23 69 66 64 65  T_DLL */...#ifde
3120: 66 20 54 43 4c 4b 49 54 5f 44 4c 4c 0a 23 20 20  f TCLKIT_DLL.#  
3130: 69 66 64 65 66 20 48 41 56 45 5f 41 43 43 45 50  ifdef HAVE_ACCEP
3140: 54 41 42 4c 45 5f 44 4c 41 44 44 52 0a 2f 2a 20  TABLE_DLADDR./* 
3150: 53 79 6d 62 6f 6c 20 74 6f 20 72 65 73 6f 6c 76  Symbol to resolv
3160: 65 20 61 67 61 69 6e 73 74 20 64 6c 61 64 64 72  e against dladdr
3170: 28 29 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69  () */.static voi
3180: 64 20 5f 74 63 6c 6b 69 74 5f 64 75 6d 6d 79 5f  d _tclkit_dummy_
3190: 66 75 6e 63 28 76 6f 69 64 29 20 7b 0a 09 72 65  func(void) {..re
31a0: 74 75 72 6e 3b 0a 7d 0a 23 20 20 65 6e 64 69 66  turn;.}.#  endif
31b0: 20 2f 2a 20 48 41 56 45 5f 41 43 43 45 50 54 41   /* HAVE_ACCEPTA
31c0: 42 4c 45 5f 44 4c 41 44 44 52 20 2a 2f 0a 0a 2f  BLE_DLADDR */../
31d0: 2a 0a 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69  *. * This functi
31e0: 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61  on will return a
31f0: 20 70 61 74 68 6e 61 6d 65 20 77 65 20 63 61 6e   pathname we can
3200: 20 6f 70 65 6e 28 29 20 74 6f 20 74 72 65 61 74   open() to treat
3210: 20 61 73 20 61 20 56 46 53 2c 0a 20 2a 20 68 6f   as a VFS,. * ho
3220: 70 65 66 75 6c 6c 79 0a 20 2a 2f 0a 73 74 61 74  pefully. */.stat
3230: 69 63 20 63 68 61 72 20 2a 66 69 6e 64 5f 74 63  ic char *find_tc
3240: 6c 6b 69 74 5f 64 6c 6c 5f 70 61 74 68 28 76 6f  lkit_dll_path(vo
3250: 69 64 29 20 7b 0a 23 69 66 64 65 66 20 48 41 56  id) {.#ifdef HAV
3260: 45 5f 41 43 43 45 50 54 41 42 4c 45 5f 44 4c 41  E_ACCEPTABLE_DLA
3270: 44 44 52 0a 09 44 6c 5f 69 6e 66 6f 20 73 79 6d  DDR..Dl_info sym
3280: 69 6e 66 6f 3b 0a 09 69 6e 74 20 64 6c 61 64 64  info;..int dladd
3290: 72 5f 72 65 74 3b 0a 23 65 6e 64 69 66 20 2f 2a  r_ret;.#endif /*
32a0: 20 48 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45   HAVE_ACCEPTABLE
32b0: 5f 44 4c 41 44 44 52 20 2a 2f 0a 23 69 66 64 65  _DLADDR */.#ifde
32c0: 66 20 5f 57 49 4e 33 32 0a 09 54 43 48 41 52 20  f _WIN32..TCHAR 
32d0: 6d 6f 64 75 6c 65 6e 61 6d 65 5b 38 31 39 32 5d  modulename[8192]
32e0: 3b 0a 09 44 57 4f 52 44 20 67 6d 66 6e 5f 72 65  ;..DWORD gmfn_re
32f0: 74 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 57 49  t;.#endif /* _WI
3300: 4e 33 32 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48  N32 */..#ifdef H
3310: 41 56 45 5f 41 43 43 45 50 54 41 42 4c 45 5f 44  AVE_ACCEPTABLE_D
3320: 4c 41 44 44 52 0a 09 64 6c 61 64 64 72 5f 72 65  LADDR..dladdr_re
3330: 74 20 3d 20 64 6c 61 64 64 72 28 26 5f 74 63 6c  t = dladdr(&_tcl
3340: 6b 69 74 5f 64 75 6d 6d 79 5f 66 75 6e 63 2c 20  kit_dummy_func, 
3350: 26 73 79 6d 69 6e 66 6f 29 3b 0a 09 69 66 20 28  &syminfo);..if (
3360: 64 6c 61 64 64 72 5f 72 65 74 20 21 3d 20 30 29  dladdr_ret != 0)
3370: 20 7b 0a 09 09 69 66 20 28 73 79 6d 69 6e 66 6f   {...if (syminfo
3380: 2e 64 6c 69 5f 66 6e 61 6d 65 20 26 26 20 73 79  .dli_fname && sy
3390: 6d 69 6e 66 6f 2e 64 6c 69 5f 66 6e 61 6d 65 5b  minfo.dli_fname[
33a0: 30 5d 20 21 3d 20 27 5c 30 27 29 20 7b 0a 09 09  0] != '\0') {...
33b0: 09 72 65 74 75 72 6e 28 73 74 72 64 75 70 28 73  .return(strdup(s
33c0: 79 6d 69 6e 66 6f 2e 64 6c 69 5f 66 6e 61 6d 65  yminfo.dli_fname
33d0: 29 29 3b 0a 09 09 7d 0a 09 7d 0a 23 65 6e 64 69  ));...}..}.#endi
33e0: 66 20 2f 2a 20 48 41 56 45 5f 41 43 43 45 50 54  f /* HAVE_ACCEPT
33f0: 41 42 4c 45 5f 44 4c 41 44 44 52 20 2a 2f 0a 0a  ABLE_DLADDR */..
3400: 23 69 66 64 65 66 20 5f 57 49 4e 33 32 0a 09 67  #ifdef _WIN32..g
3410: 6d 66 6e 5f 72 65 74 20 3d 20 47 65 74 4d 6f 64  mfn_ret = GetMod
3420: 75 6c 65 46 69 6c 65 4e 61 6d 65 28 54 63 6c 57  uleFileName(TclW
3430: 69 6e 47 65 74 54 63 6c 49 6e 73 74 61 6e 63 65  inGetTclInstance
3440: 28 29 2c 20 6d 6f 64 75 6c 65 6e 61 6d 65 2c 20  (), modulename, 
3450: 73 69 7a 65 6f 66 28 6d 6f 64 75 6c 65 6e 61 6d  sizeof(modulenam
3460: 65 29 20 2f 20 73 69 7a 65 6f 66 28 6d 6f 64 75  e) / sizeof(modu
3470: 6c 65 6e 61 6d 65 5b 30 5d 29 20 2d 20 31 29 3b  lename[0]) - 1);
3480: 0a 0a 09 69 66 20 28 67 6d 66 6e 5f 72 65 74 20  ...if (gmfn_ret 
3490: 21 3d 20 30 29 20 7b 0a 09 09 72 65 74 75 72 6e  != 0) {...return
34a0: 28 73 74 72 64 75 70 28 6d 6f 64 75 6c 65 6e 61  (strdup(modulena
34b0: 6d 65 29 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 20  me));..}.#endif 
34c0: 2f 2a 20 5f 57 49 4e 33 32 20 2a 2f 0a 0a 09 72  /* _WIN32 */...r
34d0: 65 74 75 72 6e 28 4e 55 4c 4c 29 3b 0a 7d 0a 0a  eturn(NULL);.}..
34e0: 2f 2a 0a 20 2a 20 54 68 69 73 20 66 75 6e 63 74  /*. * This funct
34f0: 69 6f 6e 20 65 78 69 73 74 73 20 74 6f 20 61 6c  ion exists to al
3500: 6c 6f 77 20 43 20 63 6f 64 65 20 74 6f 20 69 6e  low C code to in
3510: 69 74 69 61 6c 69 7a 65 20 61 20 70 61 72 74 69  itialize a parti
3520: 63 75 6c 61 72 0a 20 2a 20 69 6e 74 65 72 70 72  cular. * interpr
3530: 65 74 65 72 2e 0a 20 2a 2f 0a 73 74 61 74 69 63  eter.. */.static
3540: 20 69 6e 74 20 74 63 6c 6b 69 74 5f 69 6e 69 74   int tclkit_init
3550: 5f 69 6e 69 74 69 6e 74 65 72 70 28 43 6c 69 65  _initinterp(Clie
3560: 6e 74 44 61 74 61 20 63 64 2c 20 54 63 6c 5f 49  ntData cd, Tcl_I
3570: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 69  nterp *interp, i
3580: 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a  nt objc, Tcl_Obj
3590: 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 20   *CONST objv[]) 
35a0: 7b 0a 09 63 68 61 72 20 2a 6b 69 74 64 6c 6c 5f  {..char *kitdll_
35b0: 70 61 74 68 3b 0a 0a 09 6b 69 74 64 6c 6c 5f 70  path;...kitdll_p
35c0: 61 74 68 20 3d 20 66 69 6e 64 5f 74 63 6c 6b 69  ath = find_tclki
35d0: 74 5f 64 6c 6c 5f 70 61 74 68 28 29 3b 0a 09 69  t_dll_path();..i
35e0: 66 20 28 6b 69 74 64 6c 6c 5f 70 61 74 68 20 21  f (kitdll_path !
35f0: 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 54 63 6c 5f  = NULL) {...Tcl_
3600: 53 65 74 56 61 72 28 69 6e 74 65 72 70 2c 20 22  SetVar(interp, "
3610: 74 63 6c 4b 69 74 46 69 6c 65 6e 61 6d 65 22 2c  tclKitFilename",
3620: 20 6b 69 74 64 6c 6c 5f 70 61 74 68 2c 20 54 43   kitdll_path, TC
3630: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a  L_GLOBAL_ONLY);.
3640: 0a 09 09 66 72 65 65 28 6b 69 74 64 6c 6c 5f 70  ...free(kitdll_p
3650: 61 74 68 29 3b 0a 09 7d 0a 0a 09 5f 54 63 6c 6b  ath);..}..._Tclk
3660: 69 74 5f 49 6e 74 65 72 70 5f 49 6e 69 74 28 69  it_Interp_Init(i
3670: 6e 74 65 72 70 29 3b 0a 0a 09 72 65 74 75 72 6e  nterp);...return
3680: 28 54 43 4c 5f 4f 4b 29 3b 0a 7d 0a 0a 2f 2a 0a  (TCL_OK);.}../*.
3690: 20 2a 20 43 72 65 61 74 65 20 61 20 70 61 63 6b   * Create a pack
36a0: 61 67 65 20 66 6f 72 20 69 6e 69 74 69 61 6c 69  age for initiali
36b0: 7a 69 6e 67 20 61 20 70 61 72 74 69 63 75 6c 61  zing a particula
36c0: 72 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 20  r interpreter.  
36d0: 54 68 69 73 20 69 73 0a 20 2a 20 6f 75 72 20 68  This is. * our h
36e0: 6f 6f 6b 20 74 6f 20 68 61 76 65 20 54 63 6c 20  ook to have Tcl 
36f0: 69 6e 76 6f 6b 65 20 43 20 63 6f 6d 6d 61 6e 64  invoke C command
3700: 73 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  s when creating 
3710: 61 6e 20 69 6e 74 65 72 70 72 65 74 65 72 2e 0a  an interpreter..
3720: 20 2a 20 54 68 65 20 70 72 65 49 6e 69 74 43 6d   * The preInitCm
3730: 64 20 77 69 6c 6c 20 6c 6f 61 64 20 74 68 65 20  d will load the 
3740: 70 61 63 6b 61 67 65 20 69 6e 20 74 68 65 20 6e  package in the n
3750: 65 77 20 69 6e 74 65 72 70 72 65 74 65 72 20 61  ew interpreter a
3760: 6e 64 20 69 6e 76 6f 6b 65 0a 20 2a 20 74 68 69  nd invoke. * thi
3770: 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 2a 2f 0a  s function.. */.
3780: 69 6e 74 20 54 63 6c 6b 69 74 5f 69 6e 69 74 5f  int Tclkit_init_
3790: 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65 72 70 20  Init(Tcl_Interp 
37a0: 2a 69 6e 74 65 72 70 29 20 7b 0a 09 54 63 6c 5f  *interp) {..Tcl_
37b0: 43 6f 6d 6d 61 6e 64 20 74 63 6c 43 72 65 61 74  Command tclCreat
37c0: 43 6f 6d 6d 5f 72 65 74 3b 0a 09 69 6e 74 20 74  Comm_ret;..int t
37d0: 63 6c 50 6b 67 50 72 6f 76 5f 72 65 74 3b 0a 0a  clPkgProv_ret;..
37e0: 09 74 63 6c 43 72 65 61 74 43 6f 6d 6d 5f 72 65  .tclCreatComm_re
37f0: 74 20 3d 20 54 63 6c 5f 43 72 65 61 74 65 4f 62  t = Tcl_CreateOb
3800: 6a 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c  jCommand(interp,
3810: 20 22 3a 3a 74 63 6c 6b 69 74 3a 3a 69 6e 69 74   "::tclkit::init
3820: 3a 3a 69 6e 69 74 49 6e 74 65 72 70 22 2c 20 74  ::initInterp", t
3830: 63 6c 6b 69 74 5f 69 6e 69 74 5f 69 6e 69 74 69  clkit_init_initi
3840: 6e 74 65 72 70 2c 20 4e 55 4c 4c 2c 20 4e 55 4c  nterp, NULL, NUL
3850: 4c 29 3b 0a 09 69 66 20 28 21 74 63 6c 43 72 65  L);..if (!tclCre
3860: 61 74 43 6f 6d 6d 5f 72 65 74 29 20 7b 0a 09 09  atComm_ret) {...
3870: 72 65 74 75 72 6e 28 54 43 4c 5f 45 52 52 4f 52  return(TCL_ERROR
3880: 29 3b 0a 09 7d 0a 0a 09 74 63 6c 50 6b 67 50 72  );..}...tclPkgPr
3890: 6f 76 5f 72 65 74 20 3d 20 54 63 6c 5f 50 6b 67  ov_ret = Tcl_Pkg
38a0: 50 72 6f 76 69 64 65 28 69 6e 74 65 72 70 2c 20  Provide(interp, 
38b0: 22 74 63 6c 6b 69 74 3a 3a 69 6e 69 74 22 2c 20  "tclkit::init", 
38c0: 22 31 2e 30 22 29 3b 0a 0a 09 72 65 74 75 72 6e  "1.0");...return
38d0: 28 74 63 6c 50 6b 67 50 72 6f 76 5f 72 65 74 29  (tclPkgProv_ret)
38e0: 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 49 6e 69 74 69  ;.}../*. * Initi
38f0: 61 6c 69 7a 65 20 74 68 65 20 54 63 6c 20 73 79  alize the Tcl sy
3900: 73 74 65 6d 20 77 68 65 6e 20 77 65 20 61 72 65  stem when we are
3910: 20 6c 6f 61 64 65 64 2c 20 74 68 61 74 20 77 61   loaded, that wa
3920: 79 20 54 63 6c 20 66 75 6e 63 74 69 6f 6e 73 0a  y Tcl functions.
3930: 20 2a 20 61 72 65 20 72 65 61 64 79 20 74 6f 20   * are ready to 
3940: 62 65 20 75 73 65 64 20 77 68 65 6e 20 69 6e 76  be used when inv
3950: 6f 6b 65 64 2e 0a 20 2a 2f 0a 76 6f 69 64 20 5f  oked.. */.void _
3960: 5f 61 74 74 72 69 62 75 74 65 5f 5f 28 28 63 6f  _attribute__((co
3970: 6e 73 74 72 75 63 74 6f 72 29 29 20 5f 54 63 6c  nstructor)) _Tcl
3980: 6b 69 74 5f 49 6e 69 74 28 76 6f 69 64 29 20 7b  kit_Init(void) {
3990: 0a 09 54 63 6c 5f 53 74 61 74 69 63 50 61 63 6b  ..Tcl_StaticPack
39a0: 61 67 65 28 30 2c 20 22 74 63 6c 6b 69 74 3a 3a  age(0, "tclkit::
39b0: 69 6e 69 74 22 2c 20 54 63 6c 6b 69 74 5f 69 6e  init", Tclkit_in
39c0: 69 74 5f 49 6e 69 74 2c 20 4e 55 4c 4c 29 3b 0a  it_Init, NULL);.
39d0: 0a 09 5f 54 63 6c 6b 69 74 5f 47 65 6e 65 72 69  .._Tclkit_Generi
39e0: 63 5f 49 6e 69 74 28 29 3b 0a 0a 09 72 65 74 75  c_Init();...retu
39f0: 72 6e 3b 0a 7d 0a 23 65 6e 64 69 66 0a           rn;.}.#endif.