Contents of /trunk/mkinitrd-magellan/busybox/libbb/xatonum.c
Parent Directory | Revision Log
Revision 532 -
(show annotations)
(download)
Sat Sep 1 22:45:15 2007 UTC (17 years ago) by niro
File MIME type: text/plain
File size: 1691 byte(s)
Sat Sep 1 22:45:15 2007 UTC (17 years ago) by niro
File MIME type: text/plain
File size: 1691 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * ascii-to-numbers implementations for busybox |
4 | * |
5 | * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> |
6 | * |
7 | * Licensed under GPLv2, see file LICENSE in this tarball for details. |
8 | */ |
9 | |
10 | #include "libbb.h" |
11 | |
12 | #define type long long |
13 | #define xstrtou(rest) xstrtoull##rest |
14 | #define xstrto(rest) xstrtoll##rest |
15 | #define xatou(rest) xatoull##rest |
16 | #define xato(rest) xatoll##rest |
17 | #define XSTR_UTYPE_MAX ULLONG_MAX |
18 | #define XSTR_TYPE_MAX LLONG_MAX |
19 | #define XSTR_TYPE_MIN LLONG_MIN |
20 | #define XSTR_STRTOU strtoull |
21 | #include "xatonum_template.c" |
22 | |
23 | #if ULONG_MAX != ULLONG_MAX |
24 | #define type long |
25 | #define xstrtou(rest) xstrtoul##rest |
26 | #define xstrto(rest) xstrtol##rest |
27 | #define xatou(rest) xatoul##rest |
28 | #define xato(rest) xatol##rest |
29 | #define XSTR_UTYPE_MAX ULONG_MAX |
30 | #define XSTR_TYPE_MAX LONG_MAX |
31 | #define XSTR_TYPE_MIN LONG_MIN |
32 | #define XSTR_STRTOU strtoul |
33 | #include "xatonum_template.c" |
34 | #endif |
35 | |
36 | #if UINT_MAX != ULONG_MAX |
37 | static ATTRIBUTE_ALWAYS_INLINE |
38 | unsigned bb_strtoui(const char *str, char **end, int b) |
39 | { |
40 | unsigned long v = strtoul(str, end, b); |
41 | if (v > UINT_MAX) { |
42 | errno = ERANGE; |
43 | return UINT_MAX; |
44 | } |
45 | return v; |
46 | } |
47 | #define type int |
48 | #define xstrtou(rest) xstrtou##rest |
49 | #define xstrto(rest) xstrtoi##rest |
50 | #define xatou(rest) xatou##rest |
51 | #define xato(rest) xatoi##rest |
52 | #define XSTR_UTYPE_MAX UINT_MAX |
53 | #define XSTR_TYPE_MAX INT_MAX |
54 | #define XSTR_TYPE_MIN INT_MIN |
55 | /* libc has no strtoui, so we need to create/use our own */ |
56 | #define XSTR_STRTOU bb_strtoui |
57 | #include "xatonum_template.c" |
58 | #endif |
59 | |
60 | /* A few special cases */ |
61 | |
62 | int xatoi_u(const char *numstr) |
63 | { |
64 | return xatou_range(numstr, 0, INT_MAX); |
65 | } |
66 | |
67 | uint16_t xatou16(const char *numstr) |
68 | { |
69 | return xatou_range(numstr, 0, 0xffff); |
70 | } |