mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-16 12:39:06 +08:00
39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
|
use hbb_common::{bail, ResultType};
|
||
|
use std::{
|
||
|
fs::{self, File},
|
||
|
io::prelude::*,
|
||
|
path::Path,
|
||
|
};
|
||
|
|
||
|
#[allow(dead_code)]
|
||
|
pub fn extract_resources(root_path: &str) -> ResultType<()> {
|
||
|
let mut resources: Vec<(&str, &[u8])> = Vec::new();
|
||
|
resources.push((outfile_4, &outdata_4));
|
||
|
do_extract(root_path, resources)?;
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
#[allow(dead_code)]
|
||
|
fn do_extract(root_path: &str, resources: Vec<(&str, &[u8])>) -> ResultType<()> {
|
||
|
let mut root_path = root_path.replace("\\", "/");
|
||
|
if !root_path.ends_with('/') {
|
||
|
root_path.push('/');
|
||
|
}
|
||
|
let root_path = Path::new(&root_path);
|
||
|
for (outfile, data) in resources {
|
||
|
let outfile_path = root_path.join(outfile);
|
||
|
match outfile_path.parent().and_then(|p| p.to_str()) {
|
||
|
None => {
|
||
|
bail!("Failed to get parent of {}", outfile_path.display());
|
||
|
}
|
||
|
Some(p) => {
|
||
|
fs::create_dir_all(p)?;
|
||
|
let mut of = File::create(outfile_path)?;
|
||
|
of.write_all(data)?;
|
||
|
of.flush()?;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Ok(())
|
||
|
}
|