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. # 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"

View File

@ -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
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() { 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());
} }
} }
} }