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 } |