aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-10-08 12:49:22 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-10-08 12:49:22 +0000
commit1385899416a4396385ad421ae1f532be7103738a (patch)
treefc4d14a910593d1235318bb36abe5e9f72d2039e /include
parent5625415085e68ac5e150f54e685417c866620d76 (diff)
downloadbusybox-w32-1385899416a4396385ad421ae1f532be7103738a.tar.gz
busybox-w32-1385899416a4396385ad421ae1f532be7103738a.tar.bz2
busybox-w32-1385899416a4396385ad421ae1f532be7103738a.zip
attempt to regularize atoi mess.
Diffstat (limited to 'include')
-rw-r--r--include/libbb.h68
-rw-r--r--include/unarchive.h2
2 files changed, 46 insertions, 24 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);
267extern void *xrealloc(void *old, size_t size); 267extern void *xrealloc(void *old, size_t size);
268extern void *xzalloc(size_t size); 268extern void *xzalloc(size_t size);
269 269
270extern char *xstrdup (const char *s); 270extern char *xstrdup(const char *s);
271extern char *xstrndup (const char *s, int n); 271extern char *xstrndup(const char *s, int n);
272extern char *safe_strncpy(char *dst, const char *src, size_t size); 272extern char *safe_strncpy(char *dst, const char *src, size_t size);
273extern int safe_strtoi(char *arg, int* value); 273// FIXME: the prototype doesn't match libc strtoXX -> confusion
274extern int safe_strtod(char *arg, double* value); 274// FIXME: alot of unchecked strtoXXX are still in tree
275extern int safe_strtol(char *arg, long* value); 275// FIXME: atoi_or_else(str, N)?
276extern int safe_strtoll(char *arg, long long* value); 276extern int safe_strtoi(const char *arg, int* value);
277extern int safe_strtoul(char *arg, unsigned long* value); 277extern int safe_strtou(const char *arg, unsigned* value);
278extern int safe_strtoull(char *arg, unsigned long long* value); 278extern int safe_strtod(const char *arg, double* value);
279extern int safe_strtol(const char *arg, long* value);
280extern int safe_strtoll(const char *arg, long long* value);
281extern int safe_strtoul(const char *arg, unsigned long* value);
282extern int safe_strtoull(const char *arg, unsigned long long* value);
283extern int safe_strtou32(const char *arg, uint32_t* value);
279 284
280struct suffix_mult { 285struct suffix_mult {
281 const char *suffix; 286 const char *suffix;
282 unsigned int mult; 287 unsigned int mult;
283}; 288};
284 289
285extern unsigned long bb_xgetularg_bnd_sfx(const char *arg, int base, 290unsigned 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);
289extern unsigned long bb_xgetularg_bnd(const char *arg, int base, 294unsigned long xstrtoul_range(const char *numstr, int base,
290 unsigned long lower, 295 unsigned long lower,
291 unsigned long upper); 296 unsigned long upper);
292extern unsigned long bb_xgetularg10_bnd(const char *arg, 297unsigned long xstrtoul(const char *numstr, int base);
298unsigned long xatoul_range_sfx(const char *numstr,
299 unsigned long lower,
300 unsigned long upper,
301 const struct suffix_mult *suffixes);
302unsigned long xatoul_sfx(const char *numstr,
303 const struct suffix_mult *suffixes);
304unsigned long xatoul_range(const char *numstr,
293 unsigned long lower, 305 unsigned long lower,
294 unsigned long upper); 306 unsigned long upper);
295extern unsigned long bb_xgetularg10(const char *arg); 307unsigned long xatoul(const char *numstr);
296 308unsigned long long xatoull(const char *numstr);
297extern long bb_xgetlarg(const char *arg, int base, 309long xstrtol_range_sfx(const char *numstr, int base,
298 long lower,
299 long upper);
300extern 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);
304extern long bb_xgetlarg10_sfx(const char *arg, const struct suffix_mult *suffixes); 313long xstrtol_range(const char *numstr, int base, long lower, long upper);
305 314long xatol_range_sfx(const char *numstr,
306 315 long lower,
307extern unsigned long bb_xparse_number(const char *numstr, 316 long upper,
308 const struct suffix_mult *suffixes); 317 const struct suffix_mult *suffixes);
309 318long xatol_range(const char *numstr, long lower, long upper);
319long xatol_sfx(const char *numstr, const struct suffix_mult *suffixes);
320long xatol(const char *numstr);
321/* Specialized: */
322unsigned xatou(const char *numstr);
323int 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 */
328int xatoi_u(const char *numstr);
329uint32_t xatou32(const char *numstr);
330/* Useful for reading port numbers */
331uint16_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
330extern char *query_loop(const char *device); 352extern char *query_loop(const char *device);
331extern int del_loop(const char *device); 353extern int del_loop(const char *device);
332extern int set_loop(char **device, const char *file, int offset); 354extern int set_loop(char **device, const char *file, unsigned long long offset);
333 355
334#if (__GLIBC__ < 2) 356#if (__GLIBC__ < 2)
335extern int vdprintf(int d, const char *format, va_list ap); 357extern int vdprintf(int d, const char *format, va_list ap);
diff --git a/include/unarchive.h b/include/unarchive.h
index 82a70aed6..7de6a63fe 100644
--- a/include/unarchive.h
+++ b/include/unarchive.h
@@ -92,7 +92,7 @@ extern char get_header_tar_lzma(archive_handle_t *archive_handle);
92extern char get_header_tar_gz(archive_handle_t *archive_handle); 92extern char get_header_tar_gz(archive_handle_t *archive_handle);
93 93
94extern void seek_by_jump(const archive_handle_t *archive_handle, const unsigned int amount); 94extern void seek_by_jump(const archive_handle_t *archive_handle, const unsigned int amount);
95extern void seek_by_char(const archive_handle_t *archive_handle, const unsigned int amount); 95extern void seek_by_read(const archive_handle_t *archive_handle, const unsigned int amount);
96 96
97extern ssize_t archive_xread_all_eof(archive_handle_t *archive_handle, unsigned char *buf, size_t count); 97extern ssize_t archive_xread_all_eof(archive_handle_t *archive_handle, unsigned char *buf, size_t count);
98 98