diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-10-08 12:49:22 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-10-08 12:49:22 +0000 |
commit | 1385899416a4396385ad421ae1f532be7103738a (patch) | |
tree | fc4d14a910593d1235318bb36abe5e9f72d2039e /include/libbb.h | |
parent | 5625415085e68ac5e150f54e685417c866620d76 (diff) | |
download | busybox-w32-1385899416a4396385ad421ae1f532be7103738a.tar.gz busybox-w32-1385899416a4396385ad421ae1f532be7103738a.tar.bz2 busybox-w32-1385899416a4396385ad421ae1f532be7103738a.zip |
attempt to regularize atoi mess.
Diffstat (limited to 'include/libbb.h')
-rw-r--r-- | include/libbb.h | 68 |
1 files changed, 45 insertions, 23 deletions
diff --git a/include/libbb.h b/include/libbb.h index 11e1e62d9..a7c770400 100644 --- a/include/libbb.h +++ b/include/libbb.h | |||
@@ -267,46 +267,68 @@ extern void *xmalloc(size_t size); | |||
267 | extern void *xrealloc(void *old, size_t size); | 267 | extern void *xrealloc(void *old, size_t size); |
268 | extern void *xzalloc(size_t size); | 268 | extern void *xzalloc(size_t size); |
269 | 269 | ||
270 | extern char *xstrdup (const char *s); | 270 | extern char *xstrdup(const char *s); |
271 | extern char *xstrndup (const char *s, int n); | 271 | extern char *xstrndup(const char *s, int n); |
272 | extern char *safe_strncpy(char *dst, const char *src, size_t size); | 272 | extern char *safe_strncpy(char *dst, const char *src, size_t size); |
273 | extern int safe_strtoi(char *arg, int* value); | 273 | // FIXME: the prototype doesn't match libc strtoXX -> confusion |
274 | extern int safe_strtod(char *arg, double* value); | 274 | // FIXME: alot of unchecked strtoXXX are still in tree |
275 | extern int safe_strtol(char *arg, long* value); | 275 | // FIXME: atoi_or_else(str, N)? |
276 | extern int safe_strtoll(char *arg, long long* value); | 276 | extern int safe_strtoi(const char *arg, int* value); |
277 | extern int safe_strtoul(char *arg, unsigned long* value); | 277 | extern int safe_strtou(const char *arg, unsigned* value); |
278 | extern int safe_strtoull(char *arg, unsigned long long* value); | 278 | extern int safe_strtod(const char *arg, double* value); |
279 | extern int safe_strtol(const char *arg, long* value); | ||
280 | extern int safe_strtoll(const char *arg, long long* value); | ||
281 | extern int safe_strtoul(const char *arg, unsigned long* value); | ||
282 | extern int safe_strtoull(const char *arg, unsigned long long* value); | ||
283 | extern int safe_strtou32(const char *arg, uint32_t* value); | ||
279 | 284 | ||
280 | struct suffix_mult { | 285 | struct suffix_mult { |
281 | const char *suffix; | 286 | const char *suffix; |
282 | unsigned int mult; | 287 | unsigned int mult; |
283 | }; | 288 | }; |
284 | 289 | ||
285 | extern unsigned long bb_xgetularg_bnd_sfx(const char *arg, int base, | 290 | unsigned long xstrtoul_range_sfx(const char *numstr, int base, |
286 | unsigned long lower, | 291 | unsigned long lower, |
287 | unsigned long upper, | 292 | unsigned long upper, |
288 | const struct suffix_mult *suffixes); | 293 | const struct suffix_mult *suffixes); |
289 | extern unsigned long bb_xgetularg_bnd(const char *arg, int base, | 294 | unsigned long xstrtoul_range(const char *numstr, int base, |
290 | unsigned long lower, | 295 | unsigned long lower, |
291 | unsigned long upper); | 296 | unsigned long upper); |
292 | extern unsigned long bb_xgetularg10_bnd(const char *arg, | 297 | unsigned long xstrtoul(const char *numstr, int base); |
298 | unsigned long xatoul_range_sfx(const char *numstr, | ||
299 | unsigned long lower, | ||
300 | unsigned long upper, | ||
301 | const struct suffix_mult *suffixes); | ||
302 | unsigned long xatoul_sfx(const char *numstr, | ||
303 | const struct suffix_mult *suffixes); | ||
304 | unsigned long xatoul_range(const char *numstr, | ||
293 | unsigned long lower, | 305 | unsigned long lower, |
294 | unsigned long upper); | 306 | unsigned long upper); |
295 | extern unsigned long bb_xgetularg10(const char *arg); | 307 | unsigned long xatoul(const char *numstr); |
296 | 308 | unsigned long long xatoull(const char *numstr); | |
297 | extern long bb_xgetlarg(const char *arg, int base, | 309 | long xstrtol_range_sfx(const char *numstr, int base, |
298 | long lower, | ||
299 | long upper); | ||
300 | extern long bb_xgetlarg_bnd_sfx(const char *arg, int base, | ||
301 | long lower, | 310 | long lower, |
302 | long upper, | 311 | long upper, |
303 | const struct suffix_mult *suffixes); | 312 | const struct suffix_mult *suffixes); |
304 | extern long bb_xgetlarg10_sfx(const char *arg, const struct suffix_mult *suffixes); | 313 | long xstrtol_range(const char *numstr, int base, long lower, long upper); |
305 | 314 | long xatol_range_sfx(const char *numstr, | |
306 | 315 | long lower, | |
307 | extern unsigned long bb_xparse_number(const char *numstr, | 316 | long upper, |
308 | const struct suffix_mult *suffixes); | 317 | const struct suffix_mult *suffixes); |
309 | 318 | long xatol_range(const char *numstr, long lower, long upper); | |
319 | long xatol_sfx(const char *numstr, const struct suffix_mult *suffixes); | ||
320 | long xatol(const char *numstr); | ||
321 | /* Specialized: */ | ||
322 | unsigned xatou(const char *numstr); | ||
323 | int xatoi(const char *numstr); | ||
324 | /* Using xatoi() instead of naive atoi() is not always convenient - | ||
325 | * in many places people want *non-negative* values, but store them | ||
326 | * in signed int. Therefore we need this one: | ||
327 | * dies if input is not in [0, INT_MAX] range. Also will reject '-0' etc */ | ||
328 | int xatoi_u(const char *numstr); | ||
329 | uint32_t xatou32(const char *numstr); | ||
330 | /* Useful for reading port numbers */ | ||
331 | uint16_t xatou16(const char *numstr); | ||
310 | 332 | ||
311 | /* These parse entries in /etc/passwd and /etc/group. This is desirable | 333 | /* These parse entries in /etc/passwd and /etc/group. This is desirable |
312 | * for BusyBox since we want to avoid using the glibc NSS stuff, which | 334 | * for BusyBox since we want to avoid using the glibc NSS stuff, which |
@@ -329,7 +351,7 @@ extern int device_open(const char *device, int mode); | |||
329 | 351 | ||
330 | extern char *query_loop(const char *device); | 352 | extern char *query_loop(const char *device); |
331 | extern int del_loop(const char *device); | 353 | extern int del_loop(const char *device); |
332 | extern int set_loop(char **device, const char *file, int offset); | 354 | extern int set_loop(char **device, const char *file, unsigned long long offset); |
333 | 355 | ||
334 | #if (__GLIBC__ < 2) | 356 | #if (__GLIBC__ < 2) |
335 | extern int vdprintf(int d, const char *format, va_list ap); | 357 | extern int vdprintf(int d, const char *format, va_list ap); |