// Try to load a message DLL from a location, in a subdirectory of mine given by the LANGID // passed in (or the same directory if -1). static HINSTANCE FindMessageDll(LANGID langid) { WCHAR path[MAX_PATH]; WCHAR * pEnd; if (!PAL_GetPALDirectoryW(path, lengthof(path))) return 0; pEnd = path + wcslen(path); // Append language ID if (langid != (LANGID)-1) { pEnd += _snwprintf(pEnd, lengthof(path) - (pEnd - path) - 1, L"%d\\", langid); } // Append message DLL name. if ((int) lengthof(MESSAGE_DLL) + pEnd - path > (int) lengthof(path) - 1) return 0; wcscpy(pEnd, MESSAGE_DLL); // Try to load it. return PAL_LoadSatelliteResourceW(path); }
static HSATELLITE PAL_GetSatelliteResource() { WCHAR szSatellitePath[MAX_PATH+1]; WCHAR* pwzFileName; lstrcpyW(szSatellitePath, g_FusionDllPath); pwzFileName = PathFindFileName(szSatellitePath); ASSERT(pwzFileName); *pwzFileName = '\0'; StrCatBuff(szSatellitePath, L"fusion.satellite", MAX_PATH); return PAL_LoadSatelliteResourceW(szSatellitePath); }
static HSATELLITE LoadSatelliteResource() { WCHAR path[MAX_PATH]; WCHAR *pEnd, *pSlashEnd; if (!GetModuleFileNameW(NULL, path, MAX_PATH)) return 0; pEnd = wcsrchr(path, L'\\'); pSlashEnd = wcsrchr(path, L'/'); if (pSlashEnd > pEnd) pEnd = pSlashEnd; if (!pEnd) return 0; ++pEnd; // point just beyond. // Append message DLL name if it fits. if ((int) sizeof(MESSAGE_DLL) + (pEnd - path) * sizeof(WCHAR) > (int) sizeof(path) - 1) return 0; wcscpy(pEnd, MESSAGE_DLL); return PAL_LoadSatelliteResourceW(path); }