OicParseQueryIter_t * GetNextQuery(OicParseQueryIter_t * parseIter) { OIC_LOG(INFO, TAG, "Getting Next Query"); if (NULL == parseIter) { return NULL; } unsigned char * qrySeg = NULL; char * delimPos; // Get the next query. Querys are separated by OIC_SEC_REST_QUERY_SEPARATOR. qrySeg = coap_parse_next(&parseIter->pi); if (qrySeg) { delimPos = strchr((char *)qrySeg, OIC_SEC_REST_QUERY_DELIMETER); if (delimPos) { parseIter->attrPos = parseIter->pi.pos; parseIter->attrLen = (unsigned char *)delimPos - parseIter->pi.pos; parseIter->valPos = (unsigned char *)delimPos + 1; parseIter->valLen = &qrySeg[parseIter->pi.segment_length] - parseIter->valPos; return parseIter; } } return NULL; }
/** * Splits the given string into segments. You should call one of the * macros coap_split_path() or coap_split_query() instead. * * @param parse_iter The iterator used for tokenizing. * @param h A handler that is called with every token. * @param data Opaque data that is passed to @p h when called. * * @return The number of characters that have been parsed from @p s. */ size_t coap_split_path_impl(coap_parse_iterator_t *parse_iter, segment_handler_t h, void *data) { unsigned char *seg; size_t length; assert(parse_iter); assert(h); length = parse_iter->n; while ((seg = coap_parse_next(parse_iter))) { /* any valid path segment is handled here: */ h(seg, parse_iter->segment_length, data); } return length - (parse_iter->n - parse_iter->segment_length); }