/[MITgcm]/MITgcm/tools/mpack-1.6/macninit.c
ViewVC logotype

Contents of /MITgcm/tools/mpack-1.6/macninit.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Tue Aug 26 20:45:25 2003 UTC (20 years, 7 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint58l_post, checkpoint64z, checkpoint51k_post, checkpoint57t_post, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint57o_post, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint52l_pre, checkpoint52e_pre, hrcube4, checkpoint58e_post, mitgcm_mapl_00, checkpoint52n_post, checkpoint52j_post, checkpoint53d_post, checkpoint58u_post, checkpoint58w_post, checkpoint54a_pre, checkpoint51o_pre, checkpoint57m_post, checkpoint55c_post, checkpoint54e_post, checkpoint52e_post, checkpoint57s_post, checkpoint51n_pre, checkpoint54a_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint53c_post, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint57k_post, checkpoint55d_pre, checkpoint57d_post, checkpoint51l_post, checkpoint57g_post, checkpoint51q_post, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint57b_post, checkpoint57c_pre, checkpoint51j_post, checkpoint58r_post, checkpoint55j_post, checkpoint56b_post, checkpoint57i_post, checkpoint57y_post, hrcube_1, checkpoint57e_post, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, branch-netcdf, checkpoint52d_pre, checkpoint52l_post, checkpoint55h_post, checkpoint58n_post, checkpoint53b_post, checkpoint58x_post, checkpoint52k_post, checkpoint52b_pre, checkpoint57g_pre, checkpoint54b_post, checkpoint53b_pre, checkpoint55b_post, checkpoint58t_post, checkpoint58h_post, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint54d_post, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint56c_post, checkpoint52m_post, checkpoint57y_pre, checkpoint55, checkpoint53a_post, checkpoint57f_pre, checkpoint57a_post, checkpoint54, checkpoint58q_post, checkpoint54f_post, checkpoint57v_post, checkpoint59q, checkpoint59p, checkpoint55g_post, checkpoint59r, checkpoint51o_post, checkpoint51p_post, checkpoint58j_post, checkpoint52a_pre, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint57r_post, checkpoint59, checkpoint58, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, checkpoint51i_post, checkpoint53, checkpoint52, checkpoint51f_post, checkpoint52d_post, eckpoint57e_pre, checkpoint51r_post, checkpoint52a_post, checkpoint57h_done, checkpoint58f_post, checkpoint52b_post, checkpoint53g_post, checkpoint52f_post, branchpoint-genmake2, checkpoint57x_post, checkpoint57n_post, checkpoint52c_post, checkpoint58d_post, checkpoint58c_post, checkpoint57w_post, checkpoint57p_post, checkpint57u_post, checkpoint57f_post, checkpoint58a_post, checkpoint51h_pre, checkpoint51l_pre, checkpoint58i_post, checkpoint57q_post, checkpoint51g_post, checkpoint58g_post, ecco_c52_e35, hrcube5, checkpoint58o_post, checkpoint57z_post, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint57c_post, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint55e_post, checkpoint58k_post, checkpoint52i_post, checkpoint52j_pre, checkpoint58v_post, checkpoint53f_post, checkpoint55a_post, checkpoint51t_post, checkpoint53d_pre, checkpoint54c_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint51n_post, checkpoint57j_post, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58b_post, checkpoint57h_pre, checkpoint51i_pre, checkpoint58m_post, checkpoint57l_post, checkpoint52i_pre, checkpoint51u_post, checkpoint52h_pre, checkpoint52f_pre, checkpoint57h_post, hrcube_2, hrcube_3, checkpoint56a_post, checkpoint51m_post, checkpoint51s_post, checkpoint55d_post, HEAD
Branch point for: branch-nonh, branch-genmake2, tg2-branch, checkpoint51n_branch, netcdf-sm0
File MIME type: text/plain
Initial check-in of the CMU "mpack" utility.  This allows us to (portably)
send MITgcm output as MIME-encoded email messages and will be used by the
"testreport" script.  The CMU license is basically an "AS-IS" statement.

1 /* macninit.c -- general mac nifty application library initialization
2 */
3 /* (C) Copyright 1995 by Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify, distribute, and sell this software
7 * and its documentation for any purpose is hereby granted without
8 * fee, provided that the above copyright notice appear in all copies
9 * and that both that copyright notice and this permission notice
10 * appear in supporting documentation, and that the name of Carnegie
11 * Mellon University not be used in advertising or publicity
12 * pertaining to distribution of the software without specific,
13 * written prior permission. Carnegie Mellon University makes no
14 * representations about the suitability of this software for any
15 * purpose. It is provided "as is" without express or implied
16 * warranty.
17 *
18 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
19 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
20 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
21 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
22 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
23 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
24 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
25 * SOFTWARE.
26 */
27 /* (C) Copyright 1990-1994 by Christopher J. Newman
28 * All Rights Reserved.
29 *
30 * Permission to use, copy, modify, distribute, and sell this software and its
31 * documentation for any purpose is hereby granted without fee, provided that
32 * the above copyright notice appear in all copies and that both that
33 * copyright notice and this permission notice appear in supporting
34 * documentation, and that the name of Christopher J. Newman not be used in
35 * advertising or publicity pertaining to distribution of the software without
36 * specific, written prior permission. Christopher J. Newman makes no
37 * representations about the suitability of this software for any purpose. It
38 * is provided "as is" without express or implied warranty.
39 *
40 * CHRISTOPHER J. NEWMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
41 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
42 * SHALL CHRISTOPHER J. NEWMAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
43 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
44 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
45 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
46 * OF THIS SOFTWARE.
47 *
48 * Author: Christopher J. Newman
49 * Message: This is a nifty program.
50 */
51
52 #ifndef THINK_C
53 #include <Fonts.h>
54 #include <SegLoad.h>
55 #include <OSEvents.h>
56
57 extern void _DataInit(); /* MPW initialize routine */
58 #endif
59 #include <string.h>
60 #include <Traps.h>
61 #include <AppleEvents.h>
62 #include <GestaltEqu.h>
63 #include <Balloons.h>
64 #include "macnapp.h"
65
66 extern pascal OSErr NArequiredAE(AppleEvent *, AppleEvent *, long);
67
68 #ifndef _Unimplemented
69 #define _Unimplemented 0xA89F
70 #endif
71 #ifndef _WaitNextEvent
72 #define _WaitNextEvent 0xA860
73 #endif
74 #ifndef _Gestalt
75 #define _Gestalt 0xA1AD
76 #endif
77
78 /* global to hold the application heap zone */
79 extern THz NAappzone;
80
81 static Boolean TrapAvailable(short);
82
83 /* this checks if a given trap is available on the system
84 */
85 static Boolean TrapAvailable(short tNumber)
86 {
87 short numtraps = 0x400;
88 TrapType tType;
89
90 tType = tNumber & 0x800 ? ToolTrap : OSTrap;
91 if (tType == ToolTrap) {
92 if (NGetTrapAddress(_InitGraf, ToolTrap)
93 == NGetTrapAddress(0xAA6E, ToolTrap)) {
94 numtraps = 0x200;
95 }
96 tNumber = tNumber & 0x07FF;
97 if (tNumber >= numtraps)
98 tNumber = _Unimplemented;
99 }
100
101 return (NGetTrapAddress(tNumber, tType)
102 != NGetTrapAddress(_Unimplemented, ToolTrap));
103 }
104
105 /* initialize the Macintosh managers and niftyapp internal variables.
106 * call this first.
107 */
108 short NAinit(short minK, short masters, na_openp openp, na_menup menup,
109 short nummenu, short numapple, short newitem, short closeitem)
110 {
111 long total, contig, response, procid;
112 EventRecord event;
113 short count;
114 Handle menuBar;
115 short message, i, aeflag = 0;
116 AppFile afile;
117 FSSpec fspec;
118 Str255 str;
119 MenuHandle mh, helpmh;
120 CInfoPBRec catinfo;
121
122 #ifndef THINK_C
123 UnloadSeg((Ptr) _DataInit); /* unload MPW init routine */
124 #endif
125 MaxApplZone(); /* expand heap so code loads at top */
126
127 /* initialize all the managers */
128 InitGraf((Ptr) &QD(thePort));
129 InitFonts();
130 InitWindows();
131 InitMenus();
132 TEInit();
133 InitDialogs(NULL);
134 InitCursor();
135
136 /* allocate enough master pointers */
137 for (count = 1; count <= masters; count++) {
138 MoreMasters();
139 if (MemError() != noErr) return (-1);
140 }
141
142 /* hack to bring to front in MultiFinder */
143 for (count = 1; count <= 3; count++) EventAvail(everyEvent, &event);
144
145 /* get the system environment */
146 (void) SysEnvirons(1, &NAsysenv);
147
148 /* verify we have 128K ROMS, WaitNextEvent is available, and we have enough memory */
149 if (NAsysenv.machineType < 0
150 || !TrapAvailable(_WaitNextEvent)
151 || (long) GetApplLimit() - (long) ApplicZone() < minK) {
152 return (-1);
153 }
154
155 /* check for some Gestalt things and set up Apple Event Handler
156 * We assume that the Gestalt compatibility glue is used
157 */
158 NAgestaltBits = 0;
159 if (Gestalt(gestaltAppleEventsAttr, &response) == noErr) {
160 NAgestaltBits |= NA_HASAEVENTS;
161 if (AEInstallEventHandler(kCoreEventClass, typeWildCard,
162 NArequiredAE, (long) openp, FALSE) == noErr) {
163 aeflag = 1;
164 }
165 }
166 if (Gestalt(gestaltFSAttr, &response) == noErr
167 && (response & gestaltHasFSSpecCalls)) {
168 NAgestaltBits |= NA_HASFSSPEC;
169 }
170 if (Gestalt(gestaltStandardFileAttr, &response) == noErr) {
171 NAgestaltBits |= NA_HASSTDFILE;
172 }
173
174 /* clean up and check available free memory */
175 PurgeSpace(&total, &contig);
176 if (total < minK) return (-1);
177
178 /* store our application heap zone */
179 NAappzone = ApplicZone();
180
181 /* if the user wants automatic menu handling, do it now */
182 NAmenus = NULL;
183 if (menup != (na_menup) NULL) {
184 NAmenus = (MenuHandle **) NewHandle(sizeof (MenuHandle) * (nummenu + 1));
185 if (NAmenus == (MenuHandle **) NULL) return (-1);
186 HLock((Handle) NAmenus);
187 for (i = 0; i < nummenu; ++i) {
188 InsertMenu((*NAmenus)[i] = GetMenu(mApple + i), 0);
189 }
190 (*NAmenus)[i] = NULL;
191 HUnlock((Handle) NAmenus);
192 mh = **NAmenus; /* Apple menu */
193 *str = 0;
194 GetIndString(str, NA_HELPSTR, 1);
195 if (*str) {
196 if (Gestalt(gestaltHelpMgrAttr, &response) != noErr
197 || HMGetHelpMenuHandle(&helpmh) != noErr) {
198 helpmh = mh;
199 } else {
200 NAhelpcount = CountMItems(helpmh);
201 }
202 for (i = 2; *str; ++i) {
203 ++NAhelpitems;
204 AppendMenu(helpmh, str);
205 GetIndString(str, NA_HELPSTR, i);
206 }
207 }
208 AppendMenu(mh, "\p-");
209 AddResMenu(mh, 'DRVR');
210 DrawMenuBar();
211 NAcloseitem = closeitem;
212 NAnewitem = newitem;
213 NAappleitems = numapple;
214 if (nummenu > 2) NAhasedit = true;
215 NAmenup = menup;
216 }
217
218 /* create full & empty regions */
219 NAfullRgn = NewRgn();
220 NAnullRgn = NewRgn();
221 if (!NAfullRgn || !NAnullRgn) return (-1);
222 SetRectRgn(NAfullRgn, -32767, -32767, 32767, 32767);
223
224 /* save ibeam cursor */
225 NAibeam = **GetCursor(iBeamCursor);
226
227 /* handle startup files (prior to system 7) */
228 if (!aeflag) {
229 count = 0;
230 if (openp != (na_openp) NULL) {
231 CountAppFiles(&message, &count);
232 if (count) {
233 for (i = 1; i <= count; i++) {
234 GetAppFiles(i, &afile);
235 procid = 0;
236 catinfo.hFileInfo.ioNamePtr = (StringPtr) &afile.fName;
237 catinfo.hFileInfo.ioVRefNum = afile.vRefNum;
238 catinfo.hFileInfo.ioFDirIndex = 0;
239 catinfo.hFileInfo.ioDirID = 0;
240 GetWDInfo(afile.vRefNum, &catinfo.hFileInfo.ioVRefNum,
241 &catinfo.hFileInfo.ioDirID, &procid);
242 if (PBGetCatInfoSync(&catinfo) == noErr) {
243 fspec.vRefNum = catinfo.hFileInfo.ioVRefNum;
244 fspec.parID = catinfo.hFileInfo.ioFlParID;
245 memcpy(fspec.name, afile.fName, *afile.fName + 1);
246 if ((*openp)(message, &fspec, &catinfo.hFileInfo.ioFlFndrInfo) < 0) {
247 break;
248 }
249 }
250 }
251 ClrAppFiles(count);
252 if (message == appPrint
253 && NAcloseWindows(NAhead, NA_REQCLOSEALL) == NA_ALLCLOSED) {
254 return (1);
255 }
256 }
257 }
258 if (newitem && !count && menup != (na_menup) NULL) {
259 (*menup)(NULL, mFile, newitem);
260 }
261 }
262
263 return (0);
264 }

  ViewVC Help
Powered by ViewVC 1.1.22