summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/Modules/macfsmodule.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/Mac/Modules/macfsmodule.c b/Mac/Modules/macfsmodule.c
index 09c7883..d8f454c 100644
--- a/Mac/Modules/macfsmodule.c
+++ b/Mac/Modules/macfsmodule.c
@@ -288,11 +288,60 @@ mfss_NewAliasMinimal(self, args)
return (object *)newmfsaobject(alias);
}
+/* XXXX These routines should be replaced with a complete interface to *FInfo */
+static object *
+mfss_GetCreatorType(self, args)
+ mfssobject *self;
+ object *args;
+{
+ OSErr err;
+ FInfo info;
+
+ if (!newgetargs(args, ""))
+ return NULL;
+ err = FSpGetFInfo(&self->fsspec, &info);
+ if ( err ) {
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ return Py_BuildValue("(O&O&)",
+ PyMac_BuildOSType, info.fdCreator, PyMac_BuildOSType, info.fdType);
+}
+
+static object *
+mfss_SetCreatorType(self, args)
+ mfssobject *self;
+ object *args;
+{
+ OSErr err;
+ OSType creator, type;
+ FInfo info;
+
+ if (!newgetargs(args, "O&O&", PyMac_GetOSType, &creator, PyMac_GetOSType, &type))
+ return NULL;
+ err = FSpGetFInfo(&self->fsspec, &info);
+ if ( err ) {
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ info.fdType = type;
+ info.fdCreator = creator;
+ err = FSpSetFInfo(&self->fsspec, &info);
+ if ( err ) {
+ PyErr_Mac(ErrorObject, err);
+ return NULL;
+ }
+ INCREF(None);
+ return None;
+}
+
static struct methodlist mfss_methods[] = {
{"as_pathname", (method)mfss_as_pathname, 1},
{"as_tuple", (method)mfss_as_tuple, 1},
{"NewAlias", (method)mfss_NewAlias, 1},
{"NewAliasMinimal", (method)mfss_NewAliasMinimal, 1},
+ {"GetCreatorType", (method)mfss_GetCreatorType, 1},
+ {"SetCreatorType", (method)mfss_SetCreatorType, 1},
{NULL, NULL} /* sentinel */
};