mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
38 lines
1.0 KiB
Rust
38 lines
1.0 KiB
Rust
// Copyright (c) 2016-2018, The Tor Project, Inc. */
|
|
// See LICENSE for licensing information */
|
|
|
|
use libc::{c_char, c_int};
|
|
use std::ffi::CString;
|
|
|
|
extern "C" {
|
|
fn tor_version_as_new_as(platform: *const c_char, cutoff: *const c_char) -> c_int;
|
|
}
|
|
|
|
/// Wrap calls to tor_version_as_new_as, defined in routerparse.c
|
|
pub fn c_tor_version_as_new_as(platform: &str, cutoff: &str) -> bool {
|
|
// CHK: These functions should log a warning if an error occurs. This
|
|
// can be added when integration with tor's logger is added to rust
|
|
let c_platform = match CString::new(platform) {
|
|
Ok(n) => n,
|
|
Err(_) => return false,
|
|
};
|
|
|
|
let c_cutoff = match CString::new(cutoff) {
|
|
Ok(n) => n,
|
|
Err(_) => return false,
|
|
};
|
|
|
|
let result: c_int = unsafe { tor_version_as_new_as(c_platform.as_ptr(), c_cutoff.as_ptr()) };
|
|
|
|
result == 1
|
|
}
|
|
|
|
extern "C" {
|
|
fn tor_is_using_nss() -> c_int;
|
|
}
|
|
|
|
/// Return true if Tor was built to use NSS.
|
|
pub fn c_tor_is_using_nss() -> bool {
|
|
0 != unsafe { tor_is_using_nss() }
|
|
}
|