void nvlist_destroy(nvlist_t *nvl) { nvpair_t *nvp; if (nvl == NULL) return; ERRNO_SAVE(); NVLIST_ASSERT(nvl); while ((nvp = nvlist_first_nvpair(nvl)) != NULL) { nvlist_remove_nvpair(nvl, nvp); nvpair_free(nvp); } if (nvl->nvl_array_next != NULL) nvpair_free_structure(nvl->nvl_array_next); nvl->nvl_array_next = NULL; nvl->nvl_parent = NULL; nvl->nvl_magic = 0; nv_free(nvl); ERRNO_RESTORE(); }
nvpair_t * nvlist_takev_nvpair(nvlist_t *nvl, const char *namefmt, va_list nameap) { nvpair_t *nvp; nvp = nvlist_findv(nvl, NV_TYPE_NONE, namefmt, nameap); if (nvp != NULL) nvlist_remove_nvpair(nvl, nvp); return (nvp); }
void nvlist_free_nvpair(nvlist_t *nvl, nvpair_t *nvp) { NVLIST_ASSERT(nvl); NVPAIR_ASSERT(nvp); PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl); nvlist_remove_nvpair(nvl, nvp); nvpair_free(nvp); }
void * cnvlist_take_binary(nvlist_t *nvl, void *cookiep, size_t *sizep) { void *value; if (nvpair_type(cookiep) != NV_TYPE_BINARY) nvlist_report_missing(NV_TYPE_BINARY, nvpair_name(cookiep)); value = (void *)(intptr_t)nvpair_get_binary(cookiep, sizep); nvlist_remove_nvpair(nvl, cookiep); nvpair_free_structure(cookiep); return (value); }
void * nvlist_take_binary(nvlist_t *nvl, const char *name, size_t *sizep) { nvpair_t *nvp; void *value; nvp = nvlist_find(nvl, NV_TYPE_BINARY, name); if (nvp == NULL) nvlist_report_missing(NV_TYPE_BINARY, name); value = (void *)(intptr_t)nvpair_get_binary(nvp, sizep); nvlist_remove_nvpair(nvl, nvp); nvpair_free_structure(nvp); return (value); }
void * nvlist_takev_binary(nvlist_t *nvl, size_t *sizep, const char *namefmt, va_list nameap) { va_list cnameap; nvpair_t *nvp; void *value; va_copy(cnameap, nameap); nvp = nvlist_findv(nvl, NV_TYPE_BINARY, namefmt, cnameap); va_end(cnameap); if (nvp == NULL) nvlist_report_missing(NV_TYPE_BINARY, namefmt, nameap); value = (void *)(intptr_t)nvpair_get_binary(nvp, sizep); nvlist_remove_nvpair(nvl, nvp); nvpair_free_structure(nvp); return (value); }
void nvlist_destroy(nvlist_t *nvl) { nvpair_t *nvp; if (nvl == NULL) return; ERRNO_SAVE(); NVLIST_ASSERT(nvl); while ((nvp = nvlist_first_nvpair(nvl)) != NULL) { nvlist_remove_nvpair(nvl, nvp); nvpair_free(nvp); } nvl->nvl_magic = 0; nv_free(nvl); ERRNO_RESTORE(); }
void nvlist_destroy(nvlist_t *nvl) { nvpair_t *nvp; int serrno; if (nvl == NULL) return; serrno = errno; NVLIST_ASSERT(nvl); while ((nvp = nvlist_first_nvpair(nvl)) != NULL) { nvlist_remove_nvpair(nvl, nvp); nvpair_free(nvp); } nvl->nvl_magic = 0; free(nvl); errno = serrno; }
void fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair) { VERIFY0(nvlist_remove_nvpair(nvl, pair)); }