From owner-svn-soc-all@FreeBSD.ORG Sun Jul 21 14:15:26 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 21EB13FF for ; Sun, 21 Jul 2013 14:15:26 +0000 (UTC) (envelope-from mattbw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) by mx1.freebsd.org (Postfix) with ESMTP id 1356EF4D for ; Sun, 21 Jul 2013 14:15:26 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6LEFPjP072454 for ; Sun, 21 Jul 2013 14:15:25 GMT (envelope-from mattbw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r6LEFPMS072450 for svn-soc-all@FreeBSD.org; Sun, 21 Jul 2013 14:15:25 GMT (envelope-from mattbw@FreeBSD.org) Date: Sun, 21 Jul 2013 14:15:25 GMT Message-Id: <201307211415.r6LEFPMS072450@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: r255000 - in soc2013/mattbw/backend: . query 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: Sun, 21 Jul 2013 14:15:26 -0000 Author: mattbw Date: Sun Jul 21 14:15:25 2013 New Revision: 255000 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=255000 Log: use name-version for jobs instead of name only Modified: soc2013/mattbw/backend/pkgutils.c soc2013/mattbw/backend/pkgutils.h soc2013/mattbw/backend/query/jobs.c Modified: soc2013/mattbw/backend/pkgutils.c ============================================================================== --- soc2013/mattbw/backend/pkgutils.c Sun Jul 21 13:15:05 2013 (r254999) +++ soc2013/mattbw/backend/pkgutils.c Sun Jul 21 14:15:25 2013 (r255000) @@ -97,6 +97,22 @@ } /* + * Allocates and returns a string of the form "name-version" that identifies + * the given package's name and version. + * + * To be freed using free(3). + */ +char * +pkgutils_pkg_namever(struct pkg *pkg) +{ + char *result; + + result = NULL; + (void)pkg_asprintf(&result, "%n-%v", pkg, pkg); + return result; +} + +/* * Gets the PackageKit repository name for the package. */ const char * Modified: soc2013/mattbw/backend/pkgutils.h ============================================================================== --- soc2013/mattbw/backend/pkgutils.h Sun Jul 21 13:15:05 2013 (r254999) +++ soc2013/mattbw/backend/pkgutils.h Sun Jul 21 14:15:25 2013 (r255000) @@ -28,6 +28,7 @@ PkInfoEnum pkgutils_pkg_current_state(struct pkg *pkg); PkInfoEnum pkgutils_pkg_install_state(struct pkg *pkg); PkInfoEnum pkgutils_pkg_remove_state(struct pkg *pkg); +char *pkgutils_pkg_namever(struct pkg *pkg); const char *pkgutils_pk_repo_of(struct pkg *pkg); gchar *pkgutils_pkg_to_id(struct pkg *pkg); gchar *pkgutils_pkg_to_id_through(struct pkg *pkg, const gchar **strv); Modified: soc2013/mattbw/backend/query/jobs.c ============================================================================== --- soc2013/mattbw/backend/query/jobs.c Sun Jul 21 13:15:05 2013 (r254999) +++ soc2013/mattbw/backend/query/jobs.c Sun Jul 21 14:15:25 2013 (r255000) @@ -29,7 +29,6 @@ #include "core.h" /* query_... */ #include "jobs.h" /* query_jobs_... */ -static int add_pkg(struct pkg_jobs *jobs, match_t type, struct pkg *pkg); static int repo_from_query(struct pkg_jobs *jobs, struct query *q); /* @@ -71,6 +70,7 @@ job_emit_ptr f) { bool success; + char *namever; struct pkg_jobs *jobs; PkBackend *backend; @@ -80,6 +80,7 @@ success = false; jobs = NULL; + namever = NULL; backend = query_backend(q); @@ -95,7 +96,13 @@ "could not set repo"); goto cleanup; } - if (add_pkg(jobs, MATCH_EXACT, pkg) != EPKG_OK) { + namever = pkgutils_pkg_namever(pkg); + if (namever == NULL) { + ERR(backend, + PK_ERROR_ENUM_OOM, + "could not allocate a namever"); + } + if (pkg_jobs_add(jobs, MATCH_EXACT, &namever, 1) != EPKG_OK) { ERR(backend, PK_ERROR_ENUM_INTERNAL_ERROR, "could not add to job"); @@ -111,6 +118,7 @@ success = f(jobs, q); cleanup: + free(namever); pkg_jobs_free(jobs); return success; } @@ -138,17 +146,6 @@ return true; } -/* Adds a single package to a jobs structure. */ -static int -add_pkg(struct pkg_jobs *jobs, match_t type, struct pkg *pkg) -{ - char *name; - - name = NULL; - pkg_get(pkg, PKG_NAME, &name); - return pkg_jobs_add(jobs, type, &name, 1); -} - /* Sets a jobset to target the repository the given query is looking in. */ static int repo_from_query(struct pkg_jobs *jobs, struct query *q)