Mercurial > cpython-lru_cache-weakref
annotate Mac/Modules/macfsmodule.c @ 4566:6403c94de50d legacy-trunk
Added safeguard against failure in __del__.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 27 Nov 1996 19:39:58 +0000 |
| parents | d0c03c32e8d9 |
| children | 44bdf0b56c0b |
| rev | line source |
|---|---|
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
1 /*********************************************************** |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
3 The Netherlands. |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
4 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
5 All Rights Reserved |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
6 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
7 Permission to use, copy, modify, and distribute this software and its |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
8 documentation for any purpose and without fee is hereby granted, |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
9 provided that the above copyright notice appear in all copies and that |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
10 both that copyright notice and this permission notice appear in |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
11 supporting documentation, and that the names of Stichting Mathematisch |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
12 Centrum or CWI not be used in advertising or publicity pertaining to |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
13 distribution of the software without specific, written prior permission. |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
14 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
22 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
23 ******************************************************************/ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
24 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
25 #include "allobjects.h" |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
26 #include "modsupport.h" /* For getargs() etc. */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
27 #include "macglue.h" |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
28 |
| 2337 | 29 #include <Memory.h> |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
30 #include <Files.h> |
|
2748
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
31 #include <Folders.h> |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
32 #include <StandardFile.h> |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
33 #include <Aliases.h> |
|
3787
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
34 #include <LowMem.h> |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
35 |
|
4319
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
36 #include "getapplbycreator.h" |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
37 |
|
2186
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
38 #ifdef THINK_C |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
39 #define FileFilterUPP FileFilterProcPtr |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
40 #endif |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
41 |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
42 static object *ErrorObject; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
43 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
44 /* ----------------------------------------------------- */ |
| 2249 | 45 /* Declarations for objects of type Alias */ |
| 46 | |
| 47 typedef struct { | |
| 48 OB_HEAD | |
| 49 AliasHandle alias; | |
| 50 } mfsaobject; | |
| 51 | |
| 52 staticforward typeobject Mfsatype; | |
| 53 | |
| 54 #define is_mfsaobject(v) ((v)->ob_type == &Mfsatype) | |
| 55 | |
| 56 /* ---------------------------------------------------------------- */ | |
| 57 /* Declarations for objects of type FSSpec */ | |
| 58 | |
| 59 typedef struct { | |
| 60 OB_HEAD | |
| 61 FSSpec fsspec; | |
| 62 } mfssobject; | |
| 63 | |
| 64 staticforward typeobject Mfsstype; | |
| 65 | |
| 66 #define is_mfssobject(v) ((v)->ob_type == &Mfsstype) | |
| 67 | |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
68 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
69 /* ---------------------------------------------------------------- */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
70 /* Declarations for objects of type FInfo */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
71 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
72 typedef struct { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
73 OB_HEAD |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
74 FInfo finfo; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
75 } mfsiobject; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
76 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
77 staticforward typeobject Mfsitype; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
78 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
79 #define is_mfsiobject(v) ((v)->ob_type == &Mfsitype) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
80 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
81 |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
82 mfssobject *newmfssobject(FSSpec *fss); /* Forward */ |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
83 |
| 2249 | 84 /* ---------------------------------------------------------------- */ |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
85 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
86 static object * |
| 2249 | 87 mfsa_Resolve(self, args) |
| 88 mfsaobject *self; | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
89 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
90 { |
| 2249 | 91 FSSpec from, *fromp, result; |
| 92 Boolean changed; | |
| 93 OSErr err; | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
94 |
| 2249 | 95 from.name[0] = 0; |
| 96 if (!newgetargs(args, "|O&", PyMac_GetFSSpec, &from)) | |
| 97 return NULL; | |
| 98 if (from.name[0] ) | |
| 99 fromp = &from; | |
| 100 else | |
| 101 fromp = NULL; | |
| 102 err = ResolveAlias(fromp, self->alias, &result, &changed); | |
| 103 if ( err ) { | |
| 104 PyErr_Mac(ErrorObject, err); | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
105 return NULL; |
| 2249 | 106 } |
| 107 return mkvalue("(Oi)", newmfssobject(&result), (int)changed); | |
| 108 } | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
109 |
| 2249 | 110 static object * |
| 111 mfsa_GetInfo(self, args) | |
| 112 mfsaobject *self; | |
| 113 object *args; | |
| 114 { | |
| 115 Str63 value; | |
| 116 int i; | |
| 117 OSErr err; | |
| 118 | |
| 119 if (!newgetargs(args, "i", &i)) | |
| 120 return NULL; | |
| 121 err = GetAliasInfo(self->alias, (AliasInfoType)i, value); | |
| 122 if ( err ) { | |
| 123 PyErr_Mac(ErrorObject, err); | |
| 124 return 0; | |
| 125 } | |
| 126 return newsizedstringobject((char *)&value[1], value[0]); | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
127 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
128 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
129 static object * |
| 2249 | 130 mfsa_Update(self, args) |
| 131 mfsaobject *self; | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
132 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
133 { |
| 2249 | 134 FSSpec target, fromfile, *fromfilep; |
| 135 OSErr err; | |
| 136 Boolean changed; | |
| 137 | |
| 138 fromfile.name[0] = 0; | |
| 139 if (!newgetargs(args, "O&|O&", PyMac_GetFSSpec, &target, | |
| 140 PyMac_GetFSSpec, &fromfile)) | |
| 141 return NULL; | |
| 142 if ( fromfile.name[0] ) | |
| 143 fromfilep = &fromfile; | |
| 144 else | |
| 145 fromfilep = NULL; | |
| 146 err = UpdateAlias(fromfilep, &target, self->alias, &changed); | |
| 147 if ( err ) { | |
| 148 PyErr_Mac(ErrorObject, err); | |
| 149 return 0; | |
| 150 } | |
| 151 return mkvalue("i", (int)changed); | |
| 152 } | |
| 153 | |
| 154 static struct methodlist mfsa_methods[] = { | |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
155 {"Resolve", (method)mfsa_Resolve, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
156 {"GetInfo", (method)mfsa_GetInfo, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
157 {"Update", (method)mfsa_Update, 1}, |
| 2249 | 158 |
| 159 {NULL, NULL} /* sentinel */ | |
| 160 }; | |
| 161 | |
| 162 /* ---------- */ | |
| 163 | |
| 164 static object * | |
| 165 mfsa_getattr(self, name) | |
| 166 mfsaobject *self; | |
| 167 char *name; | |
| 168 { | |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
169 if ( strcmp(name, "data") == 0 ) { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
170 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
171 PyObject *rv; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
172 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
173 size = GetHandleSize((Handle)self->alias); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
174 HLock((Handle)self->alias); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
175 rv = PyString_FromStringAndSize(*(Handle)self->alias, size); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
176 HUnlock((Handle)self->alias); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
177 return rv; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
178 } |
| 2249 | 179 return findmethod(mfsa_methods, (object *)self, name); |
| 180 } | |
| 181 | |
| 182 mfsaobject * | |
| 183 newmfsaobject(alias) | |
| 184 AliasHandle alias; | |
| 185 { | |
| 186 mfsaobject *self; | |
| 187 | |
| 188 self = NEWOBJ(mfsaobject, &Mfsatype); | |
| 189 if (self == NULL) | |
| 190 return NULL; | |
| 191 self->alias = alias; | |
| 192 return self; | |
| 193 } | |
| 194 | |
| 195 | |
| 196 static void | |
| 197 mfsa_dealloc(self) | |
| 198 mfsaobject *self; | |
| 199 { | |
| 200 #if 0 | |
| 201 if ( self->alias ) { | |
| 202 should we do something here? | |
| 203 } | |
| 204 #endif | |
| 205 | |
| 206 DEL(self); | |
| 207 } | |
| 208 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
209 statichere typeobject Mfsatype = { |
| 2249 | 210 OB_HEAD_INIT(&Typetype) |
| 211 0, /*ob_size*/ | |
| 212 "Alias", /*tp_name*/ | |
| 213 sizeof(mfsaobject), /*tp_basicsize*/ | |
| 214 0, /*tp_itemsize*/ | |
| 215 /* methods */ | |
| 216 (destructor)mfsa_dealloc, /*tp_dealloc*/ | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
217 (printfunc)0, /*tp_print*/ |
| 2249 | 218 (getattrfunc)mfsa_getattr, /*tp_getattr*/ |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
219 (setattrfunc)0, /*tp_setattr*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
220 (cmpfunc)0, /*tp_compare*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
221 (reprfunc)0, /*tp_repr*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
222 0, /*tp_as_number*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
223 0, /*tp_as_sequence*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
224 0, /*tp_as_mapping*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
225 (hashfunc)0, /*tp_hash*/ |
| 2249 | 226 }; |
| 227 | |
| 228 /* End of code for Alias objects */ | |
| 229 /* -------------------------------------------------------- */ | |
| 230 | |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
231 /* ---------------------------------------------------------------- */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
232 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
233 static struct methodlist mfsi_methods[] = { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
234 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
235 {NULL, NULL} /* sentinel */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
236 }; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
237 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
238 /* ---------- */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
239 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
240 static mfsiobject * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
241 newmfsiobject() |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
242 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
243 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
244 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
245 self = NEWOBJ(mfsiobject, &Mfsitype); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
246 if (self == NULL) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
247 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
248 memset((char *)&self->finfo, '\0', sizeof(self->finfo)); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
249 return self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
250 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
251 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
252 static void |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
253 mfsi_dealloc(self) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
254 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
255 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
256 DEL(self); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
257 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
258 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
259 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
260 mfsi_getattr(self, name) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
261 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
262 char *name; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
263 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
264 if ( strcmp(name, "Type") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
265 return PyMac_BuildOSType(self->finfo.fdType); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
266 else if ( strcmp(name, "Creator") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
267 return PyMac_BuildOSType(self->finfo.fdCreator); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
268 else if ( strcmp(name, "Flags") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
269 return Py_BuildValue("i", (int)self->finfo.fdFlags); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
270 else if ( strcmp(name, "Location") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
271 return PyMac_BuildPoint(self->finfo.fdLocation); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
272 else if ( strcmp(name, "Fldr") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
273 return Py_BuildValue("i", (int)self->finfo.fdFldr); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
274 else |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
275 return findmethod(mfsi_methods, (object *)self, name); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
276 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
277 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
278 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
279 static int |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
280 mfsi_setattr(self, name, v) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
281 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
282 char *name; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
283 object *v; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
284 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
285 int rv; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
286 int i; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
287 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
288 if ( v == NULL ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
289 err_setstr(AttributeError, "Cannot delete attribute"); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
290 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
291 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
292 if ( strcmp(name, "Type") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
293 rv = PyMac_GetOSType(v, &self->finfo.fdType); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
294 else if ( strcmp(name, "Creator") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
295 rv = PyMac_GetOSType(v, &self->finfo.fdCreator); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
296 else if ( strcmp(name, "Flags") == 0 ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
297 rv = PyArg_Parse(v, "i", &i); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
298 self->finfo.fdFlags = (short)i; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
299 } else if ( strcmp(name, "Location") == 0 ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
300 rv = PyMac_GetPoint(v, &self->finfo.fdLocation); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
301 else if ( strcmp(name, "Fldr") == 0 ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
302 rv = PyArg_Parse(v, "i", &i); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
303 self->finfo.fdFldr = (short)i; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
304 } else { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
305 err_setstr(AttributeError, "No such attribute"); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
306 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
307 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
308 if (rv) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
309 return 0; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
310 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
311 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
312 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
313 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
314 static typeobject Mfsitype = { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
315 OB_HEAD_INIT(&Typetype) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
316 0, /*ob_size*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
317 "FInfo object", /*tp_name*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
318 sizeof(mfsiobject), /*tp_basicsize*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
319 0, /*tp_itemsize*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
320 /* methods */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
321 (destructor)mfsi_dealloc, /*tp_dealloc*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
322 (printfunc)0, /*tp_print*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
323 (getattrfunc)mfsi_getattr, /*tp_getattr*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
324 (setattrfunc)mfsi_setattr, /*tp_setattr*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
325 (cmpfunc)0, /*tp_compare*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
326 (reprfunc)0, /*tp_repr*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
327 0, /*tp_as_number*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
328 0, /*tp_as_sequence*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
329 0, /*tp_as_mapping*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
330 (hashfunc)0, /*tp_hash*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
331 }; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
332 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
333 /* End of code for FInfo object objects */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
334 /* -------------------------------------------------------- */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
335 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
336 |
| 2249 | 337 /* |
| 338 ** Helper routine for other modules: return an FSSpec * if the | |
| 339 ** object is a python fsspec object, else NULL | |
| 340 */ | |
| 341 FSSpec * | |
| 342 mfs_GetFSSpecFSSpec(self) | |
| 343 object *self; | |
| 344 { | |
| 345 if ( is_mfssobject(self) ) | |
| 346 return &((mfssobject *)self)->fsspec; | |
| 347 return NULL; | |
| 348 } | |
| 349 | |
|
4308
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
350 /* |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
351 ** Two generally useful routines |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
352 */ |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
353 static OSErr |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
354 PyMac_GetFileDates(fss, crdat, mddat, bkdat) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
355 FSSpec *fss; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
356 unsigned long *crdat, *mddat, *bkdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
357 { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
358 CInfoPBRec pb; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
359 OSErr error; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
360 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
361 pb.dirInfo.ioNamePtr = fss->name; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
362 pb.dirInfo.ioFDirIndex = 0; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
363 pb.dirInfo.ioVRefNum = fss->vRefNum; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
364 pb.dirInfo.ioDrDirID = fss->parID; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
365 error = PBGetCatInfoSync(&pb); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
366 if ( error ) return error; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
367 *crdat = pb.hFileInfo.ioFlCrDat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
368 *mddat = pb.hFileInfo.ioFlMdDat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
369 *bkdat = pb.hFileInfo.ioFlBkDat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
370 return 0; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
371 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
372 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
373 static OSErr |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
374 PyMac_SetFileDates(fss, crdat, mddat, bkdat) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
375 FSSpec *fss; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
376 unsigned long crdat, mddat, bkdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
377 { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
378 CInfoPBRec pb; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
379 OSErr error; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
380 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
381 pb.dirInfo.ioNamePtr = fss->name; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
382 pb.dirInfo.ioFDirIndex = 0; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
383 pb.dirInfo.ioVRefNum = fss->vRefNum; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
384 pb.dirInfo.ioDrDirID = fss->parID; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
385 error = PBGetCatInfoSync(&pb); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
386 if ( error ) return error; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
387 pb.dirInfo.ioNamePtr = fss->name; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
388 pb.dirInfo.ioFDirIndex = 0; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
389 pb.dirInfo.ioVRefNum = fss->vRefNum; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
390 pb.dirInfo.ioDrDirID = fss->parID; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
391 pb.hFileInfo.ioFlCrDat = crdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
392 pb.hFileInfo.ioFlMdDat = mddat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
393 pb.hFileInfo.ioFlBkDat = bkdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
394 error = PBSetCatInfoSync(&pb); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
395 return error; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
396 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
397 |
| 2249 | 398 static object * |
| 399 mfss_as_pathname(self, args) | |
| 400 mfssobject *self; | |
| 401 object *args; | |
| 402 { | |
| 403 char strbuf[257]; | |
| 404 OSErr err; | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
405 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
406 if (!newgetargs(args, "")) |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
407 return NULL; |
| 4524 | 408 err = PyMac_GetFullPath(&self->fsspec, strbuf); |
| 2249 | 409 if ( err ) { |
| 410 PyErr_Mac(ErrorObject, err); | |
| 411 return NULL; | |
| 412 } | |
| 413 return newstringobject(strbuf); | |
| 414 } | |
| 415 | |
| 416 static object * | |
| 417 mfss_as_tuple(self, args) | |
| 418 mfssobject *self; | |
| 419 object *args; | |
| 420 { | |
| 421 if (!newgetargs(args, "")) | |
| 422 return NULL; | |
| 423 return Py_BuildValue("(iis#)", self->fsspec.vRefNum, self->fsspec.parID, | |
| 424 &self->fsspec.name[1], self->fsspec.name[0]); | |
| 425 } | |
| 426 | |
| 427 static object * | |
| 428 mfss_NewAlias(self, args) | |
| 429 mfssobject *self; | |
| 430 object *args; | |
| 431 { | |
| 432 FSSpec src, *srcp; | |
| 433 OSErr err; | |
| 434 AliasHandle alias; | |
| 435 | |
| 436 src.name[0] = 0; | |
| 437 if (!newgetargs(args, "|O&", PyMac_GetFSSpec, &src)) | |
| 438 return NULL; | |
| 439 if ( src.name[0] ) | |
| 440 srcp = &src; | |
| 441 else | |
| 442 srcp = NULL; | |
| 443 err = NewAlias(srcp, &self->fsspec, &alias); | |
| 444 if ( err ) { | |
| 445 PyErr_Mac(ErrorObject, err); | |
| 446 return NULL; | |
| 447 } | |
| 448 | |
| 449 return (object *)newmfsaobject(alias); | |
| 450 } | |
| 451 | |
| 452 static object * | |
| 453 mfss_NewAliasMinimal(self, args) | |
| 454 mfssobject *self; | |
| 455 object *args; | |
| 456 { | |
| 457 OSErr err; | |
| 458 AliasHandle alias; | |
| 459 | |
| 460 if (!newgetargs(args, "")) | |
| 461 return NULL; | |
| 462 err = NewAliasMinimal(&self->fsspec, &alias); | |
| 463 if ( err ) { | |
| 464 PyErr_Mac(ErrorObject, err); | |
| 465 return NULL; | |
| 466 } | |
| 467 return (object *)newmfsaobject(alias); | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
468 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
469 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
470 /* XXXX These routines should be replaced by a wrapper to the *FInfo routines */ |
|
2275
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
471 static object * |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
472 mfss_GetCreatorType(self, args) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
473 mfssobject *self; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
474 object *args; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
475 { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
476 OSErr err; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
477 FInfo info; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
478 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
479 if (!newgetargs(args, "")) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
480 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
481 err = FSpGetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
482 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
483 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
484 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
485 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
486 return Py_BuildValue("(O&O&)", |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
487 PyMac_BuildOSType, info.fdCreator, PyMac_BuildOSType, info.fdType); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
488 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
489 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
490 static object * |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
491 mfss_SetCreatorType(self, args) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
492 mfssobject *self; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
493 object *args; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
494 { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
495 OSErr err; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
496 OSType creator, type; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
497 FInfo info; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
498 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
499 if (!newgetargs(args, "O&O&", PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
500 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
501 err = FSpGetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
502 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
503 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
504 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
505 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
506 info.fdType = type; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
507 info.fdCreator = creator; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
508 err = FSpSetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
509 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
510 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
511 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
512 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
513 INCREF(None); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
514 return None; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
515 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
516 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
517 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
518 mfss_GetFInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
519 mfssobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
520 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
521 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
522 OSErr err; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
523 mfsiobject *fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
524 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
525 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
526 if (!newgetargs(args, "")) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
527 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
528 if ( (fip=newmfsiobject()) == NULL ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
529 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
530 err = FSpGetFInfo(&self->fsspec, &fip->finfo); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
531 if ( err ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
532 PyErr_Mac(ErrorObject, err); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
533 DECREF(fip); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
534 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
535 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
536 return (object *)fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
537 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
538 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
539 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
540 mfss_SetFInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
541 mfssobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
542 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
543 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
544 OSErr err; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
545 mfsiobject *fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
546 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
547 if (!newgetargs(args, "O!", &Mfsitype, &fip)) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
548 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
549 err = FSpSetFInfo(&self->fsspec, &fip->finfo); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
550 if ( err ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
551 PyErr_Mac(ErrorObject, err); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
552 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
553 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
554 INCREF(None); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
555 return None; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
556 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
557 |
|
4308
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
558 static object * |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
559 mfss_GetDates(self, args) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
560 mfssobject *self; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
561 object *args; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
562 { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
563 OSErr err; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
564 unsigned long crdat, mddat, bkdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
565 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
566 if (!newgetargs(args, "")) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
567 return NULL; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
568 err = PyMac_GetFileDates(&self->fsspec, &crdat, &mddat, &bkdat); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
569 if ( err ) { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
570 PyErr_Mac(ErrorObject, err); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
571 return NULL; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
572 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
573 return mkvalue("ddd", (double)crdat, (double)mddat, (double)bkdat); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
574 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
575 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
576 static object * |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
577 mfss_SetDates(self, args) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
578 mfssobject *self; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
579 object *args; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
580 { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
581 OSErr err; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
582 double crdat, mddat, bkdat; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
583 |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
584 if (!newgetargs(args, "ddd", &crdat, &mddat, &bkdat)) |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
585 return NULL; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
586 err = PyMac_SetFileDates(&self->fsspec, (unsigned long)crdat, |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
587 (unsigned long)mddat, (unsigned long)bkdat); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
588 if ( err ) { |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
589 PyErr_Mac(ErrorObject, err); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
590 return NULL; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
591 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
592 INCREF(None); |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
593 return None; |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
594 } |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
595 |
| 2249 | 596 static struct methodlist mfss_methods[] = { |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
597 {"as_pathname", (method)mfss_as_pathname, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
598 {"as_tuple", (method)mfss_as_tuple, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
599 {"NewAlias", (method)mfss_NewAlias, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
600 {"NewAliasMinimal", (method)mfss_NewAliasMinimal, 1}, |
|
2275
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
601 {"GetCreatorType", (method)mfss_GetCreatorType, 1}, |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
602 {"SetCreatorType", (method)mfss_SetCreatorType, 1}, |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
603 {"GetFInfo", (method)mfss_GetFInfo, 1}, |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
604 {"SetFInfo", (method)mfss_SetFInfo, 1}, |
|
4308
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
605 {"GetDates", (method)mfss_GetDates, 1}, |
|
1a0f34c18163
Added [GS]etDates methods to get and set creation, modification and
Jack Jansen <jack.jansen@cwi.nl>
parents:
3787
diff
changeset
|
606 {"SetDates", (method)mfss_SetDates, 1}, |
| 2249 | 607 |
| 608 {NULL, NULL} /* sentinel */ | |
| 609 }; | |
| 610 | |
| 611 /* ---------- */ | |
| 612 | |
| 613 static object * | |
| 614 mfss_getattr(self, name) | |
| 615 mfssobject *self; | |
| 616 char *name; | |
| 617 { | |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
618 if ( strcmp(name, "data") == 0) |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
619 return PyString_FromStringAndSize((char *)&self->fsspec, sizeof(FSSpec)); |
| 2249 | 620 return findmethod(mfss_methods, (object *)self, name); |
| 621 } | |
| 622 | |
| 623 mfssobject * | |
| 624 newmfssobject(fss) | |
| 625 FSSpec *fss; | |
| 626 { | |
| 627 mfssobject *self; | |
| 628 | |
| 629 self = NEWOBJ(mfssobject, &Mfsstype); | |
| 630 if (self == NULL) | |
| 631 return NULL; | |
| 632 self->fsspec = *fss; | |
| 633 return self; | |
| 634 } | |
| 635 | |
| 636 static void | |
| 637 mfss_dealloc(self) | |
| 638 mfssobject *self; | |
| 639 { | |
| 640 DEL(self); | |
| 641 } | |
| 642 | |
| 643 static object * | |
| 644 mfss_repr(self) | |
| 645 mfssobject *self; | |
| 646 { | |
| 647 char buf[512]; | |
| 648 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
649 sprintf(buf, "FSSpec((%d, %d, '%.*s'))", |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
650 self->fsspec.vRefNum, |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
651 self->fsspec.parID, |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
652 self->fsspec.name[0], self->fsspec.name+1); |
| 2249 | 653 return newstringobject(buf); |
| 654 } | |
| 655 | |
| 656 static int | |
| 657 mfss_compare(v, w) | |
| 658 mfssobject *v, *w; | |
| 659 { | |
| 660 int minlen; | |
| 661 int res; | |
| 662 | |
| 663 if ( v->fsspec.vRefNum < w->fsspec.vRefNum ) return -1; | |
| 664 if ( v->fsspec.vRefNum > w->fsspec.vRefNum ) return 1; | |
| 665 if ( v->fsspec.parID < w->fsspec.parID ) return -1; | |
| 666 if ( v->fsspec.parID > w->fsspec.parID ) return 1; | |
| 667 minlen = v->fsspec.name[0]; | |
| 668 if ( w->fsspec.name[0] < minlen ) minlen = w->fsspec.name[0]; | |
| 669 res = strncmp((char *)v->fsspec.name+1, (char *)w->fsspec.name+1, minlen); | |
| 670 if ( res ) return res; | |
| 671 if ( v->fsspec.name[0] < w->fsspec.name[0] ) return -1; | |
| 672 if ( v->fsspec.name[0] > w->fsspec.name[0] ) return 1; | |
| 673 return res; | |
| 674 } | |
| 675 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
676 statichere typeobject Mfsstype = { |
| 2249 | 677 OB_HEAD_INIT(&Typetype) |
| 678 0, /*ob_size*/ | |
| 679 "FSSpec", /*tp_name*/ | |
| 680 sizeof(mfssobject), /*tp_basicsize*/ | |
| 681 0, /*tp_itemsize*/ | |
| 682 /* methods */ | |
| 683 (destructor)mfss_dealloc, /*tp_dealloc*/ | |
| 684 (printfunc)0, /*tp_print*/ | |
| 685 (getattrfunc)mfss_getattr, /*tp_getattr*/ | |
| 686 (setattrfunc)0, /*tp_setattr*/ | |
| 687 (cmpfunc)mfss_compare, /*tp_compare*/ | |
| 688 (reprfunc)mfss_repr, /*tp_repr*/ | |
| 689 0, /*tp_as_number*/ | |
| 690 0, /*tp_as_sequence*/ | |
| 691 0, /*tp_as_mapping*/ | |
| 692 (hashfunc)0, /*tp_hash*/ | |
| 693 }; | |
| 694 | |
| 695 /* End of code for FSSpec objects */ | |
| 696 /* -------------------------------------------------------- */ | |
| 697 | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
698 static object * |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
699 mfs_ResolveAliasFile(self, args) |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
700 object *self; /* Not used */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
701 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
702 { |
| 2249 | 703 FSSpec fss; |
| 704 Boolean chain = 1, isfolder, wasaliased; | |
| 705 OSErr err; | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
706 |
| 2249 | 707 if (!newgetargs(args, "O&|i", PyMac_GetFSSpec, &fss, &chain)) |
| 708 return NULL; | |
| 709 err = ResolveAliasFile(&fss, chain, &isfolder, &wasaliased); | |
| 710 if ( err ) { | |
| 711 PyErr_Mac(ErrorObject, err); | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
712 return NULL; |
| 2249 | 713 } |
| 714 return mkvalue("Oii", newmfssobject(&fss), (int)isfolder, (int)wasaliased); | |
| 715 } | |
| 716 | |
| 717 static object * | |
| 718 mfs_StandardGetFile(self, args) | |
| 719 object *self; /* Not used */ | |
| 720 object *args; | |
| 721 { | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
722 SFTypeList list; |
| 2249 | 723 short numtypes; |
| 724 StandardFileReply reply; | |
| 725 | |
| 726 list[0] = list[1] = list[2] = list[3] = 0; | |
| 727 numtypes = 0; | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
728 if (!newgetargs(args, "|O&O&O&O&", PyMac_GetOSType, &list[0], |
| 2249 | 729 PyMac_GetOSType, &list[1], PyMac_GetOSType, &list[2], |
| 730 PyMac_GetOSType, &list[3]) ) | |
| 731 return NULL; | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
732 while ( numtypes < 4 && list[numtypes] ) { |
| 2249 | 733 numtypes++; |
| 734 } | |
|
2717
6c864ad519a3
StandardGetFile without args now shows all files (in stead of none)
Jack Jansen <jack.jansen@cwi.nl>
parents:
2408
diff
changeset
|
735 if ( numtypes == 0 ) |
|
6c864ad519a3
StandardGetFile without args now shows all files (in stead of none)
Jack Jansen <jack.jansen@cwi.nl>
parents:
2408
diff
changeset
|
736 numtypes = -1; |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
737 StandardGetFile((FileFilterUPP)0, numtypes, list, &reply); |
| 2249 | 738 return mkvalue("(Oi)", newmfssobject(&reply.sfFile), reply.sfGood); |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
739 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
740 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
741 static object * |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
742 mfs_PromptGetFile(self, args) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
743 object *self; /* Not used */ |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
744 object *args; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
745 { |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
746 SFTypeList list; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
747 short numtypes; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
748 StandardFileReply reply; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
749 char *prompt = NULL; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
750 |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
751 list[0] = list[1] = list[2] = list[3] = 0; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
752 numtypes = 0; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
753 if (!newgetargs(args, "s|O&O&O&O&", &prompt, PyMac_GetOSType, &list[0], |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
754 PyMac_GetOSType, &list[1], PyMac_GetOSType, &list[2], |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
755 PyMac_GetOSType, &list[3]) ) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
756 return NULL; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
757 while ( numtypes < 4 && list[numtypes] ) { |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
758 numtypes++; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
759 } |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
760 if ( numtypes == 0 ) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
761 numtypes = -1; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
762 PyMac_PromptGetFile(numtypes, list, &reply, prompt); |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
763 return mkvalue("(Oi)", newmfssobject(&reply.sfFile), reply.sfGood); |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
764 } |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
765 |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
766 static object * |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
767 mfs_StandardPutFile(self, args) |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
768 object *self; /* Not used */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
769 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
770 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
771 Str255 prompt, dft; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
772 StandardFileReply reply; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
773 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
774 dft[0] = 0; |
|
2209
4053d4cb50e0
renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents:
2186
diff
changeset
|
775 if (!newgetargs(args, "O&|O&", PyMac_GetStr255, &prompt, PyMac_GetStr255, &dft) ) |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
776 return NULL; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
777 StandardPutFile(prompt, dft, &reply); |
| 2249 | 778 return mkvalue("(Oi)",newmfssobject(&reply.sfFile), reply.sfGood); |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
779 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
780 |
|
3787
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
781 /* |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
782 ** Set initial directory for file dialogs */ |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
783 static object * |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
784 mfs_SetFolder(self, args) |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
785 object *self; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
786 object *args; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
787 { |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
788 FSSpec spec; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
789 FSSpec ospec; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
790 short orefnum; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
791 long oparid; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
792 |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
793 /* Get old values */ |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
794 orefnum = -LMGetSFSaveDisk(); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
795 oparid = LMGetCurDirStore(); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
796 (void)FSMakeFSSpec(orefnum, oparid, "\pplaceholder", &ospec); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
797 |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
798 /* Go to working directory by default */ |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
799 (void)FSMakeFSSpec(0, 0, "\p:placeholder", &spec); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
800 if (!newgetargs(args, "|O&", PyMac_GetFSSpec, &spec)) |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
801 return NULL; |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
802 /* Set standard-file working directory */ |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
803 LMSetSFSaveDisk(-spec.vRefNum); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
804 LMSetCurDirStore(spec.parID); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
805 return (object *)newmfssobject(&ospec); |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
806 } |
|
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
807 |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
808 static object * |
| 2249 | 809 mfs_FSSpec(self, args) |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
810 object *self; /* Not used */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
811 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
812 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
813 FSSpec fss; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
814 |
|
2209
4053d4cb50e0
renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents:
2186
diff
changeset
|
815 if (!newgetargs(args, "O&", PyMac_GetFSSpec, &fss)) |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
816 return NULL; |
| 2249 | 817 return (object *)newmfssobject(&fss); |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
818 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
819 |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
820 static object * |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
821 mfs_RawFSSpec(self, args) |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
822 object *self; /* Not used */ |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
823 object *args; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
824 { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
825 FSSpec *fssp; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
826 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
827 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
828 if (!newgetargs(args, "s#", &fssp, &size)) |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
829 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
830 if ( size != sizeof(FSSpec) ) { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
831 PyErr_SetString(PyExc_TypeError, "Incorrect size for FSSpec record"); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
832 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
833 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
834 return (object *)newmfssobject(fssp); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
835 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
836 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
837 static object * |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
838 mfs_RawAlias(self, args) |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
839 object *self; /* Not used */ |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
840 object *args; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
841 { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
842 char *dataptr; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
843 Handle h; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
844 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
845 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
846 if (!newgetargs(args, "s#", &dataptr, &size)) |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
847 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
848 h = NewHandle(size); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
849 if ( h == NULL ) { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
850 PyErr_NoMemory(); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
851 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
852 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
853 HLock(h); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
854 memcpy((char *)*h, dataptr, size); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
855 HUnlock(h); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
856 return (object *)newmfsaobject((AliasHandle)h); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
857 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
858 |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
859 static object * |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
860 mfs_GetDirectory(self, args) |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
861 object *self; /* Not used */ |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
862 object *args; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
863 { |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
864 FSSpec fsdir; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
865 int ok; |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
866 char *prompt = NULL; |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
867 |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
868 if (!newgetargs(args, "|s", &prompt) ) |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
869 return NULL; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
870 |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
871 ok = PyMac_GetDirectory(&fsdir, prompt); |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
872 return mkvalue("(Oi)", newmfssobject(&fsdir), ok); |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
873 } |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
874 |
|
2748
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
875 static object * |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
876 mfs_FindFolder(self, args) |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
877 object *self; /* Not used */ |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
878 object *args; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
879 { |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
880 OSErr err; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
881 short where; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
882 OSType which; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
883 int create; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
884 short refnum; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
885 long dirid; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
886 |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
887 if (!newgetargs(args, "hO&i", &where, PyMac_GetOSType, &which, &create) ) |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
888 return NULL; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
889 err = FindFolder(where, which, (Boolean)create, &refnum, &dirid); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
890 if ( err ) { |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
891 PyErr_Mac(ErrorObject, err); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
892 return NULL; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
893 } |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
894 return mkvalue("(ii)", refnum, dirid); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
895 } |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
896 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
897 static object * |
|
4319
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
898 mfs_FindApplication(self, args) |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
899 object *self; /* Not used */ |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
900 object *args; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
901 { |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
902 OSErr err; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
903 OSType which; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
904 FSSpec fss; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
905 |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
906 if (!newgetargs(args, "O&", PyMac_GetOSType, &which) ) |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
907 return NULL; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
908 err = FindApplicationFromCreator(which, &fss); |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
909 if ( err ) { |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
910 PyErr_Mac(ErrorObject, err); |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
911 return NULL; |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
912 } |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
913 return (object *)newmfssobject(&fss); |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
914 } |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
915 |
|
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
916 static object * |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
917 mfs_FInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
918 object *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
919 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
920 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
921 return (object *)newmfsiobject(); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
922 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
923 |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
924 /* List of methods defined in the module */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
925 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
926 static struct methodlist mfs_methods[] = { |
| 2249 | 927 {"ResolveAliasFile", mfs_ResolveAliasFile, 1}, |
| 928 {"StandardGetFile", mfs_StandardGetFile, 1}, | |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
929 {"PromptGetFile", mfs_PromptGetFile, 1}, |
| 2249 | 930 {"StandardPutFile", mfs_StandardPutFile, 1}, |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
931 {"GetDirectory", mfs_GetDirectory, 1}, |
|
3787
7766360b85b8
Added SetFolder method which sets Standard File initial folder
Jack Jansen <jack.jansen@cwi.nl>
parents:
3140
diff
changeset
|
932 {"SetFolder", mfs_SetFolder, 1}, |
| 2249 | 933 {"FSSpec", mfs_FSSpec, 1}, |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
934 {"RawFSSpec", mfs_RawFSSpec, 1}, |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
935 {"RawAlias", mfs_RawAlias, 1}, |
|
2748
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
936 {"FindFolder", mfs_FindFolder, 1}, |
|
4319
97133996e22f
Added macfs.FindApplication() to find application FSSpec given signature.
Jack Jansen <jack.jansen@cwi.nl>
parents:
4308
diff
changeset
|
937 {"FindApplication", mfs_FindApplication, 1}, |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
938 {"FInfo", mfs_FInfo, 1}, |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
939 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
940 {NULL, NULL} /* sentinel */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
941 }; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
942 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
943 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
944 /* Initialization function for the module (*must* be called initmacfs) */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
945 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
946 void |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
947 initmacfs() |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
948 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
949 object *m, *d; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
950 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
951 /* Create the module and add the functions */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
952 m = initmodule("macfs", mfs_methods); |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
953 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
954 /* Add some symbolic constants to the module */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
955 d = getmoduledict(m); |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
956 ErrorObject = newstringobject("macfs.error"); |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
957 dictinsert(d, "error", ErrorObject); |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
958 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
959 /* XXXX Add constants here */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
960 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
961 /* Check for errors */ |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
962 if (err_occurred()) |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
963 fatal("can't initialize module macfs"); |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
964 } |
