Hex Artifact Content
Not logged in

Artifact bbacf8add5d02e876b70a9b39499867fb5df263b:


0000: 20 2f 2a 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d   /* ============
0010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 20 2a 0a 20 20 2a 20 46 49 4c  ====== *.  * FIL
0050: 45 3a 20 74 63 6c 73 68 72 6c 2e 63 0a 20 20 2a  E: tclshrl.c.  *
0060: 20 24 49 64 24 0a 20 20 2a 20 2d 2d 2d 0a 20 20   $Id$.  * ---.  
0070: 2a 20 74 63 6c 72 65 61 64 6c 69 6e 65 20 2d 2d  * tclreadline --
0080: 20 67 6e 75 20 72 65 61 64 6c 69 6e 65 20 66 6f   gnu readline fo
0090: 72 20 74 63 6c 0a 20 20 2a 20 68 74 74 70 3a 2f  r tcl.  * http:/
00a0: 2f 77 77 77 2e 7a 65 6c 6c 6e 65 72 2e 6f 72 67  /www.zellner.org
00b0: 2f 74 63 6c 72 65 61 64 6c 69 6e 65 2f 0a 20 20  /tclreadline/.  
00c0: 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  * Copyright (c) 
00d0: 31 39 39 38 20 2d 20 32 30 31 34 2c 20 4a 6f 68  1998 - 2014, Joh
00e0: 61 6e 6e 65 73 20 5a 65 6c 6c 6e 65 72 20 3c 6a  annes Zellner <j
00f0: 6f 68 61 6e 6e 65 73 40 7a 65 6c 6c 6e 65 72 2e  ohannes@zellner.
0100: 6f 72 67 3e 0a 20 20 2a 20 54 68 69 73 20 73 6f  org>.  * This so
0110: 66 74 77 61 72 65 20 69 73 20 63 6f 70 79 72 69  ftware is copyri
0120: 67 68 74 20 75 6e 64 65 72 20 74 68 65 20 42 53  ght under the BS
0130: 44 20 6c 69 63 65 6e 73 65 2e 0a 20 20 2a 20 3d  D license..  * =
0140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0180: 3d 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48 41 56  = */..#ifdef HAV
0190: 45 5f 43 4f 4e 46 49 47 5f 48 0a 23 20 20 69 6e  E_CONFIG_H.#  in
01a0: 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22  clude "config.h"
01b0: 0a 23 65 6e 64 69 66 0a 0a 23 69 6e 63 6c 75 64  .#endif..#includ
01c0: 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e  e <stdlib.h>.#in
01d0: 63 6c 75 64 65 20 3c 74 63 6c 2e 68 3e 0a 23 69  clude <tcl.h>.#i
01e0: 6e 63 6c 75 64 65 20 3c 74 63 6c 72 65 61 64 6c  nclude <tclreadl
01f0: 69 6e 65 2e 68 3e 0a 0a 65 78 74 65 72 6e 20 69  ine.h>..extern i
0200: 6e 74 20 54 63 6c 72 65 61 64 6c 69 6e 65 5f 49  nt Tclreadline_I
0210: 6e 69 74 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a  nit(Tcl_Interp *
0220: 69 6e 74 65 72 70 29 3b 0a 65 78 74 65 72 6e 20  interp);.extern 
0230: 69 6e 74 20 54 63 6c 72 65 61 64 6c 69 6e 65 5f  int Tclreadline_
0240: 53 61 66 65 49 6e 69 74 28 54 63 6c 5f 49 6e 74  SafeInit(Tcl_Int
0250: 65 72 70 20 2a 69 6e 74 65 72 70 29 3b 0a 0a 69  erp *interp);..i
0260: 6e 74 0a 54 63 6c 72 65 61 64 6c 69 6e 65 41 70  nt.TclreadlineAp
0270: 70 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65 72 70  pInit(Tcl_Interp
0280: 2a 20 69 6e 74 65 72 70 29 0a 7b 0a 20 20 20 20  * interp).{.    
0290: 63 68 61 72 20 66 69 6c 65 5b 30 78 66 66 5d 3b  char file[0xff];
02a0: 0a 20 20 20 20 69 6e 74 20 73 74 61 74 75 73 3b  .    int status;
02b0: 0a 20 20 20 20 69 66 20 28 54 43 4c 5f 45 52 52  .    if (TCL_ERR
02c0: 4f 52 20 3d 3d 20 54 63 6c 5f 49 6e 69 74 28 69  OR == Tcl_Init(i
02d0: 6e 74 65 72 70 29 29 20 7b 0a 20 20 20 20 20 20  nterp)) {.      
02e0: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
02f0: 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  OR;.    }.    if
0300: 20 28 54 43 4c 5f 45 52 52 4f 52 20 3d 3d 20 54   (TCL_ERROR == T
0310: 63 6c 72 65 61 64 6c 69 6e 65 5f 49 6e 69 74 28  clreadline_Init(
0320: 69 6e 74 65 72 70 29 29 20 7b 0a 20 20 20 20 20  interp)) {.     
0330: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52     return TCL_ER
0340: 52 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 54  ROR;.    }.    T
0350: 63 6c 5f 53 74 61 74 69 63 50 61 63 6b 61 67 65  cl_StaticPackage
0360: 28 69 6e 74 65 72 70 2c 20 22 74 63 6c 72 65 61  (interp, "tclrea
0370: 64 6c 69 6e 65 22 2c 0a 20 20 20 20 20 20 20 20  dline",.        
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63                Tc
0390: 6c 72 65 61 64 6c 69 6e 65 5f 49 6e 69 74 2c 20  lreadline_Init, 
03a0: 54 63 6c 72 65 61 64 6c 69 6e 65 5f 53 61 66 65  Tclreadline_Safe
03b0: 49 6e 69 74 29 3b 0a 23 69 66 20 28 54 43 4c 5f  Init);.#if (TCL_
03c0: 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 20 3d 3d  MAJOR_VERSION ==
03d0: 20 37 29 20 26 26 20 28 54 43 4c 5f 4d 49 4e 4f   7) && (TCL_MINO
03e0: 52 5f 56 45 52 53 49 4f 4e 20 3d 3d 20 34 29 0a  R_VERSION == 4).
03f0: 20 20 20 20 74 63 6c 5f 52 63 46 69 6c 65 4e 61      tcl_RcFileNa
0400: 6d 65 20 3d 20 22 7e 2f 2e 74 63 6c 73 68 72 63  me = "~/.tclshrc
0410: 22 3b 0a 23 65 6c 73 65 0a 20 20 20 20 54 63 6c  ";.#else.    Tcl
0420: 5f 53 65 74 56 61 72 28 69 6e 74 65 72 70 2c 20  _SetVar(interp, 
0430: 22 74 63 6c 5f 72 63 46 69 6c 65 4e 61 6d 65 22  "tcl_rcFileName"
0440: 2c 20 22 7e 2f 2e 74 63 6c 73 68 72 63 22 2c 20  , "~/.tclshrc", 
0450: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29  TCL_GLOBAL_ONLY)
0460: 3b 0a 23 65 6e 64 69 66 0a 20 20 20 20 73 70 72  ;.#endif.    spr
0470: 69 6e 74 66 28 66 69 6c 65 2c 20 22 25 73 2f 74  intf(file, "%s/t
0480: 63 6c 72 65 61 64 6c 69 6e 65 49 6e 69 74 2e 74  clreadlineInit.t
0490: 63 6c 22 2c 20 54 43 4c 52 4c 5f 4c 49 42 52 41  cl", TCLRL_LIBRA
04a0: 52 59 29 3b 0a 20 20 20 20 69 66 20 28 28 73 74  RY);.    if ((st
04b0: 61 74 75 73 20 3d 20 54 63 6c 5f 45 76 61 6c 46  atus = Tcl_EvalF
04c0: 69 6c 65 28 69 6e 74 65 72 70 2c 20 66 69 6c 65  ile(interp, file
04d0: 29 29 29 20 7b 0a 20 20 20 20 20 20 20 20 66 70  ))) {.        fp
04e0: 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 28  rintf(stderr, "(
04f0: 54 63 6c 72 65 61 64 6c 69 6e 65 41 70 70 49 6e  TclreadlineAppIn
0500: 69 74 29 20 75 6e 61 62 6c 65 20 74 6f 20 65 76  it) unable to ev
0510: 61 6c 20 25 73 5c 6e 22 2c 20 66 69 6c 65 29 3b  al %s\n", file);
0520: 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 28 45  .        exit (E
0530: 58 49 54 5f 46 41 49 4c 55 52 45 29 3b 0a 20 20  XIT_FAILURE);.  
0540: 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 54    }.    return T
0550: 43 4c 5f 4f 4b 3b 0a 7d 0a 0a 69 6e 74 0a 6d 61  CL_OK;.}..int.ma
0560: 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61  in(int argc, cha
0570: 72 20 2a 61 72 67 76 5b 5d 29 0a 7b 0a 20 20 20  r *argv[]).{.   
0580: 20 54 63 6c 5f 4d 61 69 6e 28 61 72 67 63 2c 20   Tcl_Main(argc, 
0590: 61 72 67 76 2c 20 54 63 6c 72 65 61 64 6c 69 6e  argv, Tclreadlin
05a0: 65 41 70 70 49 6e 69 74 29 3b 0a 20 20 20 20 72  eAppInit);.    r
05b0: 65 74 75 72 6e 20 45 58 49 54 5f 53 55 43 43 45  eturn EXIT_SUCCE
05c0: 53 53 3b 0a 7d 0a                                SS;.}.