[zypp-commit] r8991 - in /trunk/sat-solver/src: CMakeLists.txt pool.c pool.h repo_solv.c repodata.c repodata.h solvable.c
Author: mlschroe
Date: Mon Mar 3 20:56:59 2008
New Revision: 8991
URL: http://svn.opensuse.org/viewcvs/zypp?rev=8991&view=rev
Log:
- fix mem leaks
- do not close fd 0 by mistake
- add repodata_lookup_void
- add solvable_lookup_void
- add solvable_get_location
Added:
trunk/sat-solver/src/solvable.c
Modified:
trunk/sat-solver/src/CMakeLists.txt
trunk/sat-solver/src/pool.c
trunk/sat-solver/src/pool.h
trunk/sat-solver/src/repo_solv.c
trunk/sat-solver/src/repodata.c
trunk/sat-solver/src/repodata.h
Modified: trunk/sat-solver/src/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/CMakeLists.txt?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/CMakeLists.txt (original)
+++ trunk/sat-solver/src/CMakeLists.txt Mon Mar 3 20:56:59 2008
@@ -1,6 +1,6 @@
SET(libsatsolver_SRCS bitmap.c poolarch.c poolvendor.c poolid.c strpool.c dirpool.c
-solver.c repo_solv.c repo_helix.c evr.c pool.c queue.c repo.c repodata.c util.c policy.c fastlz.c)
+solver.c repo_solv.c repo_helix.c evr.c pool.c queue.c repo.c repodata.c util.c policy.c fastlz.c solvable.c)
ADD_LIBRARY(satsolver STATIC ${libsatsolver_SRCS})
Modified: trunk/sat-solver/src/pool.c
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/pool.c (original)
+++ trunk/sat-solver/src/pool.c Mon Mar 3 20:56:59 2008
@@ -163,6 +163,7 @@
for (i = 0; i < pool->nlanguages; i++)
free((char *)pool->languages[i]);
sat_free(pool->languages);
+ sat_free(pool->languagecache);
sat_free(pool);
}
@@ -932,58 +933,4 @@
pool->languages[i] = strdup(languages[i]);
}
-const char *
-solvable_lookup_str_lang(Solvable *s, Id keyname)
-{
- Pool *pool;
- int i, cols;
- const char *str;
- Id *row;
-
- if (!s->repo)
- return repo_lookup_str(s, keyname);
- pool = s->repo->pool;
- if (!pool->nlanguages)
- return repo_lookup_str(s, keyname);
- cols = pool->nlanguages + 1;
- if (!pool->languagecache)
- {
- pool->languagecache = sat_calloc(cols * ID_NUM_INTERNAL, sizeof(Id));
- pool->languagecacheother = 0;
- }
- if (keyname >= ID_NUM_INTERNAL)
- {
- row = pool->languagecache + ID_NUM_INTERNAL * cols;
- for (i = 0; i < pool->languagecacheother; i++, row += cols)
- if (*row == keyname)
- break;
- if (i >= pool->languagecacheother)
- {
- pool->languagecache = sat_realloc2(pool->languagecache, pool->languagecacheother + 1, cols * sizeof(Id));
- pool->languagecacheother++;
- row = pool->languagecache + cols * (ID_NUM_INTERNAL + pool->languagecacheother++);
- }
- }
- else
- row = pool->languagecache + keyname * cols;
- row++; /* skip keyname */
- for (i = 0; i < pool->nlanguages; i++, row++)
- {
- if (!*row)
- {
- char *p;
- const char *kn;
-
- kn = id2str(pool, keyname);
- p = sat_malloc(strlen(kn) + strlen(pool->languages[i]) + 2);
- sprintf(p, "%s:%s", kn, pool->languages[i]);
- *row = str2id(pool, p, 1);
- }
- str = repo_lookup_str(s, *row);
- if (str)
- return str;
- }
- return repo_lookup_str(s, keyname);
-}
-
// EOF
Modified: trunk/sat-solver/src/pool.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.h?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/pool.h (original)
+++ trunk/sat-solver/src/pool.h Mon Mar 3 20:56:59 2008
@@ -240,7 +240,13 @@
extern const char *solvable2str(Pool *pool, Solvable *s);
void pool_set_languages(Pool *pool, const char **languages, int nlanguages);
+
+unsigned int solvable_lookup_num(Solvable *s, Id keyname, unsigned int notfound);
+const char *solvable_lookup_str(Solvable *s, Id keyname);
const char *solvable_lookup_str_lang(Solvable *s, Id keyname);
+int solvable_lookup_bool(Solvable *s, Id keyname);
+char * solvable_get_location(Solvable *s, unsigned int *medianrp);
+
/**
Modified: trunk/sat-solver/src/repo_solv.c
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo_solv.c?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/repo_solv.c (original)
+++ trunk/sat-solver/src/repo_solv.c Mon Mar 3 20:56:59 2008
@@ -476,6 +476,7 @@
data = repo->repodata + repo->nrepodata++;
memset(data, 0, sizeof(*data));
data->repo = repo;
+ data->pagefd = -1;
data->state = REPODATA_STUB;
data->loadcallback = repodata_load_solv;
@@ -526,7 +527,7 @@
else
{
char buf[1024];
- unsigned len = sizeof (buf);
+ unsigned len = sizeof(buf);
char *filename = buf;
read_str(maindata, &filename, &len);
data->location = strdup(filename);
Modified: trunk/sat-solver/src/repodata.c
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repodata.c?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/repodata.c (original)
+++ trunk/sat-solver/src/repodata.c Mon Mar 3 20:56:59 2008
@@ -65,6 +65,8 @@
sat_free(data->attrdata);
sat_free(data->attriddata);
+ sat_free(data->location);
+
if (data->pagefd != -1)
close(data->pagefd);
}
@@ -373,7 +375,7 @@
}
int
-repodata_lookup_num(Repodata *data, Id entry, Id keyid, unsigned *value)
+repodata_lookup_num(Repodata *data, Id entry, Id keyid, unsigned int *value)
{
Id schema;
Repokey *key;
@@ -408,6 +410,22 @@
return 0;
}
+int
+repodata_lookup_void(Repodata *data, Id entry, Id keyid)
+{
+ Id schema;
+ Id *keyp;
+ unsigned char *dp;
+ if (!maybe_load_repodata(data, &keyid))
+ return 0;
+ dp = data->incoredata + data->incoreoffset[entry];
+ dp = data_read_id(dp, &schema);
+ for (keyp = data->schemadata + data->schemata[schema]; *keyp != keyid; keyp++)
+ if (!*keyp)
+ return 0;
+ return 1;
+}
+
void
repodata_search(Repodata *data, Id entry, Id keyname, int (*callback)(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv), void *cbdata)
{
Modified: trunk/sat-solver/src/repodata.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repodata.h?rev=8991&r1=8990&r2=8991&view=diff
==============================================================================
--- trunk/sat-solver/src/repodata.h (original)
+++ trunk/sat-solver/src/repodata.h Mon Mar 3 20:56:59 2008
@@ -118,6 +118,7 @@
* lookup integer type attribute
*/
int repodata_lookup_num(Repodata *data, Id entry, Id keyid, unsigned *value);
+int repodata_lookup_void(Repodata *data, Id entry, Id keyid);
void repodata_init(Repodata *data, struct _Repo *repo, int localpool);
void repodata_extend(Repodata *data, Id p);
Added: trunk/sat-solver/src/solvable.c
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/solvable.c?rev=8991&view=auto
==============================================================================
--- trunk/sat-solver/src/solvable.c (added)
+++ trunk/sat-solver/src/solvable.c Mon Mar 3 20:56:59 2008
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2008, Novell Inc.
+ *
+ * This program is licensed under the BSD license, read LICENSE.BSD
+ * for further information
+ */
+
+/*
+ * solvable.c
+ *
+ * set/retrieve data from solvables
+ */
+
+#include
participants (1)
-
mlschroe@svn.opensuse.org