replace atoi with my own impl to make sure that no errors occour
This commit is contained in:
36
XD.c
36
XD.c
@ -230,6 +230,34 @@ has_staged(git_repository *repo)
|
||||
}
|
||||
#endif
|
||||
|
||||
inline unsigned
|
||||
numcat(unsigned x, unsigned y)
|
||||
{
|
||||
unsigned pow = 10;
|
||||
while(y >= pow) {
|
||||
pow *= 10;
|
||||
}
|
||||
|
||||
return (x * pow) + y;
|
||||
}
|
||||
|
||||
int
|
||||
str_to_int(char *str)
|
||||
{
|
||||
int res = -1;
|
||||
char *c;
|
||||
|
||||
for (c = str; (*c != '\0') && isdigit(*c); c++) {
|
||||
if (res == -1) {
|
||||
res = *c - '0';
|
||||
} else {
|
||||
res = numcat(res, *c - '0');
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
@ -282,8 +310,12 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* get exit code from user args */
|
||||
if (argv[1]) {
|
||||
code = atoi(argv[1]);
|
||||
if (argc > 1 && argv[argc - 1]) {
|
||||
code = str_to_int(argv[argc - 1]);
|
||||
if (code < 0) {
|
||||
L("Return code, %d, not valid", code);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* change mouth based on exit code */
|
||||
|
Reference in New Issue
Block a user