Blob Blame History Raw
diff -ur pkgconfig-0.15.0/main.c pkgconfig-0.15.0/main.c
--- pkgconfig-0.15.0/main.c	2005-02-02 19:12:20.327992745 -0500
+++ pkgconfig-0.15.0/main.c	2005-02-02 19:15:45.784804237 -0500
@@ -173,6 +173,8 @@
   static int want_uninstalled = 0;
   static char *variable_name = NULL;
   static int want_exists = 0;
+  static int want_prov = 0;
+  static int want_req = 0;
   static char *required_atleast_version = NULL;
   static char *required_exact_version = NULL;
   static char *required_max_version = NULL;
@@ -244,6 +246,10 @@
     { "msvc-syntax", 0, POPT_ARG_NONE, &msvc_syntax, 0,
       "output -l and -L flags for the Microsoft compiler (cl)" },
 #endif
+    { "print-provides", 0, POPT_ARG_NONE, &want_prov, 0,
+      "print which packages the package provides" },
+    { "print-requires", 0, POPT_ARG_NONE, &want_req, 0,
+      "print which packages the package requires" },
     POPT_AUTOHELP
     { NULL, 0, 0, NULL, 0 }
   };
@@ -521,6 +527,47 @@
         }
     }
 
+  if (want_prov)
+    {
+      GSList *tmp;
+      tmp = packages;
+      while (tmp != NULL)
+        {
+          Package *pkg = tmp->data;
+          char *key;
+          key = pkg->key;
+          while (*key == '/')
+            key++;
+          if (strlen(key) > 0)
+            printf ("%s = %s\n", key, pkg->version);
+          tmp = g_slist_next (tmp);
+        }
+    }
+
+  if (want_req)
+    {
+      GSList *pkgtmp = packages;
+      while (pkgtmp != NULL)
+        {
+          Package *pkg = pkgtmp->data;
+          GSList *reqtmp = pkg->requires;
+          while (reqtmp != NULL)
+            {
+              Package *deppkg = reqtmp->data;
+              RequiredVersion *req;
+              req = g_hash_table_lookup(pkg->required_versions, deppkg->key);
+              if ((req == NULL) || (req->comparison == ALWAYS_MATCH))
+                printf ("%s\n", deppkg->key);
+              else
+                printf ("%s %s %s\n", deppkg->key,
+                        comparison_to_str(req->comparison),
+                        req->version);
+              reqtmp = g_slist_next (reqtmp);
+            }
+          pkgtmp = g_slist_next (pkgtmp);
+        }
+    }
+
   if (required_exact_version)
     {
       Package *pkg = packages->data;