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

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

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


Revision 1.1 - (hide annotations) (download)
Tue Aug 26 20:45:25 2003 UTC (20 years, 8 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 edhill 1.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