backup_deduplicator/data/
fileid.rs1
2use std::io;
5use std::path::Path;
6use file_id::FileId;
7use serde::Serialize;
8
9#[cfg(target_family = "unix")]
11type DeviceIdType = u64;
12
13#[cfg(target_family = "windows")]
15type DeviceIdType = u64; #[cfg(target_family = "unix")]
19type FileIdType = u64;
20
21#[cfg(target_family = "windows")]
23type FileIdType = u128; #[derive(Debug, Clone, PartialEq, Serialize)]
31pub struct HandleIdentifier {
32 pub inode: FileIdType,
33 pub drive: DeviceIdType,
34}
35
36impl HandleIdentifier {
37 pub fn from_path(path: impl AsRef<Path>) -> io::Result<HandleIdentifier> {
48 match file_id::get_file_id(path)? {
49 FileId::Inode { device_id, inode_number } => Ok(HandleIdentifier {
50 inode: inode_number as FileIdType,
52 drive: device_id as DeviceIdType,
53 }),
54 FileId::LowRes { volume_serial_number, file_index } => Ok(HandleIdentifier {
55 inode: file_index as FileIdType,
57 drive: volume_serial_number as DeviceIdType,
58 }),
59 FileId::HighRes { volume_serial_number, file_id } => Ok(HandleIdentifier {
60 inode: file_id as FileIdType,
62 drive: volume_serial_number as DeviceIdType,
63 }),
64 }
65 }
66}
67
68