1: /* main progam for manager
2: Copyright (C) 1992-2000 Michigan State University
3:
4: The CAPA system is free software; you can redistribute it and/or
5: modify it under the terms of the GNU Library General Public License as
6: published by the Free Software Foundation; either version 2 of the
7: License, or (at your option) any later version.
8:
9: The CAPA system is distributed in the hope that it will be useful,
10: but WITHOUT ANY WARRANTY; without even the implied warranty of
11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: Library General Public License for more details.
13:
14: You should have received a copy of the GNU Library General Public
15: License along with the CAPA system; see the file COPYING. If not,
16: write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17: Boston, MA 02111-1307, USA.
18:
19: As a special exception, you have permission to link this program
20: with the TtH/TtM library and distribute executables, as long as you
21: follow the requirements of the GNU GPL in regard to all of the
22: software in the executable aside from TtH/TtM.
23: */
24:
25: /*
26: * manager.c
27: * Guy Albertelli II 1997
28: */
29: #include <stdio.h>
30: #include <tk.h>
31: #include <stdlib.h>
32: #include <Capa/capaCommon.h>
33: #include <unistd.h>
34: #include "manager.h"
35:
36: extern Tcl_Interp *gInterp;
37:
38: int Manager_Init(Tcl_Interp *interp);
39: int main(int argc,char **argv)
40: {
41: char * rDisplay,*q,filename[BUFFER_SIZE],buffer[BUFFER_SIZE];
42: int found=1;
43:
44: gInterp=Tcl_CreateInterp();
45: if (gInterp ==NULL)
46: {
47: fprintf(stderr,"Couldn't get a new Tcl Interp\n");
48: return -1;
49: }
50:
51: rDisplay = getenv("DISPLAY");
52:
53: if (rDisplay==NULL)
54: {
55: fprintf(stderr,"getenv for DISPLAY returned NULL\n");
56: return -2;
57: }
58:
59: if (Tcl_SetVar2 (gInterp, "env", "DISPLAY", rDisplay, TCL_GLOBAL_ONLY) == NULL)
60: {
61: fprintf(stderr,"Couldn't set env(DISPLAY) = %s\n",rDisplay);
62: return -3;
63: }
64:
65: q = Tcl_Merge(argc-1, argv+1);
66: Tcl_SetVar(gInterp, "argv", q, TCL_GLOBAL_ONLY);
67: ckfree(q);
68: sprintf(buffer, "%d", argc-1);
69: Tcl_SetVar(gInterp, "argc", buffer, TCL_GLOBAL_ONLY);
70: Tcl_SetVar(gInterp, "argv0", argv[0],TCL_GLOBAL_ONLY);
71: Tcl_SetVar(gInterp, "tcl_interactive","0", TCL_GLOBAL_ONLY);
72:
73: if (Tcl_Init(gInterp) == TCL_ERROR)
74: {
75: fprintf(stderr,"Tcl_Init error\n");
76: fprintf(stderr,"%d\n",TCL_ERROR);
77: fprintf(stderr,"%s\n",gInterp->result);
78: return -4;
79: }
80:
81: if (Tk_Init(gInterp) == TCL_ERROR)
82: {
83: fprintf(stderr,"Tk_Init error\n");
84: fprintf(stderr,"%d\n",TCL_ERROR);
85: fprintf(stderr,"%s\n",gInterp->result);
86: return -5;
87: }
88:
89: Manager_Init(gInterp);
90: Scorer_Init(gInterp);
91:
92: sprintf(filename,"./utils.tcl");
93: if( capa_access(filename, F_OK) == -1 ) {
94: sprintf(filename,"/usr/local/bin/Manager/utils.tcl");
95: if( capa_access(filename, F_OK) == -1 ) {
96: sprintf(filename,"/usr/local/lib/CAPA45/utils.tcl");
97: if( capa_access(filename, F_OK) == -1 ) {
98: sprintf(filename,"/usr/local/lib/utils.tcl");
99: if( capa_access(filename, F_OK) == -1 ) {
100: sprintf(filename,"/usr/local/lib/utils.tcl");
101: if( capa_access(filename, F_OK) == -1 ) {
102: sprintf(filename,"/usr/local/lib/CAPA45/Manager/utils.tcl");
103: if( capa_access(filename, F_OK) == -1 ) {
104: sprintf(filename,"/usr/lib/utils.tcl");
105: if( capa_access(filename, F_OK) == -1 ) { /* I gave up! */
106: found=0;
107: }
108: }
109: }
110: }
111: }
112: }
113: }
114:
115: if( found ) {
116: if (Tcl_EvalFile(gInterp, filename) != TCL_OK)
117: {
118: fprintf(stderr,"%s\n",gInterp->result);
119: return -6;
120: }
121: } else {
122: fprintf(stderr,"Unable to find utils.tcl\n");
123: exit(-7);
124: }
125:
126: sprintf(filename,"./common.tcl");
127: if( capa_access(filename, F_OK) == -1 ) {
128: sprintf(filename,"/usr/local/bin/Manager/common.tcl");
129: if( capa_access(filename, F_OK) == -1 ) {
130: sprintf(filename,"/usr/local/lib/CAPA45/common.tcl");
131: if( capa_access(filename, F_OK) == -1 ) {
132: sprintf(filename,"/usr/local/lib/common.tcl");
133: if( capa_access(filename, F_OK) == -1 ) {
134: sprintf(filename,"/usr/local/lib/common.tcl");
135: if( capa_access(filename, F_OK) == -1 ) {
136: sprintf(filename,"/usr/local/lib/CAPA45/Manager/common.tcl");
137: if( capa_access(filename, F_OK) == -1 ) {
138: sprintf(filename,"/usr/lib/common.tcl");
139: if( capa_access(filename, F_OK) == -1 ) { /* I gave up! */
140: found=0;
141: }
142: }
143: }
144: }
145: }
146: }
147: }
148: if( found ) {
149: if (Tcl_EvalFile(gInterp, filename) != TCL_OK)
150: {
151: fprintf(stderr,"%s\n",gInterp->result);
152: return -6;
153: }
154: } else {
155: fprintf(stderr,"Unable to find common.tcl\n");
156: exit(-7);
157: }
158: sprintf(filename,"./manager.tcl");
159: if( capa_access(filename, F_OK) == -1 ) {
160: sprintf(filename,"/usr/local/bin/Manager/manager.tcl");
161: if( capa_access(filename, F_OK) == -1 ) {
162: sprintf(filename,"/usr/local/lib/CAPA45/manager.tcl");
163: if( capa_access(filename, F_OK) == -1 ) {
164: sprintf(filename,"/usr/local/lib/manager.tcl");
165: if( capa_access(filename, F_OK) == -1 ) {
166: sprintf(filename,"/usr/local/lib/manager.tcl");
167: if( capa_access(filename, F_OK) == -1 ) {
168: sprintf(filename,"/usr/local/lib/CAPA45/Manager/manager.tcl");
169: if( capa_access(filename, F_OK) == -1 ) {
170: sprintf(filename,"/usr/lib/manager.tcl");
171: if( capa_access(filename, F_OK) == -1 ) { /* I gave up! */
172: found=0;
173: }
174: }
175: }
176: }
177: }
178: }
179: }
180:
181: /*
182: fprintf(stderr,"HEY STILL IN DEVELOPEMENT MODE\n");
183: if (Tcl_EvalFile(gInterp, "manager.tcl")
184: != TCL_OK)
185: {
186: fprintf(stderr,"%s\n",gInterp->result);
187: return -6;
188: }
189: */
190:
191: if( found ) {
192: if (Tcl_EvalFile(gInterp, filename) != TCL_OK)
193: {
194: fprintf(stderr,"%s\n",gInterp->result);
195: return -6;
196: }
197: while(Tcl_DoOneEvent(TCL_ALL_EVENTS));
198: } else {
199: fprintf(stderr,"Unable to find manager.tcl\n");
200: exit(-7);
201: }
202: return 0;
203: }
204:
205:
206:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>