From owner-svn-soc-all@FreeBSD.ORG Thu Jun 20 21:36:40 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3C667DF8 for ; Thu, 20 Jun 2013 21:36:40 +0000 (UTC) (envelope-from mattbw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::16:124]) by mx1.freebsd.org (Postfix) with ESMTP id 1F3A21887 for ; Thu, 20 Jun 2013 21:36:40 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r5KLad80069911 for ; Thu, 20 Jun 2013 21:36:39 GMT (envelope-from mattbw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r5KLadaA069903 for svn-soc-all@FreeBSD.org; Thu, 20 Jun 2013 21:36:39 GMT (envelope-from mattbw@FreeBSD.org) Date: Thu, 20 Jun 2013 21:36:39 GMT Message-Id: <201306202136.r5KLadaA069903@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to mattbw@FreeBSD.org using -f From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r253297 - soc2013/mattbw/dummy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Jun 2013 21:36:40 -0000 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;