#include "module.h"
#include "uobject.h"
#include "exportable.h"
+#include "loadable.h"
enum {
MODE_INFO,
struct upkg_file *f = upkg_export_open(pkg, idx);
char name[256];
FILE *of;
- int rc;
+ int rc = -1;
if (u_object_deserialize(obj, f) != 0) {
- return -1;
+ goto out;
}
+
+ if (U_OBJECT_IS_LOADABLE(obj) && u_object_load(obj) != 0) {
+ goto out;
+ }
+
u_object_export_name(obj, name, sizeof name);
printf("exporting %s to %s\n", upkg_export_name(pkg, idx), name);
of = fopen(name, "wb");
if (!of) {
perror(name);
- return -1;
+ goto out;
}
rc = u_object_export(obj, of);
if (fclose(of) != 0) {
perror(name);
- return -1;
+ rc = -1;
+ goto out;
}
+ if (U_OBJECT_IS_LOADABLE(obj)) {
+ u_object_unload(obj);
+ }
+
+out:
+ upkg_export_close(f);
return rc;
}
for (unsigned i = 0; i < pkg->export_count; i++) {
class = upkg_export_class(pkg, i, &package);
+ if (!class) {
+ fprintf(stderr, "error getting class information.\n");
+ return EXIT_FAILURE;
+ }
type = module_get_class(package, class);
if (!type) continue;