Пример #1
0
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();
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
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);
}
Пример #6
0
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);
}
Пример #7
0
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();
}
Пример #8
0
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;
}
Пример #9
0
void
fnvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *pair)
{
	VERIFY0(nvlist_remove_nvpair(nvl, pair));
}