ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/utils.C
(Generate patch)

Comparing deliantra/server/common/utils.C (file contents):
Revision 1.64 by root, Fri Aug 10 11:02:44 2007 UTC vs.
Revision 1.65 by root, Thu Aug 16 06:36:56 2007 UTC

517 } 517 }
518 else 518 else
519 memcpy (dst, src, len + 1); 519 memcpy (dst, src, len + 1);
520} 520}
521 521
522const std::string 522const char *
523format (const char *format, ...) 523format (const char *format, ...)
524{ 524{
525 int len; 525 static dynbuf_text buf;
526 526
527 { 527 buf.clear ();
528 char buf[128];
529 528
530 va_list ap; 529 va_list ap;
531 va_start (ap, format); 530 va_start (ap, format);
532 len = vsnprintf (buf, sizeof (buf), format, ap); 531 buf.vprintf (format, ap);
533 va_end (ap); 532 va_end (ap);
534 533
535 assert (len >= 0); // shield againstz broken vsnprintf's
536
537 // was our static buffer short enough?
538 if (len < sizeof (buf))
539 return std::string (buf, len);
540 }
541
542 {
543 // longer, try harder
544 char *buf = salloc<char> (len + 1);
545
546 va_list ap;
547 va_start (ap, format);
548 vsnprintf (buf, len + 1, format, ap);
549 va_end (ap);
550
551 const std::string s (buf, len);
552 sfree<char> (buf, len + 1);
553
554 return buf; 534 return buf;
555 }
556} 535}
557 536
558tstamp now () 537tstamp now ()
559{ 538{
560 struct timeval tv; 539 struct timeval tv;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines