X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/aa72d53735c595550e417882b9aa8d1473b9b57c..4eb377de610752ddd6f00a23e90729ecd0190587:/src/upkg.c diff --git a/src/upkg.c b/src/upkg.c index 5a51c2e..9213753 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -290,7 +290,7 @@ static int object_info(GTypeModule *pkg, unsigned long idx) GObject *obj; unsigned n; - obj = u_object_new_from_package(upkg, idx); + obj = u_object_new_from_package(pkg, idx); if (!obj) { fprintf(stderr, "%s: failed to load object.\n", progname); @@ -311,8 +311,7 @@ static int object_info(GTypeModule *pkg, unsigned long idx) if (G_VALUE_HOLDS(&val, U_TYPE_OBJECT)) { UObject *obj = g_value_get_object(&val); - /* TODO: Display full object names here. */ - if (obj->pkg_name) { + if (obj && obj->pkg_name) { printf(" %s", obj->pkg_name); } } @@ -391,11 +390,10 @@ static int export(GTypeModule *pkg, GObject *obj, unsigned idx) static int object_export(GTypeModule *pkg, unsigned long idx) { - struct upkg *upkg = U_PKG(pkg)->pkg; GObject *obj; int ret = -1; - obj = u_object_new_from_package(upkg, idx); + obj = u_object_new_from_package(pkg, idx); if (!obj) { fprintf(stderr, "%s: failed to load object.\n", progname); return -1; @@ -415,28 +413,13 @@ out: int package_export(GTypeModule *pkg) { struct upkg *upkg = U_PKG(pkg)->pkg; - const char *class, *package; GObject *obj; - GType type; int ret = 0; for (unsigned i = 0; i < upkg->export_count; i++) { - class = upkg_export_class(upkg, i, &package); - if (!class) { - fprintf(stderr, "error getting class information.\n"); - return -1; - } - - type = u_object_module_get_class(package, class); - if (!type) - continue; - - obj = g_object_new(type, NULL); - if (U_OBJECT_IS_EXPORTABLE(obj)) { - if (u_object_deserialize(obj, upkg, i) != 0 - || export(pkg, obj, i) != 0) { - ret = -1; - } + obj = u_object_new_from_package(pkg, i); + if (U_OBJECT_IS_EXPORTABLE(obj) && export(pkg, obj, i) != 0) { + ret = -1; } g_object_unref(obj); }