Пример #1
0
void
free_entry__(void* p)
{
    char verify[16];
    aim_snprintf(verify, sizeof(verify), "%d", free_count__);
    if(strcmp(verify, p)) {
        AIM_LOG_ERROR("free_entry__: expected %s, got %s",
                      verify, p);
    }
    AIM_FREE(p);
    free_count__++;
}
Пример #2
0
char* 
ucli_util_data_to_string(ucli_context_t* uc, uint8_t* data, int size, 
                         int columns)
{
    int c; 
    int i;

    /**
     * We will need at least 3*size for all bytes. 
     * Each column requires 8 extra characters, including newline. 
     * 
     */
    int len = (size*3) + (columns*8) + 1; 
    char* s = aim_zmalloc(len+1); 
    char* sp = s; 

    AIM_REFERENCE(uc); 

    for(i = 0; i < size; i++) {
        if(i % columns == 0) {
            if(i != 0) {
                c = aim_snprintf(sp, len, "\n");
                sp += c, len -= c; 
            }
            if(size > columns) {
                c = aim_snprintf(sp, len, "  %.4x: ", i); 
                sp += c, len -= c; 
            }
        }
        c = aim_snprintf(sp, len, "%.2x ", data[i]); 
        sp += c, len -= c; 
    }
    if((size > columns) && (size % columns != 0)) {
        c = aim_snprintf(sp, len, "\n"); 
        sp += c, len -= c; 
    }
    return s; 
}
Пример #3
0
/* Just make sure elements get free properly */
void
bigring_str_test(int size, bigring_free_entry_f fef)
{
    bigring_t* br = bigring_create(size, fef);
    int i;
    char* p;
    char buf[16];

    free_count__ = 0;

    for(i = 0; i < size*2; i++) {
        bigring_push(br, aim_fstrdup("%d", i));
    }
    /*
     * At this point:
     * free_count should be size (or zero if using default free function)
     * next entry should be "size"
     * ringcount should be size
     */
    if(fef == free_entry__) {
        if(free_count__ != size) {
            AIM_LOG_ERROR("Free count is %d, should be %d", free_count__, size);
        }
    }
    if(fef == bigring_aim_free_entry) {
        if(free_count__ != 0) {
            AIM_LOG_ERROR("free_count is %d, should be zero", free_count__);
        }
    }
    ASSERT_COUNT(bigring_count(br), size, bigring_size(br));
    p = bigring_shift(br);
    ASSERT_COUNT(bigring_count(br), size-1, bigring_size(br));
    aim_snprintf(buf, sizeof(buf), "%d", size);
    if(strcmp(p, buf)) {
        AIM_LOG_ERROR("Next is '%s', should be '%s'", p, buf);
        abort();
    }
    AIM_FREE(p);
    /*
     * Verify the rest of the entries are free.
     * Note - we removed the current entry, so we need
     * to increment free_count__ to account for it or
     * the verification will be off by one.
     */
    free_count__++;
    bigring_destroy(br);
}