--- deliantra/server/common/utils.C 2007/04/21 23:03:54 1.50 +++ deliantra/server/common/utils.C 2007/04/23 18:09:57 1.51 @@ -611,6 +611,42 @@ memcpy (dst, src, len + 1); } +const std::string +format (const char *format, ...) +{ + int len; + + { + char buf[128]; + + va_list ap; + va_start (ap, format); + len = vsnprintf (buf, sizeof (buf), format, ap); + va_end (ap); + + assert (len >= 0); // shield againstz broken vsnprintf's + + // was our static buffer short enough? + if (len < sizeof (buf)) + return std::string (buf, len); + } + + { + // longer, try harder + char *buf = salloc (len + 1); + + va_list ap; + va_start (ap, format); + vsnprintf (buf, len + 1, format, ap); + va_end (ap); + + const std::string s (buf, len); + sfree (buf, len + 1); + + return buf; + } +} + tstamp now () { struct timeval tv;