+ return ret;
+}
+
+static int process_object(int mode, const char *objname)
+{
+ GTypeModule *pkg;
+ int ret = 0;
+
+ pkg = u_pkg_open(objname);
+ if (!pkg || !g_type_module_use(pkg)) {
+ fprintf(stderr, "%s: %s: failed to open package.\n",
+ progname, objname);
+ goto out;
+ }
+
+ if (!U_PKG(pkg)->pkg) {
+ if (u_pkg_is_native(pkg)) {
+ fprintf(stderr, "%s: %s: not a UObject package.\n",
+ progname, objname);
+ } else {
+ fprintf(stderr, "%s: %s: package not found.\n",
+ progname, objname);
+ }
+
+ goto out_unuse;
+ }
+
+ switch (mode) {
+ case MODE_INFO:
+ ret = package_info(U_PKG(pkg)->pkg);
+ break;
+ case MODE_EXPORT:
+ ret = package_export(U_PKG(pkg)->pkg);
+ break;
+ default:
+ abort();
+ }
+
+out_unuse:
+ g_type_module_unuse(pkg);
+out:
+ return ret;