| 528 | | switch (*w) { |
|---|
| 529 | | case 'x': |
|---|
| 530 | | case 'X': |
|---|
| 531 | | include_suffix = 1; |
|---|
| 532 | | w++; |
|---|
| 533 | | break; |
|---|
| 534 | | case 'z': |
|---|
| 535 | | case 'Z': |
|---|
| 536 | | even_if_0 = 0; |
|---|
| 537 | | w++; |
|---|
| 538 | | break; |
|---|
| 539 | | case '$': |
|---|
| 540 | | in_format_flags = 0; |
|---|
| 541 | | if (pad) |
|---|
| 542 | | safe_format(buff, bp, "%*c", width, '$'); |
|---|
| 543 | | else |
|---|
| 544 | | safe_chr('$', buff, bp); |
|---|
| 545 | | break; |
|---|
| 546 | | case 's': |
|---|
| 547 | | in_format_flags = 0; |
|---|
| 548 | | if (secs || even_if_0) { |
|---|
| 549 | | if (pad) |
|---|
| 550 | | safe_format(buff, bp, "%*lu", width, secs); |
|---|
| 551 | | else |
|---|
| 552 | | safe_uinteger(secs, buff, bp); |
|---|
| 553 | | if (include_suffix) |
|---|
| 554 | | safe_chr('s', buff, bp); |
|---|
| 555 | | } else if (pad) |
|---|
| 556 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 557 | | break; |
|---|
| 558 | | case 'S': |
|---|
| 559 | | in_format_flags = 0; |
|---|
| 560 | | if (secs || even_if_0) { |
|---|
| 561 | | if (pad) |
|---|
| 562 | | safe_format(buff, bp, "%0*lu", width, secs); |
|---|
| 563 | | else |
|---|
| 564 | | safe_format(buff, bp, "%0lu", secs); |
|---|
| 565 | | if (include_suffix) |
|---|
| 566 | | safe_chr('s', buff, bp); |
|---|
| 567 | | } else if (pad) |
|---|
| 568 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 569 | | break; |
|---|
| 570 | | case 'm': |
|---|
| 571 | | in_format_flags = 0; |
|---|
| 572 | | if (mins || even_if_0) { |
|---|
| 573 | | if (pad) |
|---|
| 574 | | safe_format(buff, bp, "%*d", width, mins); |
|---|
| 575 | | else |
|---|
| 576 | | safe_integer(mins, buff, bp); |
|---|
| 577 | | if (include_suffix) |
|---|
| 578 | | safe_chr('m', buff, bp); |
|---|
| 579 | | } else if (pad) |
|---|
| 580 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 581 | | break; |
|---|
| 582 | | case 'M': |
|---|
| 583 | | in_format_flags = 0; |
|---|
| 584 | | if (mins || even_if_0) { |
|---|
| 585 | | if (pad) |
|---|
| 586 | | safe_format(buff, bp, "%0*d", width, mins); |
|---|
| 587 | | else |
|---|
| 588 | | safe_format(buff, bp, "%0d", mins); |
|---|
| 589 | | if (include_suffix) |
|---|
| 590 | | safe_chr('m', buff, bp); |
|---|
| 591 | | } else if (pad) |
|---|
| 592 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 593 | | break; |
|---|
| 594 | | case 'h': |
|---|
| 595 | | in_format_flags = 0; |
|---|
| 596 | | if (hours || even_if_0) { |
|---|
| 597 | | if (pad) |
|---|
| 598 | | safe_format(buff, bp, "%*d", width, hours); |
|---|
| 599 | | else |
|---|
| 600 | | safe_integer(hours, buff, bp); |
|---|
| 601 | | if (include_suffix) |
|---|
| 602 | | safe_chr('h', buff, bp); |
|---|
| 603 | | } else if (pad) |
|---|
| 604 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 605 | | break; |
|---|
| 606 | | case 'H': |
|---|
| 607 | | in_format_flags = 0; |
|---|
| 608 | | if (hours || even_if_0) { |
|---|
| 609 | | if (pad) |
|---|
| 610 | | safe_format(buff, bp, "%0*d", width, hours); |
|---|
| 611 | | else |
|---|
| 612 | | safe_format(buff, bp, "%0d", hours); |
|---|
| 613 | | if (include_suffix) |
|---|
| 614 | | safe_chr('h', buff, bp); |
|---|
| 615 | | } else if (pad) |
|---|
| 616 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 617 | | break; |
|---|
| 618 | | case 'd': |
|---|
| 619 | | in_format_flags = 0; |
|---|
| 620 | | if (days || even_if_0) { |
|---|
| 621 | | if (pad) |
|---|
| 622 | | safe_format(buff, bp, "%*d", width, days); |
|---|
| 623 | | else |
|---|
| 624 | | safe_integer(days, buff, bp); |
|---|
| 625 | | if (include_suffix) |
|---|
| 626 | | safe_chr('d', buff, bp); |
|---|
| 627 | | } else if (pad) |
|---|
| 628 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 629 | | break; |
|---|
| 630 | | case 'D': |
|---|
| 631 | | in_format_flags = 0; |
|---|
| 632 | | if (days || even_if_0) { |
|---|
| 633 | | if (pad) |
|---|
| 634 | | safe_format(buff, bp, "%0*d", width, days); |
|---|
| 635 | | else |
|---|
| 636 | | safe_format(buff, bp, "%0d", days); |
|---|
| 637 | | if (include_suffix) |
|---|
| 638 | | safe_chr('d', buff, bp); |
|---|
| 639 | | } else if (pad) |
|---|
| 640 | | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| 641 | | break; |
|---|
| 642 | | default: |
|---|
| 643 | | in_format_flags = 0; |
|---|
| 644 | | safe_chr('$', buff, bp); |
|---|
| 645 | | for (; c != w; c++) |
|---|
| 646 | | safe_chr(*c, buff, bp); |
|---|
| 647 | | safe_chr(*c, buff, bp); |
|---|
| 648 | | } |
|---|
| | 529 | switch (*w) { |
|---|
| | 530 | case 'x': |
|---|
| | 531 | case 'X': |
|---|
| | 532 | include_suffix = 1; |
|---|
| | 533 | w++; |
|---|
| | 534 | break; |
|---|
| | 535 | case 'z': |
|---|
| | 536 | case 'Z': |
|---|
| | 537 | even_if_0 = 0; |
|---|
| | 538 | w++; |
|---|
| | 539 | break; |
|---|
| | 540 | case '$': |
|---|
| | 541 | in_format_flags = 0; |
|---|
| | 542 | if (pad) |
|---|
| | 543 | safe_format(buff, bp, "%*c", width, '$'); |
|---|
| | 544 | else |
|---|
| | 545 | safe_chr('$', buff, bp); |
|---|
| | 546 | break; |
|---|
| | 547 | case 's': |
|---|
| | 548 | in_format_flags = 0; |
|---|
| | 549 | if (secs || even_if_0) { |
|---|
| | 550 | if (pad) |
|---|
| | 551 | safe_format(buff, bp, "%*lu", width, secs); |
|---|
| | 552 | else |
|---|
| | 553 | safe_uinteger(secs, buff, bp); |
|---|
| | 554 | if (include_suffix) |
|---|
| | 555 | safe_chr('s', buff, bp); |
|---|
| | 556 | } else if (pad) |
|---|
| | 557 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 558 | break; |
|---|
| | 559 | case 'S': |
|---|
| | 560 | in_format_flags = 0; |
|---|
| | 561 | if (secs || even_if_0) { |
|---|
| | 562 | if (pad) |
|---|
| | 563 | safe_format(buff, bp, "%0*lu", width, secs); |
|---|
| | 564 | else |
|---|
| | 565 | safe_format(buff, bp, "%0lu", secs); |
|---|
| | 566 | if (include_suffix) |
|---|
| | 567 | safe_chr('s', buff, bp); |
|---|
| | 568 | } else if (pad) |
|---|
| | 569 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 570 | break; |
|---|
| | 571 | case 'm': |
|---|
| | 572 | in_format_flags = 0; |
|---|
| | 573 | if (mins || even_if_0) { |
|---|
| | 574 | if (pad) |
|---|
| | 575 | safe_format(buff, bp, "%*lu", width, mins); |
|---|
| | 576 | else |
|---|
| | 577 | safe_uinteger(mins, buff, bp); |
|---|
| | 578 | if (include_suffix) |
|---|
| | 579 | safe_chr('m', buff, bp); |
|---|
| | 580 | } else if (pad) |
|---|
| | 581 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 582 | break; |
|---|
| | 583 | case 'M': |
|---|
| | 584 | in_format_flags = 0; |
|---|
| | 585 | if (mins || even_if_0) { |
|---|
| | 586 | if (pad) |
|---|
| | 587 | safe_format(buff, bp, "%0*lu", width, mins); |
|---|
| | 588 | else |
|---|
| | 589 | safe_format(buff, bp, "%0lu", mins); |
|---|
| | 590 | if (include_suffix) |
|---|
| | 591 | safe_chr('m', buff, bp); |
|---|
| | 592 | } else if (pad) |
|---|
| | 593 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 594 | break; |
|---|
| | 595 | case 'h': |
|---|
| | 596 | in_format_flags = 0; |
|---|
| | 597 | if (hours || even_if_0) { |
|---|
| | 598 | if (pad) |
|---|
| | 599 | safe_format(buff, bp, "%*lu", width, hours); |
|---|
| | 600 | else |
|---|
| | 601 | safe_uinteger(hours, buff, bp); |
|---|
| | 602 | if (include_suffix) |
|---|
| | 603 | safe_chr('h', buff, bp); |
|---|
| | 604 | } else if (pad) |
|---|
| | 605 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 606 | break; |
|---|
| | 607 | case 'H': |
|---|
| | 608 | in_format_flags = 0; |
|---|
| | 609 | if (hours || even_if_0) { |
|---|
| | 610 | if (pad) |
|---|
| | 611 | safe_format(buff, bp, "%0*lu", width, hours); |
|---|
| | 612 | else |
|---|
| | 613 | safe_format(buff, bp, "%0lu", hours); |
|---|
| | 614 | if (include_suffix) |
|---|
| | 615 | safe_chr('h', buff, bp); |
|---|
| | 616 | } else if (pad) |
|---|
| | 617 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 618 | break; |
|---|
| | 619 | case 'd': |
|---|
| | 620 | in_format_flags = 0; |
|---|
| | 621 | if (days || even_if_0) { |
|---|
| | 622 | if (pad) |
|---|
| | 623 | safe_format(buff, bp, "%*lu", width, days); |
|---|
| | 624 | else |
|---|
| | 625 | safe_uinteger(days, buff, bp); |
|---|
| | 626 | if (include_suffix) |
|---|
| | 627 | safe_chr('d', buff, bp); |
|---|
| | 628 | } else if (pad) |
|---|
| | 629 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 630 | break; |
|---|
| | 631 | case 'D': |
|---|
| | 632 | in_format_flags = 0; |
|---|
| | 633 | if (days || even_if_0) { |
|---|
| | 634 | if (pad) |
|---|
| | 635 | safe_format(buff, bp, "%0*lu", width, days); |
|---|
| | 636 | else |
|---|
| | 637 | safe_format(buff, bp, "%0lu", days); |
|---|
| | 638 | if (include_suffix) |
|---|
| | 639 | safe_chr('d', buff, bp); |
|---|
| | 640 | } else if (pad) |
|---|
| | 641 | safe_fill(' ', width + (include_suffix ? 1 : 0), buff, bp); |
|---|
| | 642 | break; |
|---|
| | 643 | default: |
|---|
| | 644 | in_format_flags = 0; |
|---|
| | 645 | safe_chr('$', buff, bp); |
|---|
| | 646 | for (; c != w; c++) |
|---|
| | 647 | safe_chr(*c, buff, bp); |
|---|
| | 648 | safe_chr(*c, buff, bp); |
|---|
| | 649 | } |
|---|