dav/utils.c

changeset 17
11dffb40cd91
parent 16
5dbef9e07376
child 28
4e46c65711ef
equal deleted inserted replaced
16:5dbef9e07376 17:11dffb40cd91
189 BIO_read(b, out, len); 189 BIO_read(b, out, len);
190 BIO_free_all(b); 190 BIO_free_all(b);
191 191
192 return out; 192 return out;
193 } 193 }
194
195 /*
196 * gets a substring from 0 to the appearance of the token
197 * tokens are separated by space
198 * sets sub to the substring and returns the remaining string
199 */
200 sstr_t util_getsubstr_until_token(sstr_t str, sstr_t token, sstr_t *sub) {
201 int i;
202 int token_start = -1;
203 int token_end = -1;
204 for(i=0;i<=str.length;i++) {
205 int c;
206 if(i == str.length) {
207 c = ' ';
208 } else {
209 c = str.ptr[i];
210 }
211 if(c < 33) {
212 if(token_start != -1) {
213 token_end = i;
214 size_t len = token_end - token_start;
215 sstr_t tk = sstrsubsl(str, token_start, len);
216 //printf("token: {%.*s}\n", token.length, token.ptr);
217 if(!sstrcmp(tk, token)) {
218 *sub = sstrtrim(sstrsubsl(str, 0, token_start));
219 break;
220 }
221 token_start = -1;
222 token_end = -1;
223 }
224 } else {
225 if(token_start == -1) {
226 token_start = i;
227 }
228 }
229 }
230
231 if(i < str.length) {
232 return sstrtrim(sstrsubs(str, i));
233 } else {
234 str.ptr = NULL;
235 str.length = 0;
236 return str;
237 }
238 }

mercurial