aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/safe_strtol.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/libbb/safe_strtol.c b/libbb/safe_strtol.c
index ecc1667db..2e8fa9558 100644
--- a/libbb/safe_strtol.c
+++ b/libbb/safe_strtol.c
@@ -74,3 +74,37 @@ int safe_strtoul(char *arg, unsigned long* value)
74} 74}
75#endif 75#endif
76 76
77#ifdef L_safe_strtoll
78int safe_strtoll(char *arg, long long* value)
79{
80 char *endptr;
81 int errno_save = errno;
82
83 assert(arg!=NULL);
84 errno = 0;
85 *value = strtoll(arg, &endptr, 0);
86 if (errno != 0 || *endptr!='\0' || endptr==arg) {
87 return 1;
88 }
89 errno = errno_save;
90 return 0;
91}
92#endif
93
94#ifdef L_safe_strtoull
95int safe_strtoull(char *arg, unsigned long long* value)
96{
97 char *endptr;
98 int errno_save = errno;
99
100 assert(arg!=NULL);
101 errno = 0;
102 *value = strtoull(arg, &endptr, 0);
103 if (errno != 0 || *endptr!='\0' || endptr==arg) {
104 return 1;
105 }
106 errno = errno_save;
107 return 0;
108}
109#endif
110