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