[OS/2] Bug 446159: query the plugin version resource on OS/2, r=mkaply

This commit is contained in:
Peter Weilbacher 2008-07-19 18:06:47 +00:00
Родитель d4087165b0
Коммит 692af584ce
1 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -81,6 +81,34 @@ static char *LoadRCDATAString( HMODULE hMod, ULONG resid)
return string; return string;
} }
/* Load a version string stored as RCDATA in a resource segment */
/* Returned string needs to be PR_Free'd by caller */
static char *LoadRCDATAVersion(HMODULE hMod, ULONG resid)
{
APIRET rc;
ULONG ulSize = 0;
char *string = 0;
rc = DosQueryResourceSize(hMod, RT_RCDATA, resid, &ulSize);
// version info is should be 8 chars
if (rc == NO_ERROR && ulSize == 8)
{
char *version = NULL;
rc = DosGetResource(hMod, RT_RCDATA, resid, (void**) &version);
if (rc == NO_ERROR)
{
string = PR_smprintf("%d.%d.%d.%d\n",
version[0], version[2], version[4], version[6]);
DosFreeResource(version);
}
}
return string;
}
static PRUint32 CalculateVariantCount(char* mimeTypes) static PRUint32 CalculateVariantCount(char* mimeTypes)
{ {
PRUint32 variants = 1; PRUint32 variants = 1;
@ -203,6 +231,8 @@ nsresult nsPluginFile::GetPluginInfo( nsPluginInfo &info)
info.fName = LoadRCDATAString( hPlug, NS_INFO_ProductName); info.fName = LoadRCDATAString( hPlug, NS_INFO_ProductName);
info.fFileVersion = LoadRCDATAVersion( hPlug, NS_INFO_ProductVersion);
// get description (doesn't matter if it's missing)... // get description (doesn't matter if it's missing)...
info.fDescription = LoadRCDATAString( hPlug, NS_INFO_FileDescription); info.fDescription = LoadRCDATAString( hPlug, NS_INFO_FileDescription);