aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-12-09 11:52:55 +0000
committerLibravatar Ian Fan <ianfan0@gmail.com>2019-01-01 09:01:24 +0000
commit967566e37f93890bd5255725129c929aeeac709e (patch)
tree7d6bc1470609b2c0da92889db36833cc2e5e8431 /common
parentbash: add completion for swaybar (diff)
downloadsway-967566e37f93890bd5255725129c929aeeac709e.tar.gz
sway-967566e37f93890bd5255725129c929aeeac709e.tar.zst
sway-967566e37f93890bd5255725129c929aeeac709e.zip
stringop.c: rewrite strip_whitespace
Diffstat (limited to 'common')
-rw-r--r--common/stringop.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/common/stringop.c b/common/stringop.c
index 4b8c9a38..f8b7aaec 100644
--- a/common/stringop.c
+++ b/common/stringop.c
@@ -9,24 +9,17 @@
9#include "string.h" 9#include "string.h"
10#include "list.h" 10#include "list.h"
11 11
12const char whitespace[] = " \f\n\r\t\v"; 12static const char whitespace[] = " \f\n\r\t\v";
13 13
14char *strip_whitespace(char *_str) { 14void strip_whitespace(char *str) {
15 if (*_str == '\0') 15 size_t len = strlen(str);
16 return _str; 16 size_t start = strspn(str, whitespace);
17 char *strold = _str; 17 memmove(str, &str[start], len + 1 - start);
18 while (*_str == ' ' || *_str == '\t') { 18
19 _str++; 19 if (!*str) return;
20 } 20
21 char *str = strdup(_str); 21 for (len -= start + 1; isspace(str[len]); --len) {}
22 free(strold); 22 str[len + 1] = '\0';
23 int i;
24 for (i = 0; str[i] != '\0'; ++i);
25 do {
26 i--;
27 } while (i >= 0 && (str[i] == ' ' || str[i] == '\t'));
28 str[i + 1] = '\0';
29 return str;
30} 23}
31 24
32void strip_quotes(char *str) { 25void strip_quotes(char *str) {