summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobey Pointer <robey@src.gnome.org>2001-03-06 01:34:21 +0000
committerRobey Pointer <robey@src.gnome.org>2001-03-06 01:34:21 +0000
commit48e6c08febf604da0bf2f39add41a0a0ac89e70a (patch)
tree017bf7ec48c23ac702841df9d0f30e5458aa5092
parent7b47207a9049b1764d29e8ccc8f3aa68fec61491 (diff)
downloadnautilus-48e6c08febf604da0bf2f39add41a0a0ac89e70a.tar.gz
reviewed by: Eskil Heyn Olsen <eskil@eazel.com>
who said it was "most excellent" * components/services/install/lib/eazel-softcat.c: (eazel_softcat_get_info): When parsing softcat responses, check if we were doing a suite lookup even if only one package was returned. (Suites consisting of only one package were getting returned as if it was a toplevel package with both suite_id and rpm_id set.)
-rw-r--r--ChangeLog13
-rw-r--r--components/services/install/lib/eazel-softcat.c77
2 files changed, 51 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 14a04d43e..ca2e417b6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2001-03-05 Robey Pointer <robey@eazel.com>
+
+ reviewed by: Eskil Heyn Olsen <eskil@eazel.com>
+ who said it was "most excellent"
+
+ * components/services/install/lib/eazel-softcat.c:
+ (eazel_softcat_get_info):
+
+ When parsing softcat responses, check if we were doing a suite
+ lookup even if only one package was returned. (Suites consisting
+ of only one package were getting returned as if it was a toplevel
+ package with both suite_id and rpm_id set.)
+
2001-03-05 Arik Devens <arik@eazel.com>
reviewed by: Ramiro Estrugo <ramiro@eazel.com>
diff --git a/components/services/install/lib/eazel-softcat.c b/components/services/install/lib/eazel-softcat.c
index 1f8e5016c..e0911eed6 100644
--- a/components/services/install/lib/eazel-softcat.c
+++ b/components/services/install/lib/eazel-softcat.c
@@ -728,53 +728,52 @@ eazel_softcat_get_info (EazelSoftCat *softcat, PackageData *package, int sense_f
return err;
}
- if (g_list_length (packages) > 1) {
- if (package->suite_id) {
- /* More than one package returned and we queried on a suite Id.
- Make deps and put into "package", remember to strip dirs in
- provides if needed */
- GList *iterator;
-
- trilobite_debug ("softcat query returned suite with %d elements",
- g_list_length (packages));
- for (iterator = packages; iterator; iterator = g_list_next (iterator)) {
- PackageData *pack = PACKAGEDATA (iterator->data);
- PackageDependency *dep = g_new0 (PackageDependency, 1);
-
- if (fill_flags & PACKAGE_FILL_NO_DIRS_IN_PROVIDES) {
- remove_directories_from_provides_list (pack);
- }
- gtk_object_ref (GTK_OBJECT (pack));
- pack->fillflag = fill_flags;
-
- dep->package = pack;
- dep->version = g_strdup (pack->version);
-
- if (dep->version) {
- /* FIXME: should a suite be EQ or GE ? If GE, any newer version
- that's already installed will be ok, if EQ, the suites depends
- on an exact version */
- dep->sense = EAZEL_SOFTCAT_SENSE_GE;
- } else {
- dep->sense = EAZEL_SOFTCAT_SENSE_ANY;
- }
-
- packagedata_add_pack_to_depends (package, dep);
+ if (package->suite_id) {
+ /* More than one package returned and we queried on a suite id.
+ Make deps and put into "package", remember to strip dirs in
+ provides if needed */
+ GList *iterator;
+
+ trilobite_debug ("softcat query returned suite with %d element(s)",
+ g_list_length (packages));
+ for (iterator = packages; iterator; iterator = g_list_next (iterator)) {
+ PackageData *pack = PACKAGEDATA (iterator->data);
+ PackageDependency *dep = g_new0 (PackageDependency, 1);
+
+ if (fill_flags & PACKAGE_FILL_NO_DIRS_IN_PROVIDES) {
+ remove_directories_from_provides_list (pack);
}
- } else {
- g_warning ("softcat query returned %d results!", g_list_length (packages));
- err = EAZEL_SOFTCAT_ERROR_MULTIPLE_RESPONSES;
- g_list_foreach (packages, (GFunc)gtk_object_unref, NULL);
- g_list_free (packages);
- return err;
+ gtk_object_ref (GTK_OBJECT (pack));
+ pack->fillflag = fill_flags;
+
+ dep->package = pack;
+ dep->version = g_strdup (pack->version);
+
+ if (dep->version) {
+ /* FIXME: should a suite be EQ or GE ? If GE, any newer version
+ that's already installed will be ok, if EQ, the suites depends
+ on an exact version */
+ dep->sense = EAZEL_SOFTCAT_SENSE_GE;
+ } else {
+ dep->sense = EAZEL_SOFTCAT_SENSE_ANY;
+ }
+
+ packagedata_add_pack_to_depends (package, dep);
}
- } else {
+ } else if (g_list_length (packages) > 1) {
+ g_warning ("softcat query returned %d results!", g_list_length (packages));
+ err = EAZEL_SOFTCAT_ERROR_MULTIPLE_RESPONSES;
+ g_list_foreach (packages, (GFunc)gtk_object_unref, NULL);
+ g_list_free (packages);
+ return err;
+ } else { /* 1 package, not a suite */
full_package = PACKAGEDATA (packages->data);
packagedata_fill_in_missing (package, full_package, fill_flags);
if (fill_flags & PACKAGE_FILL_NO_DIRS_IN_PROVIDES) {
remove_directories_from_provides_list (package);
}
}
+
g_list_foreach (packages, (GFunc)gtk_object_unref, NULL);
g_list_free (packages);
return err;