mirror of
https://git.sr.ht/~nabijaczleweli/tzpfms
synced 2025-04-11 09:30:02 +03:00
Compat with zfs 2.2+'s nvlist_lookup_string() taking const char **
This commit is contained in:
parent
fcd89b3a93
commit
a0246cb48e
16
src/zfs.cpp
16
src/zfs.cpp
@ -59,6 +59,18 @@ nvlist_t * clear_rewrap_args() {
|
||||
TRY_NVL(what, _try_retl); \
|
||||
})
|
||||
|
||||
namespace {
|
||||
// nvlist_lookup_nvlist takes nvlist_t *, char ** on bookworm and an const nvlist_t *, const char ** on sid!
|
||||
template <class>
|
||||
struct third_arg;
|
||||
|
||||
template <class F, class A, class B, class C>
|
||||
struct third_arg<F(A, B, C)> {
|
||||
using third = C;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
int lookup_userprop(zfs_handle_t * in, const char * name, char *& out) {
|
||||
// xyz.nabijaczleweli:tzpfms.key:
|
||||
// value: '76B0286BEB3FAF57536C47D9A2BAD38157FD522A75A59E72867BBFD6AF167395'
|
||||
@ -68,11 +80,11 @@ int lookup_userprop(zfs_handle_t * in, const char * name, char *& out) {
|
||||
TRY_LOOKUP("look up user property", nvlist_lookup_nvlist(zfs_get_user_props(in), name, &vs));
|
||||
|
||||
char * source{};
|
||||
TRY_LOOKUP("look up user property source", nvlist_lookup_string(vs, "source", &source));
|
||||
TRY_LOOKUP("look up user property source", nvlist_lookup_string(vs, "source", const_cast<third_arg<decltype(nvlist_lookup_string)>::third>(&source)));
|
||||
if(!source || strcmp(source, zfs_get_name(in)))
|
||||
return 0;
|
||||
|
||||
TRY_LOOKUP("look up user property value", nvlist_lookup_string(vs, "value", &out));
|
||||
TRY_LOOKUP("look up user property value", nvlist_lookup_string(vs, "value", const_cast<third_arg<decltype(nvlist_lookup_string)>::third>(&out)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user