diff options
author | Danny Holman <dholman@gymli.org> | 2023-07-26 11:40:36 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2023-07-26 11:40:36 -0500 |
commit | f3d50195e43fd33e7f36e4e55a84af790b7de5d1 (patch) | |
tree | 271f11ccb2297375245df5f9783ca31d84dd5c52 /common/src | |
parent | ee0f0f95d6972e66c56812e0e3abe9275d5f0fdc (diff) |
common: create the common directory
Create a directory for files that are shared between the reference
client and server. Refactor the build scripts to reflect this
restructuring.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'common/src')
-rw-r--r-- | common/src/util.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/common/src/util.c b/common/src/util.c new file mode 100644 index 0000000..63eefa2 --- /dev/null +++ b/common/src/util.c @@ -0,0 +1,84 @@ +#include <util.h> +#include <string.h> +#include <stdlib.h> + +char* str_rstrip(char *str) { + size_t len = strlen(str) - 1; + int brakes = 1; + while (brakes) { + switch (str[len]) { + case '\r': + str[len] = '\0'; + len--; + break; + case '\n': + str[len] = '\0'; + len--; + break; + case '\t': + str[len] = '\0'; + len--; + break; + case ' ': + str[len] = '\0'; + len--; + break; + default: + brakes = 0; + break; + } + } + return str; +} + +char* str_lstrip(char *str) { + int brakes = 1; + while (brakes) { + switch (str[0]) { + case '\r': + str[0] = '\0'; + str++; + break; + case '\n': + str[0] = '\0'; + str++; + break; + case '\t': + str[0] = '\0'; + str++; + break; + case ' ': + str[0] = '\0'; + str++; + break; + default: + brakes = 0; + break; + } + } + return str; +} + +char* str_strip(char *str) { + str_rstrip(str); + str_lstrip(str); + return str; +} + +char** str_split(char *str, const char *delim) { + size_t count = 0; + char **ret = NULL; + char *token; + char *saveptr; + token = strtok_r(str, delim, &saveptr); + while (token != NULL) { + count++; + ret = realloc(ret, sizeof(char*) * count); + ret[count-1] = strdup(str_strip(token)); + token = strtok_r(NULL, delim, &saveptr); + } + count++; + ret = realloc(ret, sizeof(char*) * count); + ret[count-1] = NULL; + return ret; +} |