1 /* macnfile.c -- standard file operations for nifty application library
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-1995 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 #include <string.h>
53 #include "macnapp.h"
54
55 /* copy SFReply to StandardFileReply
56 */
sftostd(SFReply * rep,StandardFileReply * reply)57 static void sftostd(SFReply *rep, StandardFileReply *reply)
58 {
59 long procid = 0;
60
61 if ((reply->sfGood = rep->good) == true) {
62 reply->sfReplacing = false;
63 reply->sfType = rep->fType;
64 memcpy((void *) reply->sfFile.name, rep->fName, *rep->fName + 1);
65 reply->sfFile.parID = 0;
66 reply->sfFile.vRefNum = rep->vRefNum;
67 GetWDInfo(rep->vRefNum, &reply->sfFile.vRefNum, &reply->sfFile.parID, &procid);
68 }
69 }
70
71 /* get a file to save
72 */
NAputFile(Str255 prompt,Str255 initfname,StandardFileReply * reply)73 void NAputFile(Str255 prompt, Str255 initfname, StandardFileReply *reply)
74 {
75 SFReply rep;
76 Point where;
77
78 if (NAgestaltBits & NA_HASSTDFILE) {
79 StandardPutFile(prompt, initfname, reply);
80 } else {
81 where.h = where.v = 0;
82 SFPutFile(where, prompt, initfname, nil, &rep);
83 sftostd(&rep, reply);
84 }
85 }
86
87 /* get a file to open
88 */
NAgetFile(FileFilterProcPtr filter,short numtypes,SFTypeList types,StandardFileReply * reply)89 void NAgetFile(FileFilterProcPtr filter, short numtypes,
90 SFTypeList types, StandardFileReply *reply)
91 {
92 Point p;
93 SFReply rep;
94
95 if (NAgestaltBits & NA_HASSTDFILE) {
96 StandardGetFile(filter, numtypes, types, reply);
97 } else {
98 p.h = p.v = 0;
99 SFGetFile(p, NULL, (ProcPtr) filter, numtypes, types, 0, &rep);
100 sftostd(&rep, reply);
101 }
102 }
103