Skip to content

Commit 799ed30

Browse files
author
luozijun
committed
Update
1 parent c070df9 commit 799ed30

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

system-configuration/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ readme = "../README.md"
1212
[dependencies]
1313
core-foundation = "0.5"
1414
system-configuration-sys = { path = "../system-configuration-sys", version = "0.1" }
15+
16+
[features]
17+
nightly = []

system-configuration/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616
//!
1717
//! [SystemConfiguration]: https://developer.apple.com/documentation/systemconfiguration?language=objc
1818
//! [`system-configuration-sys`]: https://crates.io/crates/system-configuration-sys
19-
#![feature(test)]
19+
#![cfg_attr(all(feature = "nightly", test), feature(test))]
2020
#![deny(missing_docs)]
2121

2222
#[macro_use]
2323
extern crate core_foundation;
2424
extern crate system_configuration_sys;
25+
#[cfg(all(feature = "nightly", test))]
26+
extern crate test;
2527

2628
pub mod dynamic_store;
2729
pub mod preferences;

system-configuration/src/network_configuration.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ impl SCNetworkService {
134134
.iter()
135135
.map(|item| item.downcast::<SCNetworkService>().unwrap())
136136
.collect::<Vec<SCNetworkService>>()
137-
137+
138138

139139
// let array: CFArray<SCNetworkService> = unsafe {
140140
// CFArray::wrap_under_get_rule(SCNetworkServiceCopyAll(prefs.as_concrete_TypeRef()))
141141
// };
142-
142+
143143
// array
144144
// .iter()
145145
// .map(|item| item.as_CFType().downcast::<SCNetworkService>().unwrap())
@@ -149,12 +149,17 @@ impl SCNetworkService {
149149
/// Returns the user-specified ordering of network services within the specified
150150
/// preferences.
151151
pub fn list_order(prefs: &SCPreferences) -> Vec<SCNetworkService> {
152-
let netset = unsafe { SCNetworkSetCopyCurrent(prefs.as_concrete_TypeRef()) };
152+
let mut services = Vec::new();
153153

154-
let array: CFArray<CFType> =
155-
unsafe { CFArray::wrap_under_get_rule(SCNetworkSetGetServiceOrder(netset)) };
154+
let netset = unsafe { SCNetworkSetCopyCurrent(prefs.as_concrete_TypeRef()) };
156155

157-
let mut services = Vec::new();
156+
let array: CFArray<CFType> = unsafe {
157+
let arr_ref = SCNetworkSetGetServiceOrder(netset);
158+
if arr_ref.is_null() {
159+
return services;
160+
}
161+
CFArray::wrap_under_get_rule(arr_ref)
162+
};
158163

159164
for item in array.iter() {
160165
if let Some(id) = item.downcast::<CFString>() {
@@ -416,7 +421,7 @@ impl fmt::Debug for SCNetworkInterface {
416421
}
417422

418423

419-
#[test]
424+
#[cfg(all(feature = "nightly", test))]
420425
fn test_network_service() {
421426
use core_foundation::base::kCFAllocatorDefault;
422427

@@ -426,11 +431,11 @@ fn test_network_service() {
426431
for network_service in list.iter() {
427432
let network_service_id = network_service.id();
428433
let res = SCNetworkService::from_id(&prefs, &network_service_id);
429-
434+
430435
assert!(res.is_some());
431436
let res = res.unwrap();
432-
437+
433438
assert_eq!(res.id(), network_service.id());
434439
assert_eq!(res.name(), network_service.name());
435440
}
436-
}
441+
}

0 commit comments

Comments
 (0)