sundar@ai.mit.edu (Sundar Narasimhan) (03/27/91)
Hi: I'm having a somewhat wierd problem. I have a program that when compiled and executed behaves differently than when it is executed under Saber. (I understand this may be a Saber problem, but I was wondering if any of you have run into it and have a work around). I have a program that does something like: top = XtAppInitialize(NULL, "Graph", optionList, XtNumber(optionList), &argc, argv, NULL, NULL, NULL); XtGetApplicationResources(top, NULL, resources, XtNumber(resources), NULL, 0); where optionList and resources have been initialized thusly: static XtResource resources[] = { { "xlabel", "xlabel", XtRString, sizeof(char *), (unsigned int) &xlabel, XtRString, (caddr_t) "X Values" }, { "ylabel", "ylabel", XtRString, sizeof(char *), (unsigned int) &ylabel, XtRString, (caddr_t) "Y Values" }, { "title", "title", XtRString, sizeof(char *), (unsigned int) &title, XtRString, (caddr_t) "Contour Plot" }, { "infile", "infile", XtRString, sizeof(char *), (unsigned int) &infile, XtRString, (caddr_t) NULL }, { "wire", "wire", XtRBool, sizeof(Bool), (unsigned int) &wireframe, XtRString, (caddr_t) NULL }, { "surface", "surface", XtRBool, sizeof(Bool), (unsigned int) &surface, XtRString, (caddr_t) NULL }, }; static XrmOptionDescRec optionList[] = { { "-xlabel", "*graph*xlabel", XrmoptionSepArg, "X Values" }, { "-ylabel", "*graph*ylabel", XrmoptionSepArg, "Y Values" }, { "-title", "*graph*title", XrmoptionSepArg, "Contour Plot" }, { "-wire", "*wire", XrmoptionNoArg, (caddr_t) "True" }, { "-surface", "*surface", XrmoptionNoArg, (caddr_t) "True" }, { "-in", "*infile", XrmoptionSepArg, (caddr_t) NULL }, }; Now, the program compiles and executes fine. But I'd like to run this under Saber. Unfortunately, when I try to do this, XtGetApplicationResources doesn't seem to notice the passed in argc, argv when I do this. How is this really supposed to work? It looks like XtAppInitialize saves away the arguments and sets argc to 1, and then XtGetApplicationR.. gets the data from the saved area. Why does this work in my executable but not under Saber? Thanks for any help you can provide in advance. (BTW, I've tried reinitializing the variables within Saber, re-running etc.. but nothing seems to work).
oj@saber.COM (03/27/91)
In message <14373@life.ai.mit.edu> Sundar Narasimhan asked: ... I have a program that when compiled and executed behaves differently than when it is executed under Saber.... I have a program that [uses XtAppInitialize and XtGetApplicationResources together with an XrmOptionDescRec array and an XtResource array.]... Now, the program compiles and executes fine. But I'd like to run this under Saber. Unfortunately, when I try to do this, XtGetApplicationResources doesn't seem to notice the passed in argc, argv when I do this. What's happening here is that Saber-C provides an argv[0] value of "a.out" when you run the program (just like dbx). This baffles the X resource manager. To get around this, issue the following Saber-C command before issuing the Saber-C run command (supposing your program's executable file is ordinarily named "mygraph"): -> setopt program_name mygraph If you do this the XtGetApplicationResources call should start to recognize the stuff put into the resource list via your XrmOptionDescRec. (When I'm using Saber-C to hack Xt stuff, I put the following line in my $HOME/.saberinit file in case I forget): setopt program_name test Ollie Jones Saber Software, Inc. oj@saber.com Project Leader 185 Alewife Brook Parkway uunet!saber.com!oj +1(617)876-7636 Cambridge, MA 02138-9887 fax +1(617)547-9011