if (!result)
goto error_return;
else
- tuples = PQntuples(result);
-
- for (i = 0; i < tuples; i++)
{
const char *s = _("Inherits");
+ int sw = pg_wcswidth(s, strlen(s), pset.encoding);
- if (i == 0)
- printfPQExpBuffer(&buf, "%s: %s", s, PQgetvalue(result, i, 0));
- else
- printfPQExpBuffer(&buf, "%*s %s", (int) strlen(s), "", PQgetvalue(result, i, 0));
- if (i < tuples - 1)
- appendPQExpBuffer(&buf, ",");
+ tuples = PQntuples(result);
- printTableAddFooter(&cont, buf.data);
+ for (i = 0; i < tuples; i++)
+ {
+ if (i == 0)
+ printfPQExpBuffer(&buf, "%s: %s",
+ s, PQgetvalue(result, i, 0));
+ else
+ printfPQExpBuffer(&buf, "%*s %s",
+ sw, "", PQgetvalue(result, i, 0));
+ if (i < tuples - 1)
+ appendPQExpBuffer(&buf, ",");
+
+ printTableAddFooter(&cont, buf.data);
+ }
+
+ PQclear(result);
}
- PQclear(result);
/* print child tables */
if (pset.sversion >= 80300)
{
/* display the list of child tables */
const char *ct = _("Child tables");
+ int ctw = pg_wcswidth(ct, strlen(ct), pset.encoding);
for (i = 0; i < tuples; i++)
{
ct, PQgetvalue(result, i, 0));
else
printfPQExpBuffer(&buf, "%*s %s",
- (int) strlen(ct), "",
- PQgetvalue(result, i, 0));
+ ctw, "", PQgetvalue(result, i, 0));
if (i < tuples - 1)
appendPQExpBuffer(&buf, ",");
*/
/*
- * pg_wcswidth is the dumb width function. It assumes that everything will
- * only appear on one line. OTOH it is easier to use if this applies to you.
+ * pg_wcswidth is the dumb display-width function.
+ * It assumes that everything will appear on one line.
+ * OTOH it is easier to use than pg_wcssize if this applies to you.
*/
int
-pg_wcswidth(const unsigned char *pwcs, size_t len, int encoding)
+pg_wcswidth(const char *pwcs, size_t len, int encoding)
{
int width = 0;
int chlen,
chwidth;
- chlen = PQmblen((const char *) pwcs, encoding);
- if (chlen > len)
+ chlen = PQmblen(pwcs, encoding);
+ if (len < (size_t) chlen)
break; /* Invalid string */
- chwidth = PQdsplen((const char *) pwcs, encoding);
-
+ chwidth = PQdsplen(pwcs, encoding);
if (chwidth > 0)
width += chwidth;
+
pwcs += chlen;
+ len -= chlen;
}
return width;
}
};
extern unsigned char *mbvalidate(unsigned char *pwcs, int encoding);
-extern int pg_wcswidth(const unsigned char *pwcs, size_t len, int encoding);
+extern int pg_wcswidth(const char *pwcs, size_t len, int encoding);
extern void pg_wcsformat(const unsigned char *pwcs, size_t len, int encoding, struct lineptr * lines, int count);
extern void pg_wcssize(const unsigned char *pwcs, size_t len, int encoding,
int *width, int *height, int *format_size);