142 lines
3.1 KiB
C
142 lines
3.1 KiB
C
/*
|
||
* tkUnixInit.c --
|
||
*
|
||
* This file contains Unix-specific interpreter initialization
|
||
* functions.
|
||
*
|
||
* Copyright (c) 1995-1997 Sun Microsystems, Inc.
|
||
*
|
||
* See the file "license.terms" for information on usage and redistribution
|
||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||
*
|
||
* SCCS: @(#) tkUnixInit.c 1.24 97/07/24 14:46:09
|
||
*/
|
||
|
||
#include "tkInt.h"
|
||
#include "tkUnixInt.h"
|
||
|
||
#ifndef STk_CODE
|
||
/*
|
||
* The Init script (common to Windows and Unix platforms) is
|
||
* defined in tkInitScript.h
|
||
*/
|
||
#include "tkInitScript.h"
|
||
#endif
|
||
|
||
/*
|
||
* Default directory in which to look for libraries:
|
||
*/
|
||
|
||
static char defaultLibraryDir[200] = TK_LIBRARY;
|
||
|
||
|
||
/*
|
||
*----------------------------------------------------------------------
|
||
*
|
||
* TkpInit --
|
||
*
|
||
* Performs Unix-specific interpreter initialization related to the
|
||
* tk_library variable.
|
||
*
|
||
* Results:
|
||
* Returns a standard Tcl result. Leaves an error message or result
|
||
* in interp->result.
|
||
*
|
||
* Side effects:
|
||
* Sets "tk_library" Tcl variable, runs "tk.tcl" script.
|
||
*
|
||
*----------------------------------------------------------------------
|
||
*/
|
||
|
||
int
|
||
TkpInit(interp)
|
||
Tcl_Interp *interp;
|
||
{
|
||
char *libDir;
|
||
|
||
#ifdef STk_CODE
|
||
extern char *STk_library_path;
|
||
|
||
STk_tcl_setvar("*stk-library*", STk_library_path, STk_STRINGIFY, "");
|
||
TkCreateXEventSource();
|
||
return TCL_OK;
|
||
#else
|
||
libDir = Tcl_GetVar(interp, "tk_library", TCL_GLOBAL_ONLY);
|
||
if (libDir == NULL) {
|
||
Tcl_SetVar(interp, "tk_library", defaultLibraryDir, TCL_GLOBAL_ONLY);
|
||
}
|
||
TkCreateXEventSource();
|
||
return Tcl_Eval(interp, initScript);
|
||
#endif
|
||
}
|
||
|
||
#ifndef STk_CODE
|
||
/*
|
||
*----------------------------------------------------------------------
|
||
*
|
||
* TkpGetAppName --
|
||
*
|
||
* Retrieves the name of the current application from a platform
|
||
* specific location. For Unix, the application name is the tail
|
||
* of the path contained in the tcl variable argv0.
|
||
*
|
||
* Results:
|
||
* Returns the application name in the given Tcl_DString.
|
||
*
|
||
* Side effects:
|
||
* None.
|
||
*
|
||
*----------------------------------------------------------------------
|
||
*/
|
||
|
||
void
|
||
TkpGetAppName(interp, namePtr)
|
||
Tcl_Interp *interp;
|
||
Tcl_DString *namePtr; /* A previously initialized Tcl_DString. */
|
||
{
|
||
char *p, *name;
|
||
|
||
name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
|
||
if ((name == NULL) || (*name == 0)) {
|
||
name = "tk";
|
||
} else {
|
||
p = strrchr(name, '/');
|
||
if (p != NULL) {
|
||
name = p+1;
|
||
}
|
||
}
|
||
Tcl_DStringAppend(namePtr, name, -1);
|
||
}
|
||
|
||
/*
|
||
*----------------------------------------------------------------------
|
||
*
|
||
* TkpDisplayWarning --
|
||
*
|
||
* This routines is called from Tk_Main to display warning
|
||
* messages that occur during startup.
|
||
*
|
||
* Results:
|
||
* None.
|
||
*
|
||
* Side effects:
|
||
* Generates messages on stdout.
|
||
*
|
||
*----------------------------------------------------------------------
|
||
*/
|
||
|
||
void
|
||
TkpDisplayWarning(msg, title)
|
||
char *msg; /* Message to be displayed. */
|
||
char *title; /* Title of warning. */
|
||
{
|
||
Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
|
||
if (errChannel) {
|
||
Tcl_Write(errChannel, title, -1);
|
||
Tcl_Write(errChannel, ": ", 2);
|
||
Tcl_Write(errChannel, msg, -1);
|
||
Tcl_Write(errChannel, "\n", 1);
|
||
}
|
||
}
|
||
#endif
|