def search(self, pattern):
# Do the search.
- pkgs = self.repos.search(pattern)
+ pkgs = []
+ for solv in self.pool.search(pattern):
+ pkgs.append(packages.SolvPackage(self, solv))
# Return the output as a package listing.
return packages.PackageListing(pkgs)
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-16 22:20+0200\n"
+"POT-Creation-Date: 2011-07-17 12:07+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
{"size", (PyCFunction)Pool_size, METH_NOARGS, NULL},
{"set_installed", (PyCFunction)Pool_set_installed, METH_VARARGS, NULL},
{"providers", (PyCFunction)Pool_providers, METH_VARARGS, NULL},
+ {"search", (PyCFunction)Pool_search, METH_VARARGS, NULL},
{ NULL, NULL, 0, NULL }
};
return Py_BuildValue("i", pool->nsolvables);
}
+PyObject *_Pool_search(Pool *pool, Repo *repo, const char *match, int option) {
+ // Prepare the pool, so we can search in it.
+ _Pool_prepare(pool);
+
+ Dataiterator d;
+ dataiterator_init(&d, pool, repo, 0, 0, match, option);
+
+ PyObject *list = PyList_New(0);
+
+ SolvableObject *solvable;
+ while (dataiterator_step(&d)) {
+ solvable = PyObject_New(SolvableObject, &SolvableType);
+ solvable->_pool = pool;
+ solvable->_id = d.solvid;
+
+ PyList_Append(list, (PyObject *)solvable);
+ }
+
+ dataiterator_free(&d);
+
+ Py_INCREF(list);
+ return list;
+}
+
PyObject *Pool_search(PoolObject *self, PyObject *args) {
- Py_RETURN_NONE; /* XXX to be done */
+ const char *match = NULL;
+ int option = SEARCH_SUBSTRING;
+
+ if (!PyArg_ParseTuple(args, "s|i", &match, &option)) {
+ /* XXX raise exception */
+ }
+
+ return _Pool_search(self->_pool, NULL, match, option);
}
PyObject *Pool_set_installed(PoolObject *self, PyObject *args) {