diff options
author | Alexander Batischev <eual.jp@gmail.com> | 2021-01-17 22:43:33 +0300 |
---|---|---|
committer | Alexander Batischev <eual.jp@gmail.com> | 2021-02-11 01:22:49 +0300 |
commit | 3e4d684dcdd1dff363a45c70c914204013810155 (patch) | |
tree | 7f9cdc41355aae4beef3fab66235f9e6e04e45f4 /src/unix/linux_like/linux | |
parent | 3c907ed65bee8b85d30361570e628dac2d2ae71a (diff) | |
download | rust-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.rs | 15 |
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! { |