Patch #567296 by Pim Buurman, slightly modified by me so it can be disabled
at compile time: use PBGetCatInfoSync() to get FInfo data in stead of GetFInfo. The latter doesn't work for folders. The former does, at least on OSX, and insofar the info makes sense for a folder.
This commit is contained in:
parent
137d8c5667
commit
9c5b61b21b
|
@ -39,6 +39,13 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
#include "getapplbycreator.h"
|
||||
|
||||
/*
|
||||
** The next define uses PBGetCatInfoSync for GetFInfo, allowing you
|
||||
** to get FInfo for folders. This works on OSX, but it may result
|
||||
** in problems on OS9, hence the define (for the time being).
|
||||
*/
|
||||
#define USE_CATINFO_FOR_FINFO
|
||||
|
||||
#ifndef TARGET_API_MAC_OSX
|
||||
#include "pythonresources.h"
|
||||
extern PyMac_PrefRecord PyMac_options;
|
||||
|
@ -592,18 +599,33 @@ mfss_GetFInfo(mfssobject *self, PyObject *args)
|
|||
{
|
||||
OSErr err;
|
||||
mfsiobject *fip;
|
||||
|
||||
|
||||
CInfoPBRec pb;
|
||||
FSSpec* fss = &self->fsspec;
|
||||
|
||||
if (!PyArg_ParseTuple(args, ""))
|
||||
return NULL;
|
||||
if ( (fip=newmfsiobject()) == NULL )
|
||||
return NULL;
|
||||
#ifdef USE_CATINFO_FOR_FINFO
|
||||
pb.dirInfo.ioNamePtr = fss->name;
|
||||
pb.dirInfo.ioFDirIndex = 0;
|
||||
pb.dirInfo.ioVRefNum = fss->vRefNum;
|
||||
pb.dirInfo.ioDrDirID = fss->parID;
|
||||
err = PBGetCatInfoSync(&pb);
|
||||
if ( err ) {
|
||||
PyErr_Mac(ErrorObject, err);
|
||||
Py_DECREF(fip);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(&fip->finfo, &pb.hFileInfo.ioFlFndrInfo, sizeof(FileInfo));
|
||||
#else
|
||||
err = FSpGetFInfo(&self->fsspec, &fip->finfo);
|
||||
if ( err ) {
|
||||
PyErr_Mac(ErrorObject, err);
|
||||
Py_DECREF(fip);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
return (PyObject *)fip;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue