+ if (!(*dlopened = psi_dlopen(lib))) {
+ dst->error(dst, NULL, PSI_WARNING, "Could not open library '%s': %s",
+ libname, psi_dlerror());
+ return false;
+ }
+
+ return true;
+}
+
+bool psi_decl_file_validate(struct psi_data *dst, struct psi_data *src)
+{
+ size_t i = 0;
+ char *libname;
+ void *dlopened;
+
+ while (psi_plist_get(src->file.libnames, i++, &libname)) {
+ if (!validate_lib(dst, libname, &dlopened)) {
+ return false;
+ }
+
+ dst->file.libnames = psi_plist_add(dst->file.libnames, &libname);
+ dst->file.dlopened = psi_plist_add(dst->file.dlopened, &dlopened);