mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
(Contributed by Bob Ippolito.) This patch trims down the Python core on Darwin by making it independent of CoreFoundation and CoreServices. It does this by: Changed linker flags in configure/configure.in Removed the unused PyMac_GetAppletScriptFile Moved the implementation of PyMac_StrError to the MacOS module Moved the implementation of PyMac_GetFullPathname to the Carbon.File module
This commit is contained in:
parent
e0bdaefaf4
commit
ec6eb369d5
5 changed files with 189 additions and 188 deletions
|
@ -1253,6 +1253,49 @@ static PyObject *FSSpec_IsAliasFile(FSSpecObject *_self, PyObject *_args)
|
|||
return _res;
|
||||
}
|
||||
|
||||
static OSErr
|
||||
_PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
|
||||
{
|
||||
FSRef fsr;
|
||||
OSErr err;
|
||||
|
||||
*path = '\0';
|
||||
err = FSpMakeFSRef(fss, &fsr);
|
||||
if (err == fnfErr) {
|
||||
/* FSSpecs can point to non-existing files, fsrefs can't. */
|
||||
FSSpec fss2;
|
||||
int tocopy;
|
||||
|
||||
err = FSMakeFSSpec(fss->vRefNum, fss->parID, "", &fss2);
|
||||
if (err)
|
||||
return err;
|
||||
err = FSpMakeFSRef(&fss2, &fsr);
|
||||
if (err)
|
||||
return err;
|
||||
err = (OSErr)FSRefMakePath(&fsr, path, len-1);
|
||||
if (err)
|
||||
return err;
|
||||
/* This part is not 100% safe: we append the filename part, but
|
||||
** I'm not sure that we don't run afoul of the various 8bit
|
||||
** encodings here. Will have to look this up at some point...
|
||||
*/
|
||||
strcat(path, "/");
|
||||
tocopy = fss->name[0];
|
||||
if ((strlen(path) + tocopy) >= len)
|
||||
tocopy = len - strlen(path) - 1;
|
||||
if (tocopy > 0)
|
||||
strncat(path, fss->name+1, tocopy);
|
||||
}
|
||||
else {
|
||||
if (err)
|
||||
return err;
|
||||
err = (OSErr)FSRefMakePath(&fsr, path, len);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *FSSpec_as_pathname(FSSpecObject *_self, PyObject *_args)
|
||||
{
|
||||
PyObject *_res = NULL;
|
||||
|
@ -1262,7 +1305,7 @@ static PyObject *FSSpec_as_pathname(FSSpecObject *_self, PyObject *_args)
|
|||
|
||||
if (!PyArg_ParseTuple(_args, ""))
|
||||
return NULL;
|
||||
err = PyMac_GetFullPathname(&_self->ob_itself, strbuf, sizeof(strbuf));
|
||||
err = _PyMac_GetFullPathname(&_self->ob_itself, strbuf, sizeof(strbuf));
|
||||
if ( err ) {
|
||||
PyMac_Error(err);
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue