*** pgsql/src/interfaces/libpq/fe-misc.c 2008/08/20 11:53:51 1.133.2.1 --- pgsql/src/interfaces/libpq/fe-misc.c 2010/05/08 16:40:14 1.133.2.2 *************** *** 23,29 **** * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.133 2008/01/01 19:46:00 momjian Exp $ * *------------------------------------------------------------------------- */ --- 23,29 ---- * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.133.2.1 2008/08/20 11:53:51 mha Exp $ * *------------------------------------------------------------------------- */ *************** static int pqSocketPoll(int sock, int fo *** 68,73 **** --- 68,87 ---- /* + * fputnbytes: print exactly N bytes to a file + * + * Think not to use fprintf with a %.*s format for this. Some machines + * believe %s's precision is measured in characters, others in bytes. + */ + static void + fputnbytes(FILE *f, const char *str, size_t n) + { + while (n-- > 0) + fputc(*str++, f); + } + + + /* * pqGetc: get 1 character from the connection * * All these routines return 0 on success, EOF on error. *************** pqGetnchar(char *s, size_t len, PGconn * *** 173,180 **** conn->inCursor += len; if (conn->Pfdebug) ! fprintf(conn->Pfdebug, "From backend (%lu)> %.*s\n", ! (unsigned long) len, (int) len, s); return 0; } --- 187,197 ---- conn->inCursor += len; if (conn->Pfdebug) ! { ! fprintf(conn->Pfdebug, "From backend (%lu)> ", (unsigned long) len); ! fputnbytes(conn->Pfdebug, s, len); ! fprintf(conn->Pfdebug, "\n"); ! } return 0; } *************** pqPutnchar(const char *s, size_t len, PG *** 190,196 **** return EOF; if (conn->Pfdebug) ! fprintf(conn->Pfdebug, "To backend> %.*s\n", (int) len, s); return 0; } --- 207,217 ---- return EOF; if (conn->Pfdebug) ! { ! fprintf(conn->Pfdebug, "To backend> "); ! fputnbytes(conn->Pfdebug, s, len); ! fprintf(conn->Pfdebug, "\n"); ! } return 0; }