diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 4a9049b..c0ac9db 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -242,9 +242,8 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, #else char *ret = 0; # if defined(Q_OS_MAC) && !defined(Q_OS_IOS) - // When using -mmacosx-version-min=10.4, we get the legacy realpath implementation, - // which does not work properly with the realpath(X,0) form. See QTBUG-28282. - if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6) { + // In Nix-on-Darwin, we don't support ancient macOS anyway, and the deleted branch relies on + // a symbol that's been deprecated for years and that our CF doesn't have ret = (char*)malloc(PATH_MAX + 1); if (ret && realpath(entry.nativeFilePath().constData(), (char*)ret) == 0) { const int savedErrno = errno; // errno is checked below, and free() might change it @@ -252,19 +251,6 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, errno = savedErrno; ret = 0; } - } else { - // on 10.5 we can use FSRef to resolve the file path. - QString path = QDir::cleanPath(entry.filePath()); - FSRef fsref; - if (FSPathMakeRef((const UInt8 *)path.toUtf8().data(), &fsref, 0) == noErr) { - CFURLRef urlref = CFURLCreateFromFSRef(NULL, &fsref); - CFStringRef canonicalPath = CFURLCopyFileSystemPath(urlref, kCFURLPOSIXPathStyle); - QString ret = QCFString::toQString(canonicalPath); - CFRelease(canonicalPath); - CFRelease(urlref); - return QFileSystemEntry(ret); - } - } # else # if _POSIX_VERSION >= 200801L ret = realpath(entry.nativeFilePath().constData(), (char*)0); diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h index 3bf7342..b6bcfc0 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h @@ -43,7 +43,6 @@ BOOL stringIsCaseInsensitiveEqualToString(NSString *first, NSString *second); BOOL hasCaseInsensitiveSuffix(NSString *string, NSString *suffix); BOOL hasCaseInsensitiveSubstring(NSString *string, NSString *substring); NSString *filenameByFixingIllegalCharacters(NSString *string); -CFStringEncoding stringEncodingForResource(Handle resource); #ifdef __cplusplus } diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm index d6c3f0c..c88ca76 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm +++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm @@ -68,45 +68,4 @@ BOOL hasCaseInsensitiveSubstring(NSString *string, NSString *substring) return filename; } -CFStringEncoding stringEncodingForResource(Handle resource) -{ - short resRef = HomeResFile(resource); - if (ResError() != noErr) - return NSMacOSRomanStringEncoding; - - // Get the FSRef for the current resource file - FSRef fref; - OSStatus error = FSGetForkCBInfo(resRef, 0, NULL, NULL, NULL, &fref, NULL); - if (error != noErr) - return NSMacOSRomanStringEncoding; - - RetainPtr url(AdoptCF, CFURLCreateFromFSRef(NULL, &fref)); - if (!url) - return NSMacOSRomanStringEncoding; - - NSString *path = [(NSURL *)url.get() path]; - - // Get the lproj directory name - path = [path stringByDeletingLastPathComponent]; - if (!stringIsCaseInsensitiveEqualToString([path pathExtension], @"lproj")) - return NSMacOSRomanStringEncoding; - - NSString *directoryName = [[path stringByDeletingPathExtension] lastPathComponent]; - RetainPtr locale(AdoptCF, CFLocaleCreateCanonicalLocaleIdentifierFromString(NULL, (CFStringRef)directoryName)); - if (!locale) - return NSMacOSRomanStringEncoding; - - LangCode lang; - RegionCode region; - error = LocaleStringToLangAndRegionCodes([(NSString *)locale.get() UTF8String], &lang, ®ion); - if (error != noErr) - return NSMacOSRomanStringEncoding; - - TextEncoding encoding; - error = UpgradeScriptInfoToTextEncoding(kTextScriptDontCare, lang, region, NULL, &encoding); - if (error != noErr) - return NSMacOSRomanStringEncoding; - - return encoding; -} diff --git a/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp b/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp index 865ea32..20bda8d 100644 --- a/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp +++ b/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp @@ -101,33 +101,6 @@ static WTF::RetainPtr readPListFile(CFStringRef fileName, bool return map; } -static Vector stringListFromResourceId(SInt16 id) -{ - Vector list; - - Handle handle = Get1Resource('STR#', id); - if (!handle) - return list; - - CFStringEncoding encoding = stringEncodingForResource(handle); - - unsigned char* p = (unsigned char*)*handle; - if (!p) - return list; - - SInt16 count = *(SInt16*)p; - p += sizeof(SInt16); - - for (SInt16 i = 0; i < count; ++i) { - unsigned char length = *p; - WTF::RetainPtr str = CFStringCreateWithPascalString(0, p, encoding); - list.append(str.get()); - p += 1 + length; - } - - return list; -} - bool PluginPackage::fetchInfo() { if (!load()) @@ -202,36 +175,8 @@ bool PluginPackage::fetchInfo() m_description = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginDescription")); } else { - int resFile = CFBundleOpenBundleResourceMap(m_module); - - UseResFile(resFile); - - Vector mimes = stringListFromResourceId(MIMEListStringStringNumber); - - if (mimes.size() % 2 != 0) - return false; - - Vector descriptions = stringListFromResourceId(MIMEDescriptionStringNumber); - if (descriptions.size() != mimes.size() / 2) - return false; - - for (size_t i = 0; i < mimes.size(); i += 2) { - String mime = mimes[i].lower(); - Vector extensions; - mimes[i + 1].lower().split(UChar(','), extensions); - - m_mimeToExtensions.set(mime, extensions); - - m_mimeToDescriptions.set(mime, descriptions[i / 2]); - } - - Vector names = stringListFromResourceId(PluginNameOrDescriptionStringNumber); - if (names.size() == 2) { - m_description = names[0]; - m_name = names[1]; - } - - CFBundleCloseBundleResourceMap(m_module, resFile); + LOG(Plugins, "Nix removed ancient code that relies on long-deprecated functionality that we don't want to support!"); + return false; } LOG(Plugins, "PluginPackage::fetchInfo(): Found plug-in '%s'", m_name.utf8().data()); diff --git a/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm b/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm index b206e48..669d442 100644 --- a/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm +++ b/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm @@ -26,7 +26,6 @@ #import "config.h" #import "NetscapePluginModule.h" -#import #import using namespace WebCore; @@ -196,132 +195,6 @@ static bool getPluginInfoFromPropertyLists(CFBundleRef bundle, PluginInfo& plugi return true; } -class ResourceMap { -public: - explicit ResourceMap(CFBundleRef bundle) - : m_bundle(bundle) - , m_currentResourceFile(CurResFile()) - , m_bundleResourceMap(CFBundleOpenBundleResourceMap(m_bundle)) - { - UseResFile(m_bundleResourceMap); - } - - ~ResourceMap() - { - // Close the resource map. - CFBundleCloseBundleResourceMap(m_bundle, m_bundleResourceMap); - - // And restore the old resource. - UseResFile(m_currentResourceFile); - } - - bool isValid() const { return m_bundleResourceMap != -1; } - -private: - CFBundleRef m_bundle; - ResFileRefNum m_currentResourceFile; - ResFileRefNum m_bundleResourceMap; -}; - -static bool getStringListResource(ResID resourceID, Vector& stringList) { - Handle stringListHandle = Get1Resource('STR#', resourceID); - if (!stringListHandle || !*stringListHandle) - return false; - - // Get the string list size. - Size stringListSize = GetHandleSize(stringListHandle); - if (stringListSize < static_cast(sizeof(UInt16))) - return false; - - CFStringEncoding stringEncoding = stringEncodingForResource(stringListHandle); - - unsigned char* ptr = reinterpret_cast(*stringListHandle); - unsigned char* end = ptr + stringListSize; - - // Get the number of strings in the string list. - UInt16 numStrings = *reinterpret_cast(ptr); - ptr += sizeof(UInt16); - - for (UInt16 i = 0; i < numStrings; ++i) { - // We're past the end of the string, bail. - if (ptr >= end) - return false; - - // Get the string length. - unsigned char stringLength = *ptr++; - - RetainPtr cfString(AdoptCF, CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, ptr, stringLength, stringEncoding, false, kCFAllocatorNull)); - if (!cfString.get()) - return false; - - stringList.append(cfString.get()); - ptr += stringLength; - } - - if (ptr != end) - return false; - - return true; -} - -static const ResID PluginNameOrDescriptionStringNumber = 126; -static const ResID MIMEDescriptionStringNumber = 127; -static const ResID MIMEListStringStringNumber = 128; - -static bool getPluginInfoFromCarbonResources(CFBundleRef bundle, PluginInfo& pluginInfo) -{ - ResourceMap resourceMap(bundle); - if (!resourceMap.isValid()) - return false; - - // Get the description and name string list. - Vector descriptionAndName; - if (!getStringListResource(PluginNameOrDescriptionStringNumber, descriptionAndName)) - return false; - - // Get the MIME types and extensions string list. This list needs to be a multiple of two. - Vector mimeTypesAndExtensions; - if (!getStringListResource(MIMEListStringStringNumber, mimeTypesAndExtensions)) - return false; - - if (mimeTypesAndExtensions.size() % 2) - return false; - - // Now get the MIME type descriptions string list. This string list needs to be the same length as the number of MIME types. - Vector mimeTypeDescriptions; - if (!getStringListResource(MIMEDescriptionStringNumber, mimeTypeDescriptions)) - return false; - - // Add all MIME types. - for (size_t i = 0; i < mimeTypesAndExtensions.size() / 2; ++i) { - MimeClassInfo mimeClassInfo; - - const String& mimeType = mimeTypesAndExtensions[i * 2]; - String description; - if (i < mimeTypeDescriptions.size()) - description = mimeTypeDescriptions[i]; - - mimeClassInfo.type = mimeType.lower(); - mimeClassInfo.desc = description; - - Vector extensions; - mimeTypesAndExtensions[i * 2 + 1].split(',', extensions); - - for (size_t i = 0; i < extensions.size(); ++i) - mimeClassInfo.extensions.append(extensions[i].lower()); - - pluginInfo.mimes.append(mimeClassInfo); - } - - // Set the description and name if they exist. - if (descriptionAndName.size() > 0) - pluginInfo.desc = descriptionAndName[0]; - if (descriptionAndName.size() > 1) - pluginInfo.name = descriptionAndName[1]; - - return true; -} - bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginInfoStore::Plugin& plugin) { RetainPtr bundlePath(AdoptCF, pluginPath.createCFString()); @@ -344,8 +217,7 @@ static bool getPluginInfoFromCarbonResources(CFBundleRef bundle, PluginInfo& plu return false; // Check that there's valid info for this plug-in. - if (!getPluginInfoFromPropertyLists(bundle.get(), plugin.info) && - !getPluginInfoFromCarbonResources(bundle.get(), plugin.info)) + if (!getPluginInfoFromPropertyLists(bundle.get(), plugin.info)) return false; plugin.path = pluginPath;