external.rs 914 B

123456789101112131415161718192021222324252627282930313233
  1. // Copyright (c) 2016-2017, The Tor Project, Inc. */
  2. // See LICENSE for licensing information */
  3. use libc::{c_char, c_int};
  4. use std::ffi::CString;
  5. extern "C" {
  6. fn tor_version_as_new_as(
  7. platform: *const c_char,
  8. cutoff: *const c_char,
  9. ) -> c_int;
  10. }
  11. /// Wrap calls to tor_version_as_new_as, defined in src/or/routerparse.c
  12. pub fn c_tor_version_as_new_as(platform: &str, cutoff: &str) -> bool {
  13. // CHK: These functions should log a warning if an error occurs. This
  14. // can be added when integration with tor's logger is added to rust
  15. let c_platform = match CString::new(platform) {
  16. Ok(n) => n,
  17. Err(_) => return false,
  18. };
  19. let c_cutoff = match CString::new(cutoff) {
  20. Ok(n) => n,
  21. Err(_) => return false,
  22. };
  23. let result: c_int = unsafe {
  24. tor_version_as_new_as(c_platform.as_ptr(), c_cutoff.as_ptr())
  25. };
  26. result == 1
  27. }