socsvn commit: r253297 - soc2013/mattbw/dummy
mattbw at FreeBSD.org
mattbw at FreeBSD.org
Thu Jun 20 21:36:40 UTC 2013
Author: mattbw
Date: Thu Jun 20 21:36:39 2013
New Revision: 253297
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=253297
Log:
create database when needed; init and shutdown pkg; currently segfaults.
Modified:
soc2013/mattbw/dummy/get-details.c
soc2013/mattbw/dummy/pk-backend-pkgng.c
Modified: soc2013/mattbw/dummy/get-details.c
==============================================================================
--- soc2013/mattbw/dummy/get-details.c Thu Jun 20 19:56:26 2013 (r253296)
+++ soc2013/mattbw/dummy/get-details.c Thu Jun 20 21:36:39 2013 (r253297)
@@ -42,7 +42,7 @@
const char *www;
pkg_t type;
- pkg_get2(match,
+ pkg_get(match,
PKG_NAME, &name,
PKG_VERSION, &version,
PKG_DESC, &description,
@@ -82,7 +82,7 @@
} while (err == EPKG_OK && found == FALSE);
if (found == FALSE)
- pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
+ pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "name matches found but no packageid matches");
return found;
}
@@ -96,9 +96,9 @@
success = FALSE;
parts = pk_package_id_split(package_id);
- if (parts == NULL) {
+ if (parts == NULL)
pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
- } else {
+ else {
struct pkgdb_it *packages;
packages = pkgdb_search(db, parts[PK_PACKAGE_ID_NAME], MATCH_EXACT, FIELD_NAME, NULL);
@@ -113,7 +113,7 @@
pkgdb_it_free(packages);
} else
- pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
+ pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "no name matches");
g_strfreev(parts);
}
Modified: soc2013/mattbw/dummy/pk-backend-pkgng.c
==============================================================================
--- soc2013/mattbw/dummy/pk-backend-pkgng.c Thu Jun 20 19:56:26 2013 (r253296)
+++ soc2013/mattbw/dummy/pk-backend-pkgng.c Thu Jun 20 21:36:39 2013 (r253297)
@@ -62,19 +62,43 @@
static struct pkgng_private priv;
+gboolean
+open_remote_db(struct pkgdb **db, PkBackend *backend)
+{
+ gboolean success;
+ int open_return;
+
+ success = FALSE;
+ open_return = pkgdb_open(db, PKGDB_REMOTE);
+ if (open_return != EPKG_OK)
+ pk_backend_error_code(backend,
+ PK_ERROR_ENUM_INTERNAL_ERROR,
+ "pkgdb_open returned an error");
+ else if (*db == NULL)
+ pk_backend_error_code(backend,
+ PK_ERROR_ENUM_INTERNAL_ERROR,
+ "pkgdb_open gave us a null pointer");
+ else
+ success = TRUE;
+
+ return success;
+}
+
/**
* pk_backend_initialize:
*/
void
pk_backend_initialize(PkBackend * backend)
{
- int open_return;
+ int err;
_progress_percentage = 0;
- open_return = pkgdb_open(&(priv.db), PKGDB_REMOTE);
-
- /* TODO: handle open_return not being EPKG_OK */
+ err = pkg_init(NULL);
+ if (err)
+ pk_backend_error_code(backend,
+ PK_ERROR_ENUM_INTERNAL_ERROR,
+ "could not initialise pkg");
}
/**
@@ -83,8 +107,7 @@
void
pk_backend_destroy(PkBackend * backend)
{
- if (priv.db)
- pkgdb_close(priv.db);
+ pkg_shutdown();
}
/**
@@ -180,19 +203,21 @@
gchar **package_ids;
guint len;
guint i;
- struct pkgdb_it *packages;
+ struct pkgdb *db;
package_ids = pk_backend_get_strv(backend, "package_ids");
len = g_strv_length(package_ids);
+ db = NULL;
+ no_error_yet = open_remote_db(&db, backend);
+
pk_backend_set_percentage(backend, 0);
- for (i = 0, no_error_yet = TRUE; i < len && no_error_yet; i++) {
- no_error_yet = get_details_for(package_ids[0], backend, priv.db);
+ for (i = 0; i < len && no_error_yet; i++) {
+ no_error_yet = get_details_for(package_ids[0], backend, db);
pk_backend_set_percentage(backend, ((i * 100) / len));
}
-
-
+ pkgdb_close(db);
pk_backend_finished(backend);
return no_error_yet;
More information about the svn-soc-all
mailing list