Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
328 volume VI os16<br />
Sorgenti della libreria generale 329<br />
2810579 | assigned++;<br />
2810580 | }<br />
2810581 | f += 2;<br />
2810582 | input = next;<br />
2810583 | }<br />
2810584 | else if (format[f+1] == ’i’)<br />
2810585 | {<br />
2810586 | //---------------------- intmax_t, base unknown.<br />
2810587 | value_i = strtointmax (input, &next, 0, width);<br />
2810588 | if (input == next)<br />
2810589 | {<br />
2810590 | return (ass_or_eof (consumed, assigned));<br />
2810591 | }<br />
2810592 | consumed++;<br />
2810593 | if (!flag_star)<br />
2810594 | {<br />
2810595 | ptr_simax = va_arg (ap, intmax_t *);<br />
2810596 | *ptr_simax = value_i;<br />
2810597 | assigned++;<br />
2810598 | }<br />
2810599 | f += 2;<br />
2810600 | input = next;<br />
2810601 | }<br />
2810602 | else if (format[f+1] == ’o’)<br />
2810603 | {<br />
2810604 | //---------------------------- intmax_t, base 8.<br />
2810605 | value_i = strtointmax (input, &next, 8, width);<br />
2810606 | if (input == next)<br />
2810607 | {<br />
2810608 | return (ass_or_eof (consumed, assigned));<br />
2810609 | }<br />
2810610 | consumed++;<br />
2810611 | if (!flag_star)<br />
2810612 | {<br />
2810613 | ptr_simax = va_arg (ap, intmax_t *);<br />
2810614 | *ptr_simax = value_i;<br />
2810615 | assigned++;<br />
2810616 | }<br />
2810617 | f += 2;<br />
2810618 | input = next;<br />
2810619 | }<br />
2810620 | else if (format[f+1] == ’u’)<br />
2810621 | {<br />
2810622 | //-------------------------- uintmax_t, base 10.<br />
2810623 | value_u = strtointmax (input, &next, 10, width);<br />
2810624 | if (input == next)<br />
2810625 | {<br />
2810626 | return (ass_or_eof (consumed, assigned));<br />
2810627 | }<br />
2810628 | consumed++;<br />
2810629 | if (!flag_star)<br />
2810630 | {<br />
2810631 | ptr_uimax = va_arg (ap, uintmax_t *);<br />
2810632 | *ptr_uimax = value_u;<br />
2810633 | assigned++;<br />
2810634 | }<br />
2810635 | f += 2;<br />
2810636 | input = next;<br />
2810637 | }<br />
2810638 | else if (format[f+1] == ’x’ || format[f+2] == ’X’)<br />
2810639 | {<br />
2810640 | //--------------------------- intmax_t, base 16.<br />
2810641 | value_i = strtointmax (input, &next, 16, width);<br />
2810642 | if (input == next)<br />
2810643 | {<br />
2810644 | return (ass_or_eof (consumed, assigned));<br />
2810645 | }<br />
2810646 | consumed++;<br />
2810647 | if (!flag_star)<br />
2810648 | {<br />
2810649 | ptr_simax = va_arg (ap, intmax_t *);<br />
2810650 | *ptr_simax = value_i;<br />
2810651 | assigned++;<br />
2810652 | }<br />
2810653 | f += 2;<br />
2810654 | input = next;<br />
2810655 | }<br />
2810656 | else if (format[f+1] == ’n’)<br />
2810657 | {<br />
2810658 | //----------- signed char, string index counter.<br />
2810659 | ptr_simax = va_arg (ap, intmax_t *);<br />
2810660 | *ptr_simax = (intmax_t)<br />
2810661 | (input - start + scanned);<br />
2810662 | f += 2;<br />
2810663 | }<br />
2810664 | else<br />
2810665 | {<br />
2810666 | //------------ unsupported or unknown specifier.<br />
2810667 | f += 1;<br />
2810668 | }<br />
2810669 | }<br />
2810670 | else if (format[f] == ’z’)<br />
2810671 | {<br />
2810672 | //------------------------------------------ size_t.<br />
2810673 | if (format[f+1] == ’d’)<br />
2810674 | {<br />
2810675 | //----------------------------- size_t, base 10.<br />
2810676 | value_i = strtointmax (input, &next, 10, width);<br />
2810677 | if (input == next)<br />
2810678 | {<br />
2810679 | return (ass_or_eof (consumed, assigned));<br />
2810680 | }<br />
2810681 | consumed++;<br />
2810682 | if (!flag_star)<br />
2810683 | {<br />
2810684 | ptr_size = va_arg (ap, size_t *);<br />
2810685 | *ptr_size = value_i;<br />
2810686 | assigned++;<br />
2810687 | }<br />
2810688 | f += 2;<br />
2810689 | input = next;<br />
2810690 | }<br />
2810691 | else if (format[f+1] == ’i’)<br />
2810692 | {<br />
2810693 | //------------------------ size_t, base unknown.<br />
2810694 | value_i = strtointmax (input, &next, 0, width);<br />
2810695 | if (input == next)<br />
2810696 | {<br />
2810697 | return (ass_or_eof (consumed, assigned));<br />
2810698 | }<br />
2810699 | consumed++;<br />
2810700 | if (!flag_star)<br />
2810701 | {<br />
2810702 | ptr_size = va_arg (ap, size_t *);<br />
2810703 | *ptr_size = value_i;<br />
2810704 | assigned++;<br />
2810705 | }<br />
2810706 | f += 2;<br />
2810707 | input = next;<br />
2810708 | }<br />
2810709 | else if (format[f+1] == ’o’)<br />
2810710 | {<br />
2810711 | //------------------------------ size_t, base 8.<br />
2810712 | value_i = strtointmax (input, &next, 8, width);<br />
2810713 | if (input == next)<br />
2810714 | {<br />
2810715 | return (ass_or_eof (consumed, assigned));<br />
2810716 | }<br />
2810717 | consumed++;<br />
2810718 | if (!flag_star)<br />
2810719 | {<br />
2810720 | ptr_size = va_arg (ap, size_t *);<br />
2810721 | *ptr_size = value_i;<br />
2810722 | assigned++;<br />
2810723 | }<br />
2810724 | f += 2;<br />
2810725 | input = next;<br />
2810726 | }<br />
2810727 | else if (format[f+1] == ’u’)<br />
2810728 | {<br />
2810729 | //----------------------------- size_t, base 10.<br />
2810730 | value_u = strtointmax (input, &next, 10, width);<br />
2810731 | if (input == next)<br />
2810732 | {<br />
2810733 | return (ass_or_eof (consumed, assigned));<br />
2810734 | }<br />
2810735 | consumed++;<br />
2810736 | if (!flag_star)<br />
2810737 | {<br />
2810738 | ptr_size = va_arg (ap, size_t *);<br />
2810739 | *ptr_size = value_u;<br />
2810740 | assigned++;<br />
2810741 | }<br />
2810742 | f += 2;<br />
2810743 | input = next;<br />
2810744 | }<br />
2810745 | else if (format[f+1] == ’x’ || format[f+2] == ’X’)<br />
2810746 | {<br />
2810747 | //----------------------------- size_t, base 16.<br />
2810748 | value_i = strtointmax (input, &next, 16, width);<br />
2810749 | if (input == next)<br />
2810750 | {<br />
2810751 | return (ass_or_eof (consumed, assigned));<br />
2810752 | }<br />
2810753 | consumed++;<br />
2810754 | if (!flag_star)<br />
2810755 | {<br />
2810756 | ptr_size = va_arg (ap, size_t *);<br />
2810757 | *ptr_size = value_i;<br />
2810758 | assigned++;<br />
2810759 | }<br />
2810760 | f += 2;<br />
2810761 | input = next;<br />
2810762 | }<br />
2810763 | else if (format[f+1] == ’n’)<br />
2810764 | {<br />
2810765 | //----------- signed char, string index counter.<br />
2810766 | ptr_size = va_arg (ap, size_t *);<br />
2810767 | *ptr_size = (size_t) (input - start + scanned);<br />
2810768 | f += 2;<br />
2810769 | }<br />
2810770 | else<br />
2810771 | {<br />
2810772 | //------------ unsupported or unknown specifier.<br />
2810773 | f += 1;<br />
2810774 | }<br />
2810775 | }<br />
2810776 | else if (format[f] == ’t’)<br />
2810777 | {<br />
2810778 | //--------------------------------------- ptrdiff_t.<br />
2810779 | if (format[f+1] == ’d’)<br />
2810780 | {<br />
2810781 | //-------------------------- ptrdiff_t, base 10.<br />
2810782 | value_i = strtointmax (input, &next, 10, width);<br />
2810783 | if (input == next)<br />
2810784 | {<br />
2810785 | return (ass_or_eof (consumed, assigned));<br />
2810786 | }<br />
2810787 | consumed++;<br />
2810788 | if (!flag_star)<br />
2810789 | {<br />
2810790 | ptr_ptrdiff = va_arg (ap, ptrdiff_t *);<br />
2810791 | *ptr_ptrdiff = value_i;<br />
2810792 | assigned++;<br />
2810793 | }<br />
2810794 | f += 2;<br />
2810795 | input = next;<br />
2810796 | }<br />
2810797 | else if (format[f+1] == ’i’)<br />
2810798 | {<br />
2810799 | //--------------------- ptrdiff_t, base unknown.<br />
2810800 | value_i = strtointmax (input, &next, 0, width);<br />
2810801 | if (input == next)<br />
2810802 | {<br />
2810803 | return (ass_or_eof (consumed, assigned));<br />
2810804 | }<br />
2810805 | consumed++;<br />
2810806 | if (!flag_star)<br />
2810807 | {<br />
2810808 | ptr_ptrdiff = va_arg (ap, ptrdiff_t *);<br />
2810809 | *ptr_ptrdiff = value_i;<br />
2810810 | assigned++;