Differences From Artifact [278881bf35]:
- File
kitdll/buildsrc/kitdll-0.0/kitInit.c
— part of check-in
[b11b735302]
at
2010-09-29 23:15:37
on branch trunk
— Created GNU autoconf script for KitDLL
Made KitDLL build a shared object
Added test driver (user: rkeene, size: 899) [annotate] [blame] [check-ins using]
To Artifact [9b8845772e]:
- File
kitdll/buildsrc/kitdll-0.0/kitInit.c
— part of check-in
[8fde0c7fbf]
at
2010-09-30 05:35:48
on branch trunk
— Fixed test driver to call initialization routine -- changed to tclsh.
Updated to support determing encoding from environment
Removed debugging printfs/puts (user: rkeene, size: 2237) [annotate] [blame] [check-ins using]
|
| < > > > > > > > > > > < > < < > > > > > > > > | > > > > > > > > > > > > > | > > > > > > > > > > > > > > > < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
#include <tcl.h>
#include "tclInt.h"
#if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING)
# define TCLKIT_CAN_SET_ENCODING 1
#endif
#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
# define KIT_INCLUDES_PWB 1
#endif
Tcl_AppInitProc Vfs_Init, Rechan_Init;
Tcl_AppInitProc Vfs_kitdll_data_tcl_Init;
#ifdef KIT_INCLUDES_PWB
Tcl_AppInitProc Pwb_Init;
#endif
static char *preInitCmd =
"proc tclKitInit {} {\n"
"rename tclKitInit {}\n"
"load {} tclkit::init\n"
"load {} rechan\n"
"load {} vfs\n"
"load {} vfs_kitdll_data_tcl\n"
#include "vfs_kitdll.tcl.h"
"vfs::kitdll::Mount tcl /.KITDLL_TCL\n"
"set f [open \"/.KITDLL_TCL/boot.tcl\"]\n"
"set s [read $f]\n"
"close $f\n"
"::tclkit::init::initInterp\n"
"rename ::tclkit::init::initInterp {}\n"
"uplevel #0 $s\n"
"}\n"
"tclKitInit";
static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
#ifdef _WIN32
Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY);
#else
Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY);
#endif
#ifdef TCLKIT_CAN_SET_ENCODING
/* Set the encoding from the Environment */
Tcl_GetEncodingNameFromEnvironment(&encodingName);
Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName));
Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), 0);
Tcl_DStringFree(&encodingName);
#endif
return(TCL_OK);
}
int Tclkit_init_Init(Tcl_Interp *interp) {
Tcl_Command tclCreatComm_ret;
int tclPkgProv_ret;
tclCreatComm_ret = Tcl_CreateObjCommand(interp, "::tclkit::init::initInterp", tclkit_init_initinterp, NULL, NULL);
if (!tclCreatComm_ret) {
return(TCL_ERROR);
}
tclPkgProv_ret = Tcl_PkgProvide(interp, "tclkit::init", "1.0");
return(tclPkgProv_ret);
}
void __attribute__((constructor)) _Tclkit_Init(void) {
Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL);
Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL);
Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL);
Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL);
#ifdef KIT_INCLUDES_PWB
Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL);
#endif
TclSetPreInitScript(preInitCmd);
return;
}
|