+++ /dev/null
---- postgresql-8.3.1/src/bin/pg_ctl/pg_ctl.c.orig 2008-03-01 00:31:42.000000000 +0100
-+++ postgresql-8.3.1/src/bin/pg_ctl/pg_ctl.c 2008-03-20 22:59:22.658133220 +0100
-@@ -412,12 +412,12 @@
- PGconn *conn;
- bool success = false;
- int i;
-- char portstr[32];
-+ char portstr[32], sockstr[MAXPGPATH];
- char *p;
- char *q;
-- char connstr[128]; /* Should be way more than enough! */
-+ char connstr[128+MAXPGPATH]; /* Should be way more than enough! */
-
-- *portstr = '\0';
-+ *portstr = *sockstr = '\0';
-
- /*
- * Look in post_opts for a -p switch.
-@@ -448,6 +448,21 @@
- strlcpy(portstr, p, Min((q - p) + 1, sizeof(portstr)));
- /* keep looking, maybe there is another -p */
- p = q;
-+ } else if (strncmp(p, "-k", strlen("-k")) == 0)
-+ {
-+ p += 2;
-+ /* advance past whitespace/quoting */
-+ while (isspace((unsigned char) *p) || *p == '\'' || *p == '"')
-+ p++;
-+ /* find end of value (not including any ending quote!) */
-+ q = p;
-+ while (*q &&
-+ !(isspace((unsigned char) *q) || *q == '\'' || *q == '"'))
-+ q++;
-+ /* and save the argument value */
-+ strlcpy(sockstr, p, Min(q - p + 1, sizeof(sockstr)));
-+ /* keep looking, maybe there is another -k */
-+ p = q;
- }
- /* Advance to next whitespace */
- while (*p && !isspace((unsigned char) *p))
-@@ -460,7 +475,7 @@
- * This parsing code isn't amazingly bright either, but it should be
- * okay for valid port settings.
- */
-- if (!*portstr)
-+ if (!*portstr || !*sockstr)
- {
- char **optlines;
-
-@@ -473,8 +488,7 @@
-
- while (isspace((unsigned char) *p))
- p++;
-- if (strncmp(p, "port", 4) != 0)
-- continue;
-+ if (!strncmp(p, "port", 4)) {
- p += 4;
- while (isspace((unsigned char) *p))
- p++;
-@@ -493,6 +507,26 @@
- /* and save the argument value */
- strlcpy(portstr, p, Min((q - p) + 1, sizeof(portstr)));
- /* keep looking, maybe there is another */
-+ } else if(!strncmp(p, "unix_socket_directory", 21)) {
-+ p += 21;
-+ while (isspace((unsigned char) *p))
-+ p++;
-+ if (*p != '=')
-+ continue;
-+ p++;
-+ /* advance past any whitespace/quoting */
-+ while (isspace((unsigned char) *p) || *p == '\'' || *p == '"')
-+ p++;
-+ /* find end of value (not including any ending quote/comment!) */
-+ q = p;
-+ while (*q &&
-+ !(isspace((unsigned char) *q) ||
-+ *q == '\'' || *q == '"' || *q == '#'))
-+ q++;
-+ /* and save the argument value */
-+ strlcpy(sockstr, p, Min((q - p) + 1, sizeof(sockstr)));
-+ /* keep looking, maybe there is another */
-+ }
- }
- }
- }
-@@ -510,7 +544,8 @@
- * probably timeout first
- */
- snprintf(connstr, sizeof(connstr),
-- "dbname=postgres port=%s connect_timeout=5", portstr);
-+ "dbname=postgres port=%s connect_timeout=5%s%s", portstr,
-+ (*sockstr ? " host=" : ""), sockstr);
-
- for (i = 0; i < wait_seconds; i++)
- {
Summary(zh_CN.UTF-8): PostgreSQL 客户端程序和库文件
Name: postgresql
Version: %{mver}.0
-Release: 0.1
+Release: 1
License: BSD
Group: Applications/Databases
Source0: ftp://ftp.postgresql.org/pub/source/v%{version}/%{name}-%{version}.tar.bz2
Patch2: %{name}-ecpg-includedir.patch
Patch3: %{name}-ac_version.patch
Patch4: %{name}-disable_horology_test.patch
-Patch5: %{name}-pg_ctl-fix.patch
-Patch6: %{name}-heimdal.patch
+Patch5: %{name}-heimdal.patch
URL: http://www.postgresql.org/
BuildRequires: autoconf
BuildRequires: automake
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p1
tar xzf %{SOURCE4} -C contrib
%{__make}
for mod in %{contrib_modules}; do \
- flags="%{rpmcflags} -DNEED_REENTRANT_FUNCS"
+ flags="%{rpmcflags} %{rpmcppflags} -DNEED_REENTRANT_FUNCS"
if [ $mod = "xml2" ]; then flags="$flags -I/usr/include/libxml2"; fi
if [ $mod = "uuid-ossp" ]; then flags="$flags `uuid-config --cflags`"; fi
%{__make} -C contrib/$mod CFLAGS="$flags"