Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F161131952
D1878.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D1878.diff
View Options
Index: lib/libnv/Makefile
===================================================================
--- lib/libnv/Makefile
+++ lib/libnv/Makefile
@@ -24,6 +24,7 @@
MLINKS+=nv.3 nvlist_create.3 \
nv.3 nvlist_destroy.3 \
nv.3 nvlist_error.3 \
+ nv.3 nvlist_set_error.3 \
nv.3 nvlist_empty.3 \
nv.3 nvlist_clone.3 \
nv.3 nvlist_dump.3 \
Index: lib/libnv/nv.h
===================================================================
--- lib/libnv/nv.h
+++ lib/libnv/nv.h
@@ -68,6 +68,7 @@
void nvlist_destroy(nvlist_t *nvl);
int nvlist_error(const nvlist_t *nvl);
bool nvlist_empty(const nvlist_t *nvl);
+void nvlist_set_error(nvlist_t *nvl, int error);
nvlist_t *nvlist_clone(const nvlist_t *nvl);
Index: lib/libnv/nv.3
===================================================================
--- lib/libnv/nv.3
+++ lib/libnv/nv.3
@@ -35,6 +35,7 @@
.Nm nvlist_create ,
.Nm nvlist_destroy ,
.Nm nvlist_error ,
+.Nm nvlist_set_error ,
.Nm nvlist_empty ,
.Nm nvlist_exists ,
.Nm nvlist_free ,
@@ -63,6 +64,8 @@
.Fn nvlist_destroy "nvlist_t *nvl"
.Ft int
.Fn nvlist_error "const nvlist_t *nvl"
+.Ft void
+.Fn nvlist_set_error "nvlist_t *nvl, int error"
.Ft bool
.Fn nvlist_empty "const nvlist_t *nvl"
.\"
@@ -248,8 +251,17 @@
error will be returned.
.Pp
The
+.Fn nvlist_set_error
+function sets an nvlist to be in the error state.
+Subsequent calls to
+.Fn nvlist_error
+will return the given error value.
+This function cannot be used to clear the error state from an nvlist.
+This function does nothing if the nvlist is already in the error state.
+.Pp
+The
.Fn nvlist_empty
-functions returns
+function returns
.Dv true
if the given nvlist is empty and
.Dv false
Index: lib/libnv/nvlist.c
===================================================================
--- lib/libnv/nvlist.c
+++ lib/libnv/nvlist.c
@@ -137,6 +137,14 @@
errno = serrno;
}
+void
+nvlist_set_error(nvlist_t *nvl, int error)
+{
+
+ if (nvl != NULL && error != 0 && nvl->nvl_error == 0)
+ nvl->nvl_error = error;
+}
+
int
nvlist_error(const nvlist_t *nvl)
{
Index: lib/libnv/tests/nv_tests.cc
===================================================================
--- lib/libnv/tests/nv_tests.cc
+++ lib/libnv/tests/nv_tests.cc
@@ -406,6 +406,22 @@
nvlist_destroy(nvl);
}
+ATF_TEST_CASE_WITHOUT_HEAD(nvlist_clone__error_nvlist);
+ATF_TEST_CASE_BODY(nvlist_clone__error_nvlist)
+{
+ nvlist_t *nvl, *clone;
+
+ nvl = nvlist_create(0);
+ ATF_REQUIRE(nvl != NULL);
+
+ nvlist_set_error(nvl, ENOMEM);
+
+ clone = nvlist_clone(nvl);
+ ATF_REQUIRE(clone == NULL);
+
+ nvlist_destroy(nvl);
+}
+
ATF_TEST_CASE_WITHOUT_HEAD(nvlist_pack__empty_nvlist);
ATF_TEST_CASE_BODY(nvlist_pack__empty_nvlist)
{
@@ -547,6 +563,24 @@
free(packed);
}
+ATF_TEST_CASE_WITHOUT_HEAD(nvlist_pack__error_nvlist);
+ATF_TEST_CASE_BODY(nvlist_pack__error_nvlist)
+{
+ nvlist_t *nvl;
+ void *packed;
+ size_t size;
+
+ nvl = nvlist_create(0);
+ ATF_REQUIRE(nvl != NULL);
+
+ nvlist_set_error(nvl, ENOMEM);
+
+ packed = nvlist_pack(nvl, &size);
+ ATF_REQUIRE(packed == NULL);
+
+ nvlist_destroy(nvl);
+}
+
ATF_TEST_CASE_WITHOUT_HEAD(nvlist_unpack__duplicate_key);
ATF_TEST_CASE_BODY(nvlist_unpack__duplicate_key)
{
@@ -1145,9 +1179,11 @@
ATF_ADD_TEST_CASE(tp, nvlist_clone__empty_nvlist);
ATF_ADD_TEST_CASE(tp, nvlist_clone__nonempty_nvlist);
ATF_ADD_TEST_CASE(tp, nvlist_clone__nested_nvlist);
+ ATF_ADD_TEST_CASE(tp, nvlist_clone__error_nvlist);
ATF_ADD_TEST_CASE(tp, nvlist_pack__empty_nvlist);
ATF_ADD_TEST_CASE(tp, nvlist_pack__multiple_values);
+ ATF_ADD_TEST_CASE(tp, nvlist_pack__error_nvlist);
ATF_ADD_TEST_CASE(tp, nvlist_unpack__duplicate_key);
ATF_ADD_TEST_CASE(tp, nvlist_move_string__single_insert);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jul 1, 8:08 PM (7 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34576040
Default Alt Text
D1878.diff (3 KB)
Attached To
Mode
D1878: Add function to force an nvlist into the error state
Attached
Detach File
Event Timeline
Log In to Comment