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;