diff options
| -rw-r--r-- | misc.c | 28 | 
1 files changed, 28 insertions, 0 deletions
| @@ -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; +} | 
