#endif
}
-#if ! HAVE_WCWIDTH
-#define wcwidth(wc) (1)
-#endif
-
+#if USE_NLS_PROGRESS_BAR
int
count_cols (const char *mbs)
{
int bytes;
int remaining = strlen(mbs);
int cols = 0;
+ int wccols;
while (*mbs != '\0')
{
bytes = mbtowc (&wc, mbs, remaining);
+ assert (bytes != 0); /* Only happens when *mbs == '\0' */
+ if (bytes == -1)
+ {
+ /* Invalid sequence. We'll just have to fudge it. */
+ return cols + remaining;
+ }
mbs += bytes;
remaining -= bytes;
- cols += wcwidth(wc);
+ wccols = wcwidth(wc);
+ cols += (wccols == -1? 1 : wccols);
}
return cols;
}
+#else
+# define count_cols(mbs) ((int)(strlen(mbs)))
+#endif
/* Translation note: "ETA" is English-centric, but this must
be short, ideally 3 chars. Abbreviate if necessary. */
int nbytes;
int ncols;
+#if USE_NLS_PROGRESS_BAR
eta_trans = _(eta_str);
+#else
+ eta_trans = eta_str;
+#endif
/* Determine the number of bytes used in the translated string,
* versus the number of columns used. This is to figure out how
move_to_end (p);
}
- assert (p - bp->buffer - bytes_cols_diff - size_grouped_diff <= bp->width);
-
while (p - bp->buffer - bytes_cols_diff - size_grouped_diff < bp->width)
*p++ = ' ';
*p = '\0';