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