summaryrefslogtreecommitdiff
path: root/src/unix/linux_like/linux
diff options
context:
space:
mode:
authorAlexander Batischev <eual.jp@gmail.com>2021-01-17 22:43:33 +0300
committerAlexander Batischev <eual.jp@gmail.com>2021-02-11 01:22:49 +0300
commit3e4d684dcdd1dff363a45c70c914204013810155 (patch)
tree7f9cdc41355aae4beef3fab66235f9e6e04e45f4 /src/unix/linux_like/linux
parent3c907ed65bee8b85d30361570e628dac2d2ae71a (diff)
downloadrust-libc-3e4d684dcdd1dff363a45c70c914204013810155.tar.gz
Add bindings for iconv calls
FreeBSD-likes all implement iconv: - DragonflyBSD: https://github.com/DragonFlyBSD/DragonFlyBSD/blob/bbb35c81f71fe2a0880a1f8bb77876ee98b63338/include/iconv.h - FreeBSD: https://github.com/freebsd/freebsd-src/blob/a6dc68c0e0f8a24ffaf0b4e78e58141ef7897047/include/iconv.h NetBSD-likes: - NetBSD: https://github.com/NetBSD/src/blob/81a39f60870b617d7fca299c126de6553d78cc5a/include/iconv.h - OpenBSD doesn't implement it macOS: apparently ships a conforming implementation as a separate library: https://stackoverflow.com/questions/57734434/libiconv-or-iconv-undefined-symbol-on-mac-osx/57734435#57734435 Linux: - glibc: https://sourceware.org/git/?p=glibc.git;a=blob;f=iconv/iconv.h;h=fdddf53d99c3046ef9c280db01a425c2f499043e;hb=HEAD - musl: https://git.musl-libc.org/cgit/musl/tree/include/iconv.h?id=455f96857f91d14e193219ca00969354a981c09c
Diffstat (limited to 'src/unix/linux_like/linux')
-rw-r--r--src/unix/linux_like/linux/mod.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs
index 60f78dfed2..886b8f05ad 100644
--- a/src/unix/linux_like/linux/mod.rs
+++ b/src/unix/linux_like/linux/mod.rs
@@ -40,6 +40,8 @@ pub type Elf64_Section = u16;
pub type canid_t = u32;
pub type can_err_mask_t = u32;
+pub type iconv_t = *mut ::c_void;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos64_t {} // FIXME: fill this out with a struct
impl ::Copy for fpos64_t {}
@@ -3576,6 +3578,19 @@ extern "C" {
) -> ::size_t;
pub fn regfree(preg: *mut ::regex_t);
+
+ pub fn iconv_open(
+ tocode: *const ::c_char,
+ fromcode: *const ::c_char,
+ ) -> iconv_t;
+ pub fn iconv(
+ cd: iconv_t,
+ inbuf: *mut *mut ::c_char,
+ inbytesleft: *mut ::size_t,
+ outbuf: *mut *mut ::c_char,
+ outbytesleft: *mut ::size_t,
+ ) -> ::size_t;
+ pub fn iconv_close(cd: iconv_t) -> ::c_int;
}
cfg_if! {