git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6624 c06c8d41-db1a-0410-9941-cceddc491573
Q43X3MHS6IVLGSIIUJMTZT6NO6S4BDAUAJE4UJBXN4KWRFPLYZEAC LR4R5HKGDDCZJWRBIKWDZ5OC3O2RLAVY2BZGQOULGXQOTJBON3NAC KDWQP5WMMIAZGQQPXSI36IQBVZNGQFE2Z4N33QLKOMEKWEIRVKLAC QYUAYEGK7WPBJLZRSWZVDWD5SMNAWWIJSQPWYA7BEYXMEBD2SDKAC P2YNOE2TUTZFAOBTHJOIVD6TCV7J7D2UKUX67LHZUL6QY44ZMENQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC // cprintf that stops outputting when wrapped// Conceptually very similar to wrapcprintf()int nowrapcprintf( int wrapcol, const char *s, ... ){char buf[1000]; // Hard maxva_list args;va_start(args, s);// XXX: If snprintf isn't available, vsnprintf probably isn't, either.const int len = vsnprintf(buf, sizeof buf, s, args);va_end(args);
// Sanity checking to prevent buffer overflowsconst int maxlen = std::min( std::max( wrapcol + 1 - wherex(), 0 ), len );// Force the string to terminate at maxlenbuf[maxlen] = 0;cprintf("%s", buf);return std::min(len, maxlen);}// convenience wrapper (hah) for nowrapcprintf// FIXME: should pass off to nowrapcprintf() instead of doing it manuallyint nowrap_eol_cprintf( const char *s, ... ){const int wrapcol = get_number_of_cols() - 1;char buf[1000]; // Hard maxva_list args;va_start(args, s);// XXX: If snprintf isn't available, vsnprintf probably isn't, either.const int len = vsnprintf(buf, sizeof buf, s, args);va_end(args);// Sanity checking to prevent buffer overflowsconst int maxlen = std::min( std::max( wrapcol + 1 - wherex(), 0 ), len );// Force the string to terminate at maxlenbuf[maxlen] = 0;cprintf("%s", buf);return std::min(len, maxlen);}