diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-27 14:43:21 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-27 14:43:21 +0000 |
commit | d686a045c8134d3a42fa5cc6b2e09118e08d603f (patch) | |
tree | 38f509fc9556f68f758c77b06b480cc33b2725eb /include/libbb.h | |
parent | 8a0a83d503a7971895254efa9e79cf15ba1850d4 (diff) | |
download | busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.tar.gz busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.tar.bz2 busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.zip |
safe_strtoXX interface proved to be a bit unconvenient.
Remove it, introduce saner bb_strtoXX.
Saved ~350 bytes.
Diffstat (limited to 'include/libbb.h')
-rw-r--r-- | include/libbb.h | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/include/libbb.h b/include/libbb.h index e93031231..63748c85d 100644 --- a/include/libbb.h +++ b/include/libbb.h | |||
@@ -85,30 +85,31 @@ | |||
85 | /* CONFIG_LFS is on */ | 85 | /* CONFIG_LFS is on */ |
86 | # if ULONG_MAX > 0xffffffff | 86 | # if ULONG_MAX > 0xffffffff |
87 | /* "long" is long enough on this system */ | 87 | /* "long" is long enough on this system */ |
88 | # define STRTOOFF strtol | 88 | # define XSTRTOOFF xstrtoul |
89 | # define SAFE_STRTOOFF safe_strtol | 89 | /* usage: sz = BB_STRTOOFF(s, NULL, 10); if (errno || sz < 0) die(); */ |
90 | # define XSTRTOUOFF xstrtoul | 90 | # define BB_STRTOOFF bb_strtoul |
91 | # define STRTOOFF strtoul | ||
91 | /* usage: printf("size: %"OFF_FMT"d (%"OFF_FMT"x)\n", sz, sz); */ | 92 | /* usage: printf("size: %"OFF_FMT"d (%"OFF_FMT"x)\n", sz, sz); */ |
92 | # define OFF_FMT "l" | 93 | # define OFF_FMT "l" |
93 | # else | 94 | # else |
94 | /* "long" is too short, need "long long" */ | 95 | /* "long" is too short, need "long long" */ |
95 | # define STRTOOFF strtoll | 96 | # define XSTRTOOFF xstrtoull |
96 | # define SAFE_STRTOOFF safe_strtoll | 97 | # define BB_STRTOOFF bb_strtoull |
97 | # define XSTRTOUOFF xstrtoull | 98 | # define STRTOOFF strtoull |
98 | # define OFF_FMT "ll" | 99 | # define OFF_FMT "ll" |
99 | # endif | 100 | # endif |
100 | #else | 101 | #else |
101 | # if 0 /* #if UINT_MAX == 0xffffffff */ | 102 | # if 0 /* #if UINT_MAX == 0xffffffff */ |
102 | /* Doesn't work. off_t is a long. gcc will throw warnings on printf("%d", off_t) | 103 | /* Doesn't work. off_t is a long. gcc will throw warnings on printf("%d", off_t) |
103 | * even if long==int on this arch. Crap... */ | 104 | * even if long==int on this arch. Crap... */ |
105 | # define XSTRTOOFF xstrtou | ||
106 | # define BB_STRTOOFF bb_strtoi | ||
104 | # define STRTOOFF strtol | 107 | # define STRTOOFF strtol |
105 | # define SAFE_STRTOOFF safe_strtoi | ||
106 | # define XSTRTOUOFF xstrtou | ||
107 | # define OFF_FMT "" | 108 | # define OFF_FMT "" |
108 | # else | 109 | # else |
110 | # define XSTRTOOFF xstrtoul | ||
111 | # define BB_STRTOOFF bb_strtol | ||
109 | # define STRTOOFF strtol | 112 | # define STRTOOFF strtol |
110 | # define SAFE_STRTOOFF safe_strtol | ||
111 | # define XSTRTOUOFF xstrtoul | ||
112 | # define OFF_FMT "l" | 113 | # define OFF_FMT "l" |
113 | # endif | 114 | # endif |
114 | #endif | 115 | #endif |
@@ -299,18 +300,6 @@ extern char *utoa(unsigned n); | |||
299 | extern void itoa_to_buf(int n, char *buf, unsigned buflen); | 300 | extern void itoa_to_buf(int n, char *buf, unsigned buflen); |
300 | extern char *itoa(int n); | 301 | extern char *itoa(int n); |
301 | 302 | ||
302 | // FIXME: the prototype doesn't match libc strtoXX -> confusion | ||
303 | // FIXME: alot of unchecked strtoXXX are still in tree | ||
304 | // FIXME: atoi_or_else(str, N)? | ||
305 | extern int safe_strtoi(const char *arg, int* value); | ||
306 | extern int safe_strtou(const char *arg, unsigned* value); | ||
307 | extern int safe_strtod(const char *arg, double* value); | ||
308 | extern int safe_strtol(const char *arg, long* value); | ||
309 | extern int safe_strtoll(const char *arg, long long* value); | ||
310 | extern int safe_strtoul(const char *arg, unsigned long* value); | ||
311 | extern int safe_strtoull(const char *arg, unsigned long long* value); | ||
312 | extern int safe_strtou32(const char *arg, uint32_t* value); | ||
313 | |||
314 | struct suffix_mult { | 303 | struct suffix_mult { |
315 | const char *suffix; | 304 | const char *suffix; |
316 | unsigned mult; | 305 | unsigned mult; |