1 | /***************************************
2 | $Revision: 1.3 $
3 |
4 | Utilities (ut). numconv.c - library for fast numerical conversions
5 | (to[?]/from string).
6 |
7 | Status: NOT REVUED, TESTED,
8 |
9 | Design and implementation by: Marek Bukowy
10 |
11 | ******************/ /******************
12 | Copyright (c) 1999 RIPE NCC
13 |
14 | All Rights Reserved
15 |
16 | Permission to use, copy, modify, and distribute this software and its
17 | documentation for any purpose and without fee is hereby granted,
18 | provided that the above copyright notice appear in all copies and that
19 | both that copyright notice and this permission notice appear in
20 | supporting documentation, and that the name of the author not be
21 | used in advertising or publicity pertaining to distribution of the
22 | software without specific, written prior permission.
23 |
24 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
25 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
26 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
27 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
28 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
29 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30 | ***************************************/
31 |
32 | #include <ctype.h>
33 |
34 | /* converts QUICKLY a string to integer value, stops when encounters a
35 | whitespace. All it expects is an UNSIGNED INTEGER value,
36 | so in case it gets a non-digit (and non-whitespace) character it returns -1
37 |
38 | if everything looks fine, it return 0. The converted unsigned int is placed
39 | into *result;
40 | */
41 |
42 | int
43 | ut_dec_2_uns(char *cpy, unsigned *result)
44 | {
45 | register unsigned val=0;
46 | register char *ch=cpy;
47 |
48 | while( *ch != '\0') {
49 | if ( isspace(*ch)) {
50 | break;
51 | }
52 |
53 | if ( ! isdigit(*ch)) {
54 | return -1;
55 | }
56 |
57 | val *= 10;
58 | val += ( *ch - '0' );
59 | ch++;
60 | }
61 |
62 | *result = val;
63 | return 0;
64 | }
65 |
66 |
67 | /* this may be faster than sprintfs...
68 | convert an unsigned int to text, store it in buf (len chars long)
69 | starting FROM THE END.
70 | */
71 |
72 | int uns_2_dec(unsigned val, char *buf, int len)
73 | {
74 | }