/* * ARY.C * * (c)Copyright 2106, Matthew Dillon, All Rights Reserved. See the * COPYRIGHT file at the base of the distribution. */ #include "defs.h" runelib_list_t RuneAddLibsList = RUNE_HEAD_INITIALIZER(RuneAddLibsList); void runearyadd(runeary_t *ary, const char *ctl, ...) { char *ptr; va_list va; va_start(va, ctl); vasprintf(&ptr, ctl, va); va_end(va); if (ary->ac >= ary->entries - 2) { ary->entries += 16; ary->av = realloc(ary->av, ary->entries * sizeof(char *)); } ary->av[ary->ac++] = ptr; ary->av[ary->ac] = NULL; } void runearyfree(runeary_t *ary) { int i; for (i = 0; i < ary->ac; ++i) free(ary->av[i]); bzero(ary, sizeof(*ary)); } void runeaddlib(const char *ctl, ...) { char *ptr; va_list va; runelib_t *lib; va_start(va, ctl); vasprintf(&ptr, ctl, va); va_end(va); lib = zalloc(sizeof(*lib)); lib->linklib = ptr; RUNE_INSERT_TAIL(&RuneAddLibsList, lib, node); }