OS X: use FSGetVolumeParms when targeting 10.5+.
PBHGetVolParmsSync() is not available when building with 64bit. The replacement FSGetVolumeParms() is available on 10.5+ only. Use the latter when building with target version 10.5+. This requires builds targeting 10.4 to 32bit and allows building as 64bit when targeting 10.5+. Change-Id: Ic53217f3090147bea473613335f9482623a470bd
This commit is contained in:
parent
f8e3b61565
commit
06a2e7c3bb
1 changed files with 20 additions and 4 deletions
|
@ -160,13 +160,23 @@ QString Utils::filesystemName(QString path)
|
||||||
|
|
||||||
if(result == noErr) {
|
if(result == noErr) {
|
||||||
GetVolParmsInfoBuffer volparms;
|
GetVolParmsInfoBuffer volparms;
|
||||||
|
/* PBHGetVolParmsSync() is not available for 64bit while
|
||||||
|
FSGetVolumeParms() is available in 10.5+. Thus we need to use
|
||||||
|
PBHGetVolParmsSync() for 10.4, and that also requires 10.4 to
|
||||||
|
always use 32bit.
|
||||||
|
Qt 4 supports 32bit on 10.6 Cocoa only.
|
||||||
|
*/
|
||||||
|
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
|
||||||
|
if(FSGetVolumeParms(volrefnum, &volparms, sizeof(volparms)) == noErr)
|
||||||
|
#else
|
||||||
HParamBlockRec hpb;
|
HParamBlockRec hpb;
|
||||||
hpb.ioParam.ioNamePtr = NULL;
|
hpb.ioParam.ioNamePtr = NULL;
|
||||||
hpb.ioParam.ioVRefNum = volrefnum;
|
hpb.ioParam.ioVRefNum = volrefnum;
|
||||||
hpb.ioParam.ioBuffer = (Ptr)&volparms;
|
hpb.ioParam.ioBuffer = (Ptr)&volparms;
|
||||||
hpb.ioParam.ioReqCount = sizeof(volparms);
|
hpb.ioParam.ioReqCount = sizeof(volparms);
|
||||||
|
if(PBHGetVolParmsSync(&hpb) == noErr)
|
||||||
if(PBHGetVolParmsSync(&hpb) == noErr) {
|
#endif
|
||||||
|
{
|
||||||
if(volparms.vMServerAdr == 0) {
|
if(volparms.vMServerAdr == 0) {
|
||||||
if(bsd == (char*)volparms.vMDeviceID) {
|
if(bsd == (char*)volparms.vMDeviceID) {
|
||||||
name = QString::fromUtf16((const ushort*)volname.unicode,
|
name = QString::fromUtf16((const ushort*)volname.unicode,
|
||||||
|
@ -798,13 +808,19 @@ bool Utils::ejectDevice(QString device)
|
||||||
kFSVolInfoFSInfo, NULL, NULL, NULL);
|
kFSVolInfoFSInfo, NULL, NULL, NULL);
|
||||||
if(result == noErr) {
|
if(result == noErr) {
|
||||||
GetVolParmsInfoBuffer volparms;
|
GetVolParmsInfoBuffer volparms;
|
||||||
|
/* See above -- PBHGetVolParmsSync() is not available for 64bit,
|
||||||
|
* and FSGetVolumeParms() on 10.5+ only. */
|
||||||
|
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
|
||||||
|
if(FSGetVolumeParms(volrefnum, &volparms, sizeof(volparms)) == noErr)
|
||||||
|
#else
|
||||||
HParamBlockRec hpb;
|
HParamBlockRec hpb;
|
||||||
hpb.ioParam.ioNamePtr = NULL;
|
hpb.ioParam.ioNamePtr = NULL;
|
||||||
hpb.ioParam.ioVRefNum = volrefnum;
|
hpb.ioParam.ioVRefNum = volrefnum;
|
||||||
hpb.ioParam.ioBuffer = (Ptr)&volparms;
|
hpb.ioParam.ioBuffer = (Ptr)&volparms;
|
||||||
hpb.ioParam.ioReqCount = sizeof(volparms);
|
hpb.ioParam.ioReqCount = sizeof(volparms);
|
||||||
|
if(PBHGetVolParmsSync(&hpb) == noErr)
|
||||||
if(PBHGetVolParmsSync(&hpb) == noErr) {
|
#endif
|
||||||
|
{
|
||||||
if(volparms.vMServerAdr == 0) {
|
if(volparms.vMServerAdr == 0) {
|
||||||
if(bsd == (char*)volparms.vMDeviceID) {
|
if(bsd == (char*)volparms.vMDeviceID) {
|
||||||
pid_t dissenter;
|
pid_t dissenter;
|
||||||
|
|
Loading…
Reference in a new issue