[Brlcad-commits] CVS: brlcad/src/mged ged.c,14.16,14.17
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2005-11-06 17:05:43
|
Update of /cvsroot/brlcad/brlcad/src/mged In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5705 Modified Files: ged.c Log Message: if tk fails to load, try a simple local port initialization. replace the exit calls with mged_finish calls like we're supposed to. if the database doesn't exist, notify the parent we're done before exiting so parent exits cleanly. Index: ged.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/mged/ged.c,v retrieving revision 14.16 retrieving revision 14.17 diff -w -u -r14.16 -r14.17 --- ged.c 31 Oct 2005 07:30:58 -0000 14.16 +++ ged.c 6 Nov 2005 17:05:32 -0000 14.17 @@ -41,6 +41,7 @@ * Earl P Weaver * Phil Dykstra * Bob Parker + * Christopher Sean Morrison * * Source - * The U. S. Army Research Laboratory @@ -265,7 +266,7 @@ int read_only_flag=0; pid_t pid; - int parent_pipe[2]; + int parent_pipe[2] = {0}; int use_pipe = 0; #ifdef _WIN32 @@ -393,6 +394,9 @@ /* no pipe, so just wait a little while */ sleep(3); } + /* exit instead of mged_finish as this is the + * parent process. + */ exit( 0 ); } } @@ -539,20 +543,29 @@ bu_vls_free(&vls); if (status != TCL_OK) { + /* failed to load tk, try localhost X11 */ + status = Tcl_Eval(interp, "loadtk :0"); + } + + if (status != TCL_OK) { if( !run_in_foreground && use_pipe ) { notify_parent_done(parent_pipe[1]); } bu_log("%s\nMGED Aborted.\n", interp->result); - exit(1); + mged_finish(1); } } if(argc >= 2){ /* Open the database, attach a display manager */ /* Command line may have more than 2 args, opendb only wants 2 */ - if(f_opendb( (ClientData)NULL, interp, 2, argv ) == TCL_ERROR) + if(f_opendb( (ClientData)NULL, interp, 2, argv ) == TCL_ERROR) { + if( !run_in_foreground && use_pipe ) { + notify_parent_done(parent_pipe[1]); + } mged_finish(1); } + } if( dbip != DBI_NULL && (read_only_flag || dbip->dbi_read_only) ) { @@ -597,7 +610,7 @@ if (status != TCL_OK) { bu_log("%s\nMGED Aborted.\n", interp->result); - exit(1); + mged_finish(1); } #ifndef _WIN32 @@ -2175,6 +2188,10 @@ * There are two invocations: * main() * cmdline() Only one arg is permitted. + * + * Returns TCL_OK if the database opened + * Returns TCL_ERROR if the database was not opened (and the user did + * not interactively abort) */ int f_opendb( @@ -2270,7 +2287,9 @@ status = Tcl_Eval(interp, bu_vls_addr(&vls)); if(status != TCL_OK || interp->result[0] == '2') { - mged_finish(0); + bu_vls_free(&vls); + bu_vls_free(&msg); + return TCL_ERROR; } if(interp->result[0] == '1') { |