Re: Relocatable locale
От | Magnus Hagander |
---|---|
Тема | Re: Relocatable locale |
Дата | |
Msg-id | 6BCB9D8A16AC4241919521715F4D8BCE34BB3D@algol.sollentuna.se обсуждение исходный текст |
Ответ на | Relocatable locale (Bruce Momjian <pgman@candle.pha.pa.us>) |
Ответы |
Re: Relocatable locale
|
Список | pgsql-patches |
> > > > > As for how to do it - on Windows you *can* get the > path of the > > > > > DLL that is executing your code, using GetModuleFileName(). > > > > > Hardly cross-platform, but can be done. > > > > > > > > That sounds pretty reasonable to me. > > > > > > True, and we already have our own find_my_exec() which > works for Unix too. > > > > What does that have to do with this case? We're trying to find the > > library here. > > Oh, I see that GetModuleFileName() finds the location of your > library, not of the binary. Nice. So, for Win32, we use > that function call to find the locale directory? > > We do have a comment in port/exec.c: > > if (GetModuleFileName(NULL, retpath, MAXPGPATH) == 0) > > and I thought that did only binaries, not the library that > uses them. I assume if the library is a DLL, it returns the > DLL location, and if it is in the binary, it returns the > binary location. Nope, not quite. With the parameter NULL, it will return for the current *process*. You will need to use GetModuleHandle() (I think that should work) to get the handle of the DLL. See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc /base/getmodulehandle.asp For static libaries, you need a different solution. Base that off the EXE? //Magnus
В списке pgsql-patches по дате отправления: