sle/src/strtoint.c

35 lines
762 B
C

/* SPDX-License-Identifier: GPL-3.0-or-later */
/* Copyright (C) 2021 KikooDX */
#include "strtoint.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Attempt to convert a string to integer. */
int strtoint(char *string)
{
const size_t string_len = strlen(string);
int character;
int i;
int sum = 0;
int multiplier = 1;
int negative = string[0] == '-';
for (i = string_len - 1; i >= negative; i -= 1) {
character = string[i];
if (character < '0' || character > '9') {
fprintf(stderr,
"ERROR: flag expected a number "
"argument, got \"%s\"\n",
string);
exit(EXIT_FAILURE);
}
sum += multiplier * (character - '0');
multiplier *= 10;
}
if (negative)
return sum * -1;
else
return sum;
}