]> git.draconx.ca Git - upkg.git/blobdiff - src/upkg.c
upkg: Add support for querying specific objects.
[upkg.git] / src / upkg.c
index 989bf798f322e10d5d546d8f1e99d63ee3385868..93b3c64aeefb9216634aa9e3e61bc17c96c6d175 100644 (file)
@@ -223,6 +223,28 @@ int package_info(struct upkg *pkg)
        return 0;
 }
 
+static void export_print_name(struct upkg *upkg, const struct upkg_export *e)
+{
+       if (e) {
+               export_print_name(upkg, upkg_get_export(upkg, e->package-1));
+               printf(".%s", e->name);
+       }
+}
+
+static int export_info(GTypeModule *pkg, unsigned long idx)
+{
+       struct upkg *upkg = U_PKG(pkg)->pkg;
+       const struct upkg_export *export;
+
+       export = upkg_get_export(upkg, idx);
+
+       printf("%s", pkg->name);
+       export_print_name(upkg, export);
+       putchar('\n');
+
+       return 0;
+}
+
 static int export(struct upkg *pkg, GObject *obj, unsigned idx)
 {
        const struct upkg_export *export = upkg_get_export(pkg, idx);
@@ -341,7 +363,10 @@ static int process_object(int mode, const char *objname)
 
        switch (mode) {
        case MODE_INFO:
-               ret = package_info(U_PKG(pkg)->pkg);
+               if (current < 0)
+                       ret = package_info(U_PKG(pkg)->pkg);
+               else
+                       ret = export_info(pkg, current);
                break;
        case MODE_EXPORT:
                ret = package_export(U_PKG(pkg)->pkg);