Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c, - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c, |
Date | |
Msg-id | 200408300323.i7U3NVJ21776@candle.pha.pa.us Whole thread Raw |
In response to | Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c, (Reini Urban <rurban@x-ray.at>) |
Responses |
Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c,
|
List | pgsql-patches |
Should I apply this change? #define TIMEZONE_GLOBAL ((int)_timezone) --------------------------------------------------------------------------- Reini Urban wrote: > Bruce Momjian schrieb: > > Your patch highlighted several bugs in our code. First, I wasn't > > testing for CYGWIN in the backend pgport_palloc code. Second, I added > > an #undef to prevent compiler warnings. Third I added your Cygwin > > includes with an #ifdef. These will appear in beta2. > > > > On the timezone issue, I see this in dt.h: > > > > /* Global variable holding time zone information. */ > > #if !defined(__CYGWIN__) && !defined(WIN32) > > #define TIMEZONE_GLOBAL timezone > > #else > > #define TIMEZONE_GLOBAL _timezone > > #define tzname _tzname /* should be in time.h? */ > > #endif > > > > so are you saying your _timezone is time_t and not an int? Sometimes it > > is just a short because it is only minutes west of GMT, not an actually > > seconds since 1970 or anything. Making it time_t actually sounds like > > overkill, but we can work around that in dt.h if indeed that is how your > > OS defines it. The easiest fix would probably be to add the cast to int > > right in dt.h and only for Cygwin: > > > > #define TIMEZONE_GLOBAL ((int)_timezone) > > > > Does that work for you? > > yes, that's better. > > FYI /usr/include/time.h: > /* defines for the opengroup specifications Derived from Issue 1 of the > SVID. */ > extern __IMPORT time_t _timezone; > ... > > BTW: I see that CYGWIN also has a struct timezone in sys/time.h, but > configure didn't check for that. > I'll come with better patches after beta2. > > > > --------------------------------------------------------------------------- > > > > Reini Urban wrote: > > > >>Attached patches are required for cygwin: > >> > >>2004-08-24 21:23:53 rurban@x-ray.at > >> * (postmaster/syslogger.c) struct timeval is > >> declared in sys/time.h, not in time.h > >> > >>2004-08-24 20:20:54 rurban: > >> * (port/dirmod.c) cygwin needs different header locations, > >> and unlink is a macro. There are no pgport_palloc > >> versions yet > >> > >> > >>timezone/pgtz.c: > >>Pending is a patch against postgresql-8.0.0beta1/config/c-library.m4: > >>PGAC_VAR_INT_TIMEZONE > >> > >>In the meantime I've hacked it with a cast from time_t to (int) in > >>timezone/pgtz.c: get_timezone_offset > >> > >>but timezone really is of time_t, not int. I don't know what you are > >>trying to do here. > >> > >> > >>There's on remaining issue for the cygwin build: > >>../../src/port/libpgport.a(dirmod.o)(.text+0x5ee):dirmod.c: undefined > >>reference to `__imp__CurrentMemoryContext' > >>../../src/port/libpgport.a(dirmod.o)(.text+0x64b):dirmod.c: undefined > >>reference to `__imp__CurrentMemoryContext' > >> > >>which explains the pgport_palloc problem. > >>-- > >>Reini Urban > >>http://xarch.tu-graz.ac.at/home/rurban/ > >> > > > > > >>2004-08-24 20:20:54 rurban: > >> * cygwin needs different header locations, and unlink is a macro > >> * There are no pgport_palloc versions yet > >> > >>--- postgresql-8.0.0beta1/src/port/dirmod.c.orig 2004-08-08 07:44:36.000000000 +0100 > >>+++ postgresql-8.0.0beta1/src/port/dirmod.c 2004-08-24 19:20:56.557435000 +0100 > >>@@ -33,16 +33,28 @@ > >> > >> > >> #include "miscadmin.h" > >>+ > >>+#ifdef __CYGWIN__ > >>+#include <windows.h> > >>+#include <w32api/winioctl.h> > >>+#else > >> #include <winioctl.h> > >>+#undef unlink > >>+#endif > >> > >> #undef rename > >>-#undef unlink > >> > >>+/* 2004-08-24 20:20:54 rurban: There are no pgport_palloc versions yet */ > >>+#if 0 > >> #ifndef FRONTEND > >>+#undef palloc > >>+#undef pstrdup > >>+#undef pfree > >> #define palloc(sz) pgport_palloc(sz) > >> #define pstrdup(str) pgport_pstrdup(str) > >> #define pfree(pointer) pgport_pfree(pointer) > >> #endif > >>+#endif > >> > >> > >> /* > > > > > >>2004-08-24 21:23:53 rurban@x-ray.at > >> * struct timeval is declared in sys/time.h, not in time.h > >> > >>--- postgresql-8.0.0beta1/src/backend/postmaster/syslogger.c.orig 2004-08-06 20:17:31.000000000 +0100 > >>+++ postgresql-8.0.0beta1/src/backend/postmaster/syslogger.c 2004-08-24 20:21:26.057851800 +0100 > >>@@ -28,6 +28,7 @@ > >> #include <signal.h> > >> #include <time.h> > >> #include <unistd.h> > >>+#include <sys/time.h> > >> #include <sys/stat.h> > >> > >> #include "libpq/pqsignal.h" > > > > > >>--- postgresql-8.0.0beta1/src/timezone/pgtz.c.orig 2004-07-31 20:12:15.000000000 +0100 > >>+++ postgresql-8.0.0beta1/src/timezone/pgtz.c 2004-08-24 19:56:30.686367800 +0100 > >>@@ -97,9 +97,9 @@ > >> return tm->tm_gmtoff; > >> #elif defined(HAVE_INT_TIMEZONE) > >> #ifdef HAVE_UNDERSCORE_TIMEZONE > >>- return -_timezone; > >>+ return -(int)_timezone; > >> #else > >>- return -timezone; > >>+ return -(int)timezone; > >> #endif > >> #else > >> #error No way to determine TZ? Can this happen? > > > > > >>---------------------------(end of broadcast)--------------------------- > >>TIP 9: the planner will ignore your desire to choose an index scan if your > >> joining column's datatypes do not match > > > > > > > > ------------------------------------------------------------------------ > > > > Index: src/backend/utils/mmgr/mcxt.c > > =================================================================== > > RCS file: /cvsroot/pgsql-server/src/backend/utils/mmgr/mcxt.c,v > > retrieving revision 1.47 > > diff -c -c -r1.47 mcxt.c > > *** src/backend/utils/mmgr/mcxt.c 8 Aug 2004 06:44:32 -0000 1.47 > > --- src/backend/utils/mmgr/mcxt.c 29 Aug 2004 02:50:25 -0000 > > *************** > > *** 631,637 **** > > } > > > > > > ! #ifdef WIN32 > > /* > > * Memory support routines for libpgport on Win32 > > * > > --- 631,637 ---- > > } > > > > > > ! #if defined(WIN32) || defined(__CYGWIN__) > > /* > > * Memory support routines for libpgport on Win32 > > * > > *************** > > *** 649,654 **** > > --- 649,655 ---- > > return palloc(sz); > > } > > > > + > > char * > > pgport_pstrdup(const char *str) > > { > > Index: src/port/dirmod.c > > =================================================================== > > RCS file: /cvsroot/pgsql-server/src/port/dirmod.c,v > > retrieving revision 1.19 > > diff -c -c -r1.19 dirmod.c > > *** src/port/dirmod.c 29 Aug 2004 01:44:02 -0000 1.19 > > --- src/port/dirmod.c 29 Aug 2004 02:50:28 -0000 > > *************** > > *** 31,48 **** > > > > #if defined(WIN32) || defined(__CYGWIN__) > > > > - > > #include "miscadmin.h" > > - #include <winioctl.h> > > > > #undef rename > > #undef unlink > > > > #ifndef FRONTEND > > /* > > * Call non-macro versions of palloc, can't reference CurrentMemoryContext > > * because of DLLIMPORT. > > */ > > #define palloc(sz) pgport_palloc(sz) > > #define pstrdup(str) pgport_pstrdup(str) > > #define pfree(pointer) pgport_pfree(pointer) > > --- 31,57 ---- > > > > #if defined(WIN32) || defined(__CYGWIN__) > > > > #include "miscadmin.h" > > > > #undef rename > > #undef unlink > > > > + #ifdef __WIN32__ > > + #include <winioctl.h> > > + #else > > + /* __CYGWIN__ */ > > + #include <windows.h> > > + #include <w32api/winioctl.h> > > + #endif > > + > > #ifndef FRONTEND > > /* > > * Call non-macro versions of palloc, can't reference CurrentMemoryContext > > * because of DLLIMPORT. > > */ > > + #undef palloc > > + #undef pstrdup > > + #undef pfree > > #define palloc(sz) pgport_palloc(sz) > > #define pstrdup(str) pgport_pstrdup(str) > > #define pfree(pointer) pgport_pfree(pointer) > > > -- > Reini Urban > http://xarch.tu-graz.ac.at/home/rurban/ > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- 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-patches by date: