24.01.2014 Views

Codice

Codice

Codice

SHOW MORE
SHOW LESS

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++;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!