#include "../../src/main.h" #include #include #include #include #include #include #include "utils.h" dbuf_t *dbuf_init(size_t init_sz) { dbuf_t *dbuf = malloc(sizeof(dbuf_t)); dbuf->ptr = malloc(init_sz); dbuf->len = 0; dbuf->capacity = init_sz; return dbuf; } static int it_times = 0; int32_t dbuf_write(const char *text, size_t text_len, dbuf_t **__dbuf) { dbuf_t *dbuf = *__dbuf; if (text_len > (dbuf->capacity - dbuf->len)) { if (text_len > (dbuf->capacity * 2 - dbuf->len)) { dbuf->capacity = text_len * 2; } else { dbuf->capacity = dbuf->capacity * 2; } (*__dbuf)->ptr = realloc(dbuf->ptr, dbuf->capacity); dbuf = *__dbuf; } it_times++; int _it_times = it_times; strncpy(dbuf->ptr + dbuf->len, text, text_len); dbuf->len += text_len; return 0; } int32_t dbuf_destroy(dbuf_t **dbuf) { free((*dbuf)->ptr); free(*dbuf); *dbuf = NULL; return 0; } void fill_list_with_samples(fl_t *fl_sample, fl_t **fl_st, fl_t **fl_cur, int amount) { fl_t *_fl_st, *_fl_cur; if (fl_st == NULL) return; for (int i = 0; i < amount; i++) { if (i == 0) { _fl_st = _fl_cur = malloc(sizeof(fl_t)); memcpy(_fl_st, fl_sample, sizeof(fl_t)); } else { _fl_cur->next = malloc(sizeof(fl_t)); memcpy(_fl_cur->next, fl_sample, sizeof(fl_t)); _fl_cur = _fl_cur->next; } _fl_cur->next = NULL; _fl_cur->name = malloc(sizeof(char) * (strlen(fl_sample->name) + 32)); _fl_cur->description = malloc(sizeof(char) * strlen(fl_sample->description) + 1); _fl_cur->owner = malloc(sizeof(char) * strlen(fl_sample->owner) + 1); sprintf(_fl_cur->name, "%s_%d", fl_sample->name, i + 1); memcpy(_fl_cur->description, fl_sample->description, sizeof(char) * strlen(fl_sample->description) + 1); memcpy(_fl_cur->owner, fl_sample->owner, sizeof(char) * strlen(fl_sample->owner) + 1); } *fl_st = _fl_st; if (fl_cur != NULL) { *fl_cur = _fl_cur; } }