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;