mirror of
https://github.com/loot/loot-condition-interpreter.git
synced 2026-07-27 14:16:09 -07:00
Update pelite to v0.8.0
This commit is contained in:
+1
-1
@@ -9,7 +9,7 @@ edition = "2018"
|
|||||||
crc = "1.0.0"
|
crc = "1.0.0"
|
||||||
esplugin = "3.0.0"
|
esplugin = "3.0.0"
|
||||||
nom = "5.0.0"
|
nom = "5.0.0"
|
||||||
pelite = "0.7.0"
|
pelite = "0.8.0"
|
||||||
regex = "1.0.5"
|
regex = "1.0.5"
|
||||||
unicase = "2.2.0"
|
unicase = "2.2.0"
|
||||||
|
|
||||||
|
|||||||
+4
-20
@@ -7,8 +7,6 @@ use pelite::FileMap;
|
|||||||
|
|
||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
|
|
||||||
const VERSION_INFO_RESOURCE_PATH: &str = "/16/1";
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, PartialOrd)]
|
#[derive(Clone, Debug, PartialEq, PartialOrd)]
|
||||||
enum Identifier {
|
enum Identifier {
|
||||||
Numeric(u32),
|
Numeric(u32),
|
||||||
@@ -46,8 +44,9 @@ impl Version {
|
|||||||
|
|
||||||
pub fn read_product_version(file_path: &Path) -> Result<Option<Self>, Error> {
|
pub fn read_product_version(file_path: &Path) -> Result<Option<Self>, Error> {
|
||||||
Self::read_version(file_path, |v| {
|
Self::read_version(file_path, |v| {
|
||||||
v.query_value(&"ProductVersion")
|
v.translation()
|
||||||
.map(String::from_utf16_lossy)
|
.first()
|
||||||
|
.and_then(|language| v.value(*language, "ProductVersion"))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,22 +66,7 @@ impl Version {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_pe_version_info(bytes: &[u8]) -> Result<VersionInfo, FindError> {
|
fn get_pe_version_info(bytes: &[u8]) -> Result<VersionInfo, FindError> {
|
||||||
let resources = get_pe_resources(bytes)?;
|
get_pe_resources(bytes)?.version_info()
|
||||||
|
|
||||||
// Can't just call resources.version_info() because that only gets the
|
|
||||||
// version info for US English, which may not exist. Instead, get the first
|
|
||||||
// version info block, whatever the language.
|
|
||||||
let bytes = resources
|
|
||||||
.find_dir(Path::new(VERSION_INFO_RESOURCE_PATH))?
|
|
||||||
.entries()
|
|
||||||
.next()
|
|
||||||
.ok_or(FindError::NotFound)?
|
|
||||||
.entry()?
|
|
||||||
.data()
|
|
||||||
.ok_or(FindError::UnDirectory)?
|
|
||||||
.bytes()?;
|
|
||||||
|
|
||||||
VersionInfo::try_from(bytes).map_err(FindError::Pe)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_pe_resources(bytes: &[u8]) -> Result<Resources, pelite::Error> {
|
fn get_pe_resources(bytes: &[u8]) -> Result<Resources, pelite::Error> {
|
||||||
|
|||||||
Reference in New Issue
Block a user