Here is fix for Win32 pg_dumpall that Claudio helped with.

Attached and applied.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/port/exec.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/port/exec.c,v
retrieving revision 1.18
diff -c -c -r1.18 exec.c
*** src/port/exec.c     8 Aug 2004 02:22:55 -0000       1.18
--- src/port/exec.c     8 Aug 2004 03:16:52 -0000
***************
*** 374,381 ****
                        CloseHandle(childstdoutrddup);
                        return NULL;
                }
!               
!               
                /* We try just once */
                if (ReadFile(childstdoutrddup, line, maxsize, &bytesread, NULL) &&
                        bytesread > 0)
--- 374,380 ----
                        CloseHandle(childstdoutrddup);
                        return NULL;
                }
! 
                /* We try just once */
                if (ReadFile(childstdoutrddup, line, maxsize, &bytesread, NULL) &&
                        bytesread > 0)
***************
*** 384,389 ****
--- 383,402 ----
                        retval = line;
  
                        /*
+                        *      Sometime the child returns "\r\n", which doesn't match
+                        *      our version string.  The backend uses
+                        *      setvbuf(stdout, NULL, _IONBF, 0), but pg_dump doesn't
+                        *      so we have to fix it here.
+                        */
+                       if (strlen(line) >= 2 &&
+                               line[strlen(line)-2] == '\r' &&
+                               line[strlen(line)-1] == '\n')
+                       {
+                               line[strlen(line)-2] == '\n';
+                               line[strlen(line)-1] == '\0';
+                       }
+ 
+                       /*
                         *      We emulate fgets() behaviour. So if there is no newline
                         *      at the end, we add one...
                         */
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to