/
githubmirror
/
dbus-broker
Обзор
Документация
Войти
/
githubmirror
/
dbus-broker
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v21
src/util/string.c
57 строк
1 KB
David Rheinsberg
dbus-broker: switch to c-stdaux
09 апр 2019, 17:01
09 апр 2019, 17:01
6a35f0e
Код
Авторство
О чём код?
/* * String Helpers */ #include <c-stdaux.h> #include <stdlib.h> #include <unistd.h> #include "util/error.h" #include "util/string.h" int util_strtou32(uint32_t *valp, const char *string) { unsigned long val; char *end; static_assert(sizeof(val) >= sizeof(uint32_t), "unsigned long is less than 32 bits"); errno = 0; val = strtoul(string, &end, 10); if (errno != 0) { if (errno == ERANGE) return UTIL_STRING_E_RANGE; return error_origin(-errno); } else if (*end || string == end) { return UTIL_STRING_E_INVALID; } else if (val > UINT32_MAX) { return UTIL_STRING_E_RANGE; } *valp = val; return 0; } int util_strtou64(uint64_t *valp, const char *string) { unsigned long long val; char *end; static_assert(sizeof(val) >= sizeof(uint64_t), "unsigned long long is less than 64 bits"); errno = 0; val = strtoull(string, &end, 10); if (errno != 0) { if (errno == ERANGE) return UTIL_STRING_E_RANGE; return error_origin(-errno); } else if (*end || string == end) { return UTIL_STRING_E_INVALID; } else if (val > UINT64_MAX) { return UTIL_STRING_E_RANGE; } *valp = val; return 0; }