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:
Jack Jansen 2002-08-06 12:59:44 +00:00
parent 137d8c5667
commit 9c5b61b21b
1 changed files with 24 additions and 2 deletions

View File

@ -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;
}