From 1b252ddbadf7e67e25ba407d3a2483cab452340f Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Wed, 23 Jun 2021 16:33:29 -0400 Subject: Added `sanitize_strlen()`, and `sanitize_str()`. `sanitize_str()` creates a string with each starting space replaced by a hyphen, and with all trailing spaces, and periods removed. `sanitize_strlen()` gets the length of the sanatized version of the supplied string. --- misc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/misc.c b/misc.c index 9cc72c9..3e0b304 100644 --- a/misc.c +++ b/misc.c @@ -97,3 +97,31 @@ int delm_span(char *str, const char delm) { for (i = 0; str[i] == delm; i++); return i; } + +int sanitize_strlen(char *str) { + int len = 0; + while (*str != '\0') { + const int tok_len = strcspn(str, " ."); + const char delm = str[tok_len]; + const int span_len = (delm != '\0') ? delm_span(&str[tok_len+1], delm) : 0; + str += (tok_len + span_len); + len += tok_len; + } + return len; +} + +char *sanitize_str(char *str) { + const int len = sanitize_strlen(str); + char *san_str = calloc(len+1, sizeof(char)); + char *tmp = san_str; + while (*str != '\0' && tmp < &san_str[len]) { + const int tok_len = strcspn(str, " ."); + const char delm = str[tok_len]; + const int span_len = (delm != '\0') ? delm_span(&str[tok_len+1], delm) : 0; + memcpy(tmp, str, tok_len); + tmp += tok_len; + str += (tok_len + span_len); + *tmp = (delm == ' ') ? '-' : delm; + } + return san_str; +} -- cgit v1.2.3-13-gbd6f