mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			473 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			473 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /* ========================= Module _Launch ========================= */
 | |
| 
 | |
| #include "Python.h"
 | |
| 
 | |
| 
 | |
| 
 | |
| #include "pymactoolbox.h"
 | |
| 
 | |
| /* Macro to test whether a weak-loaded CFM function exists */
 | |
| #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
 | |
|         PyErr_SetString(PyExc_NotImplementedError, \
 | |
|         "Not available in this shared library/OS version"); \
 | |
|         return NULL; \
 | |
|     }} while(0)
 | |
| 
 | |
| 
 | |
| #if PY_VERSION_HEX < 0x02040000
 | |
| PyObject *PyMac_GetOSErrException(void);
 | |
| #endif
 | |
| 
 | |
| #include <ApplicationServices/ApplicationServices.h>
 | |
| 
 | |
| /*
 | |
| ** Optional CFStringRef. None will pass NULL
 | |
| */
 | |
| static int
 | |
| OptCFStringRefObj_Convert(PyObject *v, CFStringRef *spec)
 | |
| {
 | |
|         if (v == Py_None) {
 | |
|                 *spec = NULL;
 | |
|                 return 1;
 | |
|         }
 | |
|         return CFStringRefObj_Convert(v, spec);
 | |
| }
 | |
| 
 | |
| PyObject *
 | |
| OptCFStringRefObj_New(CFStringRef it)
 | |
| {
 | |
|         if (it == NULL) {
 | |
|                 Py_INCREF(Py_None);
 | |
|                 return Py_None;
 | |
|         }
 | |
|         return CFStringRefObj_New(it);
 | |
| }
 | |
| 
 | |
| /*
 | |
| ** Convert LSItemInfoRecord to Python.
 | |
| */
 | |
| PyObject *
 | |
| LSItemInfoRecord_New(LSItemInfoRecord *it)
 | |
| {
 | |
|         return Py_BuildValue("{s:is:O&s:O&s:O&s:O&s:i}",
 | |
|                 "flags", it->flags,
 | |
|                 "filetype", PyMac_BuildOSType, it->filetype,
 | |
|                 "creator", PyMac_BuildOSType, it->creator,
 | |
|                 "extension", OptCFStringRefObj_New, it->extension,
 | |
|                 "iconFileName", OptCFStringRefObj_New, it->iconFileName,
 | |
|                 "kindID", it->kindID);
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_Error;
 | |
| 
 | |
| static PyObject *Launch_LSCopyItemInfoForRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inItemRef;
 | |
| 	LSRequestedInfo inWhichInfo;
 | |
| 	LSItemInfoRecord outItemInfo;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&l",
 | |
| 	                      PyMac_GetFSRef, &inItemRef,
 | |
| 	                      &inWhichInfo))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyItemInfoForRef(&inItemRef,
 | |
| 	                            inWhichInfo,
 | |
| 	                            &outItemInfo);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     LSItemInfoRecord_New, &outItemInfo);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCopyItemInfoForURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	LSRequestedInfo inWhichInfo;
 | |
| 	LSItemInfoRecord outItemInfo;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&l",
 | |
| 	                      CFURLRefObj_Convert, &inURL,
 | |
| 	                      &inWhichInfo))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyItemInfoForURL(inURL,
 | |
| 	                            inWhichInfo,
 | |
| 	                            &outItemInfo);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     LSItemInfoRecord_New, &outItemInfo);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSGetExtensionInfo(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	UniChar *inNameLen__in__;
 | |
| 	UniCharCount inNameLen__len__;
 | |
| 	int inNameLen__in_len__;
 | |
| 	UniCharCount outExtStartIndex;
 | |
| 	if (!PyArg_ParseTuple(_args, "u#",
 | |
| 	                      &inNameLen__in__, &inNameLen__in_len__))
 | |
| 		return NULL;
 | |
| 	inNameLen__len__ = inNameLen__in_len__;
 | |
| 	_err = LSGetExtensionInfo(inNameLen__len__, inNameLen__in__,
 | |
| 	                          &outExtStartIndex);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("l",
 | |
| 	                     outExtStartIndex);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCopyDisplayNameForRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inRef;
 | |
| 	CFStringRef outDisplayName;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      PyMac_GetFSRef, &inRef))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyDisplayNameForRef(&inRef,
 | |
| 	                               &outDisplayName);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     CFStringRefObj_New, outDisplayName);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCopyDisplayNameForURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	CFStringRef outDisplayName;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      CFURLRefObj_Convert, &inURL))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyDisplayNameForURL(inURL,
 | |
| 	                               &outDisplayName);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     CFStringRefObj_New, outDisplayName);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSSetExtensionHiddenForRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inRef;
 | |
| 	Boolean inHide;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&b",
 | |
| 	                      PyMac_GetFSRef, &inRef,
 | |
| 	                      &inHide))
 | |
| 		return NULL;
 | |
| 	_err = LSSetExtensionHiddenForRef(&inRef,
 | |
| 	                                  inHide);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSSetExtensionHiddenForURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	Boolean inHide;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&b",
 | |
| 	                      CFURLRefObj_Convert, &inURL,
 | |
| 	                      &inHide))
 | |
| 		return NULL;
 | |
| 	_err = LSSetExtensionHiddenForURL(inURL,
 | |
| 	                                  inHide);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCopyKindStringForRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inFSRef;
 | |
| 	CFStringRef outKindString;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      PyMac_GetFSRef, &inFSRef))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyKindStringForRef(&inFSRef,
 | |
| 	                              &outKindString);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     CFStringRefObj_New, outKindString);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCopyKindStringForURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	CFStringRef outKindString;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      CFURLRefObj_Convert, &inURL))
 | |
| 		return NULL;
 | |
| 	_err = LSCopyKindStringForURL(inURL,
 | |
| 	                              &outKindString);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     CFStringRefObj_New, outKindString);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSGetApplicationForItem(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inItemRef;
 | |
| 	LSRolesMask inRoleMask;
 | |
| 	FSRef outAppRef;
 | |
| 	CFURLRef outAppURL;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&l",
 | |
| 	                      PyMac_GetFSRef, &inItemRef,
 | |
| 	                      &inRoleMask))
 | |
| 		return NULL;
 | |
| 	_err = LSGetApplicationForItem(&inItemRef,
 | |
| 	                               inRoleMask,
 | |
| 	                               &outAppRef,
 | |
| 	                               &outAppURL);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&O&",
 | |
| 	                     PyMac_BuildFSRef, &outAppRef,
 | |
| 	                     CFURLRefObj_New, outAppURL);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSGetApplicationForInfo(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	OSType inType;
 | |
| 	OSType inCreator;
 | |
| 	CFStringRef inExtension;
 | |
| 	LSRolesMask inRoleMask;
 | |
| 	FSRef outAppRef;
 | |
| 	CFURLRef outAppURL;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&O&O&l",
 | |
| 	                      PyMac_GetOSType, &inType,
 | |
| 	                      PyMac_GetOSType, &inCreator,
 | |
| 	                      OptCFStringRefObj_Convert, &inExtension,
 | |
| 	                      &inRoleMask))
 | |
| 		return NULL;
 | |
| 	_err = LSGetApplicationForInfo(inType,
 | |
| 	                               inCreator,
 | |
| 	                               inExtension,
 | |
| 	                               inRoleMask,
 | |
| 	                               &outAppRef,
 | |
| 	                               &outAppURL);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&O&",
 | |
| 	                     PyMac_BuildFSRef, &outAppRef,
 | |
| 	                     CFURLRefObj_New, outAppURL);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSGetApplicationForURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	LSRolesMask inRoleMask;
 | |
| 	FSRef outAppRef;
 | |
| 	CFURLRef outAppURL;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&l",
 | |
| 	                      CFURLRefObj_Convert, &inURL,
 | |
| 	                      &inRoleMask))
 | |
| 		return NULL;
 | |
| 	_err = LSGetApplicationForURL(inURL,
 | |
| 	                              inRoleMask,
 | |
| 	                              &outAppRef,
 | |
| 	                              &outAppURL);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&O&",
 | |
| 	                     PyMac_BuildFSRef, &outAppRef,
 | |
| 	                     CFURLRefObj_New, outAppURL);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSFindApplicationForInfo(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	OSType inCreator;
 | |
| 	CFStringRef inBundleID;
 | |
| 	CFStringRef inName;
 | |
| 	FSRef outAppRef;
 | |
| 	CFURLRef outAppURL;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&O&O&",
 | |
| 	                      PyMac_GetOSType, &inCreator,
 | |
| 	                      OptCFStringRefObj_Convert, &inBundleID,
 | |
| 	                      OptCFStringRefObj_Convert, &inName))
 | |
| 		return NULL;
 | |
| 	_err = LSFindApplicationForInfo(inCreator,
 | |
| 	                                inBundleID,
 | |
| 	                                inName,
 | |
| 	                                &outAppRef,
 | |
| 	                                &outAppURL);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&O&",
 | |
| 	                     PyMac_BuildFSRef, &outAppRef,
 | |
| 	                     CFURLRefObj_New, outAppURL);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCanRefAcceptItem(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inItemFSRef;
 | |
| 	FSRef inTargetRef;
 | |
| 	LSRolesMask inRoleMask;
 | |
| 	LSAcceptanceFlags inFlags;
 | |
| 	Boolean outAcceptsItem;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&O&ll",
 | |
| 	                      PyMac_GetFSRef, &inItemFSRef,
 | |
| 	                      PyMac_GetFSRef, &inTargetRef,
 | |
| 	                      &inRoleMask,
 | |
| 	                      &inFlags))
 | |
| 		return NULL;
 | |
| 	_err = LSCanRefAcceptItem(&inItemFSRef,
 | |
| 	                          &inTargetRef,
 | |
| 	                          inRoleMask,
 | |
| 	                          inFlags,
 | |
| 	                          &outAcceptsItem);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("b",
 | |
| 	                     outAcceptsItem);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSCanURLAcceptURL(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inItemURL;
 | |
| 	CFURLRef inTargetURL;
 | |
| 	LSRolesMask inRoleMask;
 | |
| 	LSAcceptanceFlags inFlags;
 | |
| 	Boolean outAcceptsItem;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&O&ll",
 | |
| 	                      CFURLRefObj_Convert, &inItemURL,
 | |
| 	                      CFURLRefObj_Convert, &inTargetURL,
 | |
| 	                      &inRoleMask,
 | |
| 	                      &inFlags))
 | |
| 		return NULL;
 | |
| 	_err = LSCanURLAcceptURL(inItemURL,
 | |
| 	                         inTargetURL,
 | |
| 	                         inRoleMask,
 | |
| 	                         inFlags,
 | |
| 	                         &outAcceptsItem);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("b",
 | |
| 	                     outAcceptsItem);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSOpenFSRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	FSRef inRef;
 | |
| 	FSRef outLaunchedRef;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      PyMac_GetFSRef, &inRef))
 | |
| 		return NULL;
 | |
| 	_err = LSOpenFSRef(&inRef,
 | |
| 	                   &outLaunchedRef);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     PyMac_BuildFSRef, &outLaunchedRef);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Launch_LSOpenCFURLRef(PyObject *_self, PyObject *_args)
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	CFURLRef inURL;
 | |
| 	CFURLRef outLaunchedURL;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&",
 | |
| 	                      CFURLRefObj_Convert, &inURL))
 | |
| 		return NULL;
 | |
| 	_err = LSOpenCFURLRef(inURL,
 | |
| 	                      &outLaunchedURL);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     CFURLRefObj_New, outLaunchedURL);
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyMethodDef Launch_methods[] = {
 | |
| 	{"LSCopyItemInfoForRef", (PyCFunction)Launch_LSCopyItemInfoForRef, 1,
 | |
| 	 PyDoc_STR("(FSRef inItemRef, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")},
 | |
| 	{"LSCopyItemInfoForURL", (PyCFunction)Launch_LSCopyItemInfoForURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")},
 | |
| 	{"LSGetExtensionInfo", (PyCFunction)Launch_LSGetExtensionInfo, 1,
 | |
| 	 PyDoc_STR("(Buffer inNameLen) -> (UniCharCount outExtStartIndex)")},
 | |
| 	{"LSCopyDisplayNameForRef", (PyCFunction)Launch_LSCopyDisplayNameForRef, 1,
 | |
| 	 PyDoc_STR("(FSRef inRef) -> (CFStringRef outDisplayName)")},
 | |
| 	{"LSCopyDisplayNameForURL", (PyCFunction)Launch_LSCopyDisplayNameForURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outDisplayName)")},
 | |
| 	{"LSSetExtensionHiddenForRef", (PyCFunction)Launch_LSSetExtensionHiddenForRef, 1,
 | |
| 	 PyDoc_STR("(FSRef inRef, Boolean inHide) -> None")},
 | |
| 	{"LSSetExtensionHiddenForURL", (PyCFunction)Launch_LSSetExtensionHiddenForURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL, Boolean inHide) -> None")},
 | |
| 	{"LSCopyKindStringForRef", (PyCFunction)Launch_LSCopyKindStringForRef, 1,
 | |
| 	 PyDoc_STR("(FSRef inFSRef) -> (CFStringRef outKindString)")},
 | |
| 	{"LSCopyKindStringForURL", (PyCFunction)Launch_LSCopyKindStringForURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outKindString)")},
 | |
| 	{"LSGetApplicationForItem", (PyCFunction)Launch_LSGetApplicationForItem, 1,
 | |
| 	 PyDoc_STR("(FSRef inItemRef, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
 | |
| 	{"LSGetApplicationForInfo", (PyCFunction)Launch_LSGetApplicationForInfo, 1,
 | |
| 	 PyDoc_STR("(OSType inType, OSType inCreator, CFStringRef inExtension, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
 | |
| 	{"LSGetApplicationForURL", (PyCFunction)Launch_LSGetApplicationForURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")},
 | |
| 	{"LSFindApplicationForInfo", (PyCFunction)Launch_LSFindApplicationForInfo, 1,
 | |
| 	 PyDoc_STR("(OSType inCreator, CFStringRef inBundleID, CFStringRef inName) -> (FSRef outAppRef, CFURLRef outAppURL)")},
 | |
| 	{"LSCanRefAcceptItem", (PyCFunction)Launch_LSCanRefAcceptItem, 1,
 | |
| 	 PyDoc_STR("(FSRef inItemFSRef, FSRef inTargetRef, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")},
 | |
| 	{"LSCanURLAcceptURL", (PyCFunction)Launch_LSCanURLAcceptURL, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inItemURL, CFURLRef inTargetURL, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")},
 | |
| 	{"LSOpenFSRef", (PyCFunction)Launch_LSOpenFSRef, 1,
 | |
| 	 PyDoc_STR("(FSRef inRef) -> (FSRef outLaunchedRef)")},
 | |
| 	{"LSOpenCFURLRef", (PyCFunction)Launch_LSOpenCFURLRef, 1,
 | |
| 	 PyDoc_STR("(CFURLRef inURL) -> (CFURLRef outLaunchedURL)")},
 | |
| 	{NULL, NULL, 0}
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| void init_Launch(void)
 | |
| {
 | |
| 	PyObject *m;
 | |
| 	PyObject *d;
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	m = Py_InitModule("_Launch", Launch_methods);
 | |
| 	d = PyModule_GetDict(m);
 | |
| 	Launch_Error = PyMac_GetOSErrException();
 | |
| 	if (Launch_Error == NULL ||
 | |
| 	    PyDict_SetItemString(d, "Error", Launch_Error) != 0)
 | |
| 		return;
 | |
| }
 | |
| 
 | |
| /* ======================= End module _Launch ======================= */
 | |
| 
 | 
