From 1c012aec1896289363a37812eb28eb364e5ca493 Mon Sep 17 00:00:00 2001 From: Vickenty Fesunov Date: Mon, 6 Jan 2020 20:26:55 +0100 Subject: [PATCH] Add memmem memmem is a non-standard extension, first added in GNU libc and later ported to other systems. Support for it is non-uniform, thus it was only added to platforms that seem to support it. --- src/unix/bsd/freebsdlike/dragonfly/mod.rs | 6 ++++++ src/unix/bsd/freebsdlike/freebsd/mod.rs | 6 ++++++ src/unix/bsd/netbsdlike/netbsd/mod.rs | 6 ++++++ src/unix/bsd/netbsdlike/openbsd/mod.rs | 6 ++++++ src/unix/linux_like/linux/gnu/mod.rs | 6 ++++++ src/unix/linux_like/linux/musl/mod.rs | 6 ++++++ 6 files changed, 36 insertions(+) diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs index 3ec1cc3a79e90..014636312d3a6 100644 --- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -1086,6 +1086,12 @@ extern "C" { pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int; pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int; pub fn uname(buf: *mut ::utsname) -> ::c_int; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } cfg_if! { diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 15bfc1abec3bd..1b714b77514ab 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -1435,6 +1435,12 @@ extern "C" { flags: ::c_int, timeout: *const ::timespec, ) -> ::ssize_t; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } #[link(name = "util")] diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index 2686ab92c1488..48c9038631b1d 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -1894,6 +1894,12 @@ extern "C" { ) -> ::c_int; pub fn _lwp_self() -> lwpid_t; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } #[link(name = "util")] diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index f3e7279f6d8ec..8e1bfcb578eb1 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -1478,6 +1478,12 @@ extern "C" { addr: caddr_t, data: ::c_int, ) -> ::c_int; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } cfg_if! { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 80a1c4eab5157..ad5b310bb18ca 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -959,6 +959,12 @@ extern "C" { buflen: ::size_t, flags: ::c_uint, ) -> ::ssize_t; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } #[link(name = "util")] diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs index 2c5d375a1aa59..0bddd64abae18 100644 --- a/src/unix/linux_like/linux/musl/mod.rs +++ b/src/unix/linux_like/linux/musl/mod.rs @@ -416,6 +416,12 @@ extern "C" { cpuset: *const ::cpu_set_t, ) -> ::c_int; pub fn sched_getcpu() -> ::c_int; + pub fn memmem( + haystack: *const ::c_void, + haystacklen: ::size_t, + needle: *const ::c_void, + needlelen: ::size_t, + ) -> *mut ::c_void; } cfg_if! {