Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | | - |
20 | | - |
21 | | - |
22 | #include "config.h" | - |
23 | | - |
24 | #include "bashtypes.h" | - |
25 | | - |
26 | #if defined (TIME_WITH_SYS_TIME) | - |
27 | # include <sys/time.h> | - |
28 | # include <time.h> | - |
29 | #else | - |
30 | # if defined (HAVE_SYS_TIME_H) | - |
31 | # include <sys/time.h> | - |
32 | # else | - |
33 | # include <time.h> | - |
34 | # endif | - |
35 | #endif | - |
36 | | - |
37 | #if defined (HAVE_UNISTD_H) | - |
38 | #include <unistd.h> | - |
39 | #endif | - |
40 | | - |
41 | #include <stdio.h> | - |
42 | #include "chartypes.h" | - |
43 | | - |
44 | #include "shell.h" | - |
45 | #include "builtins.h" | - |
46 | | - |
47 | #define DECIMAL '.' /* XXX - should use locale */ | - |
48 | | - |
49 | #define RETURN(x) \ | - |
50 | do { \ | - |
51 | if (ip) *ip = ipart * mult; \ | - |
52 | if (up) *up = upart; \ | - |
53 | return (x); \ | - |
54 | } while (0) | - |
55 | | - |
56 | | - |
57 | | - |
58 | | - |
59 | static int multiplier[7] = { 1, 100000, 10000, 1000, 100, 10, 1 }; | - |
60 | | - |
61 | | - |
62 | | - |
63 | | - |
64 | | - |
65 | | - |
66 | int | - |
67 | uconvert(s, ip, up) | - |
68 | char *s; | - |
69 | long *ip, *up; | - |
70 | { | - |
71 | int n, mult; | - |
72 | long ipart, upart; | - |
73 | char *p; | - |
74 | | - |
75 | ipart = upart = 0; | - |
76 | mult = 1; | - |
77 | | - |
78 | if (s && (*s == '-' || *s == '+'))TRUE | evaluated 6 times by 1 test | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 6 times by 1 test |
TRUE | never evaluated | FALSE | evaluated 6 times by 1 test |
| 0-6 |
79 | { | - |
80 | mult = (*s == '-') ? -1 : 1;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
81 | p = s + 1; | - |
82 | } never executed: end of block | 0 |
83 | else | - |
84 | p = s;executed 6 times by 1 test: p = s; | 6 |
85 | | - |
86 | for ( ; p && *p; p++)TRUE | evaluated 11 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 6 times by 1 test | FALSE | evaluated 5 times by 1 test |
| 0-11 |
87 | { | - |
88 | if (*p == DECIMAL) TRUE | never evaluated | FALSE | evaluated 6 times by 1 test |
| 0-6 |
89 | break; never executed: break; | 0 |
90 | if (DIGIT(*p) == 0)TRUE | evaluated 1 time by 1 test | FALSE | evaluated 5 times by 1 test |
TRUE | evaluated 6 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 5 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-6 |
91 | RETURN(0);executed 1 time by 1 test: *ip = ipart * mult; executed 1 time by 1 test: *up = upart; executed 1 time by 1 test: return (0); never executed: end of block TRUE | evaluated 1 time by 1 test | FALSE | never evaluated |
TRUE | evaluated 1 time by 1 test | FALSE | never evaluated |
| 0-1 |
92 | ipart = (ipart * 10) + (*p - '0'); | - |
93 | }executed 5 times by 1 test: end of block | 5 |
94 | | - |
95 | if (p == 0 || *p == 0) TRUE | never evaluated | FALSE | evaluated 5 times by 1 test |
TRUE | evaluated 5 times by 1 test | FALSE | never evaluated |
| 0-5 |
96 | RETURN(1);executed 5 times by 1 test: *ip = ipart * mult; executed 5 times by 1 test: *up = upart; executed 5 times by 1 test: return (1); never executed: end of block TRUE | evaluated 5 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 5 times by 1 test | FALSE | never evaluated |
| 0-5 |
97 | | - |
98 | if (*p == DECIMAL)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
99 | p++; never executed: p++; | 0 |
100 | | - |
101 | | - |
102 | for (n = 0; n < 6 && p[n]; n++)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
103 | { | - |
104 | if (DIGIT(p[n]) == 0)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
105 | RETURN(0); never executed: *ip = ipart * mult; never executed: *up = upart; never executed: return (0); never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
106 | upart = (upart * 10) + (p[n] - '0'); | - |
107 | } never executed: end of block | 0 |
108 | | - |
109 | | - |
110 | upart *= multiplier[n]; | - |
111 | | - |
112 | if (n == 6 && p[6] >= '5' && p[6] <= '9')TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
113 | upart++; never executed: upart++; | 0 |
114 | | - |
115 | RETURN(1); never executed: *ip = ipart * mult; never executed: *up = upart; never executed: return (1); TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
116 | } | - |
| | |