Beispiel #1
0
qdr_field_t *qdr_field_from_iter(qd_iterator_t *iter)
{
    if (!iter)
        return 0;

    qdr_field_t *field = new_qdr_field_t();
    qd_buffer_t *buf;
    int          remaining;
    int          length;

    ZERO(field);
    qd_iterator_reset(iter);
    remaining = qd_iterator_remaining(iter);
    length    = remaining;
    while (remaining) {
        buf = qd_buffer();
        size_t cap    = qd_buffer_capacity(buf);
        int    copied = qd_iterator_ncopy(iter, qd_buffer_cursor(buf), cap);
        qd_buffer_insert(buf, copied);
        DEQ_INSERT_TAIL(field->buffers, buf);
        remaining = qd_iterator_remaining(iter);
    }

    field->iterator = qd_iterator_buffer(DEQ_HEAD(field->buffers), 0, length, ITER_VIEW_ALL);

    return field;
}
Beispiel #2
0
unsigned char *qd_iterator_copy(qd_iterator_t *iter)
{
    if (!iter)
        return 0;

    int length = qd_iterator_length(iter);
    unsigned char *copy = malloc(length+1);
    int i = qd_iterator_ncopy(iter, copy, length+1);
    copy[i] = '\0';
    return copy;
}
Beispiel #3
0
char* qd_iterator_strncpy(qd_iterator_t *iter, char* buffer, int n)
{
    int i = qd_iterator_ncopy(iter, (unsigned char*) buffer, n-1);
    buffer[i] = '\0';
    return buffer;
}