diff options
| author | allusive-dev <[email protected]> | 2023-09-19 17:47:33 +1000 |
|---|---|---|
| committer | allusive-dev <[email protected]> | 2023-09-19 17:47:33 +1000 |
| commit | a93aba600b1c5d019b680b9f4ff3fa85d5d43a60 (patch) | |
| tree | 77f8152222655657472a70e0bfa413a0495dd555 /src/string_utils.h | |
| parent | reset (diff) | |
| download | compfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.tar.xz compfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.zip | |
Fixed broken files/code and other errors
Diffstat (limited to 'src/string_utils.h')
| -rw-r--r-- | src/string_utils.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/string_utils.h b/src/string_utils.h new file mode 100644 index 0000000..38febde --- /dev/null +++ b/src/string_utils.h @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MPL-2.0 +// Copyright (c) Yuxuan Shui <[email protected]> +#pragma once +#include <ctype.h> +#include <stddef.h> + +#include "compiler.h" + +#define mstrncmp(s1, s2) strncmp((s1), (s2), strlen(s1)) + +char *mstrjoin(const char *src1, const char *src2); +char *mstrjoin3(const char *src1, const char *src2, const char *src3); +void mstrextend(char **psrc1, const char *src2); + +/// Parse a floating point number of form (+|-)?[0-9]*(\.[0-9]*) +double strtod_simple(const char *, const char **); + +static inline int uitostr(unsigned int n, char *buf) { + int ret = 0; + unsigned int tmp = n; + while (tmp > 0) { + tmp /= 10; + ret++; + } + + if (ret == 0) + ret = 1; + + int pos = ret; + while (pos--) { + buf[pos] = (char)(n % 10 + '0'); + n /= 10; + } + return ret; +} + +static inline const char *skip_space_const(const char *src) { + if (!src) + return NULL; + while (*src && isspace((unsigned char)*src)) + src++; + return src; +} + +static inline char *skip_space_mut(char *src) { + if (!src) + return NULL; + while (*src && isspace((unsigned char)*src)) + src++; + return src; +} + +#define skip_space(x) \ + _Generic((x), char * : skip_space_mut, const char * : skip_space_const)(x) |