33 *
44 * Copyright (c) 2000-2006, PostgreSQL Global Development Group
55 *
6- * $PostgreSQL: pgsql/src/bin/psql/mbprint.c,v 1.23 2006/10/04 00:30:06 momjian Exp $
6+ * $PostgreSQL: pgsql/src/bin/psql/mbprint.c,v 1.24 2006/12/27 19:45:36 tgl Exp $
77 */
88
99#include "postgres_fe.h"
@@ -196,7 +196,7 @@ pg_wcssize(unsigned char *pwcs, size_t len, int encoding, int *result_width,
196196break ;
197197w = PQdsplen ((char * )pwcs ,encoding );
198198
199- if (chlen == 1 )/*ASCII char */
199+ if (chlen == 1 )/*single-byte char */
200200{
201201if (* pwcs == '\n' )/* Newline */
202202{
@@ -211,25 +211,23 @@ pg_wcssize(unsigned char *pwcs, size_t len, int encoding, int *result_width,
211211linewidth += 2 ;
212212format_size += 2 ;
213213}
214- else if (w <= 0 )/* Other control char */
214+ else if (w < 0 )/* Other control char */
215215{
216216linewidth += 4 ;
217217format_size += 4 ;
218218}
219- else
220- /* Output itself */
219+ else /* Output it as-is */
221220{
222- linewidth ++ ;
221+ linewidth += w ;
223222format_size += 1 ;
224223}
225224}
226- else if (w <= 0 )/* Non-ascii control char */
225+ else if (w < 0 )/* Non-ascii control char */
227226{
228227linewidth += 6 ;/* \u0000 */
229228format_size += 6 ;
230229}
231- else
232- /* All other chars */
230+ else /* All other chars */
233231{
234232linewidth += w ;
235233format_size += chlen ;
@@ -267,11 +265,11 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
267265break ;
268266w = PQdsplen ((char * )pwcs ,encoding );
269267
270- if (chlen == 1 )/* single byte char char */
268+ if (chlen == 1 )/* single- byte char */
271269{
272270if (* pwcs == '\n' )/* Newline */
273271{
274- * ptr ++ = 0 ; /* NULL char */
272+ * ptr ++ = '\0' ;
275273lines -> width = linewidth ;
276274linewidth = 0 ;
277275lines ++ ;
@@ -287,20 +285,19 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
287285linewidth += 2 ;
288286ptr += 2 ;
289287}
290- else if (w <= 0 )/* Other control char */
288+ else if (w < 0 )/* Other control char */
291289{
292290sprintf ((char * )ptr ,"\\x%02X" ,* pwcs );
293291linewidth += 4 ;
294292ptr += 4 ;
295293}
296- else
297- /* Output itself */
294+ else /* Output it as-is */
298295{
299- linewidth ++ ;
296+ linewidth += w ;
300297* ptr ++ = * pwcs ;
301298}
302299}
303- else if (w <= 0 )/* Non-ascii control char */
300+ else if (w < 0 )/* Non-ascii control char */
304301{
305302if (encoding == PG_UTF8 )
306303sprintf ((char * )ptr ,"\\u%04X" ,utf2ucs (pwcs ));
@@ -316,8 +313,7 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
316313ptr += 6 ;
317314linewidth += 6 ;
318315}
319- else
320- /* All other chars */
316+ else /* All other chars */
321317{
322318int i ;
323319
@@ -327,13 +323,12 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
327323}
328324len -= chlen ;
329325}
330- * ptr ++ = 0 ;
326+ * ptr ++ = '\0' ;
331327lines -> width = linewidth ;
332328lines ++ ;
333329count -- ;
334330if (count > 0 )
335331lines -> ptr = NULL ;
336- return ;
337332}
338333
339334unsignedchar *