Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
326 volume VI os16<br />
Sorgenti della libreria generale 327<br />
2810347 | }<br />
2810348 | else if (format[f] == ’h’)<br />
2810349 | {<br />
2810350 | //------------------------------------------- short.<br />
2810351 | if (format[f+1] == ’d’)<br />
2810352 | {<br />
2810353 | //----------------------- signed short, base 10.<br />
2810354 | value_i = strtointmax (input, &next, 10, width);<br />
2810355 | if (input == next)<br />
2810356 | {<br />
2810357 | return (ass_or_eof (consumed, assigned));<br />
2810358 | }<br />
2810359 | consumed++;<br />
2810360 | if (!flag_star)<br />
2810361 | {<br />
2810362 | ptr_sshort = va_arg (ap, signed short *);<br />
2810363 | *ptr_sshort = value_i;<br />
2810364 | assigned++;<br />
2810365 | }<br />
2810366 | f += 2;<br />
2810367 | input = next;<br />
2810368 | }<br />
2810369 | else if (format[f+1] == ’i’)<br />
2810370 | {<br />
2810371 | //------------------ signed short, base unknown.<br />
2810372 | value_i = strtointmax (input, &next, 0, width);<br />
2810373 | if (input == next)<br />
2810374 | {<br />
2810375 | return (ass_or_eof (consumed, assigned));<br />
2810376 | }<br />
2810377 | consumed++;<br />
2810378 | if (!flag_star)<br />
2810379 | {<br />
2810380 | ptr_sshort = va_arg (ap, signed short *);<br />
2810381 | *ptr_sshort = value_i;<br />
2810382 | assigned++;<br />
2810383 | }<br />
2810384 | f += 2;<br />
2810385 | input = next;<br />
2810386 | }<br />
2810387 | else if (format[f+1] == ’o’)<br />
2810388 | {<br />
2810389 | //------------------------ signed short, base 8.<br />
2810390 | value_i = strtointmax (input, &next, 8, width);<br />
2810391 | if (input == next)<br />
2810392 | {<br />
2810393 | return (ass_or_eof (consumed, assigned));<br />
2810394 | }<br />
2810395 | consumed++;<br />
2810396 | if (!flag_star)<br />
2810397 | {<br />
2810398 | ptr_sshort = va_arg (ap, signed short *);<br />
2810399 | *ptr_sshort = value_i;<br />
2810400 | assigned++;<br />
2810401 | }<br />
2810402 | f += 2;<br />
2810403 | input = next;<br />
2810404 | }<br />
2810405 | else if (format[f+1] == ’u’)<br />
2810406 | {<br />
2810407 | //--------------------- unsigned short, base 10.<br />
2810408 | value_u = strtointmax (input, &next, 10, width);<br />
2810409 | if (input == next)<br />
2810410 | {<br />
2810411 | return (ass_or_eof (consumed, assigned));<br />
2810412 | }<br />
2810413 | consumed++;<br />
2810414 | if (!flag_star)<br />
2810415 | {<br />
2810416 | ptr_ushort = va_arg (ap, unsigned short *);<br />
2810417 | *ptr_ushort = value_u;<br />
2810418 | assigned++;<br />
2810419 | }<br />
2810420 | f += 2;<br />
2810421 | input = next;<br />
2810422 | }<br />
2810423 | else if (format[f+1] == ’x’ || format[f+2] == ’X’)<br />
2810424 | {<br />
2810425 | //----------------------- signed short, base 16.<br />
2810426 | value_i = strtointmax (input, &next, 16, width);<br />
2810427 | if (input == next)<br />
2810428 | {<br />
2810429 | return (ass_or_eof (consumed, assigned));<br />
2810430 | }<br />
2810431 | consumed++;<br />
2810432 | if (!flag_star)<br />
2810433 | {<br />
2810434 | ptr_sshort = va_arg (ap, signed short *);<br />
2810435 | *ptr_sshort = value_i;<br />
2810436 | assigned++;<br />
2810437 | }<br />
2810438 | f += 2;<br />
2810439 | input = next;<br />
2810440 | }<br />
2810441 | else if (format[f+1] == ’n’)<br />
2810442 | {<br />
2810443 | //----------- signed char, string index counter.<br />
2810444 | ptr_sshort = va_arg (ap, signed short *);<br />
2810445 | *ptr_sshort = (signed short)<br />
2810446 | (input - start + scanned);<br />
2810447 | f += 2;<br />
2810448 | }<br />
2810449 | else<br />
2810450 | {<br />
2810451 | //------------ unsupported or unknown specifier.<br />
2810452 | f += 1;<br />
2810453 | }<br />
2810454 | }<br />
2810455 | //------------------------- There is no ‘long long int’.<br />
2810456 | else if (format[f] == ’l’)<br />
2810457 | {<br />
2810458 | //---------------------------------------- long int.<br />
2810459 | if (format[f+1] == ’d’)<br />
2810460 | {<br />
2810461 | //----------------------- signed long, base 10.<br />
2810462 | value_i = strtointmax (input, &next, 10, width);<br />
2810463 | if (input == next)<br />
2810464 | {<br />
2810465 | return (ass_or_eof (consumed, assigned));<br />
2810466 | }<br />
2810467 | consumed++;<br />
2810468 | if (!flag_star)<br />
2810469 | {<br />
2810470 | ptr_slong = va_arg (ap, signed long *);<br />
2810471 | *ptr_slong = value_i;<br />
2810472 | assigned++;<br />
2810473 | }<br />
2810474 | f += 2;<br />
2810475 | input = next;<br />
2810476 | }<br />
2810477 | else if (format[f+1] == ’i’)<br />
2810478 | {<br />
2810479 | //------------------ signed long, base unknown.<br />
2810480 | value_i = strtointmax (input, &next, 0, width);<br />
2810481 | if (input == next)<br />
2810482 | {<br />
2810483 | return (ass_or_eof (consumed, assigned));<br />
2810484 | }<br />
2810485 | consumed++;<br />
2810486 | if (!flag_star)<br />
2810487 | {<br />
2810488 | ptr_slong = va_arg (ap, signed long *);<br />
2810489 | *ptr_slong = value_i;<br />
2810490 | assigned++;<br />
2810491 | }<br />
2810492 | f += 2;<br />
2810493 | input = next;<br />
2810494 | }<br />
2810495 | else if (format[f+1] == ’o’)<br />
2810496 | {<br />
2810497 | //------------------------ signed long, base 8.<br />
2810498 | value_i = strtointmax (input, &next, 8, width);<br />
2810499 | if (input == next)<br />
2810500 | {<br />
2810501 | return (ass_or_eof (consumed, assigned));<br />
2810502 | }<br />
2810503 | consumed++;<br />
2810504 | if (!flag_star)<br />
2810505 | {<br />
2810506 | ptr_slong = va_arg (ap, signed long *);<br />
2810507 | *ptr_slong = value_i;<br />
2810508 | assigned++;<br />
2810509 | }<br />
2810510 | f += 2;<br />
2810511 | input = next;<br />
2810512 | }<br />
2810513 | else if (format[f+1] == ’u’)<br />
2810514 | {<br />
2810515 | //---------------------- unsigned long, base 10.<br />
2810516 | value_u = strtointmax (input, &next, 10, width);<br />
2810517 | if (input == next)<br />
2810518 | {<br />
2810519 | return (ass_or_eof (consumed, assigned));<br />
2810520 | }<br />
2810521 | consumed++;<br />
2810522 | if (!flag_star)<br />
2810523 | {<br />
2810524 | ptr_ulong = va_arg (ap, unsigned long *);<br />
2810525 | *ptr_ulong = value_u;<br />
2810526 | assigned++;<br />
2810527 | }<br />
2810528 | f += 2;<br />
2810529 | input = next;<br />
2810530 | }<br />
2810531 | else if (format[f+1] == ’x’ || format[f+2] == ’X’)<br />
2810532 | {<br />
2810533 | //------------------------ signed long, base 16.<br />
2810534 | value_i = strtointmax (input, &next, 16, width);<br />
2810535 | if (input == next)<br />
2810536 | {<br />
2810537 | return (ass_or_eof (consumed, assigned));<br />
2810538 | }<br />
2810539 | consumed++;<br />
2810540 | if (!flag_star)<br />
2810541 | {<br />
2810542 | ptr_slong = va_arg (ap, signed long *);<br />
2810543 | *ptr_slong = value_i;<br />
2810544 | assigned++;<br />
2810545 | }<br />
2810546 | f += 2;<br />
2810547 | input = next;<br />
2810548 | }<br />
2810549 | else if (format[f+1] == ’n’)<br />
2810550 | {<br />
2810551 | //----------- signed char, string index counter.<br />
2810552 | ptr_slong = va_arg (ap, signed long *);<br />
2810553 | *ptr_slong = (signed long)<br />
2810554 | (input - start + scanned);<br />
2810555 | f += 2;<br />
2810556 | }<br />
2810557 | else<br />
2810558 | {<br />
2810559 | //------------ unsupported or unknown specifier.<br />
2810560 | f += 1;<br />
2810561 | }<br />
2810562 | }<br />
2810563 | else if (format[f] == ’j’)<br />
2810564 | {<br />
2810565 | //---------------------------------------- intmax_t.<br />
2810566 | if (format[f+1] == ’d’)<br />
2810567 | {<br />
2810568 | //--------------------------- intmax_t, base 10.<br />
2810569 | value_i = strtointmax (input, &next, 10, width);<br />
2810570 | if (input == next)<br />
2810571 | {<br />
2810572 | return (ass_or_eof (consumed, assigned));<br />
2810573 | }<br />
2810574 | consumed++;<br />
2810575 | if (!flag_star)<br />
2810576 | {<br />
2810577 | ptr_simax = va_arg (ap, intmax_t *);<br />
2810578 | *ptr_simax = value_i;