aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-01-28 01:05:26 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-01-28 01:05:26 +0000
commit8c430b5ceca4f852a8d244f7e07296120cf9ee99 (patch)
tree736c95e3003fe60b635af1804953481969a5e27a
parentea163989db9bd2605829c72cf5eb68b94f145288 (diff)
downloadpaludis-8c430b5ceca4f852a8d244f7e07296120cf9ee99.tar.gz
paludis-8c430b5ceca4f852a8d244f7e07296120cf9ee99.tar.xz
Split out repository contents interface. Fixes: ticket:44.
-rw-r--r--paludis/repositories/cran/cran_installed_repository.cc1
-rw-r--r--paludis/repositories/cran/cran_installed_repository.hh1
-rw-r--r--paludis/repositories/cran/cran_repository.cc3
-rw-r--r--paludis/repositories/fake/fake_installed_repository.cc9
-rw-r--r--paludis/repositories/fake/fake_installed_repository.hh4
-rw-r--r--paludis/repositories/fake/fake_repository.cc1
-rw-r--r--paludis/repositories/gems/gems_repository.cc1
-rw-r--r--paludis/repositories/nothing/nothing_repository.cc1
-rw-r--r--paludis/repositories/portage/portage_repository.cc1
-rw-r--r--paludis/repositories/vdb/vdb_repository.cc3
-rw-r--r--paludis/repositories/vdb/vdb_repository.hh1
-rw-r--r--paludis/repositories/virtuals/installed_virtuals_repository.cc12
-rw-r--r--paludis/repositories/virtuals/installed_virtuals_repository.hh4
-rw-r--r--paludis/repositories/virtuals/virtuals_repository.cc3
-rw-r--r--paludis/repository.cc62
-rw-r--r--paludis/repository.hh87
-rw-r--r--paludis/repository.sr1
-rw-r--r--ruby/contents.cc32
-rw-r--r--ruby/repository.cc10
-rw-r--r--src/clients/paludis/do_contents.cc8
-rw-r--r--src/clients/paludis/owner.cc5
21 files changed, 178 insertions, 72 deletions
diff --git a/paludis/repositories/cran/cran_installed_repository.cc b/paludis/repositories/cran/cran_installed_repository.cc
index 032eb07..d1530de 100644
--- a/paludis/repositories/cran/cran_installed_repository.cc
+++ b/paludis/repositories/cran/cran_installed_repository.cc
@@ -173,6 +173,7 @@ CRANInstalledRepository::CRANInstalledRepository(const CRANInstalledRepositoryPa
.mask_interface(0)
.installable_interface(0)
.installed_interface(this)
+ .contents_interface(this)
.news_interface(0)
.sets_interface(this)
.syncable_interface(0)
diff --git a/paludis/repositories/cran/cran_installed_repository.hh b/paludis/repositories/cran/cran_installed_repository.hh
index a091dfa..f23ba29 100644
--- a/paludis/repositories/cran/cran_installed_repository.hh
+++ b/paludis/repositories/cran/cran_installed_repository.hh
@@ -46,6 +46,7 @@ namespace paludis
class PALUDIS_VISIBLE CRANInstalledRepository :
public Repository,
public RepositoryInstalledInterface,
+ public RepositoryContentsInterface,
public RepositoryUninstallableInterface,
public RepositorySetsInterface,
public RepositoryWorldInterface,
diff --git a/paludis/repositories/cran/cran_repository.cc b/paludis/repositories/cran/cran_repository.cc
index 24b53c8..f24b731 100644
--- a/paludis/repositories/cran/cran_repository.cc
+++ b/paludis/repositories/cran/cran_repository.cc
@@ -181,7 +181,8 @@ CRANRepository::CRANRepository(const CRANRepositoryParams & p) :
.mirrors_interface(0)
.provides_interface(0)
.destination_interface(0)
- .virtuals_interface(0),
+ .virtuals_interface(0)
+ .contents_interface(0),
"cran"),
PrivateImplementationPattern<CRANRepository>(new Implementation<CRANRepository>(p))
{
diff --git a/paludis/repositories/fake/fake_installed_repository.cc b/paludis/repositories/fake/fake_installed_repository.cc
index e369afc..5e50ab4 100644
--- a/paludis/repositories/fake/fake_installed_repository.cc
+++ b/paludis/repositories/fake/fake_installed_repository.cc
@@ -28,6 +28,7 @@ FakeInstalledRepository::FakeInstalledRepository(const Environment * const e, co
FakeRepositoryBase(e, our_name, RepositoryCapabilities::create()
.installable_interface(0)
.installed_interface(this)
+ .contents_interface(0)
.mask_interface(this)
.news_interface(0)
.sets_interface(this)
@@ -44,14 +45,6 @@ FakeInstalledRepository::FakeInstalledRepository(const Environment * const e, co
{
}
-Contents::ConstPointer
-FakeInstalledRepository::do_contents(const QualifiedPackageName &,
- const VersionSpec &) const
-{
- Contents::ConstPointer result(new Contents);
- return result;
-}
-
bool
FakeInstalledRepository::is_suitable_destination_for(const PackageDatabaseEntry &) const
{
diff --git a/paludis/repositories/fake/fake_installed_repository.hh b/paludis/repositories/fake/fake_installed_repository.hh
index f331e06..fadd246 100644
--- a/paludis/repositories/fake/fake_installed_repository.hh
+++ b/paludis/repositories/fake/fake_installed_repository.hh
@@ -36,10 +36,6 @@ namespace paludis
public RepositoryProvidesInterface
{
protected:
- virtual Contents::ConstPointer do_contents(
- const QualifiedPackageName &,
- const VersionSpec &) const;
-
virtual ProvidesCollection::ConstPointer provided_packages() const;
virtual VersionMetadata::ConstPointer provided_package_version_metadata(
diff --git a/paludis/repositories/fake/fake_repository.cc b/paludis/repositories/fake/fake_repository.cc
index 1ac4cab..4f7af88 100644
--- a/paludis/repositories/fake/fake_repository.cc
+++ b/paludis/repositories/fake/fake_repository.cc
@@ -27,6 +27,7 @@ FakeRepository::FakeRepository(const Environment * const e, const RepositoryName
FakeRepositoryBase(e, our_name, RepositoryCapabilities::create()
.installable_interface(this)
.installed_interface(0)
+ .contents_interface(0)
.mask_interface(this)
.news_interface(0)
.sets_interface(this)
diff --git a/paludis/repositories/gems/gems_repository.cc b/paludis/repositories/gems/gems_repository.cc
index 355a084..0060ea5 100644
--- a/paludis/repositories/gems/gems_repository.cc
+++ b/paludis/repositories/gems/gems_repository.cc
@@ -248,6 +248,7 @@ GemsRepository::GemsRepository(const GemsRepositoryParams & p) :
Repository(RepositoryName("gems"),
RepositoryCapabilities::create()
.mask_interface(0)
+ .contents_interface(0)
.installable_interface(this)
.installed_interface(0)
.news_interface(0)
diff --git a/paludis/repositories/nothing/nothing_repository.cc b/paludis/repositories/nothing/nothing_repository.cc
index 880afc6..e4eafb9 100644
--- a/paludis/repositories/nothing/nothing_repository.cc
+++ b/paludis/repositories/nothing/nothing_repository.cc
@@ -95,6 +95,7 @@ NothingRepository::NothingRepository(const NothingRepositoryParams & p) try :
.mask_interface(0)
.installable_interface(0)
.installed_interface(0)
+ .contents_interface(0)
.news_interface(0)
.sets_interface(0)
.syncable_interface(this)
diff --git a/paludis/repositories/portage/portage_repository.cc b/paludis/repositories/portage/portage_repository.cc
index d69e702..b938a74 100644
--- a/paludis/repositories/portage/portage_repository.cc
+++ b/paludis/repositories/portage/portage_repository.cc
@@ -271,6 +271,7 @@ PortageRepository::PortageRepository(const PortageRepositoryParams & p) :
.mirrors_interface(this)
.virtuals_interface(this)
.provides_interface(0)
+ .contents_interface(0)
.destination_interface(0),
p.entry_format),
PrivateImplementationPattern<PortageRepository>(new Implementation<PortageRepository>(this, p))
diff --git a/paludis/repositories/vdb/vdb_repository.cc b/paludis/repositories/vdb/vdb_repository.cc
index 9aa1b9f..dae4522 100644
--- a/paludis/repositories/vdb/vdb_repository.cc
+++ b/paludis/repositories/vdb/vdb_repository.cc
@@ -507,7 +507,8 @@ VDBRepository::VDBRepository(const VDBRepositoryParams & p) :
.mirrors_interface(0)
.provides_interface(this)
.virtuals_interface(0)
- .destination_interface(this),
+ .destination_interface(this)
+ .contents_interface(this),
"vdb"),
PrivateImplementationPattern<VDBRepository>(new Implementation<VDBRepository>(this, p))
{
diff --git a/paludis/repositories/vdb/vdb_repository.hh b/paludis/repositories/vdb/vdb_repository.hh
index baef483..6802f0d 100644
--- a/paludis/repositories/vdb/vdb_repository.hh
+++ b/paludis/repositories/vdb/vdb_repository.hh
@@ -54,6 +54,7 @@ namespace paludis
public RepositoryEnvironmentVariableInterface,
public RepositoryProvidesInterface,
public RepositoryDestinationInterface,
+ public RepositoryContentsInterface,
public PrivateImplementationPattern<VDBRepository>
{
private:
diff --git a/paludis/repositories/virtuals/installed_virtuals_repository.cc b/paludis/repositories/virtuals/installed_virtuals_repository.cc
index 3e33975..1c5f576 100644
--- a/paludis/repositories/virtuals/installed_virtuals_repository.cc
+++ b/paludis/repositories/virtuals/installed_virtuals_repository.cc
@@ -63,6 +63,7 @@ InstalledVirtualsRepository::InstalledVirtualsRepository(const Environment * con
.world_interface(0)
.provides_interface(0)
.virtuals_interface(0)
+ .contents_interface(0)
.destination_interface(0),
"installed_virtuals"),
PrivateImplementationPattern<InstalledVirtualsRepository>(
@@ -127,17 +128,6 @@ InstalledVirtualsRepository::make_installed_virtuals_repository(
return CountedPtr<Repository>(new InstalledVirtualsRepository(env));
}
-Contents::ConstPointer
-InstalledVirtualsRepository::do_contents(
- const QualifiedPackageName &, const VersionSpec &) const
-{
- /* virtual packages don't have any genuine contents. don't return the
- * content of our real package -- that'll cause extreme confusion with
- * paludis --owner. */
-
- return Contents::ConstPointer(new Contents);
-}
-
bool
InstalledVirtualsRepository::do_query_repository_masks(const QualifiedPackageName &,
const VersionSpec &) const
diff --git a/paludis/repositories/virtuals/installed_virtuals_repository.hh b/paludis/repositories/virtuals/installed_virtuals_repository.hh
index d6b26d0..cb89f78 100644
--- a/paludis/repositories/virtuals/installed_virtuals_repository.hh
+++ b/paludis/repositories/virtuals/installed_virtuals_repository.hh
@@ -40,10 +40,6 @@ namespace paludis
void need_entries() const;
protected:
- virtual Contents::ConstPointer do_contents(
- const QualifiedPackageName &,
- const VersionSpec &) const;
-
virtual bool do_query_repository_masks(const QualifiedPackageName &,
const VersionSpec &) const;
diff --git a/paludis/repositories/virtuals/virtuals_repository.cc b/paludis/repositories/virtuals/virtuals_repository.cc
index 8e92a1f..cb61dca 100644
--- a/paludis/repositories/virtuals/virtuals_repository.cc
+++ b/paludis/repositories/virtuals/virtuals_repository.cc
@@ -89,7 +89,8 @@ VirtualsRepository::VirtualsRepository(const Environment * const env) :
.world_interface(0)
.provides_interface(0)
.virtuals_interface(0)
- .destination_interface(0),
+ .destination_interface(0)
+ .contents_interface(0),
"virtuals"),
PrivateImplementationPattern<VirtualsRepository>(
new Implementation<VirtualsRepository>(env))
diff --git a/paludis/repository.cc b/paludis/repository.cc
index a40d111..ebb4edd 100644
--- a/paludis/repository.cc
+++ b/paludis/repository.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2005, 2006 Ciaran McCreesh <ciaranm@ciaranm.org>
+ * Copyright (c) 2005, 2006, 2007 Ciaran McCreesh <ciaranm@ciaranm.org>
*
* This file is part of the Paludis package manager. Paludis is free software;
* you can redistribute it and/or modify it under the terms of the GNU General
@@ -208,3 +208,63 @@ Repository::format() const
return _format;
}
+RepositoryInstallableInterface::~RepositoryInstallableInterface()
+{
+}
+
+RepositoryInstalledInterface::~RepositoryInstalledInterface()
+{
+}
+
+RepositoryMaskInterface::~RepositoryMaskInterface()
+{
+}
+
+RepositoryNewsInterface::~RepositoryNewsInterface()
+{
+}
+
+RepositorySetsInterface::~RepositorySetsInterface()
+{
+}
+
+RepositorySyncableInterface::~RepositorySyncableInterface()
+{
+}
+
+RepositoryUninstallableInterface::~RepositoryUninstallableInterface()
+{
+}
+
+RepositoryUseInterface::~RepositoryUseInterface()
+{
+}
+
+RepositoryWorldInterface::~RepositoryWorldInterface()
+{
+}
+
+RepositoryEnvironmentVariableInterface::~RepositoryEnvironmentVariableInterface()
+{
+}
+
+RepositoryMirrorsInterface::~RepositoryMirrorsInterface()
+{
+}
+
+RepositoryProvidesInterface::~RepositoryProvidesInterface()
+{
+}
+
+RepositoryVirtualsInterface::~RepositoryVirtualsInterface()
+{
+}
+
+RepositoryDestinationInterface::~RepositoryDestinationInterface()
+{
+}
+
+RepositoryContentsInterface::~RepositoryContentsInterface()
+{
+}
+
diff --git a/paludis/repository.hh b/paludis/repository.hh
index d69665a..3e272ed 100644
--- a/paludis/repository.hh
+++ b/paludis/repository.hh
@@ -62,6 +62,7 @@ namespace paludis
class RepositoryProvidesInterface;
class RepositoryVirtualsInterface;
class RepositoryDestinationInterface;
+ class RepositoryContentsInterface;
/**
* What debug build option to use when installing a package.
@@ -446,7 +447,7 @@ namespace paludis
///\}
- virtual ~RepositoryMaskInterface() { }
+ virtual ~RepositoryMaskInterface();
};
/**
@@ -581,7 +582,7 @@ namespace paludis
///\}
- virtual ~RepositoryUseInterface() { }
+ virtual ~RepositoryUseInterface();
};
/**
@@ -598,13 +599,6 @@ namespace paludis
///\{
/**
- * Override in descendents: fetch the contents.
- */
- virtual Contents::ConstPointer do_contents(
- const QualifiedPackageName &,
- const VersionSpec &) const = 0;
-
- /**
* Override in descendents: when was a package installed.
*/
virtual time_t do_installed_time(
@@ -621,16 +615,6 @@ namespace paludis
///\{
/**
- * Fetch contents.
- */
- Contents::ConstPointer contents(
- const QualifiedPackageName & q,
- const VersionSpec & v) const
- {
- return do_contents(q, v);
- }
-
- /**
* When was a package installed.
*
* Can return time_t(0) if the installed time is unknown.
@@ -644,7 +628,7 @@ namespace paludis
///\}
- virtual ~RepositoryInstalledInterface() { }
+ virtual ~RepositoryInstalledInterface();
};
/**
@@ -682,7 +666,7 @@ namespace paludis
///\}
- virtual ~RepositoryInstallableInterface() { }
+ virtual ~RepositoryInstallableInterface();
};
/**
@@ -720,7 +704,7 @@ namespace paludis
///\}
- virtual ~RepositoryUninstallableInterface() { }
+ virtual ~RepositoryUninstallableInterface();
};
/**
@@ -769,7 +753,7 @@ namespace paludis
///\}
- virtual ~RepositorySetsInterface() { }
+ virtual ~RepositorySetsInterface();
};
/**
@@ -808,7 +792,7 @@ namespace paludis
///\}
- virtual ~RepositorySyncableInterface() { }
+ virtual ~RepositorySyncableInterface();
};
/**
@@ -836,7 +820,7 @@ namespace paludis
///\}
- virtual ~RepositoryWorldInterface() { }
+ virtual ~RepositoryWorldInterface();
};
/**
@@ -859,7 +843,7 @@ namespace paludis
///\}
- virtual ~RepositoryNewsInterface() { }
+ virtual ~RepositoryNewsInterface();
};
/**
@@ -884,7 +868,7 @@ namespace paludis
///\}
- virtual ~RepositoryEnvironmentVariableInterface() { }
+ virtual ~RepositoryEnvironmentVariableInterface();
};
/**
@@ -916,7 +900,7 @@ namespace paludis
///\}
- virtual ~RepositoryMirrorsInterface() { }
+ virtual ~RepositoryMirrorsInterface();
};
/**
@@ -952,7 +936,7 @@ namespace paludis
///\}
- virtual ~RepositoryVirtualsInterface() { }
+ virtual ~RepositoryVirtualsInterface();
};
/**
@@ -988,7 +972,7 @@ namespace paludis
///\}
- virtual ~RepositoryProvidesInterface() { }
+ virtual ~RepositoryProvidesInterface();
};
/**
@@ -1008,7 +992,48 @@ namespace paludis
///\}
- virtual ~RepositoryDestinationInterface() { }
+ virtual ~RepositoryDestinationInterface();
+ };
+
+ /**
+ * Interface for handling actions for repositories supporting contents queries.
+ *
+ * \see Repository
+ * \ingroup grprepository
+ * \nosubgrouping
+ */
+ class RepositoryContentsInterface
+ {
+ protected:
+ ///\name Implementation details
+ ///\{
+
+ /**
+ * Override in descendents: fetch the contents.
+ */
+ virtual Contents::ConstPointer do_contents(
+ const QualifiedPackageName &,
+ const VersionSpec &) const = 0;
+
+ ///\}
+
+ public:
+ ///\name Installed content queries
+ ///\{
+
+ /**
+ * Fetch contents.
+ */
+ Contents::ConstPointer contents(
+ const QualifiedPackageName & q,
+ const VersionSpec & v) const
+ {
+ return do_contents(q, v);
+ }
+
+ ///\}
+
+ virtual ~RepositoryContentsInterface();
};
/**
diff --git a/paludis/repository.sr b/paludis/repository.sr
index a44df98..36e2f0e 100644
--- a/paludis/repository.sr
+++ b/paludis/repository.sr
@@ -34,6 +34,7 @@ make_class_RepositoryCapabilities()
key provides_interface "RepositoryProvidesInterface *"
key virtuals_interface "RepositoryVirtualsInterface *"
key destination_interface "RepositoryDestinationInterface *"
+ key contents_interface "RepositoryContentsInterface *"
doxygen_comment << "END"
/**
diff --git a/ruby/contents.cc b/ruby/contents.cc
index 7c26fab..2c1767f 100644
--- a/ruby/contents.cc
+++ b/ruby/contents.cc
@@ -34,6 +34,8 @@ namespace
static VALUE c_contents_dir_entry;
static VALUE c_contents_sym_entry;
static VALUE c_contents_misc_entry;
+ static VALUE c_contents_dev_entry;
+ static VALUE c_contents_fifo_entry;
VALUE
contents_init(VALUE self)
@@ -238,6 +240,24 @@ namespace
c_contents_misc_entry = rb_define_class_under(paludis_module(), "ContentsMiscEntry", c_contents_entry);
rb_define_singleton_method(c_contents_misc_entry, "new", RUBY_FUNC_CAST((&ContentsNew<ContentsMiscEntry>::contents_entry_new)), -1);
+
+ /*
+ * Document-class: Paludis::ContentsFifoEntry
+ *
+ * A fifo ContentsEntry
+ */
+ c_contents_fifo_entry = rb_define_class_under(paludis_module(), "ContentsFifoEntry", c_contents_entry);
+ rb_define_singleton_method(c_contents_fifo_entry, "new", RUBY_FUNC_CAST((&ContentsNew<ContentsFifoEntry>::contents_entry_new)), -1);
+
+
+ /*
+ * Document-class: Paludis::ContentsDevEntry
+ *
+ * A device ContentsEntry
+ */
+ c_contents_misc_entry = rb_define_class_under(paludis_module(), "ContentsDevEntry", c_contents_entry);
+ rb_define_singleton_method(c_contents_dev_entry, "new", RUBY_FUNC_CAST((&ContentsNew<ContentsDevEntry>::contents_entry_new)), -1);
+
/*
* Document-class: Paludis::ContentsSymEntry
*
@@ -287,6 +307,18 @@ paludis::ruby::contents_entry_to_value(ContentsEntry::ConstPointer m)
value = Data_Wrap_Struct(c_contents_sym_entry, 0, &Common<ContentsSymEntry::ConstPointer>::free,
new ContentsSymEntry::ConstPointer(mm));
}
+
+ void visit(const ContentsFifoEntry *)
+ {
+ value = Data_Wrap_Struct(c_contents_fifo_entry, 0, &Common<ContentsFifoEntry::ConstPointer>::free,
+ new ContentsFifoEntry::ConstPointer(mm));
+ }
+
+ void visit(const ContentsDevEntry *)
+ {
+ value = Data_Wrap_Struct(c_contents_dev_entry, 0, &Common<ContentsDevEntry::ConstPointer>::free,
+ new ContentsDevEntry::ConstPointer(mm));
+ }
};
ContentsEntry::ConstPointer * m_ptr(0);
diff --git a/ruby/repository.cc b/ruby/repository.cc
index f398b36..7b55d79 100644
--- a/ruby/repository.cc
+++ b/ruby/repository.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006 Ciaran McCreesh <ciaranm@ciaranm.org>
+ * Copyright (c) 2006, 2007 Ciaran McCreesh <ciaranm@ciaranm.org>
* Copyright (c) 2006, 2007 Richard Brown <mynamewasgone@gmail.com>
*
* This file is part of the Paludis package manager. Paludis is free software;
@@ -515,11 +515,11 @@ namespace
{
Repository::ConstPointer * self_ptr;
Data_Get_Struct(self, Repository::ConstPointer, self_ptr);
- const RepositoryInstalledInterface * const installed_interface ((**self_ptr).installed_interface);
- if (installed_interface)
+ const RepositoryContentsInterface * const contents_interface ((**self_ptr).contents_interface);
+ if (contents_interface)
{
return contents_to_value(
- installed_interface->contents(
+ contents_interface->contents(
value_to_qualified_package_name(qpn),
value_to_version_spec(vs)
)
@@ -921,6 +921,8 @@ namespace
&Repository::provides_interface>::fetch)), 0);
rb_define_method(c_repository, "virtuals_interface", RUBY_FUNC_CAST((&Interface<RepositoryVirtualsInterface,
&Repository::virtuals_interface>::fetch)), 0);
+ rb_define_method(c_repository, "contents_interface", RUBY_FUNC_CAST((&Interface<RepositoryContentsInterface,
+ &Repository::contents_interface>::fetch)), 0);
rb_define_method(c_repository, "info", RUBY_FUNC_CAST(&repository_info), 1);
rb_define_method(c_repository, "contents", RUBY_FUNC_CAST(&repository_contents), 2);
diff --git a/src/clients/paludis/do_contents.cc b/src/clients/paludis/do_contents.cc
index 99a50b7..9daaad5 100644
--- a/src/clients/paludis/do_contents.cc
+++ b/src/clients/paludis/do_contents.cc
@@ -74,12 +74,12 @@ do_one_contents_entry(
{
cout << "* " << colour(cl_package_name, e) << endl;
- const p::RepositoryInstalledInterface * const installed_interface(
+ const p::RepositoryContentsInterface * const contents_interface(
env->package_database()->fetch_repository(e.repository)->
- installed_interface);
- if (installed_interface)
+ contents_interface);
+ if (contents_interface)
{
- p::Contents::ConstPointer contents(installed_interface->contents(
+ p::Contents::ConstPointer contents(contents_interface->contents(
e.name, e.version));
ContentsDisplayer d;
std::for_each(contents->begin(), contents->end(), accept_visitor(&d));
diff --git a/src/clients/paludis/owner.cc b/src/clients/paludis/owner.cc
index d2893b0..1dff35c 100644
--- a/src/clients/paludis/owner.cc
+++ b/src/clients/paludis/owner.cc
@@ -98,6 +98,8 @@ do_one_owner(
{
if (! (*r)->installed_interface)
continue;
+ if (! (*r)->contents_interface)
+ continue;
p::CategoryNamePartCollection::ConstPointer cats((*r)->category_names());
for (p::CategoryNamePartCollection::Iterator c(cats->begin()),
@@ -112,8 +114,7 @@ do_one_owner(
v_end(vers->end()) ; v != v_end ; ++v)
{
p::PackageDatabaseEntry e(*p, *v, (*r)->name());
- p::Contents::ConstPointer contents((*r)->installed_interface->
- contents(*p, *v));
+ p::Contents::ConstPointer contents((*r)->contents_interface->contents(*p, *v));
ContentsFinder d(query, CommandLine::get_instance()->a_full_match.specified());
std::for_each(contents->begin(), contents->end(), accept_visitor(&d));
if (d.found)