aboutsummaryrefslogtreecommitdiff
path: root/sway/stringop.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/stringop.c')
-rw-r--r--sway/stringop.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/sway/stringop.c b/sway/stringop.c
index d2b74655..77faf3f1 100644
--- a/sway/stringop.c
+++ b/sway/stringop.c
@@ -11,16 +11,21 @@ const char *whitespace = " \f\n\r\t\v";
/* Note: This returns 8 characters for trimmed_start per tab character. */
char *strip_whitespace(char *_str) {
- int ws = strspn(_str, whitespace);
- int len = strlen(_str) - ws + 1;
- sway_log(L_DEBUG,"%d, %d..",ws,len);
- char *str = malloc(len);
- strcpy(str, _str+ws);
- free(_str);
+ if (*_str == '\0')
+ return _str;
+ char *strold = _str;
+ while (*_str == ' ' || *_str == '\t') {
+ _str++;
+ }
+ char *str = malloc(strlen(_str) + 1);
+ strcpy(str, _str);
+ free(strold);
+ int i;
+ for (i = 0; str[i] != '\0'; ++i);
do {
- len--;
- } while (len >= 0 && (str[len] == ' ' || str[len] == '\t'));
- str[len + 1] = '\0';
+ i--;
+ } while (i >= 0 && (str[i] == ' ' || str[i] == '\t'));
+ str[i + 1] = '\0';
return str;
}