summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar taiyu <taiyu.len@gmail.com>2015-08-15 22:11:19 -0700
committerLibravatar taiyu <taiyu.len@gmail.com>2015-08-15 22:11:19 -0700
commite9e09d123ce1e82cb1680e499a6c349241ada9e6 (patch)
tree215f275dd94724da0d13aa722c491f79132fd2c9
parentMerge branch 'master' of https://github.com/SirCmpwn/sway (diff)
downloadsway-e9e09d123ce1e82cb1680e499a6c349241ada9e6.tar.gz
sway-e9e09d123ce1e82cb1680e499a6c349241ada9e6.tar.zst
sway-e9e09d123ce1e82cb1680e499a6c349241ada9e6.zip
reduced code duplication
-rw-r--r--sway/stringop.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/sway/stringop.c b/sway/stringop.c
index b944a43d..0f8577ae 100644
--- a/sway/stringop.c
+++ b/sway/stringop.c
@@ -53,8 +53,9 @@ char *strip_comments(char *str) {
53list_t *split_string(const char *str, const char *delims) { 53list_t *split_string(const char *str, const char *delims) {
54 list_t *res = create_list(); 54 list_t *res = create_list();
55 int i, j; 55 int i, j;
56 for (i = 0, j = 0; i < strlen(str) + 1; ++i) { 56 int len = strlen(str);
57 if (strchr(delims, str[i]) || i == strlen(str)) { 57 for (i = 0, j = 0; i < len + 1; ++i) {
58 if (strchr(delims, str[i]) || i == len) {
58 if (i - j == 0) { 59 if (i - j == 0) {
59 continue; 60 continue;
60 } 61 }
@@ -63,7 +64,7 @@ list_t *split_string(const char *str, const char *delims) {
63 left[i - j] = 0; 64 left[i - j] = 0;
64 list_add(res, left); 65 list_add(res, left);
65 j = i + 1; 66 j = i + 1;
66 while (j <= strlen(str) && str[j] && strchr(delims, str[j])) { 67 while (j <= len && str[j] && strchr(delims, str[j])) {
67 j++; 68 j++;
68 i++; 69 i++;
69 } 70 }
@@ -111,40 +112,44 @@ int unescape_string(char *string) {
111 for (i = 0; string[i]; ++i) { 112 for (i = 0; string[i]; ++i) {
112 if (string[i] == '\\') { 113 if (string[i] == '\\') {
113 --len; 114 --len;
115 int shift = 0;
114 switch (string[++i]) { 116 switch (string[++i]) {
115 case '0': 117 case '0':
116 string[i - 1] = '\0'; 118 string[i - 1] = '\0';
117 memmove(string + i, string + i + 1, len - i); 119 shift = 1;
118 break; 120 break;
119 case 'a': 121 case 'a':
120 string[i - 1] = '\a'; 122 string[i - 1] = '\a';
121 memmove(string + i, string + i + 1, len - i); 123 shift = 1;
122 break; 124 break;
123 case 'b': 125 case 'b':
124 string[i - 1] = '\b'; 126 string[i - 1] = '\b';
125 memmove(string + i, string + i + 1, len - i); 127 shift = 1;
126 break; 128 break;
127 case 't': 129 case 't':
128 string[i - 1] = '\t'; 130 string[i - 1] = '\t';
129 memmove(string + i, string + i + 1, len - i); 131 shift = 1;
130 break; 132 break;
131 case 'n': 133 case 'n':
132 string[i - 1] = '\n'; 134 string[i - 1] = '\n';
133 memmove(string + i, string + i + 1, len - i); 135 shift = 1;
134 break; 136 break;
135 case 'v': 137 case 'v':
136 string[i - 1] = '\v'; 138 string[i - 1] = '\v';
137 memmove(string + i, string + i + 1, len - i); 139 shift = 1;
138 break; 140 break;
139 case 'f': 141 case 'f':
140 string[i - 1] = '\f'; 142 string[i - 1] = '\f';
141 memmove(string + i, string + i + 1, len - i); 143 shift = 1;
142 break; 144 break;
143 case 'r': 145 case 'r':
144 string[i - 1] = '\r'; 146 string[i - 1] = '\r';
145 memmove(string + i, string + i + 1, len - i); 147 shift = 1;
146 break; 148 break;
147 } 149 }
150 if (shift) {
151 memmove(string + i, string + i + shift, len - i);
152 }
148 } 153 }
149 } 154 }
150 return len; 155 return len;