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:
Michael Wain 2024-12-02 22:20:43 +02:00
parent 026a09722b
commit 0ec9755b7d
4 changed files with 77 additions and 10 deletions

47
Cargo.lock generated
View File

@ -1,6 +1,15 @@
# This file is automatically @generated by Cargo.
# 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]]
name = "cc"
@ -15,6 +24,7 @@ dependencies = [
name = "iloader"
version = "0.1.0"
dependencies = [
"regex",
"rusb",
]
@ -36,12 +46,47 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "pkg-config"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
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]]
name = "rusb"
version = "0.9.4"

View File

@ -5,3 +5,4 @@ edition = "2021"
[dependencies]
rusb = "0.9.4"
regex = "1.11.1"

19
src/disk_util/mod.rs Normal file
View 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
}
}

View File

@ -1,13 +1,15 @@
use rusb::{Device, DeviceDescriptor, GlobalContext};
mod disk_util;
const VENDOR_ID: u16 = 1452;
const PRODUCT_ID: u16 = 4617;
fn main() {
// vendor_id: 3141
// product_id: 32777
loop {
for device in rusb::devices().unwrap().iter() {
let device_desc = device.device_descriptor().unwrap();
println!("VendorId: {:?}; productId: {:?}", device_desc.vendor_id(), device_desc.product_id());
for device in rusb::devices().unwrap().iter() {
let device_desc = device.device_descriptor().unwrap();
if VENDOR_ID == device_desc.vendor_id() && PRODUCT_ID == device_desc.product_id() {
println!("FOUND!");
disk_util::list();
}
}
}