From: Michael Schroeder Date: Thu, 9 Oct 2014 13:22:15 +0000 (+0200) Subject: always provide pool_setdisttype X-Git-Tag: 0.6.7~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86a8d255b17d98f8676163e8f4fd5c6dfea2e5c0;p=thirdparty%2Flibsolv.git always provide pool_setdisttype Also return an error for unsupported distributions. --- diff --git a/src/pool.c b/src/pool.c index 8dff38a6..8de4cc55 100644 --- a/src/pool.c +++ b/src/pool.c @@ -141,22 +141,33 @@ pool_freeallrepos(Pool *pool, int reuseids) pool_free_solvable_block(pool, 2, pool->nsolvables - 2, reuseids); } -#ifdef MULTI_SEMANTICS -void +int pool_setdisttype(Pool *pool, int disttype) { +#ifdef MULTI_SEMANTICS + int olddisttype = pool->disttype; + switch(disttype) + { + case DISTTYPE_RPM: + pool->noarchid = ARCH_NOARCH; + break; + case DISTTYPE_DEB: + pool->noarchid = ARCH_ALL; + break; + case DISTTYPE_ARCH: + case DISTTYPE_HAIKU: + pool->noarchid = ARCH_ANY; + break; + default: + return -1; + } pool->disttype = disttype; - if (disttype == DISTTYPE_RPM) - pool->noarchid = ARCH_NOARCH; - if (disttype == DISTTYPE_DEB) - pool->noarchid = ARCH_ALL; - if (disttype == DISTTYPE_ARCH) - pool->noarchid = ARCH_ANY; - if (disttype == DISTTYPE_HAIKU) - pool->noarchid = ARCH_ANY; pool->solvables[SYSTEMSOLVABLE].arch = pool->noarchid; -} + return olddisttype; +#else + return pool->disttype == disttype ? disttype : -1; #endif +} int pool_get_flag(Pool *pool, int flag) diff --git a/src/pool.h b/src/pool.h index 9761ce14..f6e5d290 100644 --- a/src/pool.h +++ b/src/pool.h @@ -225,9 +225,7 @@ extern void pool_free(Pool *pool); extern void pool_freeallrepos(Pool *pool, int reuseids); extern void pool_setdebuglevel(Pool *pool, int level); -#ifdef MULTI_SEMANTICS -extern void pool_setdisttype(Pool *pool, int disttype); -#endif +extern int pool_setdisttype(Pool *pool, int disttype); extern int pool_set_flag(Pool *pool, int flag, int value); extern int pool_get_flag(Pool *pool, int flag);