diff options
author | Robey Pointer <robey@src.gnome.org> | 2001-03-06 01:34:21 +0000 |
---|---|---|
committer | Robey Pointer <robey@src.gnome.org> | 2001-03-06 01:34:21 +0000 |
commit | 48e6c08febf604da0bf2f39add41a0a0ac89e70a (patch) | |
tree | 017bf7ec48c23ac702841df9d0f30e5458aa5092 | |
parent | 7b47207a9049b1764d29e8ccc8f3aa68fec61491 (diff) | |
download | nautilus-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-- | ChangeLog | 13 | ||||
-rw-r--r-- | components/services/install/lib/eazel-softcat.c | 77 |
2 files changed, 51 insertions, 39 deletions
@@ -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; |