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.63 by root, Mon Aug 6 10:54:11 2007 UTC vs.
Revision 1.65 by root, Thu Aug 16 06:36:56 2007 UTC

220} 220}
221 221
222/* when doing transmutation of objects, we have to recheck the resistances, 222/* when doing transmutation of objects, we have to recheck the resistances,
223 * as some that did not apply previously, may apply now. 223 * as some that did not apply previously, may apply now.
224 */ 224 */
225
226void 225void
227transmute_materialname (object *op, const object *change) 226transmute_materialname (object *op, const object *change)
228{ 227{
229 materialtype_t *mt; 228 materialtype_t *mt;
230 int j; 229 int j;
419 * a 'list' for the purposes here, is a string of items, seperated by commas, except 418 * a 'list' for the purposes here, is a string of items, seperated by commas, except
420 * for the last entry, which has an 'and' before it, and a full stop (period) after it. 419 * for the last entry, which has an 'and' before it, and a full stop (period) after it.
421 * This function will also strip all trailing non alphanumeric characters. 420 * This function will also strip all trailing non alphanumeric characters.
422 * It does not insert an oxford comma. 421 * It does not insert an oxford comma.
423 */ 422 */
424
425void 423void
426make_list_like (char *input) 424make_list_like (char *input)
427{ 425{
428 char *p, tmp[MAX_BUF]; 426 char *p, tmp[MAX_BUF];
429 int i; 427 int i;
519 } 517 }
520 else 518 else
521 memcpy (dst, src, len + 1); 519 memcpy (dst, src, len + 1);
522} 520}
523 521
524const std::string 522const char *
525format (const char *format, ...) 523format (const char *format, ...)
526{ 524{
527 int len; 525 static dynbuf_text buf;
528 526
529 { 527 buf.clear ();
530 char buf[128];
531 528
532 va_list ap; 529 va_list ap;
533 va_start (ap, format); 530 va_start (ap, format);
534 len = vsnprintf (buf, sizeof (buf), format, ap); 531 buf.vprintf (format, ap);
535 va_end (ap); 532 va_end (ap);
536 533
537 assert (len >= 0); // shield againstz broken vsnprintf's
538
539 // was our static buffer short enough?
540 if (len < sizeof (buf))
541 return std::string (buf, len);
542 }
543
544 {
545 // longer, try harder
546 char *buf = salloc<char> (len + 1);
547
548 va_list ap;
549 va_start (ap, format);
550 vsnprintf (buf, len + 1, format, ap);
551 va_end (ap);
552
553 const std::string s (buf, len);
554 sfree<char> (buf, len + 1);
555
556 return buf; 534 return buf;
557 }
558} 535}
559 536
560tstamp now () 537tstamp now ()
561{ 538{
562 struct timeval tv; 539 struct timeval tv;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines