ucx/string.c

changeset 104
9d3dea320d8e
parent 103
08018864fb91
child 108
d2b1e67b2b48
equal deleted inserted replaced
103:08018864fb91 104:9d3dea320d8e
93 return sstrsubsl (s, start, s.length-start); 93 return sstrsubsl (s, start, s.length-start);
94 } 94 }
95 95
96 sstr_t sstrsubsl(sstr_t s, size_t start, size_t length) { 96 sstr_t sstrsubsl(sstr_t s, size_t start, size_t length) {
97 sstr_t new_sstr; 97 sstr_t new_sstr;
98 if (start < 0 || start >= s.length || length < 0) { 98 if (start >= s.length) {
99 return s; 99 return s;
100 } 100 }
101 if (length > s.length-start) { 101 if (length > s.length-start) {
102 length = s.length-start; 102 length = s.length-start;
103 } 103 }
195 } 195 }
196 } 196 }
197 newstr.ptr = &string.ptr[i]; 197 newstr.ptr = &string.ptr[i];
198 newstr.length = string.length - i; 198 newstr.length = string.length - i;
199 199
200 for(i=newstr.length-1;i>=0;i--) { 200 if(newstr.length == 0) {
201 return newstr;
202 }
203
204 i = newstr.length - 1;
205 for(;;) {
201 char c = newstr.ptr[i]; 206 char c = newstr.ptr[i];
202 if(c > 32) { 207 if(c > 32) {
203 break; 208 break;
204 } 209 }
210 if(i > 0) {
211 i--;
212 } else {
213 break;
214 }
205 } 215 }
206 newstr.length = i + 1; 216 newstr.length = i + 1;
207 217
208 return newstr; 218 return newstr;
209 } 219 }

mercurial