src/music/qtmidi.cpp
branchNewGRF_ports
changeset 6871 5a9dc001e1ad
parent 6720 35756db7e577
--- a/src/music/qtmidi.cpp	Sat Oct 06 21:16:00 2007 +0000
+++ b/src/music/qtmidi.cpp	Mon Dec 03 23:39:38 2007 +0000
@@ -19,6 +19,9 @@
  */
 
 
+#define MAC_OS_X_VERSION_MIN_REQUIRED    MAC_OS_X_VERSION_10_3
+#include <AvailabilityMacros.h>
+
 /*
  * OpenTTD includes.
  */
@@ -27,7 +30,6 @@
 #undef   WindowClass
 
 #include "../stdafx.h"
-#include "../openttd.h"
 #include "qtmidi.h"
 
 /*
@@ -56,48 +58,24 @@
 
 
 /**
- * Converts a Unix-like pathname to a @c FSSpec structure which may be
- * used with functions from several MacOS X frameworks (Carbon, QuickTime,
- * etc). The pointed file or directory must exist.
- *
- * @param *path A string containing a Unix-like path.
- * @param *spec Pointer to a @c FSSpec structure where the result will be
- *              stored.
- * @return Wether the conversion was successful.
- */
-static bool PathToFSSpec(const char *path, FSSpec *spec)
-{
-	FSRef ref;
-	assert(spec != NULL);
-	assert(path != NULL);
-
-	return
-		FSPathMakeRef((UInt8*)path, &ref, NULL) == noErr &&
-		FSGetCatalogInfo(&ref, kFSCatInfoNone, NULL, NULL, spec, NULL) == noErr;
-}
-
-
-/**
  * Sets the @c OSType of a given file to @c 'Midi', but only if it's not
  * already set.
  *
  * @param *spec A @c FSSpec structure referencing a file.
  */
-static void SetMIDITypeIfNeeded(const FSSpec *spec)
+static void SetMIDITypeIfNeeded(const FSRef *ref)
 {
-	FSRef ref;
 	FSCatalogInfo catalogInfo;
 
-	assert(spec);
+	assert(ref);
 
-	if (noErr != FSpMakeFSRef(spec, &ref)) return;
-	if (noErr != FSGetCatalogInfo(&ref, kFSCatInfoNodeFlags | kFSCatInfoFinderInfo, &catalogInfo, NULL, NULL, NULL)) return;
+	if (noErr != FSGetCatalogInfo(ref, kFSCatInfoNodeFlags | kFSCatInfoFinderInfo, &catalogInfo, NULL, NULL, NULL)) return;
 	if (!(catalogInfo.nodeFlags & kFSNodeIsDirectoryMask)) {
 		FileInfo * const info = (FileInfo *) catalogInfo.finderInfo;
 		if (info->fileType != midiType && !(info->finderFlags & kIsAlias)) {
 			OSErr e;
 			info->fileType = midiType;
-			e = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &catalogInfo);
+			e = FSSetCatalogInfo(ref, kFSCatInfoFinderInfo, &catalogInfo);
 			if (e == noErr) {
 				DEBUG(driver, 3, "qtmidi: changed filetype to 'Midi'");
 			} else {
@@ -120,6 +98,7 @@
 	int fd;
 	int ret;
 	char magic[4];
+	FSRef fsref;
 	FSSpec fsspec;
 	short refnum = 0;
 	short resid  = 0;
@@ -145,9 +124,10 @@
 	if (magic[0] != 'M' || magic[1] != 'T' || magic[2] != 'h' || magic[3] != 'd')
 		return false;
 
-	if (!PathToFSSpec(path, &fsspec)) return false;
-	SetMIDITypeIfNeeded(&fsspec);
+	if (noErr != FSPathMakeRef((const UInt8 *) path, &fsref, NULL)) return false;
+	SetMIDITypeIfNeeded(&fsref);
 
+	if (noErr != FSGetCatalogInfo(&fsref, kFSCatInfoNone, NULL, NULL, &fsspec, NULL)) return false;
 	if (OpenMovieFile(&fsspec, &refnum, fsRdPerm) != noErr) return false;
 	DEBUG(driver, 3, "qtmidi: '%s' successfully opened", path);