Changes to be committed:
modified: Cargo.lock modified: Cargo.toml new file: src/disk_util/mod.rs modified: src/main.rs Changes not staged for commit: deleted: src/disk_util/mod.rs modified: src/main.rs Untracked files: src/disk_util.rs src/ipod_util.rs
This commit is contained in:
parent
026a09722b
commit
0ec9755b7d
47
Cargo.lock
generated
47
Cargo.lock
generated
@ -1,6 +1,15 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
@ -15,6 +24,7 @@ dependencies = [
|
|||||||
name = "iloader"
|
name = "iloader"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"regex",
|
||||||
"rusb",
|
"rusb",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -36,12 +46,47 @@ dependencies = [
|
|||||||
"vcpkg",
|
"vcpkg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pkg-config"
|
name = "pkg-config"
|
||||||
version = "0.3.31"
|
version = "0.3.31"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
|
checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusb"
|
name = "rusb"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -4,4 +4,5 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rusb = "0.9.4"
|
rusb = "0.9.4"
|
||||||
|
regex = "1.11.1"
|
19
src/disk_util/mod.rs
Normal file
19
src/disk_util/mod.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
use core::str;
|
||||||
|
use std::process::Command;
|
||||||
|
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
pub fn list() {
|
||||||
|
let r = Command::new("diskutil")
|
||||||
|
.arg("list")
|
||||||
|
.output()
|
||||||
|
.expect("failed to access Disk Utility");
|
||||||
|
if !r.status.success() { panic!("Unable to get result from Disk Utility"); }
|
||||||
|
let a = str::from_utf8(&r.stdout).unwrap();
|
||||||
|
for cap in Regex::new(r"\/dev\/.+\(external\, physical\):").unwrap().find_iter(a) {
|
||||||
|
println!("{:#?}", cap);
|
||||||
|
let b = &a[cap.end()..];
|
||||||
|
// split the string and get before double \n.
|
||||||
|
// then parse using diskutil info /dev/disk2
|
||||||
|
}
|
||||||
|
}
|
18
src/main.rs
18
src/main.rs
@ -1,13 +1,15 @@
|
|||||||
use rusb::{Device, DeviceDescriptor, GlobalContext};
|
|
||||||
|
mod disk_util;
|
||||||
|
|
||||||
|
const VENDOR_ID: u16 = 1452;
|
||||||
|
const PRODUCT_ID: u16 = 4617;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// vendor_id: 3141
|
for device in rusb::devices().unwrap().iter() {
|
||||||
// product_id: 32777
|
let device_desc = device.device_descriptor().unwrap();
|
||||||
|
if VENDOR_ID == device_desc.vendor_id() && PRODUCT_ID == device_desc.product_id() {
|
||||||
loop {
|
println!("FOUND!");
|
||||||
for device in rusb::devices().unwrap().iter() {
|
disk_util::list();
|
||||||
let device_desc = device.device_descriptor().unwrap();
|
|
||||||
println!("VendorId: {:?}; productId: {:?}", device_desc.vendor_id(), device_desc.product_id());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user