SOURCES: postgresql-pg_ctl-fix.patch - updated for 8.3.1

qboosh qboosh at pld-linux.org
Fri Mar 21 00:13:30 CET 2008


Author: qboosh                       Date: Thu Mar 20 23:13:30 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated for 8.3.1

---- Files affected:
SOURCES:
   postgresql-pg_ctl-fix.patch (1.3 -> 1.4) 

---- Diffs:

================================================================
Index: SOURCES/postgresql-pg_ctl-fix.patch
diff -u SOURCES/postgresql-pg_ctl-fix.patch:1.3 SOURCES/postgresql-pg_ctl-fix.patch:1.4
--- SOURCES/postgresql-pg_ctl-fix.patch:1.3	Tue Feb 19 21:50:40 2008
+++ SOURCES/postgresql-pg_ctl-fix.patch	Fri Mar 21 00:13:25 2008
@@ -1,88 +1,90 @@
---- postgresql-8.3.0/src/bin/pg_ctl/pg_ctl.c.orig	2008-01-01 20:45:55.000000000 +0100
-+++ postgresql-8.3.0/src/bin/pg_ctl/pg_ctl.c	2008-02-19 21:30:21.369174813 +0100
-@@ -414,11 +414,11 @@
+--- 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';
  
- 	/* post_opts */
- 	for (p = post_opts; *p;)
-@@ -436,6 +436,15 @@
- 			strlcpy(portstr, p, Min(strcspn(p, "\"'" WHITESPACE) + 1,
- 									sizeof(portstr)));
+ 	/*
+ 	 * 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 += strlen("-k");
++			p += 2;
 +			/* advance past whitespace/quoting */
 +			while (isspace((unsigned char) *p) || *p == '\'' || *p == '"')
 +				p++;
-+			strlcpy(sockstr, p, Min(strcspn(p, "\"'" WHITESPACE) + 1,
-+									sizeof(sockstr)));
++			/* 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))
-@@ -443,7 +452,7 @@
- 	}
- 
- 	/* config file */
+@@ -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;
  
-@@ -456,19 +465,30 @@
+@@ -473,8 +488,7 @@
  
  				while (isspace((unsigned char) *p))
  					p++;
--				if (strncmp(p, "port", strlen("port")) != 0)
+-				if (strncmp(p, "port", 4) != 0)
 -					continue;
--				p += strlen("port");
--				while (isspace((unsigned char) *p))
-+				if (!strncmp(p, "port", strlen("port"))) {
-+					p += strlen("port");
-+					while (isspace((unsigned char) *p))
-+						p++;
-+					if (*p != '=')
-+						continue;
++				if (!strncmp(p, "port", 4)) {
+ 				p += 4;
+ 				while (isspace((unsigned char) *p))
  					p++;
--				if (*p != '=')
--					continue;
--				p++;
--				while (isspace((unsigned char) *p))
-+					while (isspace((unsigned char) *p))
-+						p++;
-+					strlcpy(portstr, p, Min(strcspn(p, "#" WHITESPACE) + 1,
-+											sizeof(portstr)));
-+					/* keep looking, maybe there is another */
-+				} else if(!strncmp(p, "unix_socket_directory", strlen("unix_socket_directory"))) {
-+					p += strlen("unix_socket_directory");
+@@ -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++;
--				strlcpy(portstr, p, Min(strcspn(p, "#" WHITESPACE) + 1,
--										sizeof(portstr)));
--				/* keep looking, maybe there is another */
++					p++;
++					/* advance past any whitespace/quoting */
 +					while (isspace((unsigned char) *p) || *p == '\'' || *p == '"')
 +						p++;
-+					strlcpy(sockstr, p, Min(strcspn(p, "\"'#" WHITESPACE) + 1,
-+											sizeof(sockstr)));
++					/* 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 */
 +				}
  			}
  		}
  	}
-@@ -486,7 +506,8 @@
+@@ -510,7 +544,8 @@
  	 * probably timeout first
  	 */
  	snprintf(connstr, sizeof(connstr),
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/postgresql-pg_ctl-fix.patch?r1=1.3&r2=1.4&f=u



More information about the pld-cvs-commit mailing list