diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/timezone/Makefile | 19 | ||||
-rw-r--r-- | src/timezone/pgtz.c | 16 |
2 files changed, 24 insertions, 11 deletions
diff --git a/src/timezone/Makefile b/src/timezone/Makefile index f5667809f99..d4ad6f0790a 100644 --- a/src/timezone/Makefile +++ b/src/timezone/Makefile @@ -4,7 +4,7 @@ # Makefile for the timezone library # IDENTIFICATION -# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.27 2007/08/20 08:53:12 petere Exp $ +# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.28 2007/08/25 20:29:25 tgl Exp $ # #------------------------------------------------------------------------- @@ -27,21 +27,26 @@ TZDATAFILES = $(TZDATA:%=$(srcdir)/data/%) # for POSIX-style timezone specs POSIXRULES = US/Eastern -all: SUBSYS.o submake-libpgport zic +# use system timezone data? +ifneq (,$(with_system_tzdata)) +override CPPFLAGS += '-DSYSTEMTZDIR="$(with_system_tzdata)"' +endif + +all: SUBSYS.o + +ifeq (,$(with_system_tzdata)) +all: submake-libpgport zic +endif SUBSYS.o: $(OBJS) $(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS) -ifeq (,$(with_system_tzdata)) zic: $(ZICOBJS) $(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X) -endif install: all installdirs ifeq (,$(with_system_tzdata)) ./zic -d '$(DESTDIR)$(datadir)/timezone' -p '$(POSIXRULES)' $(TZDATAFILES) -else - ln -s '$(with_system_tzdata)' '$(DESTDIR)$(datadir)/timezone' endif $(MAKE) -C tznames $@ @@ -49,7 +54,9 @@ installdirs: $(mkinstalldirs) '$(DESTDIR)$(datadir)' uninstall: +ifeq (,$(with_system_tzdata)) rm -rf '$(DESTDIR)$(datadir)/timezone' +endif $(MAKE) -C tznames $@ clean distclean maintainer-clean: diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c index ad599c70936..7370a9306d5 100644 --- a/src/timezone/pgtz.c +++ b/src/timezone/pgtz.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.53 2007/08/04 19:29:25 tgl Exp $ + * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.54 2007/08/25 20:29:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -38,9 +38,6 @@ pg_tz *gmt_timezone = NULL; static pg_tz gmt_timezone_data; -static char tzdir[MAXPGPATH]; -static bool done_tzdir = false; - static bool scan_directory_ci(const char *dirname, const char *fname, int fnamelen, char *canonname, int canonnamelen); @@ -52,9 +49,14 @@ static pg_tz *select_default_timezone(void); /* * Return full pathname of timezone data directory */ -static char * +static const char * pg_TZDIR(void) { +#ifndef SYSTEMTZDIR + /* normal case: timezone stuff is under our share dir */ + static bool done_tzdir = false; + static char tzdir[MAXPGPATH]; + if (done_tzdir) return tzdir; @@ -63,6 +65,10 @@ pg_TZDIR(void) done_tzdir = true; return tzdir; +#else + /* we're configured to use system's timezone database */ + return SYSTEMTZDIR; +#endif } |