summaryrefslogtreecommitdiff
path: root/databases/postgresql81
diff options
context:
space:
mode:
authoruebayasi <uebayasi@pkgsrc.org>2006-03-20 14:45:49 +0000
committeruebayasi <uebayasi@pkgsrc.org>2006-03-20 14:45:49 +0000
commit74a1827a31d03702457347138710e003617d49d0 (patch)
tree01f97ba1ec4e22f842ff2ee3d5772cd73553d32a /databases/postgresql81
parent28359bdd6559bae13c55c2de0e80ca5d844f19d4 (diff)
downloadpkgsrc-74a1827a31d03702457347138710e003617d49d0.tar.gz
Initial import of PostgreSQL 8.1.3, from pkgsrc-wip.
This is an overview of new features in 8.1.0 against 8.0.x. 8.1.3 includes many bug fixes since 8.1.0. Please read documentation of the detailed changes and procedure of data migration. Overview Major changes in this release: Improve concurrent access to the shared buffer cache (Tom) Access to the shared buffer cache was identified as a significant scalability problem, particularly on multi-CPU systems. In this release, the way that locking is done in the buffer manager has been overhauled to reduce lock contention and improve scalability. The buffer manager has also been changed to use a "clock sweep" replacement policy. Allow index scans to use an intermediate in-memory bitmap (Tom) In previous releases, only a single index could be used to do lookups on a table. With this feature, if a query has "WHERE tab.col1 = 4 and tab.col2 = 9", and there is no multicolumn index on col1 and col2, but there is an index on col1 and another on col2, it is possible to search both indexes and combine the results in memory, then do heap fetches for only the rows matching both the col1 and col2 restrictions. This is very useful in environments that have a lot of unstructured queries where it is impossible to create indexes that match all possible access conditions. Bitmap scans are useful even with a single index, as they reduce the amount of random access needed; a bitmap index scan is efficient for retrieving fairly large fractions of the complete table, whereas plain index scans are not. Add two-phase commit (Heikki Linnakangas, Alvaro, Tom) Two-phase commit allows transactions to be "prepared" on several computers, and once all computers have successfully prepared their transactions (none failed), all transactions can be committed. Even if a machine crashes after a prepare, the prepared transaction can be committed after the machine is restarted. New syntax includes "PREPARE TRANSACTION" and "COMMIT/ROLLBACK PREPARED". A new system view pg_prepared_xacts has also been added. Create a new role system that replaces users and groups (Stephen Frost) Roles are a combination of users and groups. Like users, they can have login capability, and like groups, a role can have other roles as members. Roles basically remove the distinction between users and groups. For example, a role can: + Have login capability (optionally) + Own objects + Hold access permissions for database objects + Inherit permissions from other roles it is a member of Once a user logs into a role, she obtains capabilities of the login role plus any inherited roles, and can use "SET ROLE" to switch to other roles she is a member of. This feature is a generalization of the SQL standard's concept of roles. This change also replaces pg_shadow and pg_group by new role-capable catalogs pg_authid and pg_auth_members. The old tables are redefined as read-only views on the new role tables. Automatically use indexes for MIN() and MAX() (Tom) In previous releases, the only way to use an index for MIN() or MAX() was to rewrite the query as "SELECT col FROM tab ORDER BY col LIMIT 1". Index usage now happens automatically. Move /contrib/pg_autovacuum into the main server (Alvaro) Integrating autovacuum into the server allows it to be automatically started and stopped in sync with the database server, and allows autovacuum to be configured from "postgresql.conf". Add shared row level locks using SELECT ... FOR SHARE (Alvaro) While PostgreSQL's MVCC locking allows "SELECT" to never be blocked by writers and therefore does not need shared row locks for typical operations, shared locks are useful for applications that require shared row locking. In particular this reduces the locking requirements imposed by referential integrity checks. Add dependencies on shared objects, specifically roles (Alvaro) This extension of the dependency mechanism prevents roles from being dropped while there are still database objects they own. Formerly it was possible to accidentally "orphan" objects by deleting their owner. While this could be recovered from, it was messy and unpleasant. Improve performance for partitioned tables (Simon) The new constraint_exclusion configuration parameter avoids lookups on child tables where constraints indicate that no matching rows exist in the child table. This allows for a basic type of table partitioning. If child tables store separate key ranges and this is enforced using appropriate "CHECK" constraints, the optimizer will skip child table accesses when the constraint guarantees no matching rows exist in the child table.
Diffstat (limited to 'databases/postgresql81')
-rw-r--r--databases/postgresql81/DESCR9
-rw-r--r--databases/postgresql81/Makefile19
-rw-r--r--databases/postgresql81/Makefile.common155
-rw-r--r--databases/postgresql81/Makefile.mirrors101
-rw-r--r--databases/postgresql81/PLIST2
-rw-r--r--databases/postgresql81/distinfo14
-rw-r--r--databases/postgresql81/files/GNUmakefile.libpq20
-rw-r--r--databases/postgresql81/files/Makefile.custom39
-rw-r--r--databases/postgresql81/files/Makefile.libtool120
-rw-r--r--databases/postgresql81/files/dynloader-ltdl.h17
-rw-r--r--databases/postgresql81/options.mk28
-rw-r--r--databases/postgresql81/patches/patch-aa14
-rw-r--r--databases/postgresql81/patches/patch-ab23
-rw-r--r--databases/postgresql81/patches/patch-ac15
-rw-r--r--databases/postgresql81/patches/patch-ad79
-rw-r--r--databases/postgresql81/patches/patch-ae45
-rw-r--r--databases/postgresql81/patches/patch-af30
-rw-r--r--databases/postgresql81/patches/patch-ag15
-rw-r--r--databases/postgresql81/patches/patch-ah13
-rw-r--r--databases/postgresql81/patches/patch-ai80
20 files changed, 838 insertions, 0 deletions
diff --git a/databases/postgresql81/DESCR b/databases/postgresql81/DESCR
new file mode 100644
index 00000000000..9f6b5b5b0f9
--- /dev/null
+++ b/databases/postgresql81/DESCR
@@ -0,0 +1,9 @@
+PostgreSQL is a robust, next-generation, Object-Relational DBMS (ORDBMS),
+derived from the Berkeley Postgres database management system. While
+PostgreSQL retains the powerful object-relational data model, rich data types
+and easy extensibility of Postgres, it replaces the PostQuel query language
+with an extended subset of SQL.
+
+PostgreSQL is free and the complete source is available.
+
+This is the meta-package for the PostgreSQL database system.
diff --git a/databases/postgresql81/Makefile b/databases/postgresql81/Makefile
new file mode 100644
index 00000000000..3238cf90425
--- /dev/null
+++ b/databases/postgresql81/Makefile
@@ -0,0 +1,19 @@
+# $NetBSD: Makefile,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+PKGNAME= postgresql81-${BASE_VERS}
+COMMENT= Robust, next generation, object-relational DBMS
+
+DEPENDS+= postgresql81-client>=${BASE_VERS}:../../wip/postgresql81-client
+DEPENDS+= postgresql81-server>=${BASE_VERS}:../../wip/postgresql81-server
+
+.include "Makefile.common"
+
+EXTRACT_ONLY= # empty
+NO_CHECKSUM= YES
+NO_CONFIGURE= YES
+NO_BUILD= YES
+
+do-install: # empty
+do-patch: # empty
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/databases/postgresql81/Makefile.common b/databases/postgresql81/Makefile.common
new file mode 100644
index 00000000000..5841aef6b5a
--- /dev/null
+++ b/databases/postgresql81/Makefile.common
@@ -0,0 +1,155 @@
+# $NetBSD: Makefile.common,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+#
+# This Makefile fragment is included by all PostgreSQL packages built from
+# the main sources of the PostgreSQL distribution except jdbc-postgresql.
+#
+# The PostgreSQL package naming scheme, aside from the obvious piecewise
+# packages, is as follows:
+#
+# <lang>-postgresql client-side interface to PostgreSQL
+# postgresql-<lang> server-side module for PostgreSQL backend
+
+.include "../../wip/postgresql81/Makefile.mirrors"
+
+DISTNAME?= postgresql-${DIST_VERS}
+CATEGORIES+= databases
+MASTER_SITES?= ${PGSQL_MIRRORS:=source/v${DIST_VERS}/}
+EXTRACT_SUFX= .tar.bz2
+
+MAINTAINER?= jlam@NetBSD.org
+HOMEPAGE?= http://www.postgresql.org/
+
+CONFLICTS+= postgresql-[0-9]* postgresql73-* postgresql74-* postgresql80-*
+
+DISTINFO_FILE?= ${.CURDIR}/../postgresql81/distinfo
+COMMON_FILESDIR?= ${.CURDIR}/../postgresql81/files
+PATCHDIR?= ${.CURDIR}/../postgresql81/patches
+
+# Version numbering scheme:
+#
+# DIST_VERS version number on the postgresql distfile
+# BASE_VERS pkgsrc-mangled version number (convert pl -> .)
+#
+# Note: Do not forget jdbc-postgresql81 when updating version
+#
+DIST_VERS?= 8.1.3
+BASE_VERS?= ${DIST_VERS}
+
+BUILDLINK_DEPENDS.postgresql81-client+= postgresql81-client>=${BASE_VERS}
+
+GNU_CONFIGURE= yes
+BUILD_USES_MSGFMT= yes
+USE_TOOLS+= bison gmake lex
+PKG_SYSCONFSUBDIR= postgresql
+
+# in 7.4.x/8.0.x, this is done by autoconf stuff which has leading whitespace
+USE_PKGLOCALEDIR= yes
+SUBST_CLASSES+= pglocale
+SUBST_FILES.pglocale= configure config/programs.m4
+SUBST_STAGE.pglocale= pre-configure
+SUBST_SED.pglocale= -e 's|\( localedir[ :]*=\).*|\1${PG_LOCALE_DIR}|'
+
+.include "../../mk/bsd.prefs.mk"
+
+PGSQL_TEMPLATE.SunOS= solaris
+PGSQL_TEMPLATE.IRIX= irix5
+.if !defined(PGSQL_TEMPLATE.${OPSYS})
+PGSQL_TEMPLATE.${OPSYS}= ${LOWER_OPSYS}
+.endif
+
+PG_SUBPREFIX= # empty
+.if empty(PG_SUBPREFIX)
+PG_PREFIX= ${PREFIX}
+PLIST_SUBST+= PG_SUBPREFIX=
+.else
+PG_PREFIX= ${PREFIX}/${PG_SUBPREFIX}
+BUILD_DEFS+= PG_SUBPREFIX
+PLIST_SUBST+= PG_SUBPREFIX=${PG_SUBPREFIX}/
+BUILDLINK_PASSTHRU_DIRS+= ${PG_PREFIX}
+.endif
+PG_DATA_DIR= ${PG_PREFIX}/share/postgresql
+PG_DOC_DIR= ${PG_PREFIX}/share/doc/postgresql
+PG_LOCALE_DIR= ${PG_PREFIX}/${PKGLOCALEDIR}/locale
+PG_ETC_DIR= ${PKG_SYSCONFDIR:S/^${PREFIX}\//${PG_PREFIX}\//}
+
+GNU_CONFIGURE_PREFIX= ${PG_PREFIX}
+CONFIGURE_ARGS+= --sysconfdir=${PG_ETC_DIR}
+CONFIGURE_ARGS+= --datadir=${PG_DATA_DIR}
+CONFIGURE_ARGS+= --with-docdir=${PG_DOC_DIR}
+CONFIGURE_ARGS+= --with-template=${PGSQL_TEMPLATE.${OPSYS}}
+CONFIGURE_ARGS+= --without-readline
+CONFIGURE_ARGS+= --without-zlib
+CONFIGURE_ARGS+= --enable-nls
+
+CONFIGURE_ARGS+= --without-java
+CONFIGURE_ARGS+= --without-perl
+CONFIGURE_ARGS+= --without-python
+CONFIGURE_ARGS+= --without-tcl
+
+# Enable Rendezvous on Mac OS X
+.if ${OPSYS} == "Darwin"
+CONFIGURE_ARGS+= --with-rendezvous
+.endif
+
+# PostgreSQL explicitly forbids any use of -ffast-math
+BUILDLINK_TRANSFORM+= rm:-ffast-math
+
+# USE_LIBLTDL is "yes" or "no" depending on whether we're using libltdl
+# to provide "dlopen" functionality for the PostgreSQL backend.
+#
+.if ${OPSYS} == "Interix"
+USE_LIBLTDL?= yes
+.endif
+USE_LIBLTDL?= no
+
+FILES_SUBST+= PG_PREFIX=${PG_PREFIX:Q}
+
+.include "../../devel/gettext-lib/buildlink3.mk"
+
+post-extract:
+ if ${TEST} -d ${WRKSRC}/src; then \
+ ${RM} -f ${WRKSRC}/src/Makefile.custom; \
+ ${CP} -f ${COMMON_FILESDIR}/Makefile.custom \
+ ${WRKSRC}/src/Makefile.custom; \
+ ${RM} -f ${WRKSRC}/src/Makefile.shlib; \
+ ${CP} -f ${COMMON_FILESDIR}/Makefile.libtool \
+ ${WRKSRC}/src/Makefile.shlib; \
+ fi
+ if ${TEST} -d ${WRKSRC}/src/interfaces/libpq; then \
+ ${RM} -f ${WRKSRC}/src/interfaces/libpq/GNUmakefile; \
+ ${CP} -f ${COMMON_FILESDIR}/GNUmakefile.libpq \
+ ${WRKSRC}/src/interfaces/libpq/GNUmakefile; \
+ fi
+ if ${TEST} -d ${WRKSRC}/src/interfaces/libpgtcl; then \
+ ${RM} -f ${WRKSRC}/src/interfaces/libpgtcl/GNUmakefile; \
+ ${CP} -f ${COMMON_FILESDIR}/GNUmakefile.libpgtcl \
+ ${WRKSRC}/src/interfaces/libpgtcl/GNUmakefile; \
+ fi
+.if !empty(USE_LIBLTDL:M[yY][eE][sS])
+ if ${TEST} -d ${WRKSRC}/src/backend/port/dynloader; then \
+ template=${PGSQL_TEMPLATE.${OPSYS}:Q}; \
+ ${RM} -f ${WRKSRC}/src/backend/port/dynloader/$$template.[ch]; \
+ ${CP} -f ${COMMON_FILESDIR}/dynloader-ltdl.h \
+ ${WRKSRC}/src/backend/port/dynloader/$$template.h; \
+ ${ECHO} "static int dummy = 0;" \
+ >${WRKSRC}/src/backend/port/dynloader/$$template.c
+ fi
+.endif
+
+# PGSQL_BLCKSZ is the size in bytes of a PostgreSQL disk page or block.
+# This also limits the size of a tuple. The valid values are powers
+# of 2 up to 32768, and the default size is 8196 (hardcoded in the
+# PostgreSQL sources). Please don't change this value unless you know
+# what you are doing.
+#
+BUILD_DEFS+= PGSQL_BLCKSZ
+
+.if defined(PGSQL_BLCKSZ)
+.PHONY: pgsql-blcksz
+pre-configure: pgsql-blcksz
+pgsql-blcksz:
+ for file in ${WRKSRC}/src/include/pg_config_manual.h; do \
+ ${SED} -e "/^#define[ ]*BLCKSZ[ ]*/s/^\(#define[ ]*BLCKSZ\).*/\1 ${PGSQL_BLCKSZ}/" $$file > $$file.new; \
+ ${MV} -f $$file.new $$file; \
+ done
+.endif
diff --git a/databases/postgresql81/Makefile.mirrors b/databases/postgresql81/Makefile.mirrors
new file mode 100644
index 00000000000..392333a4119
--- /dev/null
+++ b/databases/postgresql81/Makefile.mirrors
@@ -0,0 +1,101 @@
+# $NetBSD: Makefile.mirrors,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+#
+# This Makefile fragment contains the mirror sites for fetching PostgreSQL.
+#
+# To fetch from the nearest mirror, you may need to set
+# PGSQL_MIRRORS_SORT appropriately, e.g.:
+#
+# PGSQL_MIRRORS_SORT= .at .de
+#
+
+###
+### This list was last updated on 20050801.
+###
+PGSQL_MIRRORS= \
+ ftp://ftp.au.postgresql.org/pub/postgresql/ \
+ ftp://ftp2.au.postgresql.org/pub/postgresql/ \
+ ftp://ftp.at.postgresql.org/db/www.postgresql.org/pub/ \
+ ftp://ftp.be.postgresql.org/postgresql/ \
+ ftp://ftp.ba.postgresql.org/pub/postgresql/ \
+ ftp://ftp.br.postgresql.org/pub/PostgreSQL/ \
+ ftp://ftp3.bg.postgresql.org/postgresql/ \
+ ftp://ftp3.ca.postgresql.org/pub/ \
+ ftp://ftp4.ca.postgresql.org/pub/postgresql/ \
+ ftp://ftp.cl.postgresql.org/ftp/pub/postgresql/ \
+ ftp://ftp.cn.postgresql.org/ftp.postgresql.org/ \
+ ftp://ftp.co.postgresql.org/pub/mirrors/postgresql/ \
+ ftp://ftp2.cr.postgresql.org/pub/Unix/postgres/ \
+ ftp://ftp.hr.postgresql.org/postgresql/ \
+ ftp://ftp.cz.postgresql.org/pub/ftp.postgresql.org/ \
+ ftp://ftp2.cz.postgresql.org/pub/postgresql/ \
+ ftp://ftp.dk.postgresql.org/postgresql/ \
+ ftp://ftp.ee.postgresql.org/mirrors/postgresql/ \
+ ftp://ftp.fr.postgresql.org/ \
+ ftp://ftp2.fr.postgresql.org/postgresql/ \
+ ftp://ftp3.fr.postgresql.org/pub/postgresql/ \
+ ftp://ftp.de.postgresql.org/mirror/postgresql/ \
+ ftp://ftp2.de.postgresql.org/pub/postgresql/ \
+ ftp://ftp3.de.postgresql.org/pub/Mirrors/ftp.postgresql.org/ \
+ ftp://ftp7.de.postgresql.org/pub/ftp.postgresql.org/ \
+ ftp://ftp8.de.postgresql.org/pub/misc/pgsql/ \
+ ftp://ftp.gr.postgresql.org/pub/databases/postgresql/ \
+ ftp://ftp2.gr.postgresql.org/pub/databases/postgresql/ \
+ ftp://ftp.hk.postgresql.org/postgresql/ \
+ ftp://ftp3.hu.postgresql.org/pub/postgresql/ \
+ ftp://ftp7.id.postgresql.org/pub/postgresql/ \
+ ftp://ftp8.id.postgresql.org/pub/PostgreSQL/ \
+ ftp://ftp.ie.postgresql.org/mirrors/ftp.postgresql.org/pub/ \
+ ftp://ftp2.ie.postgresql.org/mirrors/ftp.postgresql.org/ \
+ ftp://ftp.il.postgresql.org/ftp.postgresql.org/ \
+ ftp://ftp2.it.postgresql.org/mirrors/postgres/ \
+ ftp://ftp6.it.postgresql.org/pub/PostgreSQL/ \
+ ftp://ftp7.it.postgresql.org/pub/unix/postgres/ \
+ ftp://ftp.jp.postgresql.org/ \
+ ftp://ftp2.jp.postgresql.org/pub/postgresql/ \
+ ftp://ftp.kr.postgresql.org/postgresql/ \
+ ftp://ftp.lv.postgresql.org/pub/software/postgresql/ \
+ ftp://ftp.eu.postgresql.org/pub/unix/db/postgresql/ \
+ ftp://ftp.nl.postgresql.org:21/pub/mirror/postgresql/ \
+ ftp://ftp2.nl.postgresql.org/mirror/postgresql/ \
+ ftp://ftp4.nl.postgresql.org/postgresql.zeelandnet.nl/ \
+ ftp://ftp.nz.postgresql.org/postgresql/ \
+ ftp://ftp.no.postgresql.org/pub/databases/postgresql/ \
+ ftp://ftp6.pl.postgresql.org/pub/postgresql/ \
+ ftp://ftp7.pl.postgresql.org/pub/mirror/ftp.postgresql.org/ \
+ ftp://ftp8.pl.postgresql.org/pub/postgresql/ \
+ ftp://ftp.pt.postgresql.org/postgresql/ \
+ ftp://ftp.pr.postgresql.org/pub/Mirrors/postgresql/ \
+ ftp://ftp6.ro.postgresql.org/pub/mirrors/ftp.postgresql.org/ \
+ ftp://ftp.ru.postgresql.org/pub/mirrors/pgsql/ \
+ ftp://ftp2.ru.postgresql.org/pub/databases/postgresql/ \
+ ftp://ftp3.ru.postgresql.org/pub/mirror/postgresql/pub/ \
+ ftp://ftp7.ru.postgresql.org/pub/mirror/postgresql/ \
+ ftp://ftp2.sk.postgresql.org/pub/postgresql/ \
+ ftp://ftp5.es.postgresql.org/mirror/postgresql/ \
+ ftp://ftp.se.postgresql.org/pub/databases/relational/postgresql/ \
+ ftp://ftp2.ch.postgresql.org/pub/postgresql/ \
+ ftp://ftp.tw.postgresql.org/pub/postgresql/ \
+ ftp://ftp3.tw.postgresql.org/pub/Unix/Database/postgresql/ \
+ ftp://ftp5.tw.postgresql.org/pub/Unix/Database/PostgreSQL/ \
+ ftp://ftp6.tr.postgresql.org/postgresql/ \
+ ftp://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/ \
+ ftp://ftp4.uk.postgresql.org/sites/ftp.postgresql.org/ \
+ ftp://ftp8.uk.postgresql.org/sites/ftp.postgresql.org/ \
+ ftp://ftp.us.postgresql.org/pub/mirrors/postgresql/ \
+ ftp://ftp3.us.postgresql.org/pub/postgresql/ \
+ ftp://ftp5.us.postgresql.org/pub/PostgreSQL/ \
+ ftp://ftp8.us.postgresql.org/postgresql/ \
+ ftp://ftp9.us.postgresql.org/pub/mirrors/postgresql/ \
+ ftp://ftp10.us.postgresql.org/pub/postgresql/ \
+ ftp://ftp22.us.postgresql.org/mirrors/ftp.postgresql.org/ \
+ ftp://ftp24.us.postgresql.org/postgresql/
+
+# Default to fetching from a .us mirror for the sake of the main NetBSD
+# ftp server.
+#
+PGSQL_MIRRORS_SORT?= .us
+
+# Craft a MASTER_SORT_REGEX that understands the location of the country
+# code in the FTP server name for the PostgreSQL mirror sites.
+#
+MASTER_SORT_REGEX+= ${PGSQL_MIRRORS_SORT:S/./\\./g:C/.*/:\/\/[^[\/]*&\/ :\/\/[^\/]*&\\./}
diff --git a/databases/postgresql81/PLIST b/databases/postgresql81/PLIST
new file mode 100644
index 00000000000..2ed40359349
--- /dev/null
+++ b/databases/postgresql81/PLIST
@@ -0,0 +1,2 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+@comment this plist intentionally left empty
diff --git a/databases/postgresql81/distinfo b/databases/postgresql81/distinfo
new file mode 100644
index 00000000000..a720d62d70e
--- /dev/null
+++ b/databases/postgresql81/distinfo
@@ -0,0 +1,14 @@
+$NetBSD: distinfo,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+SHA1 (postgresql-8.1.3.tar.bz2) = eed3f7de11e472fb7bf44865a62c18bc6ca9a3b3
+RMD160 (postgresql-8.1.3.tar.bz2) = b9b1461516e2388de41a7892e05d285fa659d87c
+Size (postgresql-8.1.3.tar.bz2) = 11588289 bytes
+SHA1 (patch-aa) = a7112ce2e9fc28f638afcf2e196d3cdc0f4c254d
+SHA1 (patch-ab) = 8d09f4e274aeb4ac2b15db73e7801376a5627d27
+SHA1 (patch-ac) = cbd302a60d43171854c37171b57ee7bbf1194ad9
+SHA1 (patch-ad) = 51243fecc142d20e5353b8043e24f38007aa38d9
+SHA1 (patch-ae) = 8b3e47320dfe05d94b769c9b079fd7ca6d26f5d6
+SHA1 (patch-af) = 89cb9318946cb7c34ad79dbae107ce66bd1c5022
+SHA1 (patch-ag) = 402d5d211af99efdfa35677299c97e91e14ed85d
+SHA1 (patch-ah) = 10ff8958ff2085fb03d1661a361e218ae5869b06
+SHA1 (patch-ai) = 04820f37d7147576a6a9ab7d82e4682c61573330
diff --git a/databases/postgresql81/files/GNUmakefile.libpq b/databases/postgresql81/files/GNUmakefile.libpq
new file mode 100644
index 00000000000..9b9a560f0b7
--- /dev/null
+++ b/databases/postgresql81/files/GNUmakefile.libpq
@@ -0,0 +1,20 @@
+# $NetBSD: GNUmakefile.libpq,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+#
+# This GNUmakefile overrides the `all' target of $(libpq_srcdir)/Makefile
+# to be empty if INSTALLED_LIBPQ is defined. This handles the submake
+# targets sprinkled throughout the PostgreSQL Makefiles that execute
+#
+# @$(MAKE) -C $(libpq_builddir) all
+#
+# to ensure that the libpq libraries are built first. If INSTALLED_LIBPQ
+# is defined, then have the `all' target simple return success.
+
+ifdef INSTALLED_LIBPQ
+all:
+ @test -f libpq.a || touch libpq.a
+endif
+
+%: force
+ @$(MAKE) -f Makefile $@
+
+force: ;
diff --git a/databases/postgresql81/files/Makefile.custom b/databases/postgresql81/files/Makefile.custom
new file mode 100644
index 00000000000..db523bcd7f1
--- /dev/null
+++ b/databases/postgresql81/files/Makefile.custom
@@ -0,0 +1,39 @@
+# $NetBSD: Makefile.custom,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+#
+# This file is included at the end of Makefile.global, which is included
+# by every sub-Makefile in the build tree. Makefiles for shared
+# libraries include Makefile.global then Makefile.shlib.
+#
+
+# Override any OS-specific locations for where to put SQL man pages.
+sqlmansect = 7
+
+# Override installation paths to avoid logic in Makefile.global.
+includedir = $(prefix)/include
+libdir = $(exec_prefix)/lib
+pkglibdir = $(libdir)/postgresql
+pkgincludedir = $(includedir)/postgresql
+
+# INSTALLED_LIBPQ is passed in from the environment and tells the build
+# system how to link to an installed libpq.*.
+#
+ifdef INSTALLED_LIBPQ
+libpq = -lpq
+else
+ifdef LIBTOOL
+libpq = -L$(libpq_builddir)/.libs -lpq
+endif
+endif
+
+# In pkgsrc, libpython is always present as a shared library.
+shared_libpython = yes
+
+# $(libpq_builddir)/libpq.a is used in several places as a dependency,
+# but if we're building with libtool, then we don't actually want to
+# create that file since it will mess up the re-linking process.
+# Declare it to be phony to prevent GNU make from thinking it's a
+# target.
+#
+ifdef LIBTOOL
+.PHONY: $(libpq_builddir)/libpq.a
+endif
diff --git a/databases/postgresql81/files/Makefile.libtool b/databases/postgresql81/files/Makefile.libtool
new file mode 100644
index 00000000000..014be1075a9
--- /dev/null
+++ b/databases/postgresql81/files/Makefile.libtool
@@ -0,0 +1,120 @@
+#-------------------------------------------------------------------------
+#
+# Makefile.libtool
+# Common rules for buildling libtool archives
+#
+# IDENTIFICATION
+# $NetBSD: Makefile.libtool,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+#
+#-------------------------------------------------------------------------
+
+##
+## Hacks/workarounds for makefiles in certain directories
+##
+
+# The following directories are building loadable shared modules, not
+# shared libraries.
+#
+ifneq (,$(findstring src/backend/utils/mb/conversion_procs/,$(subdir)))
+shmodule = yes
+else
+ifneq (,$(findstring src/pl/,$(subdir)))
+shmodule = yes
+else
+shmodule = no
+endif
+endif
+
+# Fix dependencies in some makefiles that assume the target matches
+# %.o so that when built for libtool, the target matches the corresponding
+# %.lo.
+#
+ifeq ($(subdir), src/interfaces/ecpg/ecpglib)
+path.lo: path.c $(top_builddir)/src/port/pg_config_paths.h
+endif
+
+ifeq ($(subdir), src/interfaces/libpq)
+fe-connect.lo: fe-connect.c $(top_builddir)/src/port/pg_config_paths.h
+endif
+
+ifeq ($(subdir), src/pl/plpgsql/src)
+pl_gram.lo pl_handler.lo pl_comp.lo pl_exec.lo pl_funcs.lo: plpgsql.h $(srcdir)/pl.tab.h
+pl_gram.lo: $(srcdir)/pl_scan.c
+endif
+
+
+##
+## VARIABLE DEFINITIONS
+##
+
+# Loadable shared modules are named differently from shared libraries
+# and are installed into $(pkglibdir).
+#
+ifeq ($(shmodule),yes)
+ltlib = $(NAME)$(DLSUFFIX)
+ltmodule = -module
+rpathdir = $(pkglibdir)
+else
+ltlib = lib$(NAME)$(DLSUFFIX)
+ltmodule =
+endif
+
+DLSUFFIX = .la
+
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(CPPFLAGS)
+LTLINK = $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(ltmodule) -rpath $(rpathdir) -version-info $(SO_MAJOR_VERSION):$(SO_MINOR_VERSION)
+LTOBJS = $(OBJS:%.o=%.lo)
+
+# Define INSTALL_SHLIB and shlib for the benefit of Makefiles for
+# loadable modules that have their own target for installing the
+# module.
+#
+INSTALL_LTLIB = $(LIBTOOL) --mode=install $(INSTALL)
+INSTALL_STLIB = $(INSTALL_LTLIB)
+INSTALL_SHLIB = $(INSTALL_LTLIB)
+shlib = $(ltlib)
+
+%.lo : %.c
+ $(LTCOMPILE) -c $< -o $@
+
+
+##
+## BUILD
+##
+
+.PHONY: all-lib all-static-lib all-shared-lib all-la-lib
+all-lib all-static-lib all-shared-lib: all-la-lib
+
+all-la-lib: $(ltlib)
+
+$(ltlib): $(LTOBJS)
+ $(LTLINK) -o $@ $(LTOBJS) $(SHLIB_LINK)
+
+
+##
+## INSTALL
+##
+
+.PHONY: install-lib install-lib-static install-lib-shared install-lib-la
+install-lib install-static-lib install-shared-lib: install-lib-la
+
+install-lib-la: $(ltlib)
+ $(INSTALL_LTLIB) $< $(DESTDIR)$(libdir)/$(ltlib)
+
+
+##
+## UNINSTALL
+##
+
+.PHONY: uninstall-lib
+uninstall-lib:
+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(ltlib)
+
+
+##
+## CLEAN
+##
+
+.PHONY: clean-lib
+clean-lib:
+ $(LIBTOOL) --mode=clean rm -f $(ltlib) $(LTOBJS)
diff --git a/databases/postgresql81/files/dynloader-ltdl.h b/databases/postgresql81/files/dynloader-ltdl.h
new file mode 100644
index 00000000000..5266576a0e0
--- /dev/null
+++ b/databases/postgresql81/files/dynloader-ltdl.h
@@ -0,0 +1,17 @@
+/* $NetBSD: dynloader-ltdl.h,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $ */
+
+/*
+ * dynamic loader based on libltdl
+ */
+#ifndef PORT_PROTOS_H
+#define PORT_PROTOS_H
+
+#include <ltdl.h>
+#include "utils/dynamic_loader.h"
+
+#define pg_dlopen(a) ((void *)lt_dlopen(a))
+#define pg_dlsym(a,b) lt_dlsym((lt_dlhandle)(a), (b))
+#define pg_dlclose(a) lt_dlclose((lt_dlhandle)(a))
+#define pg_dlerror lt_dlerror
+
+#endif /* PORT_PROTOS_H */
diff --git a/databases/postgresql81/options.mk b/databases/postgresql81/options.mk
new file mode 100644
index 00000000000..511ef82ff08
--- /dev/null
+++ b/databases/postgresql81/options.mk
@@ -0,0 +1,28 @@
+# $NetBSD: options.mk,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+PKG_SUPPORTED_OPTIONS+= pgsql-hier-query
+
+.include "../../mk/bsd.options.mk"
+
+###
+### PAM authentication for the PostgreSQL backend.
+###
+.if !empty(PKG_OPTIONS:Mpam)
+. include "../../mk/pam.buildlink3.mk"
+CONFIGURE_ARGS+= --with-pam
+.endif
+
+###
+### Support for hierarchical queries with Oracle-like CONNECT BY syntax.
+### See http://gppl.moonbone.ru/README.html for details. Note that use of
+### this patch is discouraged by PostgreSQL developers because it is
+### considered somewhat buggy and incomplete.
+###
+.if !empty(PKG_OPTIONS:Mpgsql-hier-query)
+PATCH_SITES= http://gppl.moonbone.ru/
+PATCHFILES= hier-Pg8.0.3-0.5.5.diff.gz
+PATCH_DIST_STRIP= -p1
+PLIST_SUBST+= PG_HIER=
+.else
+PLIST_SUBST+= PG_HIER="@comment "
+.endif
diff --git a/databases/postgresql81/patches/patch-aa b/databases/postgresql81/patches/patch-aa
new file mode 100644
index 00000000000..8ec7a9f9150
--- /dev/null
+++ b/databases/postgresql81/patches/patch-aa
@@ -0,0 +1,14 @@
+$NetBSD: patch-aa,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- config/perl.m4.orig 2003-11-30 04:51:17.000000000 +0900
++++ config/perl.m4
+@@ -28,8 +28,6 @@ AC_DEFUN([PGAC_CHECK_PERL_CONFIGS],
+ AC_DEFUN([PGAC_CHECK_PERL_EMBED_LDFLAGS],
+ [AC_REQUIRE([PGAC_PATH_PERL])
+ AC_MSG_CHECKING(for flags to link embedded Perl)
+-pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
+-pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
+-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed "s/^X//;s%$pgac_tmp2%%"`
++perl_embed_ldflags=`$PERL -MExtUtils::Embed -e ldopts`
+ AC_SUBST(perl_embed_ldflags)dnl
+ AC_MSG_RESULT([$perl_embed_ldflags])])
diff --git a/databases/postgresql81/patches/patch-ab b/databases/postgresql81/patches/patch-ab
new file mode 100644
index 00000000000..d94d20c65c1
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ab
@@ -0,0 +1,23 @@
+$NetBSD: patch-ab,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- configure.orig 2005-11-05 13:01:38.000000000 +0900
++++ configure
+@@ -1501,6 +1501,7 @@ case $host_os in
+ darwin*) template=darwin ;;
+ dgux*) template=dgux ;;
+ freebsd*) template=freebsd ;;
++ dragonfly*) template=dragonfly ;;
+ hpux*) template=hpux ;;
+ irix*) template=irix ;;
+ linux*|gnu*|k*bsd*-gnu)
+@@ -4587,9 +4588,7 @@ echo "${ECHO_T}$perl_useshrplib" >&6
+
+ echo "$as_me:$LINENO: checking for flags to link embedded Perl" >&5
+ echo $ECHO_N "checking for flags to link embedded Perl... $ECHO_C" >&6
+-pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
+-pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
+-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed "s/^X//;s%$pgac_tmp2%%"`
++perl_embed_ldflags=`$PERL -MExtUtils::Embed -e ldopts`
+ echo "$as_me:$LINENO: result: $perl_embed_ldflags" >&5
+ echo "${ECHO_T}$perl_embed_ldflags" >&6
+ fi
diff --git a/databases/postgresql81/patches/patch-ac b/databases/postgresql81/patches/patch-ac
new file mode 100644
index 00000000000..44817fa239b
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ac
@@ -0,0 +1,15 @@
+$NetBSD: patch-ac,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/backend/Makefile.orig 2005-10-28 05:45:29.000000000 +0900
++++ src/backend/Makefile
+@@ -13,6 +13,10 @@ subdir = src/backend
+ top_builddir = ../..
+ include $(top_builddir)/src/Makefile.global
+
++CFLAGS+= $(DL_CFLAGS)
++LDFLAGS+= $(DL_LDFLAGS)
++LIBS+= $(DL_LIBS)
++
+ DIRS := access bootstrap catalog parser commands executor lib libpq \
+ main nodes optimizer port postmaster regex rewrite \
+ storage tcop utils $(top_builddir)/src/timezone
diff --git a/databases/postgresql81/patches/patch-ad b/databases/postgresql81/patches/patch-ad
new file mode 100644
index 00000000000..a0e4fa1043a
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ad
@@ -0,0 +1,79 @@
+$NetBSD: patch-ad,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/backend/port/dynloader/netbsd.c.orig 2005-07-07 01:55:58.000000000 +0900
++++ src/backend/port/dynloader/netbsd.c
+@@ -44,65 +44,30 @@ static char sccsid[] = "@(#)dl.c 5.4 (Be
+
+ #include "dynloader.h"
+
+-static char error_message[BUFSIZ];
++#ifndef HAVE_DLOPEN
+
+ char *
+-BSD44_derived_dlerror(void)
++pg_dlerror(void)
+ {
+- static char ret[BUFSIZ];
+-
+- strcpy(ret, error_message);
+- error_message[0] = 0;
+- return (ret[0] == 0) ? NULL : ret;
++ return "dynaloader unsupported";
+ }
+
+ void *
+-BSD44_derived_dlopen(const char *file, int num)
++pg_dlopen(const char *file, int num)
+ {
+-#if defined(__mips__)
+- snprintf(error_message, sizeof(error_message),
+- "dlopen (%s) not supported", file);
++ elog(ERROR, "dynamic load not supported");
+ return NULL;
+-#else
+- void *vp;
+-
+- if ((vp = dlopen((char *) file, num)) == NULL)
+- snprintf(error_message, sizeof(error_message),
+- "dlopen (%s) failed: %s", file, dlerror());
+- return vp;
+-#endif
+ }
+
+ void *
+-BSD44_derived_dlsym(void *handle, const char *name)
++pg_dlsym(void *handle, const char *name)
+ {
+-#if defined(__mips__)
+- snprintf(error_message, sizeof(error_message),
+- "dlsym (%s) failed", name);
+ return NULL;
+-#elif defined(__ELF__)
+- return dlsym(handle, name);
+-#else
+- void *vp;
+- char buf[BUFSIZ];
+-
+- if (*name != '_')
+- {
+- snprintf(buf, sizeof(buf), "_%s", name);
+- name = buf;
+- }
+- if ((vp = dlsym(handle, (char *) name)) == NULL)
+- snprintf(error_message, sizeof(error_message),
+- "dlsym (%s) failed", name);
+- return vp;
+-#endif
+ }
+
+ void
+-BSD44_derived_dlclose(void *handle)
++pg_dlclose(void *handle)
+ {
+-#if defined(__mips__)
+-#else
+- dlclose(handle);
+-#endif
+ }
++
++#endif /* ! HAVE_DLOPEN */
diff --git a/databases/postgresql81/patches/patch-ae b/databases/postgresql81/patches/patch-ae
new file mode 100644
index 00000000000..e9d9eec8b3f
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ae
@@ -0,0 +1,45 @@
+$NetBSD: patch-ae,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/backend/port/dynloader/netbsd.h.orig 2005-01-01 07:00:32.000000000 +0900
++++ src/backend/port/dynloader/netbsd.h
+@@ -21,19 +21,7 @@
+
+ #include "utils/dynamic_loader.h"
+
+-/*
+- * Dynamic Loader on NetBSD 1.0.
+- *
+- * this dynamic loader uses the system dynamic loading interface for shared
+- * libraries (ie. dlopen/dlsym/dlclose). The user must specify a shared
+- * library as the file to be dynamically loaded.
+- *
+- * agc - I know this is all a bit crufty, but it does work, is fairly
+- * portable, and works (the stipulation that the d.l. function must
+- * begin with an underscore is fairly tricky, and some versions of
+- * NetBSD (like 1.0, and 1.0A pre June 1995) have no dlerror.)
+- */
+-
++#ifdef HAVE_DLOPEN
+ /*
+ * In some older systems, the RTLD_NOW flag isn't defined and the mode
+ * argument to dlopen must always be 1. The RTLD_GLOBAL flag is wanted
+@@ -47,14 +35,11 @@
+ #define RTLD_GLOBAL 0
+ #endif
+
+-#define pg_dlopen(f) BSD44_derived_dlopen((f), RTLD_NOW | RTLD_GLOBAL)
+-#define pg_dlsym BSD44_derived_dlsym
+-#define pg_dlclose BSD44_derived_dlclose
+-#define pg_dlerror BSD44_derived_dlerror
++#define pg_dlopen(f) dlopen((f), RTLD_NOW | RTLD_GLOBAL)
++#define pg_dlsym dlsym
++#define pg_dlclose dlclose
++#define pg_dlerror dlerror
+
+-char *BSD44_derived_dlerror(void);
+-void *BSD44_derived_dlopen(const char *filename, int num);
+-void *BSD44_derived_dlsym(void *handle, const char *name);
+-void BSD44_derived_dlclose(void *handle);
++#endif /* HAVE_DLOPEN */
+
+ #endif /* PORT_PROTOS_H */
diff --git a/databases/postgresql81/patches/patch-af b/databases/postgresql81/patches/patch-af
new file mode 100644
index 00000000000..fb6bab5b756
--- /dev/null
+++ b/databases/postgresql81/patches/patch-af
@@ -0,0 +1,30 @@
+$NetBSD: patch-af,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/timezone/localtime.c.orig 2005-10-15 11:49:51.000000000 +0900
++++ src/timezone/localtime.c
+@@ -77,18 +77,18 @@ struct rule
+
+ static long detzcode(const char *codep);
+ static const char *getzname(const char *strp);
+-static const char *getnum(const char *strp, int *nump, int min, int max);
++static const char *getnum(const char *strp, int *nump, const int min, const int max);
+ static const char *getsecs(const char *strp, long *secsp);
+ static const char *getoffset(const char *strp, long *offsetp);
+ static const char *getrule(const char *strp, struct rule * rulep);
+ static void gmtload(struct state * sp);
+-static void gmtsub(const pg_time_t *timep, long offset, struct pg_tm * tmp);
+-static void localsub(const pg_time_t *timep, long offset, struct pg_tm * tmp, const pg_tz *tz);
+-static void timesub(const pg_time_t *timep, long offset,
++static void gmtsub(const pg_time_t *timep, const long offset, struct pg_tm * tmp);
++static void localsub(const pg_time_t *timep, const long offset, struct pg_tm * tmp, const pg_tz *tz);
++static void timesub(const pg_time_t *timep, const long offset,
+ const struct state * sp, struct pg_tm * tmp);
+-static pg_time_t transtime(pg_time_t janfirst, int year,
+- const struct rule * rulep, long offset);
+-int tzparse(const char *name, struct state * sp, int lastditch);
++static pg_time_t transtime(const pg_time_t janfirst, const int year,
++ const struct rule * rulep, const long offset);
++int tzparse(const char *name, struct state * sp, const int lastditch);
+
+ /* GMT timezone */
+ static struct state gmtmem;
diff --git a/databases/postgresql81/patches/patch-ag b/databases/postgresql81/patches/patch-ag
new file mode 100644
index 00000000000..dd5ab6f0886
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ag
@@ -0,0 +1,15 @@
+$NetBSD: patch-ag,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/timezone/private.h.orig 2005-02-23 13:34:21.000000000 +0900
++++ src/timezone/private.h
+@@ -66,8 +66,8 @@ extern int unlink(const char *filename);
+ extern char *icalloc(int nelem, int elsize);
+ extern char *icatalloc(char *old, const char *new);
+ extern char *icpyalloc(const char *string);
+-extern char *imalloc(int n);
+-extern void *irealloc(void *pointer, int size);
++extern char *imalloc(const int n);
++extern void *irealloc(void *pointer, const int size);
+ extern void icfree(char *pointer);
+ extern void ifree(char *pointer);
+ extern char *scheck(const char *string, const char *format);
diff --git a/databases/postgresql81/patches/patch-ah b/databases/postgresql81/patches/patch-ah
new file mode 100644
index 00000000000..5ac57bf1cc2
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ah
@@ -0,0 +1,13 @@
+$NetBSD: patch-ah,v 1.1.1.1 2006/03/20 14:45:49 uebayasi Exp $
+
+--- src/timezone/strftime.c.orig 2005-10-15 11:49:51.000000000 +0900
++++ src/timezone/strftime.c
+@@ -90,7 +90,7 @@ static const struct lc_time_T C_time_loc
+ };
+
+ static char *_add(const char *, char *, const char *);
+-static char *_conv(int, const char *, char *, const char *);
++static char *_conv(const int, const char *, char *, const char *);
+ static char *_fmt(const char *, const struct pg_tm *, char *,
+ const char *, int *);
+
diff --git a/databases/postgresql81/patches/patch-ai b/databases/postgresql81/patches/patch-ai
new file mode 100644
index 00000000000..e95f5c01fa7
--- /dev/null
+++ b/databases/postgresql81/patches/patch-ai
@@ -0,0 +1,80 @@
+$NetBSD: patch-ai,v 1.1.1.1 2006/03/20 14:45:50 uebayasi Exp $
+
+--- src/timezone/zic.c.orig 2005-10-15 11:49:51.000000000 +0900
++++ src/timezone/zic.c
+@@ -101,52 +101,52 @@ struct zone
+ };
+
+ extern int link(const char *fromname, const char *toname);
+-static void addtt(pg_time_t starttime, int type);
+-static int addtype(long gmtoff, const char *abbr, int isdst,
+- int ttisstd, int ttisgmt);
+-static void leapadd(pg_time_t t, int positive, int rolling, int count);
++static void addtt(const pg_time_t starttime, int type);
++static int addtype(const long gmtoff, const char *abbr, const int isdst,
++ const int ttisstd, const int ttisgmt);
++static void leapadd(const pg_time_t t, const int positive, const int rolling, int count);
+ static void adjleap(void);
+ static void associate(void);
+ static int ciequal(const char *ap, const char *bp);
+-static void convert(long val, char *buf);
++static void convert(const long val, char *buf);
+ static void dolink(const char *fromfile, const char *tofile);
+ static void doabbr(char *abbr, const char *format,
+- const char *letters, int isdst);
+-static void eat(const char *name, int num);
+-static void eats(const char *name, int num,
+- const char *rname, int rnum);
+-static long eitol(int i);
++ const char *letters, const int isdst);
++static void eat(const char *name, const int num);
++static void eats(const char *name, const int num,
++ const char *rname, const int rnum);
++static long eitol(const int i);
+ static void error(const char *message);
+ static char **getfields(char *buf);
+ static long gethms(const char *string, const char *errstrng,
+- int signable);
++ const int signable);
+ static void infile(const char *filename);
+-static void inleap(char **fields, int nfields);
+-static void inlink(char **fields, int nfields);
+-static void inrule(char **fields, int nfields);
+-static int inzcont(char **fields, int nfields);
+-static int inzone(char **fields, int nfields);
+-static int inzsub(char **fields, int nfields, int iscont);
++static void inleap(char **fields, const int nfields);
++static void inlink(char **fields, const int nfields);
++static void inrule(char **fields, const int nfields);
++static int inzcont(char **fields, const int nfields);
++static int inzone(char **fields, const int nfields);
++static int inzsub(char **fields, const int nfields, const int iscont);
+ static int itsabbr(const char *abbr, const char *word);
+ static int itsdir(const char *name);
+ static int lowerit(int c);
+ static char *memcheck(char *tocheck);
+ static int mkdirs(char *filename);
+ static void newabbr(const char *abbr);
+-static long oadd(long t1, long t2);
+-static void outzone(const struct zone * zp, int ntzones);
+-static void puttzcode(long code, FILE *fp);
++static long oadd(const long t1, const long t2);
++static void outzone(const struct zone * zp, const int ntzones);
++static void puttzcode(const long code, FILE *fp);
+ static int rcomp(const void *leftp, const void *rightp);
+-static pg_time_t rpytime(const struct rule * rp, int wantedy);
++static pg_time_t rpytime(const struct rule * rp, const int wantedy);
+ static void rulesub(struct rule * rp,
+ const char *loyearp, const char *hiyearp,
+ const char *typep, const char *monthp,
+ const char *dayp, const char *timep);
+ static void setboundaries(void);
+-static pg_time_t tadd(pg_time_t t1, long t2);
++static pg_time_t tadd(const pg_time_t t1, const long t2);
+ static void usage(void);
+ static void writezone(const char *name);
+-static int yearistype(int year, const char *type);
++static int yearistype(const int year, const char *type);
+
+ static int charcnt;
+ static int errors;