From e333a8d87ca963e98648fa7880ac8a43bea0546d Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 4 Mar 2008 18:18:34 +0000 Subject: [PATCH] - add namespace:filesystem support to fix_legacy --- src/pool.c | 1 + src/pool.h | 93 +++++++++++++++++++++++++++++++------------------------------- src/repo.c | 9 ++++++ 3 files changed, 57 insertions(+), 46 deletions(-) diff --git a/src/pool.c b/src/pool.c index 9bebf4a..4852054 100644 --- a/src/pool.c +++ b/src/pool.c @@ -57,6 +57,7 @@ static const char *initpool_data[] = { "namespace:modalias", "namespace:splitprovides", "namespace:language", + "namespace:filesystem", "system:system", "src", "nosrc", diff --git a/src/pool.h b/src/pool.h index 48e2ed2..fa4077d 100644 --- a/src/pool.h +++ b/src/pool.h @@ -51,13 +51,14 @@ extern "C" { #define NAMESPACE_MODALIAS 19 #define NAMESPACE_SPLITPROVIDES 20 #define NAMESPACE_LANGUAGE 21 -#define SYSTEM_SYSTEM 22 -#define ARCH_SRC 23 -#define ARCH_NOSRC 24 -#define ARCH_NOARCH 25 -#define REPODATA_EXTERNAL 26 -#define REPODATA_KEYS 27 -#define REPODATA_LOCATION 28 +#define NAMESPACE_FILESYSTEM 22 +#define SYSTEM_SYSTEM 23 +#define ARCH_SRC 24 +#define ARCH_NOSRC 25 +#define ARCH_NOARCH 26 +#define REPODATA_EXTERNAL 27 +#define REPODATA_KEYS 28 +#define REPODATA_LOCATION 29 /* The void type is usable to encode one-valued attributes, they have no associated data. This is useful to encode values which many solvables @@ -65,45 +66,45 @@ extern "C" { example would be the media number. The actual value is encoded in the SIZE member of the key structure. Be warned: careless use of this leads to combinatoric explosion of number of schemas. */ -#define REPOKEY_TYPE_VOID 29 -#define REPOKEY_TYPE_CONSTANT 30 -#define REPOKEY_TYPE_CONSTANTID 31 -#define REPOKEY_TYPE_ID 32 -#define REPOKEY_TYPE_NUM 33 -#define REPOKEY_TYPE_U32 34 -#define REPOKEY_TYPE_DIR 35 -#define REPOKEY_TYPE_STR 36 -#define REPOKEY_TYPE_IDARRAY 37 -#define REPOKEY_TYPE_REL_IDARRAY 38 -#define REPOKEY_TYPE_DIRSTRARRAY 39 -#define REPOKEY_TYPE_DIRNUMNUMARRAY 40 - -#define SOLVABLE_SUMMARY 41 -#define SOLVABLE_DESCRIPTION 42 -#define SOLVABLE_AUTHORS 43 -#define SOLVABLE_GROUP 44 -#define SOLVABLE_KEYWORDS 45 -#define SOLVABLE_LICENSE 46 -#define SOLVABLE_BUILDTIME 47 -#define SOLVABLE_EULA 48 -#define SOLVABLE_MESSAGEINS 49 -#define SOLVABLE_MESSAGEDEL 50 -#define SOLVABLE_INSTALLSIZE 51 -#define SOLVABLE_DISKUSAGE 52 -#define SOLVABLE_FILELIST 53 -#define SOLVABLE_INSTALLTIME 54 -#define SOLVABLE_MEDIADIR 55 -#define SOLVABLE_MEDIAFILE 56 -#define SOLVABLE_MEDIANR 57 -#define SOLVABLE_DOWNLOADSIZE 58 -#define SOLVABLE_SOURCEARCH 59 -#define SOLVABLE_SOURCENAME 60 -#define SOLVABLE_SOURCEEVR 61 -#define SOLVABLE_ISVISIBLE 62 - -#define SOLVABLE_PATCHCATEGORY 63 - -#define ID_NUM_INTERNAL 64 +#define REPOKEY_TYPE_VOID 30 +#define REPOKEY_TYPE_CONSTANT 31 +#define REPOKEY_TYPE_CONSTANTID 32 +#define REPOKEY_TYPE_ID 33 +#define REPOKEY_TYPE_NUM 34 +#define REPOKEY_TYPE_U32 35 +#define REPOKEY_TYPE_DIR 36 +#define REPOKEY_TYPE_STR 37 +#define REPOKEY_TYPE_IDARRAY 38 +#define REPOKEY_TYPE_REL_IDARRAY 39 +#define REPOKEY_TYPE_DIRSTRARRAY 40 +#define REPOKEY_TYPE_DIRNUMNUMARRAY 41 + +#define SOLVABLE_SUMMARY 42 +#define SOLVABLE_DESCRIPTION 43 +#define SOLVABLE_AUTHORS 44 +#define SOLVABLE_GROUP 45 +#define SOLVABLE_KEYWORDS 46 +#define SOLVABLE_LICENSE 47 +#define SOLVABLE_BUILDTIME 48 +#define SOLVABLE_EULA 49 +#define SOLVABLE_MESSAGEINS 50 +#define SOLVABLE_MESSAGEDEL 51 +#define SOLVABLE_INSTALLSIZE 52 +#define SOLVABLE_DISKUSAGE 53 +#define SOLVABLE_FILELIST 54 +#define SOLVABLE_INSTALLTIME 55 +#define SOLVABLE_MEDIADIR 56 +#define SOLVABLE_MEDIAFILE 57 +#define SOLVABLE_MEDIANR 58 +#define SOLVABLE_DOWNLOADSIZE 59 +#define SOLVABLE_SOURCEARCH 60 +#define SOLVABLE_SOURCENAME 61 +#define SOLVABLE_SOURCEEVR 62 +#define SOLVABLE_ISVISIBLE 63 + +#define SOLVABLE_PATCHCATEGORY 64 + +#define ID_NUM_INTERNAL 65 /* well known solvable */ diff --git a/src/repo.c b/src/repo.c index ed1b962..45fb428 100644 --- a/src/repo.c +++ b/src/repo.c @@ -468,6 +468,15 @@ repo_fix_legacy(Repo *repo, Offset provides, Offset supplements) if (id) repo->idarraydata[i] = id; } + else if (!strncmp(dep, "filesystem(", 11) && strlen(dep) < sizeof(buf)) + { + strcpy(buf, dep + 11); + if ((p = strrchr(buf, ')')) != 0) + *p = 0; + id = str2id(pool, buf, 1); + id = rel2id(pool, NAMESPACE_FILESYSTEM, id, REL_NAMESPACE, 1); + repo->idarraydata[i] = id; + } } return supplements; } -- 2.7.4