Thread: 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
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
For now I have got around this with the following code:
#ifdef WIN32
#ifdef unlink
#undef unlink
#endif
#undef unlink
#endif
static int
init_unlink(const char *path)
{
while (unlink(path))
{
if (errno != EACCES)
return -1;
Sleep(100); /* ms */
}
return 0;
}
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 DunstanSent: Thursday, October 02, 2003 10:59 PMSubject: [pgsql-hackers-win32] lib problemsOK, 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 1The 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.thanksandrew
Andrew Dunstan wrote: > > 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. You should define FRONTEND. That is the proper way to handle those function calls becaues they don't have to be atomic for clients. > BTW, if the W32 timing problems that apply to unlink() also > apply to rmdir(), we'll need a replacement for that too. No, that one should be fine. -- 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
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 anyoneis 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 thelogging 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
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. 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
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
Actually, I think I can live with the message - it's only called if initdb fails and is cleaning up. 1 second seems far too short - 3 seconds would be a minimum, I think. Also, looping forever on this seems dangerous. Shouldn't we just give up after some substantial number of tries to unlink the file? After all, on Unix we expect unlink to return immediately on failure, although we don't expect as many failures as this gets around :-) 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 9:21 PM Subject: Re: [pgsql-hackers-win32] lib problems > 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 > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster
Andrew Dunstan wrote: > > Actually, I think I can live with the message - it's only called if initdb > fails and is cleaning up. > > 1 second seems far too short - 3 seconds would be a minimum, I think. OK, changed to 3 seconds in main CVS and Win32 branch. > Also, looping forever on this seems dangerous. Shouldn't we just give up > after some substantial number of tries to unlink the file? After all, on > Unix we expect unlink to return immediately on failure, although we don't > expect as many failures as this gets around :-) Take a look at the unlink calls in the backend --- they don't check a return status, so we have to succeed. We can change that, but right now I am assuming it has to succeed. -- 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