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.

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;

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

Saved successfully!

Ooh no, something went wrong!