diff options
author | dgp <dgp@users.sourceforge.net> | 2004-06-11 21:30:05 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2004-06-11 21:30:05 (GMT) |
commit | 3f216823de7161e66adb2ff6c4f199f604110dd9 (patch) | |
tree | bc418bb1e1a10d6b91c844443c129679ccfbbbd1 /generic/tclMain.c | |
parent | 4ddc6442ba71c437f4b4bfb3c8ecff5b908b0957 (diff) | |
download | tcl-3f216823de7161e66adb2ff6c4f199f604110dd9.zip tcl-3f216823de7161e66adb2ff6c4f199f604110dd9.tar.gz tcl-3f216823de7161e66adb2ff6c4f199f604110dd9.tar.bz2 |
* unix/tclUnixInit.c: The routines Tcl_Init() and TclSourceRCFile()
* win/tclWinInit.c: had identical implementations for both win and
* generic/tclInterp.c: unix. Moved to a single generic implementation.
* generic/tclMain.c:
* library/init.tcl:
* generic/tclInitScript.h (removed):
* unix/Makefile.in:
* win/tcl.dsp:
Diffstat (limited to 'generic/tclMain.c')
-rw-r--r-- | generic/tclMain.c | 62 |
1 files changed, 59 insertions, 3 deletions
diff --git a/generic/tclMain.c b/generic/tclMain.c index f1ca13f..1e736fe 100644 --- a/generic/tclMain.c +++ b/generic/tclMain.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMain.c,v 1.26 2004/05/13 12:59:23 dkf Exp $ + * RCS: @(#) $Id: tclMain.c,v 1.27 2004/06/11 21:30:08 dgp Exp $ */ #include "tclInt.h" @@ -237,10 +237,66 @@ CONST char *TclGetStartupScriptFileName() } return Tcl_GetString(path); } - -/* +/*---------------------------------------------------------------------- + * + * Tcl_SourceRCFile -- + * + * This procedure is typically invoked by Tcl_Main of Tk_Main + * procedure to source an application specific rc file into the + * interpreter at startup time. + * + * Results: + * None. + * + * Side effects: + * Depends on what's in the rc script. + * *---------------------------------------------------------------------- + */ + +void +Tcl_SourceRCFile(interp) + Tcl_Interp *interp; /* Interpreter to source rc file into. */ +{ + Tcl_DString temp; + CONST char *fileName; + Tcl_Channel errChannel; + + fileName = Tcl_GetVar(interp, "tcl_rcFileName", TCL_GLOBAL_ONLY); + if (fileName != NULL) { + Tcl_Channel c; + CONST char *fullName; + + Tcl_DStringInit(&temp); + fullName = Tcl_TranslateFileName(interp, fileName, &temp); + if (fullName == NULL) { + /* + * Couldn't translate the file name (e.g. it referred to a + * bogus user or there was no HOME environment variable). + * Just do nothing. + */ + } else { + /* + * Test for the existence of the rc file before trying to read it. + */ + c = Tcl_OpenFileChannel(NULL, fullName, "r", 0); + if (c != (Tcl_Channel) NULL) { + Tcl_Close(NULL, c); + if (Tcl_EvalFile(interp, fullName) != TCL_OK) { + errChannel = Tcl_GetStdChannel(TCL_STDERR); + if (errChannel) { + Tcl_WriteObj(errChannel, Tcl_GetObjResult(interp)); + Tcl_WriteChars(errChannel, "\n", 1); + } + } + } + } + Tcl_DStringFree(&temp); + } +} + +/*---------------------------------------------------------------------- * * Tcl_Main -- * |