replace atoi with my own impl to make sure that no errors occour

This commit is contained in:
2025-02-18 14:48:32 -06:00
parent 6025b2d832
commit 09362e2c7c
2 changed files with 45 additions and 2 deletions

36
XD.c
View File

@ -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 */