Hex Artifact Content
Not logged in

Artifact 9a235afaa71c79bac0c3d73f118b66e301d2e186:


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 77 69 73 68 72 6c 2e 63 0a 20 20 2a 20  E: wishrl.c.  * 
0060: 24 49 64 24 0a 20 20 2a 20 2d 2d 2d 0a 20 20 2a  $Id$.  * ---.  *
0070: 20 74 63 6c 72 65 61 64 6c 69 6e 65 20 2d 2d 20   tclreadline -- 
0080: 67 6e 75 20 72 65 61 64 6c 69 6e 65 20 66 6f 72  gnu readline for
0090: 20 74 63 6c 0a 20 20 2a 20 68 74 74 70 3a 2f 2f   tcl.  * http://
00a0: 77 77 77 2e 7a 65 6c 6c 6e 65 72 2e 6f 72 67 2f  www.zellner.org/
00b0: 74 63 6c 72 65 61 64 6c 69 6e 65 2f 0a 20 20 2a  tclreadline/.  *
00c0: 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31   Copyright (c) 1
00d0: 39 39 38 20 2d 20 32 30 31 34 2c 20 4a 6f 68 61  998 - 2014, Joha
00e0: 6e 6e 65 73 20 5a 65 6c 6c 6e 65 72 20 3c 6a 6f  nnes Zellner <jo
00f0: 68 61 6e 6e 65 73 40 7a 65 6c 6c 6e 65 72 2e 6f  hannes@zellner.o
0100: 72 67 3e 0a 20 20 2a 20 54 68 69 73 20 73 6f 66  rg>.  * This sof
0110: 74 77 61 72 65 20 69 73 20 63 6f 70 79 72 69 67  tware is copyrig
0120: 68 74 20 75 6e 64 65 72 20 74 68 65 20 42 53 44  ht under the BSD
0130: 20 6c 69 63 65 6e 73 65 2e 0a 20 20 2a 20 3d 3d   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: 20 2a 2f 0a 0a 23 69 66 64 65 66 20 48 41 56 45   */..#ifdef HAVE
0190: 5f 43 4f 4e 46 49 47 5f 48 0a 23 20 20 69 6e 63  _CONFIG_H.#  inc
01a0: 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 0a  lude "config.h".
01b0: 23 65 6e 64 69 66 0a 0a 23 69 6e 63 6c 75 64 65  #endif..#include
01c0: 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63   <stdlib.h>.#inc
01d0: 6c 75 64 65 20 3c 74 63 6c 2e 68 3e 0a 23 69 6e  lude <tcl.h>.#in
01e0: 63 6c 75 64 65 20 3c 74 6b 2e 68 3e 0a 23 69 6e  clude <tk.h>.#in
01f0: 63 6c 75 64 65 20 3c 74 63 6c 72 65 61 64 6c 69  clude <tclreadli
0200: 6e 65 2e 68 3e 0a 0a 65 78 74 65 72 6e 20 69 6e  ne.h>..extern in
0210: 74 20 54 63 6c 72 65 61 64 6c 69 6e 65 5f 49 6e  t Tclreadline_In
0220: 69 74 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69  it(Tcl_Interp *i
0230: 6e 74 65 72 70 29 3b 0a 65 78 74 65 72 6e 20 69  nterp);.extern i
0240: 6e 74 20 54 63 6c 72 65 61 64 6c 69 6e 65 5f 53  nt Tclreadline_S
0250: 61 66 65 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65  afeInit(Tcl_Inte
0260: 72 70 20 2a 69 6e 74 65 72 70 29 3b 0a 0a 69 6e  rp *interp);..in
0270: 74 0a 54 63 6c 72 65 61 64 6c 69 6e 65 41 70 70  t.TclreadlineApp
0280: 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65 72 70 2a  Init(Tcl_Interp*
0290: 20 69 6e 74 65 72 70 29 0a 7b 0a 20 20 20 20 63   interp).{.    c
02a0: 68 61 72 20 66 69 6c 65 5b 30 78 66 66 5d 3b 0a  har file[0xff];.
02b0: 20 20 20 20 69 6e 74 20 73 74 61 74 75 73 3b 0a      int status;.
02c0: 0a 20 20 20 20 69 66 20 28 54 43 4c 5f 45 52 52  .    if (TCL_ERR
02d0: 4f 52 20 3d 3d 20 54 63 6c 5f 49 6e 69 74 28 69  OR == Tcl_Init(i
02e0: 6e 74 65 72 70 29 29 20 7b 0a 20 20 20 20 20 20  nterp)) {.      
02f0: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
0300: 4f 52 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  OR;.    }.    if
0310: 20 28 54 43 4c 5f 45 52 52 4f 52 20 3d 3d 20 54   (TCL_ERROR == T
0320: 6b 5f 49 6e 69 74 28 69 6e 74 65 72 70 29 29 20  k_Init(interp)) 
0330: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
0340: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20   TCL_ERROR;.    
0350: 7d 0a 20 20 20 20 69 66 20 28 54 43 4c 5f 45 52  }.    if (TCL_ER
0360: 52 4f 52 20 3d 3d 20 54 63 6c 72 65 61 64 6c 69  ROR == Tclreadli
0370: 6e 65 5f 49 6e 69 74 28 69 6e 74 65 72 70 29 29  ne_Init(interp))
0380: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
0390: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
03a0: 20 7d 0a 20 20 20 20 54 63 6c 5f 53 74 61 74 69   }.    Tcl_Stati
03b0: 63 50 61 63 6b 61 67 65 28 69 6e 74 65 72 70 2c  cPackage(interp,
03c0: 20 22 74 63 6c 72 65 61 64 6c 69 6e 65 22 2c 0a   "tclreadline",.
03d0: 20 20 20 20 54 63 6c 72 65 61 64 6c 69 6e 65 5f      Tclreadline_
03e0: 49 6e 69 74 2c 20 54 63 6c 72 65 61 64 6c 69 6e  Init, Tclreadlin
03f0: 65 5f 53 61 66 65 49 6e 69 74 29 3b 0a 23 69 66  e_SafeInit);.#if
0400: 20 28 54 43 4c 5f 4d 41 4a 4f 52 5f 56 45 52 53   (TCL_MAJOR_VERS
0410: 49 4f 4e 20 3d 3d 20 37 29 20 26 26 20 28 54 43  ION == 7) && (TC
0420: 4c 5f 4d 49 4e 4f 52 5f 56 45 52 53 49 4f 4e 20  L_MINOR_VERSION 
0430: 3d 3d 20 34 29 0a 20 20 20 20 74 63 6c 5f 52 63  == 4).    tcl_Rc
0440: 46 69 6c 65 4e 61 6d 65 20 3d 20 22 7e 2f 2e 77  FileName = "~/.w
0450: 69 73 68 72 63 22 3b 0a 23 65 6c 73 65 0a 20 20  ishrc";.#else.  
0460: 20 20 54 63 6c 5f 53 65 74 56 61 72 28 69 6e 74    Tcl_SetVar(int
0470: 65 72 70 2c 20 22 74 63 6c 5f 72 63 46 69 6c 65  erp, "tcl_rcFile
0480: 4e 61 6d 65 22 2c 20 22 7e 2f 2e 77 69 73 68 72  Name", "~/.wishr
0490: 63 22 2c 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f  c", TCL_GLOBAL_O
04a0: 4e 4c 59 29 3b 0a 23 65 6e 64 69 66 0a 20 20 20  NLY);.#endif.   
04b0: 20 73 70 72 69 6e 74 66 28 66 69 6c 65 2c 20 22   sprintf(file, "
04c0: 25 73 2f 74 63 6c 72 65 61 64 6c 69 6e 65 49 6e  %s/tclreadlineIn
04d0: 69 74 2e 74 63 6c 22 2c 20 54 43 4c 52 4c 5f 4c  it.tcl", TCLRL_L
04e0: 49 42 52 41 52 59 29 3b 0a 20 20 20 20 69 66 20  IBRARY);.    if 
04f0: 28 28 73 74 61 74 75 73 20 3d 20 54 63 6c 5f 45  ((status = Tcl_E
0500: 76 61 6c 46 69 6c 65 28 69 6e 74 65 72 70 2c 20  valFile(interp, 
0510: 66 69 6c 65 29 29 29 20 7b 0a 20 20 20 20 20 20  file))) {.      
0520: 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72    fprintf(stderr
0530: 2c 20 22 28 54 63 6c 72 65 61 64 6c 69 6e 65 41  , "(TclreadlineA
0540: 70 70 49 6e 69 74 29 20 75 6e 61 62 6c 65 20 74  ppInit) unable t
0550: 6f 20 65 76 61 6c 20 25 73 5c 6e 22 2c 20 66 69  o eval %s\n", fi
0560: 6c 65 29 3b 0a 20 20 20 20 20 20 20 20 65 78 69  le);.        exi
0570: 74 20 28 45 58 49 54 5f 46 41 49 4c 55 52 45 29  t (EXIT_FAILURE)
0580: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75  ;.    }.    retu
0590: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 7d 0a 0a 69 6e  rn TCL_OK;.}..in
05a0: 74 0a 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c  t.main(int argc,
05b0: 20 63 68 61 72 20 2a 61 72 67 76 5b 5d 29 0a 7b   char *argv[]).{
05c0: 0a 20 20 20 20 54 6b 5f 4d 61 69 6e 28 61 72 67  .    Tk_Main(arg
05d0: 63 2c 20 61 72 67 76 2c 20 54 63 6c 72 65 61 64  c, argv, Tclread
05e0: 6c 69 6e 65 41 70 70 49 6e 69 74 29 3b 0a 20 20  lineAppInit);.  
05f0: 20 20 72 65 74 75 72 6e 20 45 58 49 54 5f 53 55    return EXIT_SU
0600: 43 43 45 53 53 3b 0a 7d 0a                       CCESS;.}.