fix: panic on unknown ColorType in hash, fix rfind in hash helper
- compute_tiff_hash now panics on unhandled ColorType variants instead of silently using a fallback discriminant - print_seq_hashes correctly identifies existing 8-char hex hash suffix vs non-hash filename segments
This commit is contained in:
1 parent
43cfc5bc3a
commit
19dcd09e09
1 file changed
+10
-3
+10
-3
@@ -108,7 +108,7 @@ fn compute_tiff_hash<R: Read + Seek>(reader: R) -> u32 {
|
|||||||
hasher.update(&[9, bit_depth]);
|
hasher.update(&[9, bit_depth]);
|
||||||
hasher.update(&num_samples.to_le_bytes());
|
hasher.update(&num_samples.to_le_bytes());
|
||||||
}
|
}
|
||||||
_ => hasher.update(&[255]),
|
other => panic!("compute_tiff_hash: unhandled ColorType {other:?}"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hash decoded data with type discriminant + LE sample bytes
|
// Hash decoded data with type discriminant + LE sample bytes
|
||||||
@@ -286,9 +286,16 @@ fn print_seq_hashes() {
|
|||||||
let name = path.file_name().unwrap().to_str().unwrap();
|
let name = path.file_name().unwrap().to_str().unwrap();
|
||||||
let file = File::open(&path).expect("Cannot open test image");
|
let file = File::open(&path).expect("Cannot open test image");
|
||||||
let hash = format!("{:08x}", compute_tiff_hash(file));
|
let hash = format!("{:08x}", compute_tiff_hash(file));
|
||||||
// Strip the old hash (last -XXXXXXXX before .tiff) and print with new hash
|
// Strip the old hash (last -XXXXXXXX before .tiff) if present
|
||||||
let stem = path.file_stem().unwrap().to_str().unwrap();
|
let stem = path.file_stem().unwrap().to_str().unwrap();
|
||||||
let base = &stem[..stem.rfind('-').unwrap_or(stem.len())];
|
let base = match stem.rsplit_once('-') {
|
||||||
|
Some((prefix, suffix))
|
||||||
|
if suffix.len() == 8 && suffix.chars().all(|c| c.is_ascii_hexdigit()) =>
|
||||||
|
{
|
||||||
|
prefix
|
||||||
|
}
|
||||||
|
_ => stem,
|
||||||
|
};
|
||||||
let new_name = format!("{base}-{hash}.tiff");
|
let new_name = format!("{base}-{hash}.tiff");
|
||||||
if new_name != name {
|
if new_name != name {
|
||||||
eprintln!("RENAME: {name} -> {new_name}");
|
eprintln!("RENAME: {name} -> {new_name}");
|
||||||
|
|||||||
Reference in new issue
Block a user