Mercurial > cpython-lru_cache-weakref
annotate Mac/Modules/macfsmodule.c @ 3720:b341def4eef8 legacy-trunk
Ignore latex intermediate products.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 26 Jun 1996 19:30:01 +0000 |
| parents | cd388cc9ba98 |
| children | 7766360b85b8 |
| 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> |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
34 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
35 #include "nfullpath.h" |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
36 |
|
2186
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
37 #ifdef THINK_C |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
38 #define FileFilterUPP FileFilterProcPtr |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
39 #endif |
|
95cb52b85f78
ported to THINK C (not tested yet)
Guido van Rossum <guido@python.org>
parents:
2180
diff
changeset
|
40 |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
41 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
|
42 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
43 /* ----------------------------------------------------- */ |
| 2249 | 44 /* Declarations for objects of type Alias */ |
| 45 | |
| 46 typedef struct { | |
| 47 OB_HEAD | |
| 48 AliasHandle alias; | |
| 49 } mfsaobject; | |
| 50 | |
| 51 staticforward typeobject Mfsatype; | |
| 52 | |
| 53 #define is_mfsaobject(v) ((v)->ob_type == &Mfsatype) | |
| 54 | |
| 55 /* ---------------------------------------------------------------- */ | |
| 56 /* Declarations for objects of type FSSpec */ | |
| 57 | |
| 58 typedef struct { | |
| 59 OB_HEAD | |
| 60 FSSpec fsspec; | |
| 61 } mfssobject; | |
| 62 | |
| 63 staticforward typeobject Mfsstype; | |
| 64 | |
| 65 #define is_mfssobject(v) ((v)->ob_type == &Mfsstype) | |
| 66 | |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
67 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
68 /* ---------------------------------------------------------------- */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
69 /* 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
|
70 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
71 typedef struct { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
72 OB_HEAD |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
73 FInfo finfo; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
74 } mfsiobject; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
75 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
76 staticforward typeobject Mfsitype; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
77 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
78 #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
|
79 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
80 |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
81 mfssobject *newmfssobject(FSSpec *fss); /* Forward */ |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
82 |
| 2249 | 83 /* ---------------------------------------------------------------- */ |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
84 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
85 static object * |
| 2249 | 86 mfsa_Resolve(self, args) |
| 87 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
|
88 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
89 { |
| 2249 | 90 FSSpec from, *fromp, result; |
| 91 Boolean changed; | |
| 92 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
|
93 |
| 2249 | 94 from.name[0] = 0; |
| 95 if (!newgetargs(args, "|O&", PyMac_GetFSSpec, &from)) | |
| 96 return NULL; | |
| 97 if (from.name[0] ) | |
| 98 fromp = &from; | |
| 99 else | |
| 100 fromp = NULL; | |
| 101 err = ResolveAlias(fromp, self->alias, &result, &changed); | |
| 102 if ( err ) { | |
| 103 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
|
104 return NULL; |
| 2249 | 105 } |
| 106 return mkvalue("(Oi)", newmfssobject(&result), (int)changed); | |
| 107 } | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
108 |
| 2249 | 109 static object * |
| 110 mfsa_GetInfo(self, args) | |
| 111 mfsaobject *self; | |
| 112 object *args; | |
| 113 { | |
| 114 Str63 value; | |
| 115 int i; | |
| 116 OSErr err; | |
| 117 | |
| 118 if (!newgetargs(args, "i", &i)) | |
| 119 return NULL; | |
| 120 err = GetAliasInfo(self->alias, (AliasInfoType)i, value); | |
| 121 if ( err ) { | |
| 122 PyErr_Mac(ErrorObject, err); | |
| 123 return 0; | |
| 124 } | |
| 125 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
|
126 } |
|
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 static object * |
| 2249 | 129 mfsa_Update(self, args) |
| 130 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
|
131 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
132 { |
| 2249 | 133 FSSpec target, fromfile, *fromfilep; |
| 134 OSErr err; | |
| 135 Boolean changed; | |
| 136 | |
| 137 fromfile.name[0] = 0; | |
| 138 if (!newgetargs(args, "O&|O&", PyMac_GetFSSpec, &target, | |
| 139 PyMac_GetFSSpec, &fromfile)) | |
| 140 return NULL; | |
| 141 if ( fromfile.name[0] ) | |
| 142 fromfilep = &fromfile; | |
| 143 else | |
| 144 fromfilep = NULL; | |
| 145 err = UpdateAlias(fromfilep, &target, self->alias, &changed); | |
| 146 if ( err ) { | |
| 147 PyErr_Mac(ErrorObject, err); | |
| 148 return 0; | |
| 149 } | |
| 150 return mkvalue("i", (int)changed); | |
| 151 } | |
| 152 | |
| 153 static struct methodlist mfsa_methods[] = { | |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
154 {"Resolve", (method)mfsa_Resolve, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
155 {"GetInfo", (method)mfsa_GetInfo, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
156 {"Update", (method)mfsa_Update, 1}, |
| 2249 | 157 |
| 158 {NULL, NULL} /* sentinel */ | |
| 159 }; | |
| 160 | |
| 161 /* ---------- */ | |
| 162 | |
| 163 static object * | |
| 164 mfsa_getattr(self, name) | |
| 165 mfsaobject *self; | |
| 166 char *name; | |
| 167 { | |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
168 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
|
169 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
170 PyObject *rv; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
171 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
172 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
|
173 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
|
174 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
|
175 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
|
176 return rv; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
177 } |
| 2249 | 178 return findmethod(mfsa_methods, (object *)self, name); |
| 179 } | |
| 180 | |
| 181 mfsaobject * | |
| 182 newmfsaobject(alias) | |
| 183 AliasHandle alias; | |
| 184 { | |
| 185 mfsaobject *self; | |
| 186 | |
| 187 self = NEWOBJ(mfsaobject, &Mfsatype); | |
| 188 if (self == NULL) | |
| 189 return NULL; | |
| 190 self->alias = alias; | |
| 191 return self; | |
| 192 } | |
| 193 | |
| 194 | |
| 195 static void | |
| 196 mfsa_dealloc(self) | |
| 197 mfsaobject *self; | |
| 198 { | |
| 199 #if 0 | |
| 200 if ( self->alias ) { | |
| 201 should we do something here? | |
| 202 } | |
| 203 #endif | |
| 204 | |
| 205 DEL(self); | |
| 206 } | |
| 207 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
208 statichere typeobject Mfsatype = { |
| 2249 | 209 OB_HEAD_INIT(&Typetype) |
| 210 0, /*ob_size*/ | |
| 211 "Alias", /*tp_name*/ | |
| 212 sizeof(mfsaobject), /*tp_basicsize*/ | |
| 213 0, /*tp_itemsize*/ | |
| 214 /* methods */ | |
| 215 (destructor)mfsa_dealloc, /*tp_dealloc*/ | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
216 (printfunc)0, /*tp_print*/ |
| 2249 | 217 (getattrfunc)mfsa_getattr, /*tp_getattr*/ |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
218 (setattrfunc)0, /*tp_setattr*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
219 (cmpfunc)0, /*tp_compare*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
220 (reprfunc)0, /*tp_repr*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
221 0, /*tp_as_number*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
222 0, /*tp_as_sequence*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
223 0, /*tp_as_mapping*/ |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
224 (hashfunc)0, /*tp_hash*/ |
| 2249 | 225 }; |
| 226 | |
| 227 /* End of code for Alias objects */ | |
| 228 /* -------------------------------------------------------- */ | |
| 229 | |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
230 /* ---------------------------------------------------------------- */ |
|
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 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
|
233 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
234 {NULL, NULL} /* sentinel */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
235 }; |
|
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 static mfsiobject * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
240 newmfsiobject() |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
241 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
242 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
243 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
244 self = NEWOBJ(mfsiobject, &Mfsitype); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
245 if (self == NULL) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
246 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
247 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
|
248 return self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
249 } |
|
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 static void |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
252 mfsi_dealloc(self) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
253 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
254 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
255 DEL(self); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
256 } |
|
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 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
259 mfsi_getattr(self, name) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
260 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
261 char *name; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
262 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
263 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
|
264 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
|
265 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
|
266 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
|
267 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
|
268 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
|
269 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
|
270 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
|
271 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
|
272 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
|
273 else |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
274 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
|
275 } |
|
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 static int |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
279 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
|
280 mfsiobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
281 char *name; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
282 object *v; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
283 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
284 int rv; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
285 int i; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
286 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
287 if ( v == NULL ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
288 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
|
289 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
290 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
291 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
|
292 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
|
293 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
|
294 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
|
295 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
|
296 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
|
297 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
|
298 } 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
|
299 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
|
300 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
|
301 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
|
302 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
|
303 } else { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
304 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
|
305 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
306 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
307 if (rv) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
308 return 0; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
309 return -1; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
310 } |
|
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 static typeobject Mfsitype = { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
314 OB_HEAD_INIT(&Typetype) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
315 0, /*ob_size*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
316 "FInfo object", /*tp_name*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
317 sizeof(mfsiobject), /*tp_basicsize*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
318 0, /*tp_itemsize*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
319 /* methods */ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
320 (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
|
321 (printfunc)0, /*tp_print*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
322 (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
|
323 (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
|
324 (cmpfunc)0, /*tp_compare*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
325 (reprfunc)0, /*tp_repr*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
326 0, /*tp_as_number*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
327 0, /*tp_as_sequence*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
328 0, /*tp_as_mapping*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
329 (hashfunc)0, /*tp_hash*/ |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
330 }; |
|
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 /* 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
|
333 /* -------------------------------------------------------- */ |
|
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 |
| 2249 | 336 /* |
| 337 ** Helper routine for other modules: return an FSSpec * if the | |
| 338 ** object is a python fsspec object, else NULL | |
| 339 */ | |
| 340 FSSpec * | |
| 341 mfs_GetFSSpecFSSpec(self) | |
| 342 object *self; | |
| 343 { | |
| 344 if ( is_mfssobject(self) ) | |
| 345 return &((mfssobject *)self)->fsspec; | |
| 346 return NULL; | |
| 347 } | |
| 348 | |
| 349 static object * | |
| 350 mfss_as_pathname(self, args) | |
| 351 mfssobject *self; | |
| 352 object *args; | |
| 353 { | |
| 354 char strbuf[257]; | |
| 355 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
|
356 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
357 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
|
358 return NULL; |
| 2249 | 359 err = nfullpath(&self->fsspec, strbuf); |
| 360 if ( err ) { | |
| 361 PyErr_Mac(ErrorObject, err); | |
| 362 return NULL; | |
| 363 } | |
| 364 return newstringobject(strbuf); | |
| 365 } | |
| 366 | |
| 367 static object * | |
| 368 mfss_as_tuple(self, args) | |
| 369 mfssobject *self; | |
| 370 object *args; | |
| 371 { | |
| 372 if (!newgetargs(args, "")) | |
| 373 return NULL; | |
| 374 return Py_BuildValue("(iis#)", self->fsspec.vRefNum, self->fsspec.parID, | |
| 375 &self->fsspec.name[1], self->fsspec.name[0]); | |
| 376 } | |
| 377 | |
| 378 static object * | |
| 379 mfss_NewAlias(self, args) | |
| 380 mfssobject *self; | |
| 381 object *args; | |
| 382 { | |
| 383 FSSpec src, *srcp; | |
| 384 OSErr err; | |
| 385 AliasHandle alias; | |
| 386 | |
| 387 src.name[0] = 0; | |
| 388 if (!newgetargs(args, "|O&", PyMac_GetFSSpec, &src)) | |
| 389 return NULL; | |
| 390 if ( src.name[0] ) | |
| 391 srcp = &src; | |
| 392 else | |
| 393 srcp = NULL; | |
| 394 err = NewAlias(srcp, &self->fsspec, &alias); | |
| 395 if ( err ) { | |
| 396 PyErr_Mac(ErrorObject, err); | |
| 397 return NULL; | |
| 398 } | |
| 399 | |
| 400 return (object *)newmfsaobject(alias); | |
| 401 } | |
| 402 | |
| 403 static object * | |
| 404 mfss_NewAliasMinimal(self, args) | |
| 405 mfssobject *self; | |
| 406 object *args; | |
| 407 { | |
| 408 OSErr err; | |
| 409 AliasHandle alias; | |
| 410 | |
| 411 if (!newgetargs(args, "")) | |
| 412 return NULL; | |
| 413 err = NewAliasMinimal(&self->fsspec, &alias); | |
| 414 if ( err ) { | |
| 415 PyErr_Mac(ErrorObject, err); | |
| 416 return NULL; | |
| 417 } | |
| 418 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
|
419 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
420 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
421 /* 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
|
422 static object * |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
423 mfss_GetCreatorType(self, args) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
424 mfssobject *self; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
425 object *args; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
426 { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
427 OSErr err; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
428 FInfo info; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
429 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
430 if (!newgetargs(args, "")) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
431 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
432 err = FSpGetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
433 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
434 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
435 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
436 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
437 return Py_BuildValue("(O&O&)", |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
438 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
|
439 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
440 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
441 static object * |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
442 mfss_SetCreatorType(self, args) |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
443 mfssobject *self; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
444 object *args; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
445 { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
446 OSErr err; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
447 OSType creator, type; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
448 FInfo info; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
449 |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
450 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
|
451 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
452 err = FSpGetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
453 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
454 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
455 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
456 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
457 info.fdType = type; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
458 info.fdCreator = creator; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
459 err = FSpSetFInfo(&self->fsspec, &info); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
460 if ( err ) { |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
461 PyErr_Mac(ErrorObject, err); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
462 return NULL; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
463 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
464 INCREF(None); |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
465 return None; |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
466 } |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
467 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
468 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
469 mfss_GetFInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
470 mfssobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
471 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
472 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
473 OSErr err; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
474 mfsiobject *fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
475 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
476 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
477 if (!newgetargs(args, "")) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
478 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
479 if ( (fip=newmfsiobject()) == NULL ) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
480 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
481 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
|
482 if ( err ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
483 PyErr_Mac(ErrorObject, err); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
484 DECREF(fip); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
485 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
486 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
487 return (object *)fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
488 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
489 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
490 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
491 mfss_SetFInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
492 mfssobject *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
493 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
494 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
495 OSErr err; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
496 mfsiobject *fip; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
497 |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
498 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
|
499 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
500 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
|
501 if ( err ) { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
502 PyErr_Mac(ErrorObject, err); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
503 return NULL; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
504 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
505 INCREF(None); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
506 return None; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
507 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
508 |
| 2249 | 509 static struct methodlist mfss_methods[] = { |
|
2254
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
510 {"as_pathname", (method)mfss_as_pathname, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
511 {"as_tuple", (method)mfss_as_tuple, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
512 {"NewAlias", (method)mfss_NewAlias, 1}, |
|
67e8ef698a42
added (method) casts and 1995 copyright
Guido van Rossum <guido@python.org>
parents:
2249
diff
changeset
|
513 {"NewAliasMinimal", (method)mfss_NewAliasMinimal, 1}, |
|
2275
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
514 {"GetCreatorType", (method)mfss_GetCreatorType, 1}, |
|
e5b9f644053e
Added [GS]etCreatorType methods to FSSpec objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2264
diff
changeset
|
515 {"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
|
516 {"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
|
517 {"SetFInfo", (method)mfss_SetFInfo, 1}, |
| 2249 | 518 |
| 519 {NULL, NULL} /* sentinel */ | |
| 520 }; | |
| 521 | |
| 522 /* ---------- */ | |
| 523 | |
| 524 static object * | |
| 525 mfss_getattr(self, name) | |
| 526 mfssobject *self; | |
| 527 char *name; | |
| 528 { | |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
529 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
|
530 return PyString_FromStringAndSize((char *)&self->fsspec, sizeof(FSSpec)); |
| 2249 | 531 return findmethod(mfss_methods, (object *)self, name); |
| 532 } | |
| 533 | |
| 534 mfssobject * | |
| 535 newmfssobject(fss) | |
| 536 FSSpec *fss; | |
| 537 { | |
| 538 mfssobject *self; | |
| 539 | |
| 540 self = NEWOBJ(mfssobject, &Mfsstype); | |
| 541 if (self == NULL) | |
| 542 return NULL; | |
| 543 self->fsspec = *fss; | |
| 544 return self; | |
| 545 } | |
| 546 | |
| 547 static void | |
| 548 mfss_dealloc(self) | |
| 549 mfssobject *self; | |
| 550 { | |
| 551 DEL(self); | |
| 552 } | |
| 553 | |
| 554 static object * | |
| 555 mfss_repr(self) | |
| 556 mfssobject *self; | |
| 557 { | |
| 558 char buf[512]; | |
| 559 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
560 sprintf(buf, "FSSpec((%d, %d, '%.*s'))", |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
561 self->fsspec.vRefNum, |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
562 self->fsspec.parID, |
|
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
563 self->fsspec.name[0], self->fsspec.name+1); |
| 2249 | 564 return newstringobject(buf); |
| 565 } | |
| 566 | |
| 567 static int | |
| 568 mfss_compare(v, w) | |
| 569 mfssobject *v, *w; | |
| 570 { | |
| 571 int minlen; | |
| 572 int res; | |
| 573 | |
| 574 if ( v->fsspec.vRefNum < w->fsspec.vRefNum ) return -1; | |
| 575 if ( v->fsspec.vRefNum > w->fsspec.vRefNum ) return 1; | |
| 576 if ( v->fsspec.parID < w->fsspec.parID ) return -1; | |
| 577 if ( v->fsspec.parID > w->fsspec.parID ) return 1; | |
| 578 minlen = v->fsspec.name[0]; | |
| 579 if ( w->fsspec.name[0] < minlen ) minlen = w->fsspec.name[0]; | |
| 580 res = strncmp((char *)v->fsspec.name+1, (char *)w->fsspec.name+1, minlen); | |
| 581 if ( res ) return res; | |
| 582 if ( v->fsspec.name[0] < w->fsspec.name[0] ) return -1; | |
| 583 if ( v->fsspec.name[0] > w->fsspec.name[0] ) return 1; | |
| 584 return res; | |
| 585 } | |
| 586 | |
|
2408
77eb63716b4f
replace %#s with portable solution
Guido van Rossum <guido@python.org>
parents:
2400
diff
changeset
|
587 statichere typeobject Mfsstype = { |
| 2249 | 588 OB_HEAD_INIT(&Typetype) |
| 589 0, /*ob_size*/ | |
| 590 "FSSpec", /*tp_name*/ | |
| 591 sizeof(mfssobject), /*tp_basicsize*/ | |
| 592 0, /*tp_itemsize*/ | |
| 593 /* methods */ | |
| 594 (destructor)mfss_dealloc, /*tp_dealloc*/ | |
| 595 (printfunc)0, /*tp_print*/ | |
| 596 (getattrfunc)mfss_getattr, /*tp_getattr*/ | |
| 597 (setattrfunc)0, /*tp_setattr*/ | |
| 598 (cmpfunc)mfss_compare, /*tp_compare*/ | |
| 599 (reprfunc)mfss_repr, /*tp_repr*/ | |
| 600 0, /*tp_as_number*/ | |
| 601 0, /*tp_as_sequence*/ | |
| 602 0, /*tp_as_mapping*/ | |
| 603 (hashfunc)0, /*tp_hash*/ | |
| 604 }; | |
| 605 | |
| 606 /* End of code for FSSpec objects */ | |
| 607 /* -------------------------------------------------------- */ | |
| 608 | |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
609 static object * |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
610 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
|
611 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
|
612 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
613 { |
| 2249 | 614 FSSpec fss; |
| 615 Boolean chain = 1, isfolder, wasaliased; | |
| 616 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
|
617 |
| 2249 | 618 if (!newgetargs(args, "O&|i", PyMac_GetFSSpec, &fss, &chain)) |
| 619 return NULL; | |
| 620 err = ResolveAliasFile(&fss, chain, &isfolder, &wasaliased); | |
| 621 if ( err ) { | |
| 622 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
|
623 return NULL; |
| 2249 | 624 } |
| 625 return mkvalue("Oii", newmfssobject(&fss), (int)isfolder, (int)wasaliased); | |
| 626 } | |
| 627 | |
| 628 static object * | |
| 629 mfs_StandardGetFile(self, args) | |
| 630 object *self; /* Not used */ | |
| 631 object *args; | |
| 632 { | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
633 SFTypeList list; |
| 2249 | 634 short numtypes; |
| 635 StandardFileReply reply; | |
| 636 | |
| 637 list[0] = list[1] = list[2] = list[3] = 0; | |
| 638 numtypes = 0; | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
639 if (!newgetargs(args, "|O&O&O&O&", PyMac_GetOSType, &list[0], |
| 2249 | 640 PyMac_GetOSType, &list[1], PyMac_GetOSType, &list[2], |
| 641 PyMac_GetOSType, &list[3]) ) | |
| 642 return NULL; | |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
643 while ( numtypes < 4 && list[numtypes] ) { |
| 2249 | 644 numtypes++; |
| 645 } | |
|
2717
6c864ad519a3
StandardGetFile without args now shows all files (in stead of none)
Jack Jansen <jack.jansen@cwi.nl>
parents:
2408
diff
changeset
|
646 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
|
647 numtypes = -1; |
|
2264
85aa2e4d0123
fixed StandardGetFile argument handling
Guido van Rossum <guido@python.org>
parents:
2254
diff
changeset
|
648 StandardGetFile((FileFilterUPP)0, numtypes, list, &reply); |
| 2249 | 649 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
|
650 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
651 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
652 static object * |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
653 mfs_PromptGetFile(self, args) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
654 object *self; /* Not used */ |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
655 object *args; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
656 { |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
657 SFTypeList list; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
658 short numtypes; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
659 StandardFileReply reply; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
660 char *prompt = NULL; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
661 |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
662 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
|
663 numtypes = 0; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
664 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
|
665 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
|
666 PyMac_GetOSType, &list[3]) ) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
667 return NULL; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
668 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
|
669 numtypes++; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
670 } |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
671 if ( numtypes == 0 ) |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
672 numtypes = -1; |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
673 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
|
674 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
|
675 } |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
676 |
|
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
677 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
|
678 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
|
679 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
|
680 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
681 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
682 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
|
683 StandardFileReply reply; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
684 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
685 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
|
686 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
|
687 return NULL; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
688 StandardPutFile(prompt, dft, &reply); |
| 2249 | 689 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
|
690 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
691 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
692 static object * |
| 2249 | 693 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
|
694 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
|
695 object *args; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
696 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
697 FSSpec fss; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
698 |
|
2209
4053d4cb50e0
renamed Get routines to PyMac_Get; added macfs to config.c
Guido van Rossum <guido@python.org>
parents:
2186
diff
changeset
|
699 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
|
700 return NULL; |
| 2249 | 701 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
|
702 } |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
703 |
|
2319
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
704 static object * |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
705 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
|
706 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
|
707 object *args; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
708 { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
709 FSSpec *fssp; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
710 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
711 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
712 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
|
713 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
714 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
|
715 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
|
716 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
717 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
718 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
|
719 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
720 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
721 static object * |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
722 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
|
723 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
|
724 object *args; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
725 { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
726 char *dataptr; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
727 Handle h; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
728 int size; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
729 |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
730 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
|
731 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
732 h = NewHandle(size); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
733 if ( h == NULL ) { |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
734 PyErr_NoMemory(); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
735 return NULL; |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
736 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
737 HLock(h); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
738 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
|
739 HUnlock(h); |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
740 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
|
741 } |
|
1e7207128167
Added RawFSSpec and RawAlias methods which turn their string arguments
Jack Jansen <jack.jansen@cwi.nl>
parents:
2275
diff
changeset
|
742 |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
743 static object * |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
744 mfs_GetDirectory(self, args) |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
745 object *self; /* Not used */ |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
746 object *args; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
747 { |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
748 FSSpec fsdir; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
749 int ok; |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
750 char *prompt = NULL; |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
751 |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
752 if (!newgetargs(args, "|s", &prompt) ) |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
753 return NULL; |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
754 |
|
2981
56ad247cbfcb
Added new call PromptGetFile (like StandardGetFile, but accepts a
Jack Jansen <jack.jansen@cwi.nl>
parents:
2909
diff
changeset
|
755 ok = PyMac_GetDirectory(&fsdir, prompt); |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
756 return mkvalue("(Oi)", newmfssobject(&fsdir), ok); |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
757 } |
|
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
758 |
|
2748
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
759 static object * |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
760 mfs_FindFolder(self, args) |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
761 object *self; /* Not used */ |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
762 object *args; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
763 { |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
764 OSErr err; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
765 short where; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
766 OSType which; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
767 int create; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
768 short refnum; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
769 long dirid; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
770 |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
771 if (!newgetargs(args, "hO&i", &where, PyMac_GetOSType, &which, &create) ) |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
772 return NULL; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
773 err = FindFolder(where, which, (Boolean)create, &refnum, &dirid); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
774 if ( err ) { |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
775 PyErr_Mac(ErrorObject, err); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
776 return NULL; |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
777 } |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
778 return mkvalue("(ii)", refnum, dirid); |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
779 } |
|
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
780 |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
781 static object * |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
782 mfs_FInfo(self, args) |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
783 object *self; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
784 object *args; |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
785 { |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
786 return (object *)newmfsiobject(); |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
787 } |
|
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
788 |
|
2180
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
789 /* 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
|
790 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
791 static struct methodlist mfs_methods[] = { |
| 2249 | 792 {"ResolveAliasFile", mfs_ResolveAliasFile, 1}, |
| 793 {"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
|
794 {"PromptGetFile", mfs_PromptGetFile, 1}, |
| 2249 | 795 {"StandardPutFile", mfs_StandardPutFile, 1}, |
|
2400
d31f694c11a8
Added GetDirectory() method
Jack Jansen <jack.jansen@cwi.nl>
parents:
2337
diff
changeset
|
796 {"GetDirectory", mfs_GetDirectory, 1}, |
| 2249 | 797 {"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
|
798 {"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
|
799 {"RawAlias", mfs_RawAlias, 1}, |
|
2748
39cd25678b41
Added FindFolder interface
Jack Jansen <jack.jansen@cwi.nl>
parents:
2717
diff
changeset
|
800 {"FindFolder", mfs_FindFolder, 1}, |
|
2909
f9b1069a3e26
Added interfaces to {Get,Set}FInfo and accompanying objects
Jack Jansen <jack.jansen@cwi.nl>
parents:
2748
diff
changeset
|
801 {"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
|
802 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
803 {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
|
804 }; |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
805 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
806 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
807 /* 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
|
808 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
809 void |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
810 initmacfs() |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
811 { |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
812 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
|
813 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
814 /* 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
|
815 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
|
816 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
817 /* 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
|
818 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
|
819 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
|
820 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
|
821 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
822 /* 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
|
823 |
|
9b451c84a7bf
Initial version of FSSpec and Alias code. Non-functional as of now.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
824 /* 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
|
825 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
|
826 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
|
827 } |
