xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldaptcl/tclAppInit.c (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1*549b59edSchristos /*	$NetBSD: tclAppInit.c,v 1.2 2021/08/14 16:14:50 christos Exp $	*/
24e6df137Slukem 
32de962bdSlukem /*
42de962bdSlukem  * tclAppInit.c --
52de962bdSlukem  *
62de962bdSlukem  *	Provides a default version of the main program and Tcl_AppInit
72de962bdSlukem  *	procedure for Tcl applications (without Tk).
82de962bdSlukem  *
92de962bdSlukem  * Copyright (c) 1993 The Regents of the University of California.
102de962bdSlukem  * Copyright (c) 1994-1995 Sun Microsystems, Inc.
112de962bdSlukem  *
122de962bdSlukem  * See the file "license.terms" for information on usage and redistribution
132de962bdSlukem  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
142de962bdSlukem  *
152de962bdSlukem  * SCCS: @(#) tclAppInit.c 1.17 96/03/26 12:45:29
162de962bdSlukem  */
172de962bdSlukem 
182de962bdSlukem #include "tcl.h"
192de962bdSlukem 
202de962bdSlukem /*
212de962bdSlukem  * The following variable is a special hack that is needed in order for
222de962bdSlukem  * Sun shared libraries to be used for Tcl.
232de962bdSlukem  */
242de962bdSlukem 
252de962bdSlukem extern int matherr();
262de962bdSlukem int *tclDummyMathPtr = (int *) matherr;
272de962bdSlukem 
282de962bdSlukem #ifdef TCL_TEST
292de962bdSlukem EXTERN int		Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp));
302de962bdSlukem #endif /* TCL_TEST */
312de962bdSlukem 
322de962bdSlukem /*
332de962bdSlukem  *----------------------------------------------------------------------
342de962bdSlukem  *
352de962bdSlukem  * main --
362de962bdSlukem  *
372de962bdSlukem  *	This is the main program for the application.
382de962bdSlukem  *
392de962bdSlukem  * Results:
402de962bdSlukem  *	None: Tcl_Main never returns here, so this procedure never
412de962bdSlukem  *	returns either.
422de962bdSlukem  *
432de962bdSlukem  * Side effects:
442de962bdSlukem  *	Whatever the application does.
452de962bdSlukem  *
462de962bdSlukem  *----------------------------------------------------------------------
472de962bdSlukem  */
482de962bdSlukem 
492de962bdSlukem int
main(argc,argv)502de962bdSlukem main(argc, argv)
512de962bdSlukem     int argc;			/* Number of command-line arguments. */
522de962bdSlukem     char **argv;		/* Values of command-line arguments. */
532de962bdSlukem {
542de962bdSlukem #ifdef USE_TCLX
552de962bdSlukem     TclX_Main(argc, argv, Tcl_AppInit);
562de962bdSlukem #else
572de962bdSlukem     Tcl_Main(argc, argv, Tcl_AppInit);
582de962bdSlukem #endif
592de962bdSlukem     return 0;			/* Needed only to prevent compiler warning. */
602de962bdSlukem }
612de962bdSlukem 
622de962bdSlukem /*
632de962bdSlukem  *----------------------------------------------------------------------
642de962bdSlukem  *
652de962bdSlukem  * Tcl_AppInit --
662de962bdSlukem  *
672de962bdSlukem  *	This procedure performs application-specific initialization.
682de962bdSlukem  *	Most applications, especially those that incorporate additional
692de962bdSlukem  *	packages, will have their own version of this procedure.
702de962bdSlukem  *
712de962bdSlukem  * Results:
722de962bdSlukem  *	Returns a standard Tcl completion code, and leaves an error
732de962bdSlukem  *	message in interp->result if an error occurs.
742de962bdSlukem  *
752de962bdSlukem  * Side effects:
762de962bdSlukem  *	Depends on the startup script.
772de962bdSlukem  *
782de962bdSlukem  *----------------------------------------------------------------------
792de962bdSlukem  */
802de962bdSlukem 
812de962bdSlukem int
Tcl_AppInit(interp)822de962bdSlukem Tcl_AppInit(interp)
832de962bdSlukem     Tcl_Interp *interp;		/* Interpreter for application. */
842de962bdSlukem {
852de962bdSlukem     if (Tcl_Init(interp) == TCL_ERROR) {
862de962bdSlukem 	return TCL_ERROR;
872de962bdSlukem     }
882de962bdSlukem 
892de962bdSlukem #ifdef USE_ITCL
902de962bdSlukem     if (Itcl_Init(interp) == TCL_ERROR) {
912de962bdSlukem 	return TCL_ERROR;
922de962bdSlukem     }
932de962bdSlukem     Tcl_StaticPackage (interp, "Itcl", Itcl_Init, NULL);
942de962bdSlukem #endif
952de962bdSlukem 
962de962bdSlukem #ifdef TCL_TEST
972de962bdSlukem     if (Tcltest_Init(interp) == TCL_ERROR) {
982de962bdSlukem 	return TCL_ERROR;
992de962bdSlukem     }
1002de962bdSlukem     Tcl_StaticPackage(interp, "Tcltest", Tcltest_Init,
1012de962bdSlukem             (Tcl_PackageInitProc *) NULL);
1022de962bdSlukem #endif /* TCL_TEST */
1032de962bdSlukem 
1042de962bdSlukem #ifdef USE_TCLX
1052de962bdSlukem     if (Tclx_Init (interp) == TCL_ERROR) {
1062de962bdSlukem 	return TCL_ERROR;
1072de962bdSlukem     }
1082de962bdSlukem     Tcl_StaticPackage (interp, "Tclx", Tclx_Init, NULL);
1092de962bdSlukem #endif
1102de962bdSlukem 
1112de962bdSlukem     if (Ldaptcl_Init(interp) == TCL_ERROR) {
1122de962bdSlukem 	return TCL_ERROR;
1132de962bdSlukem     }
1142de962bdSlukem     Tcl_StaticPackage(interp, "Ldaptcl", Ldaptcl_Init,
1152de962bdSlukem             (Tcl_PackageInitProc *) NULL);
1162de962bdSlukem 
1172de962bdSlukem     /*
1182de962bdSlukem      * Call the init procedures for included packages.  Each call should
1192de962bdSlukem      * look like this:
1202de962bdSlukem      *
1212de962bdSlukem      * if (Mod_Init(interp) == TCL_ERROR) {
1222de962bdSlukem      *     return TCL_ERROR;
1232de962bdSlukem      * }
1242de962bdSlukem      *
1252de962bdSlukem      * where "Mod" is the name of the module.
1262de962bdSlukem      */
1272de962bdSlukem 
1282de962bdSlukem     /*
1292de962bdSlukem      * Call Tcl_CreateCommand for application-specific commands, if
1302de962bdSlukem      * they weren't already created by the init procedures called above.
1312de962bdSlukem      */
1322de962bdSlukem 
1332de962bdSlukem     /*
1342de962bdSlukem      * Specify a user-specific startup file to invoke if the application
1352de962bdSlukem      * is run interactively.  Typically the startup file is "~/.apprc"
1362de962bdSlukem      * where "app" is the name of the application.  If this line is deleted
1372de962bdSlukem      * then no user-specific startup file will be run under any conditions.
1382de962bdSlukem      */
1392de962bdSlukem 
1402de962bdSlukem     Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclshrc", TCL_GLOBAL_ONLY);
1412de962bdSlukem     return TCL_OK;
1422de962bdSlukem }
143