expose priority
This commit is contained in:
parent
67c2146b25
commit
70812eb615
@ -1,4 +1,5 @@
|
||||
#include <sstream>
|
||||
#include <cstdint>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@ -18,8 +19,8 @@ struct PPkgIterator {
|
||||
// Owned by us.
|
||||
pkgCache::PkgIterator iterator;
|
||||
|
||||
// Borrowed from PCache.
|
||||
pkgCache *cache;
|
||||
// Borrow of "static" PCache.
|
||||
PCache *cache;
|
||||
};
|
||||
|
||||
struct PVerIterator {
|
||||
@ -28,6 +29,9 @@ struct PVerIterator {
|
||||
|
||||
// Borrowed from PCache.
|
||||
pkgCache::PkgIterator *pkg;
|
||||
|
||||
// Borrow of "static" PCache.
|
||||
PCache *cache;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
@ -46,6 +50,7 @@ extern "C" {
|
||||
const char *pkg_iter_name(PPkgIterator *iterator);
|
||||
const char *pkg_iter_arch(PPkgIterator *iterator);
|
||||
const char *pkg_iter_current_version(PPkgIterator *iterator);
|
||||
const char *pkg_iter_candidate_version(PPkgIterator *iterator);
|
||||
|
||||
// freed by caller
|
||||
char *pkg_iter_pretty(PCache *cache, PPkgIterator *iterator);
|
||||
@ -61,6 +66,7 @@ extern "C" {
|
||||
const char *ver_iter_source_package(PVerIterator *iterator);
|
||||
const char *ver_iter_source_version(PVerIterator *iterator);
|
||||
const char *ver_iter_arch(PVerIterator *iterator);
|
||||
int32_t ver_iter_priority(PVerIterator *iterator);
|
||||
}
|
||||
|
||||
void init_config_system() {
|
||||
@ -89,21 +95,21 @@ void pkg_cache_release(PCache *cache) {
|
||||
PPkgIterator *pkg_cache_pkg_iter(PCache *cache) {
|
||||
PPkgIterator *wrapper = new PPkgIterator();
|
||||
wrapper->iterator = cache->cache->PkgBegin();
|
||||
wrapper->cache = cache->cache;
|
||||
wrapper->cache = cache;
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
PPkgIterator *pkg_cache_find_name(PCache *cache, const char *name) {
|
||||
PPkgIterator *wrapper = new PPkgIterator();
|
||||
wrapper->iterator = cache->cache->FindPkg(name);
|
||||
wrapper->cache = cache->cache;
|
||||
wrapper->cache = cache;
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
PPkgIterator *pkg_cache_find_name_arch(PCache *cache, const char *name, const char *arch) {
|
||||
PPkgIterator *wrapper = new PPkgIterator();
|
||||
wrapper->iterator = cache->cache->FindPkg(name, arch);
|
||||
wrapper->cache = cache->cache;
|
||||
wrapper->cache = cache;
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
@ -116,7 +122,7 @@ void pkg_iter_next(PPkgIterator *wrapper) {
|
||||
}
|
||||
|
||||
bool pkg_iter_end(PPkgIterator *wrapper) {
|
||||
return wrapper->cache->PkgEnd() == wrapper->iterator;
|
||||
return wrapper->cache->cache->PkgEnd() == wrapper->iterator;
|
||||
}
|
||||
|
||||
const char *pkg_iter_name(PPkgIterator *wrapper) {
|
||||
@ -131,6 +137,10 @@ const char *pkg_iter_current_version(PPkgIterator *wrapper) {
|
||||
return wrapper->iterator.CurVersion();
|
||||
}
|
||||
|
||||
const char *pkg_iter_candidate_version(PPkgIterator *wrapper) {
|
||||
return wrapper->cache->cache_file->GetPolicy()->GetCandidateVer(wrapper->iterator).VerStr();
|
||||
}
|
||||
|
||||
char *pkg_iter_pretty(PCache *cache, PPkgIterator *wrapper) {
|
||||
assert(cache);
|
||||
assert(wrapper);
|
||||
@ -143,6 +153,7 @@ PVerIterator *pkg_iter_ver_iter(PPkgIterator *wrapper) {
|
||||
PVerIterator *new_wrapper = new PVerIterator();
|
||||
new_wrapper->iterator = wrapper->iterator.VersionList();
|
||||
new_wrapper->pkg = &wrapper->iterator;
|
||||
new_wrapper->cache = wrapper->cache;
|
||||
return new_wrapper;
|
||||
}
|
||||
|
||||
@ -178,3 +189,9 @@ const char *ver_iter_source_version(PVerIterator *wrapper) {
|
||||
const char *ver_iter_arch(PVerIterator *wrapper) {
|
||||
return wrapper->iterator.Arch();
|
||||
}
|
||||
|
||||
int32_t ver_iter_priority(PVerIterator *wrapper) {
|
||||
// The priority is a "short", which is roughly a (signed) int16_t;
|
||||
// going bigger just in case
|
||||
return wrapper->cache->cache_file->GetPolicy()->GetPriority(wrapper->iterator);
|
||||
}
|
||||
|
@ -18,12 +18,15 @@ fn main() {
|
||||
println!("{}:{}:", view.name(), view.arch());
|
||||
let installed_version = view.current_version().unwrap_or("(none)".to_string());
|
||||
println!(" Installed: {}", installed_version);
|
||||
println!(" Candidate: XXX");
|
||||
println!(" Candidate: {}", view.candidate_version().unwrap_or("(none)".to_string()));
|
||||
println!(" Version table:");
|
||||
for version in view.versions().map(simple::Version::from_iter) {
|
||||
println!(" {} {} XXX",
|
||||
println!(" {} {} {}",
|
||||
if version.version == installed_version { "***" } else { " " },
|
||||
version.version);
|
||||
version.version,
|
||||
version.priority,
|
||||
);
|
||||
println!(" TODO: urls");
|
||||
}
|
||||
} else {
|
||||
println!("unrecognised package: {}", pkg);
|
||||
|
@ -37,6 +37,7 @@ extern {
|
||||
pub fn pkg_iter_name(iterator: PPkgIterator) -> *const c_char;
|
||||
pub fn pkg_iter_arch(iterator: PPkgIterator) -> *const c_char;
|
||||
pub fn pkg_iter_current_version(iterator: PPkgIterator) -> *const c_char;
|
||||
pub fn pkg_iter_candidate_version(iterator: PPkgIterator) -> *const c_char;
|
||||
pub fn pkg_iter_pretty(cache: PCache, iterator: PPkgIterator) -> *mut c_char;
|
||||
|
||||
|
||||
@ -57,6 +58,7 @@ extern {
|
||||
pub fn ver_iter_source_package(iterator: PVerIterator) -> *mut c_char;
|
||||
pub fn ver_iter_source_version(iterator: PVerIterator) -> *mut c_char;
|
||||
pub fn ver_iter_arch(iterator: PVerIterator) -> *mut c_char;
|
||||
pub fn ver_iter_priority(iterator: PVerIterator) -> i32;
|
||||
}
|
||||
|
||||
pub fn pkg_cache_get() -> PCache {
|
||||
|
13
src/sane.rs
13
src/sane.rs
@ -138,6 +138,13 @@ impl<'c> PkgIterator<'c> {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn candidate_version(&self) -> Option<String> {
|
||||
assert!(!self.is_empty());
|
||||
unsafe {
|
||||
make_owned_ascii_string(raw::pkg_iter_candidate_version(self.ptr))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn pretty_print(&self) -> String {
|
||||
assert!(!self.is_empty());
|
||||
unsafe {
|
||||
@ -283,6 +290,12 @@ impl<'c> VerIterator<'c> {
|
||||
.expect("versions always have a source_version")
|
||||
}
|
||||
}
|
||||
|
||||
pub fn priority(&self) -> i32 {
|
||||
unsafe {
|
||||
raw::ver_iter_priority(self.ptr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsafe fn make_owned_ascii_string(ptr: *const libc::c_char) -> Option<String> {
|
||||
|
@ -22,6 +22,7 @@ pub struct Version {
|
||||
pub section: String,
|
||||
pub source_package: String,
|
||||
pub source_version: String,
|
||||
pub priority: i32,
|
||||
}
|
||||
|
||||
|
||||
@ -33,6 +34,7 @@ impl Version {
|
||||
section: iter.section(),
|
||||
source_package: iter.source_package(),
|
||||
source_version: iter.source_version(),
|
||||
priority: iter.priority(),
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user