int remaining; /* remaining output width available */
int c, ljust, w;
int end; /* number of input bytes remaining in str */
int remaining; /* remaining output width available */
int c, ljust, w;
int end; /* number of input bytes remaining in str */
char *sp; /* current position in source string */
char *cp = *dest; /* current position in destination string */
char *ep = cp + n; /* end of destination buffer */
char *sp; /* current position in source string */
char *cp = *dest; /* current position in destination string */
char *ep = cp + n; /* end of destination buffer */
mbtowc(NULL, NULL, 0); /* reset shift state */
end = strlen(str);
while (*sp && remaining > 0 && end > 0) {
mbtowc(NULL, NULL, 0); /* reset shift state */
end = strlen(str);
while (*sp && remaining > 0 && end > 0) {
char_len = mbtowc(&wide_char, sp, end);
if (char_len <= 0 || (cp + char_len > ep))
break;
char_len = mbtowc(&wide_char, sp, end);
if (char_len <= 0 || (cp + char_len > ep))
break;
w = wcwidth(wide_char);
if (w >= 0 && remaining >= w) {
strncpy(cp, sp, char_len);
w = wcwidth(wide_char);
if (w >= 0 && remaining >= w) {
strncpy(cp, sp, char_len);
struct format *
fmt_scan (struct format *format, char *scanl, int width, int *dat)
{
struct format *
fmt_scan (struct format *format, char *scanl, int width, int *dat)
{
case FT_NUM:
n = snprintf(cp, ep - cp + 1, "%d", value);
case FT_NUM:
n = snprintf(cp, ep - cp + 1, "%d", value);
break;
case FT_NUMF:
cpnumber (&cp, value, fmt->f_width, fmt->f_fill, ep - cp);
break;
case FT_NUMF:
cpnumber (&cp, value, fmt->f_width, fmt->f_fill, ep - cp);
strncpy(buffer, str, sizeof(buffer));
buffer[sizeof(buffer)-1] = '\0';
strncpy(buffer, str, sizeof(buffer));
buffer[sizeof(buffer)-1] = '\0';