Skip to content

Commit 2b579b3

Browse files
committed
chore: optimize default binary file check
1 parent 7a38f81 commit 2b579b3

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

file_type/src/file_types.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,18 @@ fn cmp_file_type_extensions(a: &FileType, b: &FileType) -> Ordering {
108108

109109
/// Determines if a byte slice is binary or text data.
110110
fn is_binary(bytes: &[u8]) -> bool {
111-
bytes.is_empty()
111+
if bytes.is_empty() {
112+
return true;
113+
}
114+
115+
// Check only the first portion of the file for performance
116+
let check_length = bytes.len().min(8192);
117+
let bytes_to_check = &bytes[..check_length];
118+
119+
bytes_to_check.is_empty()
112120
|| bytes
113-
.iter()
114-
.any(|&byte| matches!(byte, 0..=31 if !matches!(byte, b'\n' | b'\r' | b'\t')))
121+
.iter()
122+
.any(|&byte| matches!(byte, 0..=31 if !matches!(byte, b'\n' | b'\r' | b'\t')))
115123
}
116124

117125
/// Attempt to determine the `FileType` from a byte slice.

0 commit comments

Comments
 (0)