Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Aug 2013 18:52:20 GMT
From:      mattbw@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r256631 - soc2013/mattbw/backend/query
Message-ID:  <201308271852.r7RIqKbn042191@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mattbw
Date: Tue Aug 27 18:52:20 2013
New Revision: 256631
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256631

Log:
  Add some unit tests for the resolve bug.
  
  The missing resolve functionality seems to be due to the query code not
  checking to see if the namever field matches the package's name as well as
  its namever.
  
  I've written an ATF test to capture this failure, but in order to get it to
  build a bit of major surgery regarding splitting and moving some query code
  around was required to make the ATF tests avoid needing to link against
  PackageKit.
  

Added:
  soc2013/mattbw/backend/query/check.c
  soc2013/mattbw/backend/query/check.h
  soc2013/mattbw/backend/query/check_test.c
Deleted:
  soc2013/mattbw/backend/query/core.c
  soc2013/mattbw/backend/query/core.h
Modified:
  soc2013/mattbw/backend/query/Atffile
  soc2013/mattbw/backend/query/id.c
  soc2013/mattbw/backend/query/id_test.c
  soc2013/mattbw/backend/query/match.c
  soc2013/mattbw/backend/query/match.h

Modified: soc2013/mattbw/backend/query/Atffile
==============================================================================
--- soc2013/mattbw/backend/query/Atffile	Tue Aug 27 18:19:22 2013	(r256630)
+++ soc2013/mattbw/backend/query/Atffile	Tue Aug 27 18:52:20 2013	(r256631)
@@ -3,3 +3,4 @@
 prop: test-suite = "query"
 
 tp: id_test
+tp: check_test

Added: soc2013/mattbw/backend/query/check.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2013/mattbw/backend/query/check.c	Tue Aug 27 18:52:20 2013	(r256631)
@@ -0,0 +1,92 @@
+/*-
+ * Copyright (C) 2013 Matt Windsor <mattbw@FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#include <assert.h>		/* assert */
+#include <stdbool.h>
+#include <string.h>		/* strcmp */
+#include "../pk-backend.h"
+#include "pkg.h"		/* struct pkg... */
+
+#include "../namever.h"		/* namever_... */
+#include "../utils.h"		/* type_of_repo_name, enum repo_type */
+#include "check.h"		/* query_check... */
+#include "find.h"		/* query_find_... */
+#include "match.h"		/* query_match_... */
+#include "packages.h"		/* query_packages_... */
+
+/* Attempts to match a set of QueryIDs into packages. */
+
+static bool string_match(const char *left, const char *right);
+
+/* Returns true if the given package matches the given query ID. */
+bool
+query_check_package(struct pkg *package, struct query_id *query_id)
+{
+	bool		matches;
+	char	       *namever;
+	const char     *arch;
+	const char     *repo;
+
+	assert(package != NULL);
+	assert(query_id != NULL);
+	assert(query_id->namever != NULL);
+
+
+	namever = namever_from_package(package);
+	(void)pkg_get(package, PKG_ARCH, &arch, PKG_REPONAME, &repo);
+
+	/* Be cautious and reject matches if the package fields aren't here. */
+	if (namever == NULL || arch == NULL || repo == NULL) {
+		matches = false;
+	} else {
+		bool		namever_matches;
+		bool		arch_matches;
+		bool		repo_matches;
+
+		namever_matches = string_match(query_id->namever, namever);
+		arch_matches = string_match(query_id->arch, arch);
+		repo_matches = string_match(query_id->repo, repo);
+
+		matches = (namever_matches && arch_matches && repo_matches);
+	}
+
+	free(namever);
+
+	return matches;
+}
+
+/*
+ * Checks two strings with strcmp and emits true if they match. If either
+ * string is NULL or empty, emit true as well (this is so that missing
+ * PackageID elements trigger matches).
+ */
+static bool
+string_match(const char *left, const char *right)
+{
+	bool		result;
+
+	if (left == NULL || right == NULL)
+		result = true;
+	else if (*left == '\0' || *right == '\0')
+		result = true;
+	else
+		result = (strcmp(left, right) == 0);
+
+	return result;
+}

Added: soc2013/mattbw/backend/query/check.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2013/mattbw/backend/query/check.h	Tue Aug 27 18:52:20 2013	(r256631)
@@ -0,0 +1,31 @@
+/*-
+ * Copyright (C) 2013 Matt Windsor <mattbw@FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _PKGNG_BACKEND_QUERY_CHECK_H_
+#define _PKGNG_BACKEND_QUERY_CHECK_H_
+
+#include <stdbool.h>
+#include "pkg.h"
+
+#include "id.h"			/* struct query_id */
+
+bool		query_check_package(struct pkg *package, struct query_id *query_id);
+
+#endif				/* !_PKGNG_BACKEND_QUERY_CHECK_H_ */

Added: soc2013/mattbw/backend/query/check_test.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2013/mattbw/backend/query/check_test.c	Tue Aug 27 18:52:20 2013	(r256631)
@@ -0,0 +1,251 @@
+/*-
+ * Copyright (C) 2013 Matt Windsor <mattbw@FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#include <atf-c.h>
+#include <stdlib.h>		/* free */
+#include <string.h>		/* strcmp */
+#include "pkg.h"		/* pkg... */
+
+#include "check.h"		/* query_check... */
+
+/* ATF/kyua tests for 'check.c'. */
+
+static struct pkg *gen_pkg(void);
+
+static struct pkg *
+gen_pkg(void)
+{
+	struct pkg     *pkg;
+	int		pkg_new_result;
+
+	pkg = NULL;
+	pkg_new_result = pkg_new(&pkg, PKG_FILE);
+
+	ATF_REQUIRE_EQ(pkg_new_result, EPKG_OK);
+
+	pkg_set(pkg,
+	    PKG_NAME, "pkg",
+	    PKG_VERSION, "1.1.4",
+	    PKG_ARCH, "freebsd:10:x86:32",
+	    PKG_REPONAME, "packagesite");
+
+	return pkg;
+}
+
+ATF_TC(package_match_name_only);
+ATF_TC_HEAD(package_match_name_only, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages identified by a single name match properly.");
+}
+ATF_TC_BODY(package_match_name_only, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("pkg");
+	id.arch = NULL;
+	id.repo = NULL;
+
+	ATF_CHECK(query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+}
+
+ATF_TC(package_match_namever_only);
+ATF_TC_HEAD(package_match_namever_only, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages identified by a namever match properly.");
+}
+ATF_TC_BODY(package_match_namever_only, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("pkg-1.1.4");
+	id.arch = NULL;
+	id.repo = NULL;
+
+	ATF_CHECK(query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+}
+
+ATF_TC(package_match_full);
+ATF_TC_HEAD(package_match_full, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages identified by a full query ID match properly.");
+}
+ATF_TC_BODY(package_match_full, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("pkg-1.1.4");
+	id.arch = strdup("freebsd:10:x86:32");
+	id.repo = strdup("packagesite");
+
+	ATF_CHECK(query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+	free(id.arch);
+	free(id.repo);
+}
+
+ATF_TC(package_match_bad_namever);
+ATF_TC_HEAD(package_match_bad_namever, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages fail to match an ID with the wrong namever.");
+}
+ATF_TC_BODY(package_match_bad_namever, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("wrong-1.1.4");
+	id.arch = strdup("freebsd:10:x86:32");
+	id.repo = strdup("packagesite");
+
+	ATF_CHECK(!query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+	free(id.arch);
+	free(id.repo);
+}
+
+ATF_TC(package_match_bad_arch);
+ATF_TC_HEAD(package_match_bad_arch, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages fail to match a query ID with the wrong arch.");
+}
+ATF_TC_BODY(package_match_bad_arch, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("pkg-1.1.4");
+	id.arch = strdup("freebsd:9:x86:64");
+	id.repo = strdup("packagesite");
+
+	ATF_CHECK(!query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+	free(id.arch);
+	free(id.repo);
+}
+
+ATF_TC(package_match_bad_repo);
+ATF_TC_HEAD(package_match_bad_repo, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages fail to match a query ID with the wrong repo.");
+}
+ATF_TC_BODY(package_match_bad_repo, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = strdup("pkg-1.1.4");
+	id.arch = strdup("freebsd:10:x86:32");
+	id.repo = strdup("wrong");
+
+	ATF_CHECK(!query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.namever);
+	free(id.arch);
+	free(id.repo);
+}
+
+ATF_TC(package_match_no_namever);
+ATF_TC_HEAD(package_match_no_namever, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure packages fail to match IDs with a missing namever.");
+}
+ATF_TC_BODY(package_match_no_namever, tc)
+{
+	struct pkg     *pkg;
+	struct query_id id;
+
+	pkg = gen_pkg();
+	ATF_REQUIRE(pkg != NULL);
+
+	id.namever = NULL;
+	id.arch = strdup("freebsd:10:x86:32");
+	id.repo = strdup("arch");
+
+	ATF_CHECK(!query_check_package(pkg, &id));
+
+	pkg_free(pkg);
+	free(id.arch);
+	free(id.repo);
+}
+
+
+/*
+ * TEST PACK
+ */
+
+ATF_TP_ADD_TCS(tp)
+{
+	ATF_TP_ADD_TC(tp, package_match_name_only);
+	ATF_TP_ADD_TC(tp, package_match_namever_only);
+	ATF_TP_ADD_TC(tp, package_match_full);
+	ATF_TP_ADD_TC(tp, package_match_bad_namever);
+	ATF_TP_ADD_TC(tp, package_match_bad_arch);
+	ATF_TP_ADD_TC(tp, package_match_bad_repo);
+	ATF_TP_ADD_TC(tp, package_match_no_namever);
+
+	return atf_no_error();
+}

Modified: soc2013/mattbw/backend/query/id.c
==============================================================================
--- soc2013/mattbw/backend/query/id.c	Tue Aug 27 18:19:22 2013	(r256630)
+++ soc2013/mattbw/backend/query/id.c	Tue Aug 27 18:52:20 2013	(r256631)
@@ -24,11 +24,11 @@
 #include "../pk-backend.h"	/* pk_... */
 
 #include "id.h"			/* query_id_... */
+#include "../namever.h"		/* namever_... */
 
 
 typedef bool	(*id_from_string_ptr) (const char *, struct query_id *);
 
-static char    *join_namever(const char *name, const char *version);
 static char    *strdup_null_if_empty(const char *in);
 static struct query_id *query_id_array_alloc(unsigned int count);
 static struct query_id *query_id_array_from_strings(char **strings, unsigned int package_count, id_from_string_ptr id_from_string);
@@ -143,7 +143,8 @@
 		 * Anything else is optional.
 		 */
 		if (have_name && have_version) {
-			query_id->namever = join_namever(name, version);
+			query_id->namever = namever_from_name_and_version(name,
+			    version);
 
 			arch = split_package_id[PK_PACKAGE_ID_ARCH];
 			query_id->arch = strdup_null_if_empty(arch);
@@ -160,27 +161,6 @@
 	return success;
 }
 
-/*
- * Joins a name and version together to create a 'namever'.
- * The returned string is newly allocated and must be freed using free(3).
- */
-static char *
-join_namever(const char *name, const char *version) {
-	char	       *namever;
-
-	/*
-	 * The calling code should have checked to make sure the name and
-	 * version are present.
-	 */
-	assert(name != NULL);
-	assert(version != NULL);
-
-	namever = NULL;
-	(void)asprintf(&namever, "%s-%s", name, version);
-
-	return namever;
-}
-
 /* Allocates an array of query IDs. */
 static struct query_id *
 query_id_array_alloc(unsigned int count)

Modified: soc2013/mattbw/backend/query/id_test.c
==============================================================================
--- soc2013/mattbw/backend/query/id_test.c	Tue Aug 27 18:19:22 2013	(r256630)
+++ soc2013/mattbw/backend/query/id_test.c	Tue Aug 27 18:52:20 2013	(r256631)
@@ -132,6 +132,9 @@
 	ATF_CHECK_STREQ(result.namever, "pkg-1.1.4");
 	ATF_CHECK_STREQ(result.arch, "freebsd:9:x86:32");
 	ATF_CHECK_EQ(result.repo, NULL);
+
+	free(result.namever);
+	free(result.arch);
 }
 
 ATF_TC(query_id_from_package_id_single_no_arch);
@@ -157,6 +160,9 @@
 	ATF_CHECK_STREQ(result.namever, "pkg-1.1.4");
 	ATF_CHECK_EQ(result.arch, NULL);
 	ATF_CHECK_STREQ(result.repo, "packagesite");
+
+	free(result.namever);
+	free(result.repo);
 }
 
 /*
@@ -186,6 +192,8 @@
 	ATF_CHECK_STREQ(result.namever, "pkg-1.1.4");
 	ATF_CHECK_EQ(result.arch, NULL);
 	ATF_CHECK_EQ(result.repo, NULL);
+
+	free(result.namever);
 }
 
 /*
@@ -232,14 +240,14 @@
 {
 	unsigned int	i;
 	struct query_id	*results;
-	const char     *valid_names[3];
+	char     *valid_names[3];
 	const char     *valid_1 = "pkg-1.1.4";
 	const char     *valid_2 = "brasero-1.2";
 	const char     *valid_3 = "PackageKit";
 
-	valid_names[0] = valid_1;
-	valid_names[1] = valid_2;
-	valid_names[2] = valid_3;
+	valid_names[0] = strdup(valid_1);
+	valid_names[1] = strdup(valid_2);
+	valid_names[2] = strdup(valid_3);
 
 	results = query_id_array_from_names(valid_names, 3);
 	ATF_CHECK(results != NULL);
@@ -249,8 +257,14 @@
 			ATF_CHECK_STREQ(results[i].namever, valid_names[i]);
 			ATF_CHECK_EQ(results[i].arch, NULL);
 			ATF_CHECK_EQ(results[i].repo, NULL);
+
+			free(results[i].namever);
 		}
 	}
+
+	free(valid_names[0]);
+	free(valid_names[1]);
+	free(valid_names[2]);
 }
 
 ATF_TC(query_id_from_name_multiple_empty);
@@ -263,17 +277,21 @@
 ATF_TC_BODY(query_id_from_name_multiple_empty, tc)
 {
 	struct query_id	*results;
-	const char     *invalid_names[3];
+	char     *invalid_names[3];
 	const char     *invalid_1 = "pkg-1.1.4";
 	const char     *invalid_2 = "";
 	const char     *invalid_3 = "PackageKit";
 
-	invalid_names[0] = invalid_1;
-	invalid_names[1] = invalid_2;
-	invalid_names[2] = invalid_3;
+	invalid_names[0] = strdup(invalid_1);
+	invalid_names[1] = strdup(invalid_2);
+	invalid_names[2] = strdup(invalid_3);
 
 	results = query_id_array_from_names(invalid_names, 3);
 	ATF_CHECK_EQ(results, NULL);
+
+	free(invalid_names[0]);
+	free(invalid_names[1]);
+	free(invalid_names[2]);
 }
 
 ATF_TC(query_id_from_package_id_multiple_valid);
@@ -286,14 +304,14 @@
 ATF_TC_BODY(query_id_from_package_id_multiple_valid, tc)
 {
 	struct query_id	*results;
-	const char     *valid_package_ids[3];
+	char     *valid_package_ids[3];
 	const char     *valid_1 = "pkg;1.1.4;freebsd:9:x86:32;packagesite";
 	const char     *valid_2 = "brasero;1.2;freebsd:9:x86:64;elsewhere";
 	const char     *valid_3 = "PackageKit;0.6;freebsd:10:x86:32;installed";
 
-	valid_package_ids[0] = valid_1;
-	valid_package_ids[1] = valid_2;
-	valid_package_ids[2] = valid_3;
+	valid_package_ids[0] = strdup(valid_1);
+	valid_package_ids[1] = strdup(valid_2);
+	valid_package_ids[2] = strdup(valid_3);
 
 	results = query_id_array_from_package_ids(valid_package_ids, 3);
 	ATF_CHECK(results != NULL);
@@ -311,6 +329,10 @@
 		ATF_CHECK_STREQ(results[2].arch, "freebsd:10:x86:32");
 		ATF_CHECK_STREQ(results[2].repo, "installed");
 	}
+
+	free(valid_package_ids[0]);
+	free(valid_package_ids[1]);
+	free(valid_package_ids[2]);
 }
 
 /*

Modified: soc2013/mattbw/backend/query/match.c
==============================================================================
--- soc2013/mattbw/backend/query/match.c	Tue Aug 27 18:19:22 2013	(r256630)
+++ soc2013/mattbw/backend/query/match.c	Tue Aug 27 18:52:20 2013	(r256631)
@@ -19,22 +19,24 @@
  */
 #include <assert.h>		/* assert */
 #include <stdbool.h>
+#include <string.h>		/* strcmp */
 #include "../pk-backend.h"
 #include "pkg.h"		/* struct pkg... */
 
-#include "../pkgutils.h"	/* pkgutils_... */
+#include "../namever.h"		/* namever_... */
 #include "../utils.h"		/* type_of_repo_name, enum repo_type */
-#include "do.h"			/* query_do... */
+#include "check.h"		/* query_check... */
 #include "find.h"		/* query_find_... */
 #include "match.h"		/* query_match_... */
 #include "packages.h"		/* query_packages_... */
 
+/* Attempts to match a set of QueryIDs into packages. */
+
 typedef		struct pkgdb_it * (*query_func_ptr) (struct query_id *id, struct pkgdb *db, unsigned int load_flags);
 
 static struct pkg *query_match_from(query_func_ptr function, struct pkgdb *db, struct query_id *query_id, unsigned int load_flags);
 static struct pkg *match_iterator(struct pkgdb_it *it, struct query_id *query_id, unsigned int load_flags);
 
-/* Attempts to match a set of QueryIDs into packages. */
 struct pkg **
 query_match_ids(struct query_id *query_ids, unsigned int count,
     struct pkgdb *db, unsigned int load_flags)
@@ -103,43 +105,6 @@
 	return package;
 }
 
-/* Returns true if the given package matches the given query ID. */
-bool
-query_match_pkg_to_id(struct pkg *package, struct query_id *query_id)
-{
-	bool		matches;
-	char	       *namever;
-	const char     *arch;
-	const char     *repo;
-
-	assert(package != NULL);
-	assert(query_id != NULL);
-	assert(query_id->namever != NULL);
-
-
-	namever = pkgutils_pkg_namever(package);
-	(void)pkg_get(package, PKG_ARCH, &arch, PKG_REPONAME, &repo);
-
-	/* Be cautious and reject matches if the package fields aren't here. */
-	if (namever == NULL || arch == NULL || repo == NULL) {
-		matches = false;
-	} else {
-		bool		namever_matches;
-		bool		arch_matches;
-		bool		repo_matches;
-
-		namever_matches = string_match(query_id->namever, namever);
-		arch_matches = string_match(query_id->arch, arch);
-		repo_matches = string_match(query_id->repo, repo);
-
-		matches = (namever_matches && arch_matches && repo_matches);
-	}
-
-	free(namever);
-
-	return matches;
-}
-
 /* Takes a querying function and attempts to find a QueryID using it. */
 static struct pkg *
 query_match_from(query_func_ptr function, struct pkgdb *db,
@@ -180,7 +145,7 @@
 
 	pkg = NULL;
 	while (pkgdb_it_next(it, &pkg, load_flags) == EPKG_OK) {
-		success = query_match_pkg_to_id(pkg, query_id);
+		success = query_check_package(pkg, query_id);
 		/* Did it match? */
 		if (success) {
 			break;
@@ -198,4 +163,3 @@
 
 	return pkg;
 }
-

Modified: soc2013/mattbw/backend/query/match.h
==============================================================================
--- soc2013/mattbw/backend/query/match.h	Tue Aug 27 18:19:22 2013	(r256630)
+++ soc2013/mattbw/backend/query/match.h	Tue Aug 27 18:52:20 2013	(r256631)
@@ -26,7 +26,6 @@
 
 #include "id.h"			/* struct query_id */
 
-bool		query_match_pkg_to_id(struct pkg *package, struct query_id *query_id);
 struct pkg     *query_match_id(struct query_id *query_id, struct pkgdb *db, unsigned int load_flags);
 struct pkg    **query_match_ids(struct query_id *query_ids, unsigned int count, struct pkgdb *db, unsigned int load_flags);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308271852.r7RIqKbn042191>