extern int ResObj_Convert(PyObject *, Handle *); /* From Resmodule.c */
#ifdef WITHOUT_FRAMEWORKS
-#if !TARGET_API_MAC_OS8
-/* The Carbon headers define PRAGMA_ALIGN_SUPPORT to something illegal,
-** because you shouldn't use it for Carbon. All good and well, but portable
-** code still needs it. So, we undefine it here.
-*/
-#undef PRAGMA_ALIGN_SUPPORTED
-#define PRAGMA_ALIGN_SUPPORTED 0
-#endif /* !TARGET_API_MAC_OS8 */
-
-#include "ICAPI.h"
+// #if !TARGET_API_MAC_OS8
+// /* The Carbon headers define PRAGMA_ALIGN_SUPPORT to something illegal,
+// ** because you shouldn't use it for Carbon. All good and well, but portable
+// ** code still needs it. So, we undefine it here.
+// */
+// #undef PRAGMA_ALIGN_SUPPORTED
+// #define PRAGMA_ALIGN_SUPPORTED 0
+// #endif /* !TARGET_API_MAC_OS8 */
+
+// #include "ICAPI.h"
+#include <InternetConfig.h>
#else
#include <Carbon/Carbon.h>
-typedef OSStatus ICError;
-/* Some fields in ICMapEntry have changed names. */
-#define file_type fileType
-#define file_creator fileCreator
-#define post_creator postCreator
-#define creator_app_name creatorAppName
-#define post_app_name postAppName
-#define MIME_type MIMEType
-#define entry_name entryName
#endif
static PyObject *ErrorObject;
-static PyObject *
-ici_error(ICError err)
-{
- PyErr_SetObject(ErrorObject, PyInt_FromLong((long)err));
- return NULL;
-}
-
/* ----------------------------------------------------- */
/* Declarations for objects of type ic_instance */
static PyObject *
ici_ICFindConfigFile(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICFindConfigFile(self->inst, 0, NULL)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICFindUserConfigFile(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
ICDirSpec where;
if (!PyArg_ParseTuple(args, "sl", &where.vRefNum, &where.dirID))
return NULL;
if ((err=ICFindUserConfigFile(self->inst, &where)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICChooseConfig(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICChooseConfig(self->inst)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICChooseNewConfig(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICChooseNewConfig(self->inst)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICGetSeed(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
long seed;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICGetSeed(self->inst, &seed)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("i", (int)seed);
}
static PyObject *
ici_ICBegin(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
int perm;
if (!PyArg_ParseTuple(args, "i", &perm))
return NULL;
if ((err=ICBegin(self->inst, (ICPerm)perm)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICFindPrefHandle(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 key;
ICAttr attr;
Handle h;
if (!PyArg_ParseTuple(args, "O&O&", PyMac_GetStr255, &key, ResObj_Convert, &h))
return NULL;
if ((err=ICFindPrefHandle(self->inst, key, &attr, h)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("i", (int)attr);
}
static PyObject *
ici_ICSetPref(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 key;
int attr;
char *data;
return NULL;
if ((err=ICSetPref(self->inst, key, (ICAttr)attr, (Ptr)data,
(long)datalen)) != 0)
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICCountPref(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
long count;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICCountPref(self->inst, &count)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("i", (int)count);
}
static PyObject *
ici_ICGetIndPref(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
long num;
Str255 key;
if (!PyArg_ParseTuple(args, "l", &num))
return NULL;
if ((err=ICGetIndPref(self->inst, num, key)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("O&", PyMac_BuildStr255, key);
}
static PyObject *
ici_ICDeletePref(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 key;
if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key))
return NULL;
if ((err=ICDeletePref(self->inst, key)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICEnd(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
if (!PyArg_ParseTuple(args, ""))
return NULL;
if ((err=ICEnd(self->inst)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICEditPreferences(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 key;
if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key))
return NULL;
if ((err=ICEditPreferences(self->inst, key)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
ici_ICParseURL(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 hint;
char *data;
int datalen;
return NULL;
if ((err=ICParseURL(self->inst, hint, (Ptr)data, (long)datalen,
&selStart, &selEnd, h)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("ii", (int)selStart, (int)selEnd);
}
static PyObject *
ici_ICLaunchURL(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 hint;
char *data;
int datalen;
return NULL;
if ((err=ICLaunchURL(self->inst, hint, (Ptr)data, (long)datalen,
&selStart, &selEnd)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("ii", (int)selStart, (int)selEnd);
}
static PyObject *
ici_ICMapFilename(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
Str255 filename;
ICMapEntry entry;
if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, filename))
return NULL;
if ((err=ICMapFilename(self->inst, filename, &entry)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version,
- PyMac_BuildOSType, entry.file_type,
- PyMac_BuildOSType, entry.file_creator,
- PyMac_BuildOSType, entry.post_creator,
+ PyMac_BuildOSType, entry.fileType,
+ PyMac_BuildOSType, entry.fileCreator,
+ PyMac_BuildOSType, entry.postCreator,
entry.flags,
PyMac_BuildStr255, entry.extension,
- PyMac_BuildStr255, entry.creator_app_name,
- PyMac_BuildStr255, entry.post_app_name,
- PyMac_BuildStr255, entry.MIME_type,
- PyMac_BuildStr255, entry.entry_name);
+ PyMac_BuildStr255, entry.creatorAppName,
+ PyMac_BuildStr255, entry.postAppName,
+ PyMac_BuildStr255, entry.MIMEType,
+ PyMac_BuildStr255, entry.entryName);
}
static PyObject *
ici_ICMapTypeCreator(iciobject *self, PyObject *args)
{
- ICError err;
+ OSStatus err;
OSType type, creator;
Str255 filename;
ICMapEntry entry;
PyMac_GetStr255, filename))
return NULL;
if ((err=ICMapTypeCreator(self->inst, type, creator, filename, &entry)) != 0 )
- return ici_error(err);
+ return PyMac_Error(err);
return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version,
- PyMac_BuildOSType, entry.file_type,
- PyMac_BuildOSType, entry.file_creator,
- PyMac_BuildOSType, entry.post_creator,
+ PyMac_BuildOSType, entry.fileType,
+ PyMac_BuildOSType, entry.fileCreator,
+ PyMac_BuildOSType, entry.postCreator,
entry.flags,
PyMac_BuildStr255, entry.extension,
- PyMac_BuildStr255, entry.creator_app_name,
- PyMac_BuildStr255, entry.post_app_name,
- PyMac_BuildStr255, entry.MIME_type,
- PyMac_BuildStr255, entry.entry_name);
+ PyMac_BuildStr255, entry.creatorAppName,
+ PyMac_BuildStr255, entry.postAppName,
+ PyMac_BuildStr255, entry.MIMEType,
+ PyMac_BuildStr255, entry.entryName);
}
newiciobject(OSType creator)
{
iciobject *self;
- ICError err;
+ OSStatus err;
self = PyObject_NEW(iciobject, &Icitype);
if (self == NULL)
return NULL;
if ((err=ICStart(&self->inst, creator)) != 0 ) {
- (void)ici_error(err);
+ (void)PyMac_Error(err);
PyMem_DEL(self);
return NULL;
}
/* Add some symbolic constants to the module */
d = PyModule_GetDict(m);
- ErrorObject = PyString_FromString("icglue.error");
- PyDict_SetItemString(d, "error", ErrorObject);
+ ErrorObject = PyMac_GetOSErrException();
+ if (ErrorObject == NULL ||
+ PyDict_SetItemString(d, "error", ErrorObject) != 0)
+ return;
/* XXXX Add constants here */