* Convert a str into signed integer */
| 765 | * Convert a str into signed integer |
| 766 | */ |
| 767 | static inline int str2sint(const str* _s, int* _r) |
| 768 | { |
| 769 | int i; |
| 770 | int s; |
| 771 | |
| 772 | if (_s==0 || _s->s == 0 || _s->len == 0 || _r == 0) |
| 773 | return -1; |
| 774 | |
| 775 | *_r = 0; |
| 776 | s = 1; |
| 777 | i=0; |
| 778 | if(_s->s[i]=='-') { |
| 779 | s=-1; |
| 780 | i++; |
| 781 | } else if (_s->s[i]=='+') { |
| 782 | i++; |
| 783 | } |
| 784 | for(; i < _s->len; i++) { |
| 785 | if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) { |
| 786 | *_r *= 10; |
| 787 | *_r += _s->s[i] - '0'; |
| 788 | } else { |
| 789 | //Preserve sign for partially converted strings |
| 790 | *_r *= s; |
| 791 | return -1; |
| 792 | } |
| 793 | } |
| 794 | *_r *= s; |
| 795 | return 0; |
| 796 | } |
| 797 | |
| 798 | |
| 799 | /* |
no outgoing calls
no test coverage detected