Re: lib problems
От | Bruce Momjian |
---|---|
Тема | Re: lib problems |
Дата | |
Msg-id | 200310100121.h9A1Lf425753@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: lib problems ("Andrew Dunstan" <andrew@dunslane.net>) |
Список | pgsql-hackers-win32 |
Andrew Dunstan wrote: > If FRONTEND is defined port/dirmod.c prints to stderr, and if not it wants > to call elog(). I want something that fails silently and sets errno, just > like I would expect a "real" unlink to do. > > At any rate, what I have below has not failed yet in my testing. Well maybe throwing a message after one second is extreme. Should we change it to 3 or 5 seconds? Does that help? I would like to see you using our standard code, and I would like to throw a message after a few seconds so folks know we are waiting for something. --------------------------------------------------------------------------- > > cheers > > andrew > > > ----- Original Message ----- > From: "Bruce Momjian" <pgman@candle.pha.pa.us> > To: "Andrew Dunstan" <andrew@dunslane.net> > Cc: "PostgreSQL Win32 port list" <pgsql-hackers-win32@postgresql.org> > Sent: Thursday, October 09, 2003 8:32 PM > Subject: Re: [pgsql-hackers-win32] lib problems > > > > > > Again, -DFRONTEND is the solution. libpq or psql use that already. > > > > -------------------------------------------------------------------------- > - > > > > Andrew Dunstan wrote: > > > > > > For now I have got around this with the following code: > > > > > > #ifdef WIN32 > > > > > > #ifdef unlink > > > #undef unlink > > > #endif > > > > > > static int > > > init_unlink(const char *path) > > > { > > > while (unlink(path)) > > > { > > > if (errno != EACCES) > > > return -1; > > > Sleep(100); /* ms */ > > > } > > > return 0; > > > } > > > > > > #define unlink(x) init_unlink((x)) > > > > > > #endif > > > > > > cheers > > > > > > andrew > > > > > > ----- Original Message ----- > > > From: Andrew Dunstan > > > To: PostgreSQL Win32 port list > > > Sent: Thursday, October 02, 2003 10:59 PM > > > Subject: [pgsql-hackers-win32] lib problems > > > > > > > > > > > > OK, I have a C version of initdb that apparently works fine on Unix, > and is only missing signal handling. (If anyone is curious and/or > adventurous I can email you a copy). > > > > > > When I compile on W32/Mingw I get this: > > > > > > $ make > > > > > > gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/ > local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port > initdb.o -lpgport -o initdb > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c: > undefined reference to `errstart' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c: > undefined reference to `elog_finish' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c: > undefined reference to `errstart' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c: > undefined reference to `elog_finish' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c: > undefined reference to `errstart' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c: > undefined reference to `elog_finish' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c: > undefined reference to `errstart' > > > ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c: > undefined reference to `elog_finish' > > > make: *** [initdb] Error 1 > > > > > > The strange thing is I didn't get that this morning, but I assume it's > clearly because I added some unlink calls. > > > > > > Anyone have clues about how to fix this? Compile a copy of dirmod.c > with FRONTEND defined, maybe? Or just remove the logging statements from > pgunlink altogether - unlink should really be silent. > > > > > > BTW, if the W32 timing problems that apply to unlink() also apply to > rmdir(), we'll need a replacement for that too. > > > > > > thanks > > > > > > andrew > > > > -- > > 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 > > > ---------------------------(end of broadcast)--------------------------- > TIP 8: explain analyze is your friend > -- 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 по дате отправления: