/* split filelist dep into basename and dirname */ static void create_dirs_names_array(struct addfileprovides_cbdata *cbd, Pool *pool) { int i; cbd->dirs = solv_malloc2(cbd->nfiles, sizeof(char *)); cbd->names = solv_malloc2(cbd->nfiles, sizeof(char *)); for (i = 0; i < cbd->nfiles; i++) { char *s = solv_strdup(pool_id2str(pool, cbd->ids[i])); cbd->dirs[i] = s; s = strrchr(s, '/'); *s = 0; cbd->names[i] = s + 1; } }
void queue_alloc_one(Queue *q) { if (!q->alloc) { q->alloc = solv_malloc2(q->count + EXTRA_SPACE, sizeof(Id)); if (q->count) memcpy(q->alloc, q->elements, q->count * sizeof(Id)); q->elements = q->alloc; q->left = EXTRA_SPACE; } else if (q->alloc != q->elements) { int l = q->elements - q->alloc; if (q->count) memmove(q->alloc, q->elements, q->count * sizeof(Id)); q->elements -= l; q->left += l; } else { q->elements = q->alloc = solv_realloc2(q->alloc, q->count + EXTRA_SPACE, sizeof(Id)); q->left = EXTRA_SPACE; } }
void queue_init_clone(Queue *t, Queue *s) { if (!s->elements) { t->alloc = t->elements = 0; t->count = t->left = 0; return; } t->alloc = t->elements = solv_malloc2(s->count + EXTRA_SPACE, sizeof(Id)); if (s->count) memcpy(t->alloc, s->elements, s->count * sizeof(Id)); t->count = s->count; t->left = EXTRA_SPACE; }