X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBDVDDetector.m;h=81a854597343eec37db18910cb0ac5abeed808b7;hb=1bd16c19e1e4a9b262527c6eca271d0ad4883b7b;hp=7360c0a9db0ee9ec5cf5d13006a091aaacaa3881;hpb=d3b5ec255ae93261a1cb80656a56991306024fb3;p=handbrake-jp%2Fhandbrake-jp-git.git
diff --git a/macosx/HBDVDDetector.m b/macosx/HBDVDDetector.m
index 7360c0a9..81a85459 100644
--- a/macosx/HBDVDDetector.m
+++ b/macosx/HBDVDDetector.m
@@ -3,7 +3,7 @@
* 8/17/2007
*
* This file is part of the HandBrake source code.
- * Homepage: .
+ * Homepage: .
* It may be used under the terms of the GNU General Public License.
*/
@@ -83,10 +83,10 @@
- (NSString *)bsdNameForPath
{
OSStatus err;
- FSRef ref;
- err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation],
+ FSRef ref;
+ err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation],
&ref, NULL );
- if( err != noErr )
+ if( err != noErr )
{
return nil;
}
@@ -101,22 +101,29 @@
}
FSVolumeRefNum volRefNum = catalogInfo.volume;
- // Mow let's get the device name
- GetVolParmsInfoBuffer volumeParms;
- HParamBlockRec pb;
- pb.ioParam.ioNamePtr = NULL;
- pb.ioParam.ioVRefNum = volRefNum;
- pb.ioParam.ioBuffer = (Ptr) &volumeParms;
- pb.ioParam.ioReqCount = sizeof( volumeParms );
- err = PBHGetVolParmsSync( &pb );
+ // Now let's get the device name
+ GetVolParmsInfoBuffer volumeParms;
+ err = FSGetVolumeParms ( volRefNum, &volumeParms, sizeof( volumeParms ) );
+
if( err != noErr )
{
return nil;
}
- // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field.
- // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h.
- return [NSString stringWithCString:(char *)volumeParms.vMDeviceID];
+ // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field.
+ // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h.
+ if( volumeParms.vMVersion < 4 )
+ {
+ return nil;
+ }
+
+ // vMDeviceID might be zero as is reported with experimental ZFS (zfs-119) support in Leopard.
+ if( !volumeParms.vMDeviceID )
+ {
+ return nil;
+ }
+
+ return [NSString stringWithUTF8String:(const char *)volumeParms.vMDeviceID];
}