diff --git a/include/akstdlib.h b/include/akstdlib.h index a2aec1a..90ce834 100644 --- a/include/akstdlib.h +++ b/include/akstdlib.h @@ -24,6 +24,7 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_sprintf(int *count, char *restrict str, akerr_ErrorContext AKERR_NOIGNORE *aksl_atoi(const char *nptr, int *dest); akerr_ErrorContext AKERR_NOIGNORE *aksl_atol(const char *nptr, long *dest); akerr_ErrorContext AKERR_NOIGNORE *aksl_atoll(const char *nptr, long long *dest); +akerr_ErrorContext AKERR_NOIGNORE *aksl_atof(const char *nptr, double *dest); akerr_ErrorContext AKERR_NOIGNORE *aksl_realpath(const char *restrict path, char *restrict resolved_path); diff --git a/src/stdlib.c b/src/stdlib.c index ce0a20b..b6cc060 100644 --- a/src/stdlib.c +++ b/src/stdlib.c @@ -156,6 +156,15 @@ akerr_ErrorContext AKERR_NOIGNORE *aksl_atoll(const char *nptr, long long *dest) SUCCEED_RETURN(e); } +akerr_ErrorContext AKERR_NOIGNORE *aksl_atof(const char *nptr, double *dest) +{ + PREPARE_ERROR(e); + FAIL_ZERO_RETURN(e, nptr, AKERR_NULLPOINTER, "nptr=%p, dest=%p", (void *)nptr, (void *)dest); + FAIL_ZERO_RETURN(e, dest, AKERR_NULLPOINTER, "nptr=%p, dest=%p", (void *)nptr, (void *)dest); + *dest = atof(nptr); + SUCCEED_RETURN(e); +} + akerr_ErrorContext AKERR_NOIGNORE *aksl_realpath(const char *restrict path, char *restrict resolved_path) { char *result = NULL;