|
4 | 4 | use std::ffi::CStr; |
5 | 5 |
|
6 | 6 | fn test_getenv() { |
7 | | - let s = unsafe { libc::getenv(b"MIRI_ENV_VAR_TEST\0".as_ptr().cast()) }; |
| 7 | + let s = unsafe { libc::getenv(c"MIRI_ENV_VAR_TEST".as_ptr()) }; |
8 | 8 | assert!(!s.is_null()); |
9 | 9 | let value = unsafe { CStr::from_ptr(s).to_str().unwrap() }; |
10 | 10 | assert_eq!(value, "0"); |
11 | 11 |
|
12 | 12 | // Get a non-existing environment variable |
13 | | - let s = unsafe { libc::getenv(b"MIRI_TEST_NONEXISTENT_VAR\0".as_ptr().cast()) }; |
| 13 | + let s = unsafe { libc::getenv(c"MIRI_TEST_NONEXISTENT_VAR".as_ptr()) }; |
14 | 14 | assert!(s.is_null()); |
15 | 15 |
|
16 | 16 | // Empty string should not crash |
17 | | - let s = unsafe { libc::getenv(b"\0".as_ptr().cast()) }; |
| 17 | + let s = unsafe { libc::getenv(c"".as_ptr()) }; |
18 | 18 | assert!(s.is_null()); |
19 | 19 | } |
20 | 20 |
|
21 | 21 | fn test_setenv() { |
22 | 22 | // Set a new environment variable |
23 | | - let result = unsafe { |
24 | | - libc::setenv(b"MIRI_TEST_VAR\0".as_ptr().cast(), b"test_value\0".as_ptr().cast(), 1) |
25 | | - }; |
| 23 | + let result = unsafe { libc::setenv(c"MIRI_TEST_VAR".as_ptr(), c"test_value".as_ptr(), 1) }; |
26 | 24 | assert_eq!(result, 0); |
27 | 25 |
|
28 | 26 | // Verify it was set |
29 | | - let s = unsafe { libc::getenv(b"MIRI_TEST_VAR\0".as_ptr().cast()) }; |
| 27 | + let s = unsafe { libc::getenv(c"MIRI_TEST_VAR".as_ptr()) }; |
30 | 28 | assert!(!s.is_null()); |
31 | 29 | let value = unsafe { CStr::from_ptr(s).to_str().unwrap() }; |
32 | 30 | assert_eq!(value, "test_value"); |
33 | 31 |
|
34 | 32 | // Test overwriting an existing variable |
35 | | - let result = unsafe { |
36 | | - libc::setenv(b"MIRI_TEST_VAR\0".as_ptr().cast(), b"new_value\0".as_ptr().cast(), 1) |
37 | | - }; |
| 33 | + let result = unsafe { libc::setenv(c"MIRI_TEST_VAR".as_ptr(), c"new_value".as_ptr(), 1) }; |
38 | 34 | assert_eq!(result, 0); |
39 | 35 |
|
40 | 36 | // Verify it was updated |
41 | | - let s = unsafe { libc::getenv(b"MIRI_TEST_VAR\0".as_ptr().cast()) }; |
| 37 | + let s = unsafe { libc::getenv(c"MIRI_TEST_VAR".as_ptr()) }; |
42 | 38 | assert!(!s.is_null()); |
43 | 39 | let value = unsafe { CStr::from_ptr(s).to_str().unwrap() }; |
44 | 40 | assert_eq!(value, "new_value"); |
45 | 41 |
|
46 | 42 | // Test invalid parameters |
47 | | - let result = unsafe { libc::setenv(std::ptr::null(), b"value\0".as_ptr().cast(), 1) }; |
| 43 | + let result = unsafe { libc::setenv(std::ptr::null(), c"value".as_ptr(), 1) }; |
48 | 44 | assert_eq!(result, -1); |
49 | 45 |
|
50 | | - let result = unsafe { libc::setenv(b"\0".as_ptr().cast(), b"value\0".as_ptr().cast(), 1) }; |
| 46 | + let result = unsafe { libc::setenv(c"".as_ptr(), c"value".as_ptr(), 1) }; |
51 | 47 | assert_eq!(result, -1); |
52 | 48 |
|
53 | | - let result = |
54 | | - unsafe { libc::setenv(b"INVALID=NAME\0".as_ptr().cast(), b"value\0".as_ptr().cast(), 1) }; |
| 49 | + let result = unsafe { libc::setenv(c"INVALID=NAME".as_ptr(), c"value".as_ptr(), 1) }; |
55 | 50 | assert_eq!(result, -1); |
56 | 51 | } |
57 | 52 |
|
58 | 53 | fn test_unsetenv() { |
59 | 54 | // Set a variable |
60 | | - let result = unsafe { |
61 | | - libc::setenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast(), b"to_be_unset\0".as_ptr().cast(), 1) |
62 | | - }; |
| 55 | + let result = |
| 56 | + unsafe { libc::setenv(c"MIRI_TEST_UNSET_VAR".as_ptr(), c"to_be_unset".as_ptr(), 1) }; |
63 | 57 | assert_eq!(result, 0); |
64 | 58 |
|
65 | 59 | // Verify it exists |
66 | | - let s = unsafe { libc::getenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) }; |
| 60 | + let s = unsafe { libc::getenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) }; |
67 | 61 | assert!(!s.is_null()); |
68 | 62 |
|
69 | 63 | // Unset it |
70 | | - let result = unsafe { libc::unsetenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) }; |
| 64 | + let result = unsafe { libc::unsetenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) }; |
71 | 65 | assert_eq!(result, 0); |
72 | 66 |
|
73 | 67 | // Verify it was unset |
74 | | - let s = unsafe { libc::getenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) }; |
| 68 | + let s = unsafe { libc::getenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) }; |
75 | 69 | assert!(s.is_null()); |
76 | 70 |
|
77 | 71 | // Test unsetting a non-existing variable (should succeed) |
78 | | - let result = unsafe { libc::unsetenv(b"MIRI_TEST_NONEXISTENT_VAR\0".as_ptr().cast()) }; |
| 72 | + let result = unsafe { libc::unsetenv(c"MIRI_TEST_NONEXISTENT_VAR".as_ptr()) }; |
79 | 73 | assert_eq!(result, 0); |
80 | 74 |
|
81 | 75 | // Test invalid parameters |
82 | 76 | let result = unsafe { libc::unsetenv(std::ptr::null()) }; |
83 | 77 | assert_eq!(result, -1); |
84 | 78 |
|
85 | | - let result = unsafe { libc::unsetenv(b"\0".as_ptr().cast()) }; |
| 79 | + let result = unsafe { libc::unsetenv(c"".as_ptr()) }; |
86 | 80 | assert_eq!(result, -1); |
87 | 81 |
|
88 | | - let result = unsafe { libc::unsetenv(b"INVALID=NAME\0".as_ptr().cast()) }; |
| 82 | + let result = unsafe { libc::unsetenv(c"INVALID=NAME".as_ptr()) }; |
89 | 83 | assert_eq!(result, -1); |
90 | 84 | } |
91 | 85 |
|
|
0 commit comments