aboutsummaryrefslogtreecommitdiff
path: root/src/memchr/c.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/memchr/c.rs')
-rw-r--r--src/memchr/c.rs44
1 files changed, 0 insertions, 44 deletions
diff --git a/src/memchr/c.rs b/src/memchr/c.rs
deleted file mode 100644
index 608aabc..0000000
--- a/src/memchr/c.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// This module defines safe wrappers around memchr (POSIX) and memrchr (GNU
-// extension).
-
-#![allow(dead_code)]
-
-use libc::{c_int, c_void, size_t};
-
-pub fn memchr(needle: u8, haystack: &[u8]) -> Option<usize> {
- // SAFETY: This is safe to call since all pointers are valid.
- let p = unsafe {
- libc::memchr(
- haystack.as_ptr() as *const c_void,
- needle as c_int,
- haystack.len() as size_t,
- )
- };
- if p.is_null() {
- None
- } else {
- Some(p as usize - (haystack.as_ptr() as usize))
- }
-}
-
-// memrchr is a GNU extension. We know it's available on Linux at least.
-#[cfg(target_os = "linux")]
-pub fn memrchr(needle: u8, haystack: &[u8]) -> Option<usize> {
- // GNU's memrchr() will - unlike memchr() - error if haystack is empty.
- if haystack.is_empty() {
- return None;
- }
- // SAFETY: This is safe to call since all pointers are valid.
- let p = unsafe {
- libc::memrchr(
- haystack.as_ptr() as *const c_void,
- needle as c_int,
- haystack.len() as size_t,
- )
- };
- if p.is_null() {
- None
- } else {
- Some(p as usize - (haystack.as_ptr() as usize))
- }
-}