#include <solv/evr.h>
#include <solv/pool.h>
-// Enable legacy logging
-#define PAKFIRE_LEGACY_LOGGING
-
#include <pakfire/dependencies.h>
#include <pakfire/logging.h>
#include <pakfire/package.h>
return r;
}
-const char* pakfire_dep2str(struct pakfire* pakfire, Id id) {
- Pool* pool = pakfire_get_solv_pool(pakfire);
- if (!pool)
- return NULL;
-
+const char* pakfire_dep2str(struct pakfire_ctx* ctx, Pool* pool, Id id) {
return pool_dep2str(pool, id);
}
/*
This function parses a simple dependency like "foo = 1.2.3"
*/
-static Id pakfire_parse_dep(struct pakfire* pakfire, const char** s) {
+static Id pakfire_parse_dep(struct pakfire_ctx* ctx, Pool* pool, const char** s) {
Id id = ID_NULL;
if (!s) {
if (!p)
return ID_NULL;
- Pool* pool = pakfire_get_solv_pool(pakfire);
-
// Consume any leading space
while (isspace(*p))
p++;
/*
This function parses any rich dependencies
*/
-static Id pakfire_parse_rich_dep(struct pakfire* pakfire, const char** dep, int flags) {
+static Id pakfire_parse_rich_dep(struct pakfire_ctx* ctx,
+ Pool* pool, const char** dep, int flags) {
const char* p = *dep;
Id id;
switch (*p) {
// A new rich dependency
case '(':
- id = pakfire_parse_rich_dep(pakfire, &p, 0);
+ id = pakfire_parse_rich_dep(ctx, pool, &p, 0);
if (!id)
return id;
break;
// Parse a regular dependency
default:
- id = pakfire_parse_dep(pakfire, &p);
+ id = pakfire_parse_dep(ctx, pool, &p);
if (!id)
return id;
break;
return ID_NULL;
// Parse the next bit
- Id evr = pakfire_parse_rich_dep(pakfire, &p, flags);
+ Id evr = pakfire_parse_rich_dep(ctx, pool, &p, flags);
// Abort if there was a problem
if (!evr)
// Store until where we have parsed the string
*dep = p;
- Pool* pool = pakfire_get_solv_pool(pakfire);
-
// Combine everything
return pool_rel2id(pool, id, evr, flags, 1);
}
-Id pakfire_str2dep(struct pakfire* pakfire, const char* dep) {
+Id pakfire_str2dep(struct pakfire_ctx* ctx, Pool* pool, const char* dep) {
Id id = ID_NULL;
// Invalid input
// Parse any rich dependencies
if (*s == '(')
- id = pakfire_parse_rich_dep(pakfire, &s, 0);
+ id = pakfire_parse_rich_dep(ctx, pool, &s, 0);
else
- id = pakfire_parse_dep(pakfire, &s);
+ id = pakfire_parse_dep(ctx, pool, &s);
// Return nothing if we could not parse the entire string
if (id && *s) {
- DEBUG(pakfire, "Invalid dependency: %s\n", dep);
+ CTX_DEBUG(ctx, "Invalid dependency: %s\n", dep);
id = ID_NULL;
}
return id;
}
-int pakfire_str2deps(struct pakfire* pakfire, struct pakfire_package* pkg,
+int pakfire_str2deps(struct pakfire_ctx* ctx, struct pakfire_package* pkg,
const enum pakfire_package_key key, const char* deps) {
char* p = NULL;
int r = 0;