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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to