Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c,

From: Reini Urban <rurban(at)x-ray(dot)at>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c,
Date: 2004-08-30 07:01:37
Message-ID: 4132D0D1.2060102@x-ray.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-cygwin pgsql-patches

Bruce Momjian schrieb:
> Should I apply this change?
>
> #define TIMEZONE_GLOBAL ((int)_timezone)

yes, please.
I have no time yet, to come up with the better patch. It's already monday.

> ---------------------------------------------------------------------------
>
> 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(at)x-ray(dot)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(at)x-ray(dot)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
>>
>
>

--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/

In response to

Responses

Browse pgsql-cygwin by date

  From Date Subject
Next Message Kumar Pandey 2004-08-30 16:14:59 Re: postgresql-7.4.5-1 ready for review
Previous Message Bruce Momjian 2004-08-30 03:23:31 Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c,

Browse pgsql-patches by date

  From Date Subject
Next Message Karel Zak 2004-08-30 07:03:19 NLS: czech
Previous Message Bruce Momjian 2004-08-30 03:23:31 Re: cygwin 8.0.0beta1 postmaster/syslogger.c, port/dirmod.c,