diff options
author | Test_User <hax@andrewyu.org> | 2023-05-03 22:57:53 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2023-05-03 22:57:53 -0400 |
commit | e4b5445b3ca844e568a84abbf931a026a6ca6226 (patch) | |
tree | 9d9d615406c5a91036ebcd5b23bd8af30d3e8f3d /utils.c | |
parent | ec8b1682e86535333c34966f6aafee349e609641 (diff) | |
download | c_coupserv-e4b5445b3ca844e568a84abbf931a026a6ca6226.tar.gz c_coupserv-e4b5445b3ca844e568a84abbf931a026a6ca6226.zip |
C HaxServ
Diffstat (limited to 'utils.c')
-rw-r--r-- | utils.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +#include <stdint.h> + +#include "types.h" + +uint64_t str_to_unsigned(struct string str, uint8_t *err) { + if (str.len == 0) { + *err = 1; + return 0; + } + + uint64_t val = 0; + while (str.len > 0) { + switch(str.data[0]) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + val *= 10; + val += str.data[0] - 0x30; + break; + default: + *err = 1; + return 0; + } + + str.data++; + str.len--; + } + + *err = 0; + return val; +} |