Index: uClibc++-0.2.2/include/ostream =================================================================== --- uClibc++-0.2.2/include/ostream (revision 708) +++ uClibc++-0.2.2/include/ostream (revision 709) @@ -129,6 +129,18 @@ return *this; } + _UCXXEXPORT void printout(const char_type* s, streamsize n) + { + int extra = ios::width() - n; + if ((ios::flags()&ios::adjustfield) == ios::right) + while (extra-- > 0) + put(ios::fill()); + write(s, n); + if ((ios::flags()&ios::adjustfield) == ios::left) + while (extra-- > 0) + put(ios::fill()); + } + protected: basic_ostream(const basic_ostream &){ } basic_ostream & operator=(const basic_ostream &){ return *this; } @@ -142,15 +154,15 @@ sentry s(*this); if( basic_ios::flags() & ios_base::boolalpha){ if(n){ - write("true", 4); + printout("true", 4); }else{ - write("false", 5); + printout("false", 5); } }else{ if(n){ - write("1", 1); + printout("1", 1); }else{ - write("0", 1); + printout("0", 1); } } if(basic_ios::flags() & ios_base::unitbuf){ @@ -219,7 +231,7 @@ template _UCXXEXPORT basic_ostream& basic_ostream::operator<<(void* p){ sentry s(*this); char buffer[20]; - write(buffer, snprintf(buffer, 20, "%p", p) ); + printout(buffer, snprintf(buffer, 20, "%p", p) ); if(basic_ios::flags() & ios_base::unitbuf){ flush(); } @@ -356,7 +368,7 @@ operator<<(basic_ostream& out, const charT* c) { typename basic_ostream::sentry s(out); - out.write(c, traits::length(c) ); + out.printout(c, traits::length(c) ); return out; } @@ -364,7 +376,7 @@ operator<<(basic_ostream& out, const char* c) { typename basic_ostream::sentry s(out); - out.write(c, char_traits::length(c) ); + out.printout(c, char_traits::length(c) ); return out; } @@ -373,7 +385,7 @@ operator<<(basic_ostream& out, const char* c) { typename basic_ostream::sentry s(out); - out.write(c, traits::length(c)); + out.printout(c, traits::length(c)); return out; } @@ -389,7 +401,7 @@ temp[i] = out.widen(c[i]); } - out.write(temp, numChars); + out.printout(temp, numChars); return out; } #endif @@ -399,7 +411,7 @@ operator<<(basic_ostream& out, const signed char* c) { typename basic_ostream::sentry s(out); - out.write(reinterpret_cast(c), traits::length( reinterpret_cast(c))); + out.printout(reinterpret_cast(c), traits::length( reinterpret_cast(c))); return out; } @@ -407,7 +419,7 @@ operator<<(basic_ostream& out, const unsigned char* c) { typename basic_ostream::sentry s(out); - out.write(reinterpret_cast(c), traits::length( reinterpret_cast(c))); + out.printout(reinterpret_cast(c), traits::length( reinterpret_cast(c))); return out; } Index: uClibc++-0.2.2/include/ostream_helpers =================================================================== --- uClibc++-0.2.2/include/ostream_helpers (revision 708) +++ uClibc++-0.2.2/include/ostream_helpers (revision 709) @@ -88,7 +88,7 @@ } } - stream.write(buffer, snprintf(buffer, 20, formatString, n) ); + stream.printout(buffer, snprintf(buffer, 20, formatString, n) ); if(stream.flags() & ios_base::unitbuf){ stream.flush(); @@ -135,7 +135,7 @@ } } - stream.write(buffer, snprintf(buffer, 20, formatString, n)); + stream.printout(buffer, snprintf(buffer, 20, formatString, n)); if(stream.flags() & ios_base::unitbuf){ stream.flush(); } @@ -182,7 +182,7 @@ } } - stream.write(buffer, snprintf(buffer, 27, formatString, n) ); + stream.printout(buffer, snprintf(buffer, 27, formatString, n) ); if(stream.flags() & ios_base::unitbuf){ stream.flush(); @@ -228,7 +228,7 @@ } } - stream.write(buffer, snprintf(buffer, 27, formatString, n) ); + stream.printout(buffer, snprintf(buffer, 27, formatString, n) ); if(stream.flags() & ios_base::unitbuf){ stream.flush(); @@ -256,7 +256,7 @@ } else { length = snprintf(buffer, 32, "%*.*g",static_cast(stream.width()),static_cast(stream.precision()), f); } - stream.write(buffer, length); + stream.printout(buffer, length); if(stream.flags() & ios_base::unitbuf){ stream.flush(); } @@ -280,7 +280,7 @@ } else { length = snprintf(buffer, 32, "%*.*Lg", static_cast(stream.width()), static_cast(stream.precision()), f); } - stream.write(buffer, length); + stream.printout(buffer, length); if(stream.flags() & ios_base::unitbuf){ stream.flush(); } @@ -295,25 +295,25 @@ { wchar_t buffer[20]; if( stream.flags() & ios_base::dec){ - stream.write(buffer, swprintf(buffer, 20, L"%ld", n)); + stream.printout(buffer, swprintf(buffer, 20, L"%ld", n)); }else if( stream.flags() & ios_base::oct){ if( stream.flags() & ios_base::showbase){ - stream.write(buffer, swprintf(buffer, 20, L"%#lo", n)); + stream.printout(buffer, swprintf(buffer, 20, L"%#lo", n)); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%lo", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lo", n) ); } }else if (stream.flags() & ios_base::hex){ if(stream.flags() & ios_base::showbase){ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 20, L"%#lX", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%#lX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%#lx", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%#lx", n) ); } }else{ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 20, L"%lX", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%lx", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lx", n) ); } } } @@ -329,25 +329,25 @@ { wchar_t buffer[20]; if( stream.flags() & ios_base::dec){ - stream.write(buffer, swprintf(buffer, 20, L"%lu", n)); + stream.printout(buffer, swprintf(buffer, 20, L"%lu", n)); }else if( stream.flags() & ios_base::oct){ if( stream.flags() & ios_base::showbase){ - stream.write(buffer, swprintf(buffer, 20, L"%#lo", n)); + stream.printout(buffer, swprintf(buffer, 20, L"%#lo", n)); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%lo", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lo", n) ); } }else if (stream.flags() & ios_base::hex){ if(stream.flags() & ios_base::showbase){ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 20, L"%#lX", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%#lX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%#lx", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%#lx", n) ); } }else{ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 20, L"%lX", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 20, L"%lx", n) ); + stream.printout(buffer, swprintf(buffer, 20, L"%lx", n) ); } } } @@ -365,25 +365,25 @@ { wchar_t buffer[28]; if( stream.flags() & ios_base::dec){ - stream.write(buffer, swprintf(buffer, 27, L"%lld", n)); + stream.printout(buffer, swprintf(buffer, 27, L"%lld", n)); }else if( stream.flags() & ios_base::oct){ if( stream.flags() & ios_base::showbase){ - stream.write(buffer, swprintf(buffer, 27, L"%#llo", n)); + stream.printout(buffer, swprintf(buffer, 27, L"%#llo", n)); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%llo", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llo", n) ); } }else if (stream.flags() & ios_base::hex){ if(stream.flags() & ios_base::showbase){ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 27, L"%#llX", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%#llX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%#llx", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%#llx", n) ); } }else{ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 27, L"%llX", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%llx", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llx", n) ); } } } @@ -399,25 +399,25 @@ { wchar_t buffer[28]; if( stream.flags() & ios_base::dec){ - stream.write(buffer, swprintf(buffer, 27, L"%llu", n)); + stream.printout(buffer, swprintf(buffer, 27, L"%llu", n)); }else if( stream.flags() & ios_base::oct){ if( stream.flags() & ios_base::showbase){ - stream.write(buffer, swprintf(buffer, 27, L"%#llo", n)); + stream.printout(buffer, swprintf(buffer, 27, L"%#llo", n)); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%llo", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llo", n) ); } }else if (stream.flags() & ios_base::hex){ if(stream.flags() & ios_base::showbase){ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 27, L"%#llX", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%#llX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%#llx", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%#llx", n) ); } }else{ if(stream.flags() & ios_base::uppercase){ - stream.write(buffer, swprintf(buffer, 27, L"%llX", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llX", n) ); }else{ - stream.write(buffer, swprintf(buffer, 27, L"%llx", n) ); + stream.printout(buffer, swprintf(buffer, 27, L"%llx", n) ); } } } @@ -447,7 +447,7 @@ } else { swprintf(format_string, 32, L"%%%u.%ug", static_cast(stream.width()), static_cast(stream.precision())); } - stream.write(buffer, swprintf(buffer, 32, format_string, f) ); + stream.printout(buffer, swprintf(buffer, 32, format_string, f) ); if(stream.flags() & ios_base::unitbuf){ stream.flush(); } @@ -471,7 +471,7 @@ } else { swprintf(format_string, 32, L"%%%u.%uLg", static_cast(stream.width()), static_cast(stream.precision())); } - stream.write(buffer, swprintf(buffer, 32, format_string, f) ); + stream.printout(buffer, swprintf(buffer, 32, format_string, f) ); if(stream.flags() & ios_base::unitbuf){ stream.flush(); }