socsvn commit: r255000 - in soc2013/mattbw/backend: . query

mattbw at FreeBSD.org mattbw at FreeBSD.org
Sun Jul 21 14:15:26 UTC 2013


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)


More information about the svn-soc-all mailing list