Re: win2k, service, pg_ctl, popen, etc
От | Bruce Momjian |
---|---|
Тема | Re: win2k, service, pg_ctl, popen, etc |
Дата | |
Msg-id | 200407211420.i6LEKvV23524@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: win2k, service, pg_ctl, popen, etc (Claudio Natoli <claudio.natoli@memetrics.com>) |
Ответы |
Re: win2k, service, pg_ctl, popen, etc
Re: win2k, service, pg_ctl, popen, etc |
Список | pgsql-hackers-win32 |
Claudio Natoli wrote: > > > If we don't know why, sign one more down as a bug in mingw (hardly > > surprising - just the area of pipes and consoles seems to be > > where it's weak). In that case, why not just recode pg_ctl to execute > > postmaster.exe from the same directory it found pg_ctl.exe > > in. This can easily be done using GetModuleFileName(). Is a pipe opened at > > > any other place? Or does other places need to be fixed as well (I haven't > gone > > through the whole code). > > Moreover, all the find_*_exec calls could (and IMHO, should) make use of > GetModuleFileName. Win32 has an API to find the running file name; *nix does > not and so we have to jump through a few hoops. I just don't see the sense > in jumping through the same hoops under Win32. > > Sure, the functions also make certain that the version is as expected, but > to my mind this is just a safety check to make sure the hoops we just jumped > through were all in order. Of course, we'd also lose the ability to protect > people who mix versions in the same directory, but such people need a lot > more protection from themselves than we can provide. ;-) > > Does there continue to be any resistance to this approach? If not, I'll > gladly provide a patch. GetModuleFileName() doesn't solve our problem here. We already know what we think is the right path, but we have to be sure that we are calling a matching version binary. For example, initdb wants to call a postgres that is the right version, as does pg_ctl. We have had mismatches reported in the past, and with relocatable installs it is even more likely. The version check is centralized in one place, exec.c, and I don't want to have different behaviors on Win32 and Unix if we can help it. Let's go with the system() into a temp file. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
В списке pgsql-hackers-win32 по дате отправления: