- /* TODO: This function should interpret format as multibyte characters. */
- /* Members: base, flags, n, i, this, s, width, prec, stream, arg */
- struct _PDCLIB_status_t status = { 0, 0, n, 0, 0, s, 0, 0, NULL, arg };
- while ( *format != '\0' )
+ struct state *s = p;
+ size_t copy = s->bufrem >= sz ? sz : s->bufrem;
+ memcpy( s->bufp, buf, copy );
+ s->bufrem -= copy;
+ s->bufp += copy;
+ return sz;
+}
+
+int vsnprintf( char * _PDCLIB_restrict s,
+ size_t n,
+ const char * _PDCLIB_restrict format,
+ _PDCLIB_va_list arg )
+{
+ struct state st;
+ st.bufrem = n;
+ st.bufp = s;
+ int r = _vcbprintf( &st, strout, format, arg );
+ if ( st.bufrem )