… | |
… | |
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 | |
|
|
226 | void |
225 | void |
227 | transmute_materialname (object *op, const object *change) |
226 | transmute_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 | |
|
|
425 | void |
423 | void |
426 | make_list_like (char *input) |
424 | make_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 | |
524 | const std::string |
522 | const char * |
525 | format (const char *format, ...) |
523 | format (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 | |
560 | tstamp now () |
537 | tstamp now () |
561 | { |
538 | { |
562 | struct timeval tv; |
539 | struct timeval tv; |
… | |
… | |
630 | 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, |
607 | 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, |
631 | 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, |
608 | 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, |
632 | 0x2d02ef8dL |
609 | 0x2d02ef8dL |
633 | }; |
610 | }; |
634 | |
611 | |
635 | #if 0 |
|
|
636 | void xyzzy (object_ptr &a, object_ptr &o) |
|
|
637 | { |
|
|
638 | asm volatile ("int3"); |
|
|
639 | a = o; |
|
|
640 | asm volatile ("int3"); |
|
|
641 | } |
|
|
642 | #endif |
|
|
643 | |
|
|