Date: Thu, 20 Jun 2013 21:36:39 GMT From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r253297 - soc2013/mattbw/dummy Message-ID: <201306202136.r5KLadaA069903@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306202136.r5KLadaA069903>