Use our own function to parse int

This commit is contained in:
topjohnwu
2019-03-07 20:31:35 -05:00
parent bbe4b69c8d
commit d2cb638fcd
6 changed files with 29 additions and 22 deletions

View File

@@ -83,6 +83,7 @@ int strend(const char *s1, const char *s2);
char *rtrim(char *str);
void init_argv0(int argc, char **argv);
void set_nice_name(const char *name);
int parse_int(const char *s);
#define getline __getline
#define getdelim __getdelim
@@ -203,6 +204,11 @@ void mmap_rw(const char *filename, B &buf, L &sz) {
// misc.cpp
template <class S>
int parse_int(S __s) {
return parse_int(__s.data());
}
int new_daemon_thread(void *(*start_routine) (void *), void *arg = nullptr,
const pthread_attr_t *attr = nullptr);

View File

@@ -230,3 +230,18 @@ char *rtrim(char *str) {
str[len] = '\0';
return str;
}
/*
* Bionic's atoi runs through strtol().
* Use our own implementation for faster conversion.
*/
int parse_int(const char *s) {
int val = 0;
char c;
while ((c = *(s++))) {
if (c > '9' || c < '0')
return -1;
val = val * 10 + c - '0';
}
return val;
}