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... */