external.rs 816 B

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