Posted to tcl by stevel at Mon Feb 22 02:06:53 GMT 2010view raw
- #ifdef WIN32
- // if the filesystem holding the dll doesn't support direct loading
- // we need to copy it to a temporary directory and load it from there
- // - critcl2::precopy is defined in critcl/lib/app-critcl/runtime.tcl
- if ((fsPtr = Tcl_FSGetFileSystemForPath(objv[1])) != NULL \
- && fsPtr->loadFileProc == NULL) {
- int len;
- Tcl_Obj *dirs;
- objv[0] = Tcl_NewStringObj("::critcl2::precopy", -1);
- if ((code = Tcl_EvalObjv(interp, 2, objv, 0)) != TCL_OK) {
- Tcl_SetErrorCode(interp, "could not preload ",
- Tcl_GetString(objv[1]), 0);
- return TCL_ERROR;
- }
- objv[1] = Tcl_GetObjResult(interp);
- Tcl_IncrRefCount(objv[1]);
- dirs = Tcl_FSSplitPath(objv[1], &len);
- preload = (PreloadInfo *) ckalloc(sizeof(PreloadInfo));
- preload->dir = Tcl_FSJoinPath(dirs, --len);
- Tcl_IncrRefCount(preload->dir);
- }
- #endif