Fix some bug

This commit is contained in:
2026-04-13 17:25:21 +08:00
parent 3f180729b3
commit cdd21f4633
2 changed files with 41 additions and 21 deletions

38
src-tauri/Cargo.lock generated
View File

@@ -928,6 +928,19 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "crossbeam"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-epoch",
"crossbeam-queue",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-channel"
version = "0.5.15"
@@ -956,6 +969,15 @@ dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.21"
@@ -3034,18 +3056,6 @@ dependencies = [
"web_atoms",
]
[[package]]
name = "markup5ever_rcdom"
version = "0.38.0+unofficial"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "333171ccdf66e915257740d44e38ea5b1b19ce7b45d33cc35cb6f118fbd981ff"
dependencies = [
"html5ever 0.38.0",
"markup5ever 0.38.0",
"tendril 0.5.0",
"xml5ever",
]
[[package]]
name = "match_token"
version = "0.1.0"
@@ -3179,6 +3189,7 @@ dependencies = [
"cbc",
"clap 4.6.0",
"crc32fast",
"crossbeam",
"csv",
"ctrlc",
"digest-io",
@@ -3196,7 +3207,6 @@ dependencies = [
"libtlg-rs",
"lz4",
"markup5ever 0.38.0",
"markup5ever_rcdom",
"md5",
"memchr",
"mozjpeg",
@@ -3216,6 +3226,7 @@ dependencies = [
"sha1",
"sha2 0.11.0",
"stylua",
"tendril 0.5.0",
"unicode-segmentation",
"url",
"utf16string",
@@ -4874,7 +4885,6 @@ dependencies = [
"parking_lot",
"phf_shared 0.13.1",
"precomputed-hash",
"serde",
]
[[package]]

View File

@@ -199,6 +199,13 @@ fn detect_file_type(filename: &str, data: &[u8]) -> (EntryType, Option<ScriptTyp
(EntryType::Unknown, None)
}
fn try_detect_file_type<P: AsRef<std::path::Path> + ?Sized>(path: &P) -> Result<(EntryType, Option<ScriptType>)> {
let mut file = File::open(path)?;
let mut buffer = [0; 1024];
let n = file.read(&mut buffer)?;
Ok(detect_file_type(&path.as_ref().to_string_lossy(), &buffer[..n]))
}
fn list_fs_directory(path: &Path) -> Result<Vec<Entry>> {
let mut result = Vec::new();
for entry in std::fs::read_dir(path)? {
@@ -215,10 +222,13 @@ fn list_fs_directory(path: &Path) -> Result<Vec<Entry>> {
let (entry_type, msg_tool_type) = if is_dir {
(EntryType::Folder, None)
} else {
let mut file = std::fs::File::open(entry.path())?;
let mut buffer = [0; 1024];
let n = file.read(&mut buffer)?;
detect_file_type(&name, &buffer[..n])
match try_detect_file_type(&entry.path()) {
Ok(t) => t,
Err(e) => {
eprintln!("无法识别文件类型:{} {}", name, e);
(EntryType::Unknown, None)
}
}
};
let size = if is_dir { None } else { Some(metadata.len()) };
result.push(Entry {
@@ -292,7 +302,7 @@ fn list_archive_directory(path: &Path, option: Option<&Vec<FileOptions>>) -> Res
fn list_archive_directory_in_archive<'a>(
path: &str,
mut reader: Box<dyn ReadSeek + 'a>,
mut reader: Box<dyn ReadSeek + Send + Sync + 'a>,
filename: &str,
option: Option<&Vec<FileOptions>>,
typ: Option<ScriptType>,
@@ -462,7 +472,7 @@ pub fn get_xp3_supported_games() -> Vec<GameTitle> {
}
fn preview_image_in_directory<'a>(
mut reader: Box<dyn ReadSeek + 'a>,
mut reader: Box<dyn ReadSeek + Send + Sync + 'a>,
filename: &str,
options: Option<&Vec<FileOptions>>,
script_type: Option<ScriptType>,
@@ -518,7 +528,7 @@ fn preview_image_in_directory<'a>(
fn preview_image_in_archive<'a>(
path: &str,
mut reader: Box<dyn ReadSeek + 'a>,
mut reader: Box<dyn ReadSeek + Send + Sync + 'a>,
filename: &str,
option: Option<&Vec<FileOptions>>,
typ: Option<ScriptType>,