#attributes #finder #info #apple #parse #read #hfs-hfs-apfs

app finder_info_bin

A utility to parse the Apple HFS/HFS+/APFS FinderInfo attribute

1 unstable release

0.2.0 Feb 16, 2021

#37 in #finder

Apache-2.0

38KB
820 lines

finderinfo

A library to parse Apple HFS/HFS+/APFS FinderInfo attribute.

On modern MacOS systems, objects in the filesystem can have an extended attribute called com.apple.FinderInfo. This attribute is 32 bytes long and largely undocumented. It turns out that this attribute is actually the old HFS Finder Info struct in the first 16 bytes, and the Extended Finder Info struct in the second 16 bytes. This library provides a mechanism by which a Rust program can programmatically interact with these structures.

This crate also provides an executable finderinfo, which is a small utility that can parse and display the contents of the Finder Info blob. If built with the xattr feature, the library is able to read and write the com.apple.FinderInfo extended attribute on MacOS systems.

Example

let buf = vec![
    0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8,
    0x40u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8,
    0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8,
    0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8,
];
let finder_info = FinderInfoFolder::read(&mut io::Cursor::new(buf));
println!("{:?}", finder_info);

Dependencies

~3.5–5.5MB
~96K SLoC