|
9 | 9 | //! for resolving block sizes from environment variables and defaults. |
10 | 10 | //! This module centralizes that logic. |
11 | 11 |
|
| 12 | +use std::sync::LazyLock; |
| 13 | + |
12 | 14 | use super::parse_size::parse_size_non_zero_u64; |
13 | 15 |
|
14 | 16 | /// Result of looking up a block size from environment variables. |
@@ -66,13 +68,12 @@ pub fn block_size_from_env(vars: &[&str]) -> BlockSizeEnv { |
66 | 68 | /// |
67 | 69 | /// Returns 512 if `POSIXLY_CORRECT` is set, 1024 otherwise. |
68 | 70 | pub fn default_block_size() -> u64 { |
69 | | - if std::env::var("POSIXLY_CORRECT").is_ok() { |
70 | | - 512 |
71 | | - } else { |
72 | | - 1024 |
73 | | - } |
| 71 | + if *IS_POSIXLY_CORRECT { 512 } else { 1024 } |
74 | 72 | } |
75 | 73 |
|
| 74 | +static IS_POSIXLY_CORRECT: LazyLock<bool> = |
| 75 | + LazyLock::new(|| std::env::var_os("POSIXLY_CORRECT").is_some()); |
| 76 | + |
76 | 77 | #[cfg(test)] |
77 | 78 | mod tests { |
78 | 79 | use super::*; |
@@ -344,34 +345,4 @@ mod tests { |
344 | 345 |
|
345 | 346 | clear_env_vars(&["BLOCKSIZE"]); |
346 | 347 | } |
347 | | - |
348 | | - #[test] |
349 | | - fn test_default_block_size_without_posixly_correct() { |
350 | | - let _guard = ENV_LOCK.lock().unwrap(); |
351 | | - clear_env_vars(&["POSIXLY_CORRECT"]); |
352 | | - assert_eq!(default_block_size(), 1024); |
353 | | - } |
354 | | - |
355 | | - #[test] |
356 | | - fn test_default_block_size_with_posixly_correct() { |
357 | | - let _guard = ENV_LOCK.lock().unwrap(); |
358 | | - clear_env_vars(&["POSIXLY_CORRECT"]); |
359 | | - |
360 | | - set_env_var("POSIXLY_CORRECT", "1"); |
361 | | - assert_eq!(default_block_size(), 512); |
362 | | - |
363 | | - clear_env_vars(&["POSIXLY_CORRECT"]); |
364 | | - } |
365 | | - |
366 | | - #[test] |
367 | | - fn test_default_block_size_with_posixly_correct_empty() { |
368 | | - let _guard = ENV_LOCK.lock().unwrap(); |
369 | | - clear_env_vars(&["POSIXLY_CORRECT"]); |
370 | | - |
371 | | - // Even an empty value means POSIXLY_CORRECT is set |
372 | | - set_env_var("POSIXLY_CORRECT", ""); |
373 | | - assert_eq!(default_block_size(), 512); |
374 | | - |
375 | | - clear_env_vars(&["POSIXLY_CORRECT"]); |
376 | | - } |
377 | 348 | } |
0 commit comments