packages feed

XMMS-0.1: cbits/XMMSUtils.c

#include <xmmsclient/xmmsclient.h>
#include <stdlib.h>

struct pass_value{
    char **keys;
    xmmsv_t **values;
    int count;
};

void unfold_dict_foreach (const char *key, xmmsv_t *value, void *keys_values_void){
	struct pass_value *keys_values;
    keys_values = (struct pass_value *) keys_values_void;
    keys_values->keys[keys_values->count] = (char*) key;
    keys_values->values[keys_values->count] = value;
    keys_values->count++;
    
}

char** allocate_keys(int n){
    return malloc(sizeof(char*) * (n + 1));
}

void free_keys(char** keys){
    free(keys);
}

xmmsv_t** allocate_values(int n){
    return malloc(sizeof(xmmsv_t *) * (n + 1));
}

void free_values(xmmsv_t** values){
    free(values);
}

extern void xmmsv_get_dict(char **key, xmmsv_t **value, xmmsv_t *dict){
    struct pass_value keys_values;
    keys_values.keys = key;
    keys_values.values = value;
    keys_values.count = 0;
    xmmsv_dict_foreach (dict, unfold_dict_foreach, (void*)(&keys_values));
    key[keys_values.count]=NULL;
    value[keys_values.count]=NULL;
}