Revision: 76880
          http://sourceforge.net/p/brlcad/code/76880
Author:   starseeker
Date:     2020-08-21 23:50:16 +0000 (Fri, 21 Aug 2020)
Log Message:
-----------
Cleanup, provide Tclcad_Init for .so file loading

Modified Paths:
--------------
    brlcad/trunk/src/libtclcad/tclcad_init.c

Modified: brlcad/trunk/src/libtclcad/tclcad_init.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_init.c    2020-08-21 22:35:50 UTC (rev 
76879)
+++ brlcad/trunk/src/libtclcad/tclcad_init.c    2020-08-21 23:50:16 UTC (rev 
76880)
@@ -107,7 +107,8 @@
 
     /* Initialize [incr Tcl] */
     if (Tcl_Eval(interp, "package require Itcl") != TCL_OK) {
-       if (tlog) bu_vls_printf(tlog, "Itcl init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Itcl init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
@@ -115,13 +116,15 @@
     /* Initialize [incr Tk] */
     if (init_gui) {
        if (Tcl_Eval(interp, "package require Itk") != TCL_OK) {
-           if (tlog) bu_vls_printf(tlog, "Itk init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Itk init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
 
        /* Initialize the Iwidgets package */
        if (Tcl_Eval(interp, "package require Iwidgets") != TCL_OK) {
-           if (tlog) bu_vls_printf(tlog, "Iwidgets init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Iwidgets init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
     }
@@ -129,31 +132,36 @@
 
     /* Initialize libbu */
     if (Bu_Init(interp) == TCL_ERROR) {
-       if (tlog) bu_vls_printf(tlog, "Bu_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Bu_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
     /* Initialize libbn */
     if (Bn_Init(interp) == TCL_ERROR) {
-       if (tlog) bu_vls_printf(tlog, "Bn_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Bn_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
     /* Initialize librt */
     if (Rt_Init(interp) == TCL_ERROR) {
-       if (tlog) bu_vls_printf(tlog, "Rt_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Rt_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
     /* Initialize libdm */
     if (Dm_Init(interp) == TCL_ERROR) {
-       if (tlog) bu_vls_printf(tlog, "Dm_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Dm_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
     /* Initialize the GED object */
     if (Ged_Init(interp) == TCL_ERROR) {
-       if (tlog) bu_vls_printf(tlog, "Ged_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Ged_Init ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
@@ -171,19 +179,23 @@
 
     if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
                "::itcl::*", /* allowOverwrite */ 1) != TCL_OK) {
-       if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
+
 #ifdef HAVE_TK
     if (init_gui) {
        if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
                    "::itk::*", /* allowOverwrite */ 1) != TCL_OK) {
-           if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
        if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
                    "::iwidgets::*", /* allowOverwrite */ 1) != TCL_OK) {
-           if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
     }
@@ -190,7 +202,8 @@
 #endif
 
     if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace import 
-force ::itcl::* }") != TCL_OK) {
-       bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+       if (tlog)
+           bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
        return TCL_ERROR;
     }
 
@@ -197,17 +210,17 @@
 #ifdef HAVE_TK
     if (init_gui) {
        if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace 
import -force ::tk::* }") != TCL_OK) {
-           bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
        if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace 
import -force ::itk::* }") != TCL_OK) {
-           bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+           if (tlog)
+               bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n", 
Tcl_GetStringResult(interp));
            return TCL_ERROR;
        }
     }
-#endif
 
-#ifdef HAVE_TK
     /* If we're doing Tk, make sure we have a window */
     if (init_gui) {
        Tk_Window tkwin = Tk_MainWindow(interp);
@@ -215,13 +228,18 @@
     }
 #endif
 
-    Tcl_PkgProvide(interp, "Tclcad", brlcad_version());
-
-    (void)library_initialized(1);
-
     return TCL_OK;
 }
 
+/* This is here to allow tclsh to load the .so file and have it initialize.
+ * Application code in BRL-CAD should call tclcad_init and specify GUI/no-GUI
+ * and handle logging as appropriate. */
+TCLCAD_EXPORT int
+Tclcad_Init(Tcl_Interp *interp)
+{
+    return tclcad_init(interp, 1, NULL);
+}
+
 void
 tclcad_set_argv(Tcl_Interp *interp, int argc, const char **argv)
 {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to