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