/[MITgcm]/MITgcm_contrib/mpack_src/mpack-1.6-4/macninit.c
ViewVC logotype

Annotation of /MITgcm_contrib/mpack_src/mpack-1.6-4/macninit.c

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


Revision 1.1 - (hide annotations) (download)
Sat Feb 23 20:22:58 2008 UTC (17 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
- get new version from: http://packages.qa.debian.org/m/mpack.html
  (files: mpack_1.6.orig.tar.gz, mpack_1.6-4.diff.gz, mpack_1.6-4.dsc)
  and apply patch 'mpack_1.6-4.diff' to original dir: mpack_1.6/
- this fix the MD5 coding on 64.bit platforms (well, seems to).
- added in Contrib to allow separate test (since building mpack seems fishy)

1 jmc 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