Magnus Hagander wrote:
Tom Lane wrote:
Magnus Hagander <[EMAIL PROTECTED]> writes:
Shouldn't be too hard to do, but I keep thinking it'd be cleaner to
just not do the redefine when building libpq. It means we'd add a
define like BUILDING_LIBPQ or something to the libpq Makefile, and
exclude the redefine if set.
+1 for that general approach, but let's call the macro something
like UNSAFE_STAT_OKAY.  If the day ever comes that we need safestat
inside libpq, or more likely that we want to exclude it from some
other piece of code, it'll be clearer what to do.

Hmm. I thought BUILDING_LIBPQ would be the more generic one, since we
might want to control other stuff from it. I recall wanting that define
at some point in the past, but I can't recall why... :-)

But - I'll do it with UNSAFE_STAT_OK if that's what ppl want. And then
a simple ifeq() section in libpq Makefile, right?

Or we could have libpq define the BUILDING_LIBPQ, and have a header say
#ifdef BUILDING_LIBPQ / #define UNSAFE_STAT_OK / #endif.... That would
certainly be the most flexible, but maybe not the prettiest solution
until such time as we actually need it.



I think a simple approach is all we need for now - not even sure we need an ifeq() section in the makefile.

Here's a patch, which I'll apply unless there's an objection.

cheers

andrew
Index: src/include/port.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/port.h,v
retrieving revision 1.120
diff -c -r1.120 port.h
*** src/include/port.h	11 Apr 2008 23:53:00 -0000	1.120
--- src/include/port.h	16 Apr 2008 12:16:01 -0000
***************
*** 287,294 ****
   *
   * We must pull in sys/stat.h here so the system header definition
   * goes in first, and we redefine that, and not the other way around.
   */
! #if defined(WIN32) && !defined(__CYGWIN__)
  #include <sys/stat.h>
  extern int	pgwin32_safestat(const char *path, struct stat *buf);
  #define stat(a,b) pgwin32_safestat(a,b)
--- 287,297 ----
   *
   * We must pull in sys/stat.h here so the system header definition
   * goes in first, and we redefine that, and not the other way around.
+  *
+  * Some frontends don't need the size from stat, so if UNSAFE_STAT_OK
+  * is defined we don't bother with this.
   */
! #if defined(WIN32) && !defined(__CYGWIN__) && !defined(UNSAFE_STAT_OK)
  #include <sys/stat.h>
  extern int	pgwin32_safestat(const char *path, struct stat *buf);
  #define stat(a,b) pgwin32_safestat(a,b)
Index: src/interfaces/libpq/Makefile
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v
retrieving revision 1.165
diff -c -r1.165 Makefile
*** src/interfaces/libpq/Makefile	7 Apr 2008 14:15:58 -0000	1.165
--- src/interfaces/libpq/Makefile	16 Apr 2008 12:16:01 -0000
***************
*** 19,25 ****
  SO_MAJOR_VERSION= 5
  SO_MINOR_VERSION= 2
  
! override CPPFLAGS :=  -DFRONTEND -I$(srcdir) $(CPPFLAGS) -I$(top_builddir)/src/port
  ifneq ($(PORTNAME), win32)
  override CFLAGS += $(PTHREAD_CFLAGS)
  endif
--- 19,25 ----
  SO_MAJOR_VERSION= 5
  SO_MINOR_VERSION= 2
  
! override CPPFLAGS :=  -DFRONTEND -DUNSAFE_STAT_OK -I$(srcdir) $(CPPFLAGS) -I$(top_builddir)/src/port
  ifneq ($(PORTNAME), win32)
  override CFLAGS += $(PTHREAD_CFLAGS)
  endif
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to