Bruce Momjian wrote:
/*
+ * 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';
+ }
+ + /*
I do not see how the comment relates at all to the code following it - buffer mode and line end mode are two different things. Also, the repeated calls to strlen(line) are horribly inefficient - it should be called once and stashed in an int (I once made an order of magnitude speedup in a program by correcting a piece of someone else's code that looked like this: for (i = 0; i <= strlen(s); i++) where s was an invariant very long string)
cheers
andrew
---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster