12add0d91Sopenharmony_ci//! Windows CRT definitions
22add0d91Sopenharmony_ci
32add0d91Sopenharmony_cipub type c_schar = i8;
42add0d91Sopenharmony_cipub type c_uchar = u8;
52add0d91Sopenharmony_cipub type c_short = i16;
62add0d91Sopenharmony_cipub type c_ushort = u16;
72add0d91Sopenharmony_cipub type c_int = i32;
82add0d91Sopenharmony_cipub type c_uint = u32;
92add0d91Sopenharmony_cipub type c_float = f32;
102add0d91Sopenharmony_cipub type c_double = f64;
112add0d91Sopenharmony_cipub type c_longlong = i64;
122add0d91Sopenharmony_cipub type c_ulonglong = u64;
132add0d91Sopenharmony_cipub type intmax_t = i64;
142add0d91Sopenharmony_cipub type uintmax_t = u64;
152add0d91Sopenharmony_ci
162add0d91Sopenharmony_cipub type size_t = usize;
172add0d91Sopenharmony_cipub type ptrdiff_t = isize;
182add0d91Sopenharmony_cipub type intptr_t = isize;
192add0d91Sopenharmony_cipub type uintptr_t = usize;
202add0d91Sopenharmony_cipub type ssize_t = isize;
212add0d91Sopenharmony_cipub type sighandler_t = usize;
222add0d91Sopenharmony_ci
232add0d91Sopenharmony_cipub type c_char = i8;
242add0d91Sopenharmony_cipub type c_long = i32;
252add0d91Sopenharmony_cipub type c_ulong = u32;
262add0d91Sopenharmony_cipub type wchar_t = u16;
272add0d91Sopenharmony_ci
282add0d91Sopenharmony_cipub type clock_t = i32;
292add0d91Sopenharmony_ci
302add0d91Sopenharmony_cipub type errno_t = ::c_int;
312add0d91Sopenharmony_ci
322add0d91Sopenharmony_cicfg_if! {
332add0d91Sopenharmony_ci    if #[cfg(all(target_arch = "x86", target_env = "gnu"))] {
342add0d91Sopenharmony_ci        pub type time_t = i32;
352add0d91Sopenharmony_ci    } else {
362add0d91Sopenharmony_ci        pub type time_t = i64;
372add0d91Sopenharmony_ci    }
382add0d91Sopenharmony_ci}
392add0d91Sopenharmony_ci
402add0d91Sopenharmony_cipub type off_t = i32;
412add0d91Sopenharmony_cipub type dev_t = u32;
422add0d91Sopenharmony_cipub type ino_t = u16;
432add0d91Sopenharmony_ci#[cfg_attr(feature = "extra_traits", derive(Debug))]
442add0d91Sopenharmony_cipub enum timezone {}
452add0d91Sopenharmony_ciimpl ::Copy for timezone {}
462add0d91Sopenharmony_ciimpl ::Clone for timezone {
472add0d91Sopenharmony_ci    fn clone(&self) -> timezone {
482add0d91Sopenharmony_ci        *self
492add0d91Sopenharmony_ci    }
502add0d91Sopenharmony_ci}
512add0d91Sopenharmony_cipub type time64_t = i64;
522add0d91Sopenharmony_ci
532add0d91Sopenharmony_cipub type SOCKET = ::uintptr_t;
542add0d91Sopenharmony_ci
552add0d91Sopenharmony_cis! {
562add0d91Sopenharmony_ci    // note this is the struct called stat64 in Windows. Not stat, nor stati64.
572add0d91Sopenharmony_ci    pub struct stat {
582add0d91Sopenharmony_ci        pub st_dev: dev_t,
592add0d91Sopenharmony_ci        pub st_ino: ino_t,
602add0d91Sopenharmony_ci        pub st_mode: u16,
612add0d91Sopenharmony_ci        pub st_nlink: ::c_short,
622add0d91Sopenharmony_ci        pub st_uid: ::c_short,
632add0d91Sopenharmony_ci        pub st_gid: ::c_short,
642add0d91Sopenharmony_ci        pub st_rdev: dev_t,
652add0d91Sopenharmony_ci        pub st_size: i64,
662add0d91Sopenharmony_ci        pub st_atime: time64_t,
672add0d91Sopenharmony_ci        pub st_mtime: time64_t,
682add0d91Sopenharmony_ci        pub st_ctime: time64_t,
692add0d91Sopenharmony_ci    }
702add0d91Sopenharmony_ci
712add0d91Sopenharmony_ci    // note that this is called utimbuf64 in Windows
722add0d91Sopenharmony_ci    pub struct utimbuf {
732add0d91Sopenharmony_ci        pub actime: time64_t,
742add0d91Sopenharmony_ci        pub modtime: time64_t,
752add0d91Sopenharmony_ci    }
762add0d91Sopenharmony_ci
772add0d91Sopenharmony_ci    pub struct tm {
782add0d91Sopenharmony_ci        pub tm_sec: ::c_int,
792add0d91Sopenharmony_ci        pub tm_min: ::c_int,
802add0d91Sopenharmony_ci        pub tm_hour: ::c_int,
812add0d91Sopenharmony_ci        pub tm_mday: ::c_int,
822add0d91Sopenharmony_ci        pub tm_mon: ::c_int,
832add0d91Sopenharmony_ci        pub tm_year: ::c_int,
842add0d91Sopenharmony_ci        pub tm_wday: ::c_int,
852add0d91Sopenharmony_ci        pub tm_yday: ::c_int,
862add0d91Sopenharmony_ci        pub tm_isdst: ::c_int,
872add0d91Sopenharmony_ci    }
882add0d91Sopenharmony_ci
892add0d91Sopenharmony_ci    pub struct timeval {
902add0d91Sopenharmony_ci        pub tv_sec: c_long,
912add0d91Sopenharmony_ci        pub tv_usec: c_long,
922add0d91Sopenharmony_ci    }
932add0d91Sopenharmony_ci
942add0d91Sopenharmony_ci    pub struct timespec {
952add0d91Sopenharmony_ci        pub tv_sec: time_t,
962add0d91Sopenharmony_ci        pub tv_nsec: c_long,
972add0d91Sopenharmony_ci    }
982add0d91Sopenharmony_ci
992add0d91Sopenharmony_ci    pub struct sockaddr {
1002add0d91Sopenharmony_ci        pub sa_family: c_ushort,
1012add0d91Sopenharmony_ci        pub sa_data: [c_char; 14],
1022add0d91Sopenharmony_ci    }
1032add0d91Sopenharmony_ci}
1042add0d91Sopenharmony_ci
1052add0d91Sopenharmony_cipub const INT_MIN: c_int = -2147483648;
1062add0d91Sopenharmony_cipub const INT_MAX: c_int = 2147483647;
1072add0d91Sopenharmony_ci
1082add0d91Sopenharmony_cipub const EXIT_FAILURE: ::c_int = 1;
1092add0d91Sopenharmony_cipub const EXIT_SUCCESS: ::c_int = 0;
1102add0d91Sopenharmony_cipub const RAND_MAX: ::c_int = 32767;
1112add0d91Sopenharmony_cipub const EOF: ::c_int = -1;
1122add0d91Sopenharmony_cipub const SEEK_SET: ::c_int = 0;
1132add0d91Sopenharmony_cipub const SEEK_CUR: ::c_int = 1;
1142add0d91Sopenharmony_cipub const SEEK_END: ::c_int = 2;
1152add0d91Sopenharmony_cipub const _IOFBF: ::c_int = 0;
1162add0d91Sopenharmony_cipub const _IONBF: ::c_int = 4;
1172add0d91Sopenharmony_cipub const _IOLBF: ::c_int = 64;
1182add0d91Sopenharmony_cipub const BUFSIZ: ::c_uint = 512;
1192add0d91Sopenharmony_cipub const FOPEN_MAX: ::c_uint = 20;
1202add0d91Sopenharmony_cipub const FILENAME_MAX: ::c_uint = 260;
1212add0d91Sopenharmony_ci
1222add0d91Sopenharmony_ci// fcntl.h
1232add0d91Sopenharmony_cipub const O_RDONLY: ::c_int = 0x0000;
1242add0d91Sopenharmony_cipub const O_WRONLY: ::c_int = 0x0001;
1252add0d91Sopenharmony_cipub const O_RDWR: ::c_int = 0x0002;
1262add0d91Sopenharmony_cipub const O_APPEND: ::c_int = 0x0008;
1272add0d91Sopenharmony_cipub const O_CREAT: ::c_int = 0x0100;
1282add0d91Sopenharmony_cipub const O_TRUNC: ::c_int = 0x0200;
1292add0d91Sopenharmony_cipub const O_EXCL: ::c_int = 0x0400;
1302add0d91Sopenharmony_cipub const O_TEXT: ::c_int = 0x4000;
1312add0d91Sopenharmony_cipub const O_BINARY: ::c_int = 0x8000;
1322add0d91Sopenharmony_cipub const _O_WTEXT: ::c_int = 0x10000;
1332add0d91Sopenharmony_cipub const _O_U16TEXT: ::c_int = 0x20000;
1342add0d91Sopenharmony_cipub const _O_U8TEXT: ::c_int = 0x40000;
1352add0d91Sopenharmony_cipub const O_RAW: ::c_int = O_BINARY;
1362add0d91Sopenharmony_cipub const O_NOINHERIT: ::c_int = 0x0080;
1372add0d91Sopenharmony_cipub const O_TEMPORARY: ::c_int = 0x0040;
1382add0d91Sopenharmony_cipub const _O_SHORT_LIVED: ::c_int = 0x1000;
1392add0d91Sopenharmony_cipub const _O_OBTAIN_DIR: ::c_int = 0x2000;
1402add0d91Sopenharmony_cipub const O_SEQUENTIAL: ::c_int = 0x0020;
1412add0d91Sopenharmony_cipub const O_RANDOM: ::c_int = 0x0010;
1422add0d91Sopenharmony_ci
1432add0d91Sopenharmony_cipub const S_IFCHR: ::c_int = 8192;
1442add0d91Sopenharmony_cipub const S_IFDIR: ::c_int = 16384;
1452add0d91Sopenharmony_cipub const S_IFREG: ::c_int = 32768;
1462add0d91Sopenharmony_cipub const S_IFMT: ::c_int = 61440;
1472add0d91Sopenharmony_cipub const S_IEXEC: ::c_int = 64;
1482add0d91Sopenharmony_cipub const S_IWRITE: ::c_int = 128;
1492add0d91Sopenharmony_cipub const S_IREAD: ::c_int = 256;
1502add0d91Sopenharmony_ci
1512add0d91Sopenharmony_cipub const LC_ALL: ::c_int = 0;
1522add0d91Sopenharmony_cipub const LC_COLLATE: ::c_int = 1;
1532add0d91Sopenharmony_cipub const LC_CTYPE: ::c_int = 2;
1542add0d91Sopenharmony_cipub const LC_MONETARY: ::c_int = 3;
1552add0d91Sopenharmony_cipub const LC_NUMERIC: ::c_int = 4;
1562add0d91Sopenharmony_cipub const LC_TIME: ::c_int = 5;
1572add0d91Sopenharmony_ci
1582add0d91Sopenharmony_cipub const EPERM: ::c_int = 1;
1592add0d91Sopenharmony_cipub const ENOENT: ::c_int = 2;
1602add0d91Sopenharmony_cipub const ESRCH: ::c_int = 3;
1612add0d91Sopenharmony_cipub const EINTR: ::c_int = 4;
1622add0d91Sopenharmony_cipub const EIO: ::c_int = 5;
1632add0d91Sopenharmony_cipub const ENXIO: ::c_int = 6;
1642add0d91Sopenharmony_cipub const E2BIG: ::c_int = 7;
1652add0d91Sopenharmony_cipub const ENOEXEC: ::c_int = 8;
1662add0d91Sopenharmony_cipub const EBADF: ::c_int = 9;
1672add0d91Sopenharmony_cipub const ECHILD: ::c_int = 10;
1682add0d91Sopenharmony_cipub const EAGAIN: ::c_int = 11;
1692add0d91Sopenharmony_cipub const ENOMEM: ::c_int = 12;
1702add0d91Sopenharmony_cipub const EACCES: ::c_int = 13;
1712add0d91Sopenharmony_cipub const EFAULT: ::c_int = 14;
1722add0d91Sopenharmony_cipub const EBUSY: ::c_int = 16;
1732add0d91Sopenharmony_cipub const EEXIST: ::c_int = 17;
1742add0d91Sopenharmony_cipub const EXDEV: ::c_int = 18;
1752add0d91Sopenharmony_cipub const ENODEV: ::c_int = 19;
1762add0d91Sopenharmony_cipub const ENOTDIR: ::c_int = 20;
1772add0d91Sopenharmony_cipub const EISDIR: ::c_int = 21;
1782add0d91Sopenharmony_cipub const EINVAL: ::c_int = 22;
1792add0d91Sopenharmony_cipub const ENFILE: ::c_int = 23;
1802add0d91Sopenharmony_cipub const EMFILE: ::c_int = 24;
1812add0d91Sopenharmony_cipub const ENOTTY: ::c_int = 25;
1822add0d91Sopenharmony_cipub const EFBIG: ::c_int = 27;
1832add0d91Sopenharmony_cipub const ENOSPC: ::c_int = 28;
1842add0d91Sopenharmony_cipub const ESPIPE: ::c_int = 29;
1852add0d91Sopenharmony_cipub const EROFS: ::c_int = 30;
1862add0d91Sopenharmony_cipub const EMLINK: ::c_int = 31;
1872add0d91Sopenharmony_cipub const EPIPE: ::c_int = 32;
1882add0d91Sopenharmony_cipub const EDOM: ::c_int = 33;
1892add0d91Sopenharmony_cipub const ERANGE: ::c_int = 34;
1902add0d91Sopenharmony_cipub const EDEADLK: ::c_int = 36;
1912add0d91Sopenharmony_cipub const EDEADLOCK: ::c_int = 36;
1922add0d91Sopenharmony_cipub const ENAMETOOLONG: ::c_int = 38;
1932add0d91Sopenharmony_cipub const ENOLCK: ::c_int = 39;
1942add0d91Sopenharmony_cipub const ENOSYS: ::c_int = 40;
1952add0d91Sopenharmony_cipub const ENOTEMPTY: ::c_int = 41;
1962add0d91Sopenharmony_cipub const EILSEQ: ::c_int = 42;
1972add0d91Sopenharmony_cipub const STRUNCATE: ::c_int = 80;
1982add0d91Sopenharmony_ci
1992add0d91Sopenharmony_ci// POSIX Supplement (from errno.h)
2002add0d91Sopenharmony_cipub const EADDRINUSE: ::c_int = 100;
2012add0d91Sopenharmony_cipub const EADDRNOTAVAIL: ::c_int = 101;
2022add0d91Sopenharmony_cipub const EAFNOSUPPORT: ::c_int = 102;
2032add0d91Sopenharmony_cipub const EALREADY: ::c_int = 103;
2042add0d91Sopenharmony_cipub const EBADMSG: ::c_int = 104;
2052add0d91Sopenharmony_cipub const ECANCELED: ::c_int = 105;
2062add0d91Sopenharmony_cipub const ECONNABORTED: ::c_int = 106;
2072add0d91Sopenharmony_cipub const ECONNREFUSED: ::c_int = 107;
2082add0d91Sopenharmony_cipub const ECONNRESET: ::c_int = 108;
2092add0d91Sopenharmony_cipub const EDESTADDRREQ: ::c_int = 109;
2102add0d91Sopenharmony_cipub const EHOSTUNREACH: ::c_int = 110;
2112add0d91Sopenharmony_cipub const EIDRM: ::c_int = 111;
2122add0d91Sopenharmony_cipub const EINPROGRESS: ::c_int = 112;
2132add0d91Sopenharmony_cipub const EISCONN: ::c_int = 113;
2142add0d91Sopenharmony_cipub const ELOOP: ::c_int = 114;
2152add0d91Sopenharmony_cipub const EMSGSIZE: ::c_int = 115;
2162add0d91Sopenharmony_cipub const ENETDOWN: ::c_int = 116;
2172add0d91Sopenharmony_cipub const ENETRESET: ::c_int = 117;
2182add0d91Sopenharmony_cipub const ENETUNREACH: ::c_int = 118;
2192add0d91Sopenharmony_cipub const ENOBUFS: ::c_int = 119;
2202add0d91Sopenharmony_cipub const ENODATA: ::c_int = 120;
2212add0d91Sopenharmony_cipub const ENOLINK: ::c_int = 121;
2222add0d91Sopenharmony_cipub const ENOMSG: ::c_int = 122;
2232add0d91Sopenharmony_cipub const ENOPROTOOPT: ::c_int = 123;
2242add0d91Sopenharmony_cipub const ENOSR: ::c_int = 124;
2252add0d91Sopenharmony_cipub const ENOSTR: ::c_int = 125;
2262add0d91Sopenharmony_cipub const ENOTCONN: ::c_int = 126;
2272add0d91Sopenharmony_cipub const ENOTRECOVERABLE: ::c_int = 127;
2282add0d91Sopenharmony_cipub const ENOTSOCK: ::c_int = 128;
2292add0d91Sopenharmony_cipub const ENOTSUP: ::c_int = 129;
2302add0d91Sopenharmony_cipub const EOPNOTSUPP: ::c_int = 130;
2312add0d91Sopenharmony_cipub const EOVERFLOW: ::c_int = 132;
2322add0d91Sopenharmony_cipub const EOWNERDEAD: ::c_int = 133;
2332add0d91Sopenharmony_cipub const EPROTO: ::c_int = 134;
2342add0d91Sopenharmony_cipub const EPROTONOSUPPORT: ::c_int = 135;
2352add0d91Sopenharmony_cipub const EPROTOTYPE: ::c_int = 136;
2362add0d91Sopenharmony_cipub const ETIME: ::c_int = 137;
2372add0d91Sopenharmony_cipub const ETIMEDOUT: ::c_int = 138;
2382add0d91Sopenharmony_cipub const ETXTBSY: ::c_int = 139;
2392add0d91Sopenharmony_cipub const EWOULDBLOCK: ::c_int = 140;
2402add0d91Sopenharmony_ci
2412add0d91Sopenharmony_ci// signal codes
2422add0d91Sopenharmony_cipub const SIGINT: ::c_int = 2;
2432add0d91Sopenharmony_cipub const SIGILL: ::c_int = 4;
2442add0d91Sopenharmony_cipub const SIGFPE: ::c_int = 8;
2452add0d91Sopenharmony_cipub const SIGSEGV: ::c_int = 11;
2462add0d91Sopenharmony_cipub const SIGTERM: ::c_int = 15;
2472add0d91Sopenharmony_cipub const SIGABRT: ::c_int = 22;
2482add0d91Sopenharmony_cipub const NSIG: ::c_int = 23;
2492add0d91Sopenharmony_ci
2502add0d91Sopenharmony_cipub const SIG_ERR: ::c_int = -1;
2512add0d91Sopenharmony_cipub const SIG_DFL: ::sighandler_t = 0;
2522add0d91Sopenharmony_cipub const SIG_IGN: ::sighandler_t = 1;
2532add0d91Sopenharmony_cipub const SIG_GET: ::sighandler_t = 2;
2542add0d91Sopenharmony_cipub const SIG_SGE: ::sighandler_t = 3;
2552add0d91Sopenharmony_cipub const SIG_ACK: ::sighandler_t = 4;
2562add0d91Sopenharmony_ci
2572add0d91Sopenharmony_ci// inline comment below appeases style checker
2582add0d91Sopenharmony_ci#[cfg(all(target_env = "msvc", feature = "rustc-dep-of-std"))] // " if "
2592add0d91Sopenharmony_ci#[link(name = "msvcrt", cfg(not(target_feature = "crt-static")))]
2602add0d91Sopenharmony_ci#[link(name = "libcmt", cfg(target_feature = "crt-static"))]
2612add0d91Sopenharmony_ciextern "C" {}
2622add0d91Sopenharmony_ci
2632add0d91Sopenharmony_ci#[cfg_attr(feature = "extra_traits", derive(Debug))]
2642add0d91Sopenharmony_cipub enum FILE {}
2652add0d91Sopenharmony_ciimpl ::Copy for FILE {}
2662add0d91Sopenharmony_ciimpl ::Clone for FILE {
2672add0d91Sopenharmony_ci    fn clone(&self) -> FILE {
2682add0d91Sopenharmony_ci        *self
2692add0d91Sopenharmony_ci    }
2702add0d91Sopenharmony_ci}
2712add0d91Sopenharmony_ci#[cfg_attr(feature = "extra_traits", derive(Debug))]
2722add0d91Sopenharmony_cipub enum fpos_t {} // FIXME: fill this out with a struct
2732add0d91Sopenharmony_ciimpl ::Copy for fpos_t {}
2742add0d91Sopenharmony_ciimpl ::Clone for fpos_t {
2752add0d91Sopenharmony_ci    fn clone(&self) -> fpos_t {
2762add0d91Sopenharmony_ci        *self
2772add0d91Sopenharmony_ci    }
2782add0d91Sopenharmony_ci}
2792add0d91Sopenharmony_ci
2802add0d91Sopenharmony_ci// Special handling for all print and scan type functions because of https://github.com/rust-lang/libc/issues/2860
2812add0d91Sopenharmony_ci#[cfg_attr(
2822add0d91Sopenharmony_ci    all(windows, target_env = "msvc"),
2832add0d91Sopenharmony_ci    link(name = "legacy_stdio_definitions")
2842add0d91Sopenharmony_ci)]
2852add0d91Sopenharmony_ciextern "C" {
2862add0d91Sopenharmony_ci    pub fn printf(format: *const c_char, ...) -> ::c_int;
2872add0d91Sopenharmony_ci    pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;
2882add0d91Sopenharmony_ci}
2892add0d91Sopenharmony_ci
2902add0d91Sopenharmony_ciextern "C" {
2912add0d91Sopenharmony_ci    pub fn isalnum(c: c_int) -> c_int;
2922add0d91Sopenharmony_ci    pub fn isalpha(c: c_int) -> c_int;
2932add0d91Sopenharmony_ci    pub fn iscntrl(c: c_int) -> c_int;
2942add0d91Sopenharmony_ci    pub fn isdigit(c: c_int) -> c_int;
2952add0d91Sopenharmony_ci    pub fn isgraph(c: c_int) -> c_int;
2962add0d91Sopenharmony_ci    pub fn islower(c: c_int) -> c_int;
2972add0d91Sopenharmony_ci    pub fn isprint(c: c_int) -> c_int;
2982add0d91Sopenharmony_ci    pub fn ispunct(c: c_int) -> c_int;
2992add0d91Sopenharmony_ci    pub fn isspace(c: c_int) -> c_int;
3002add0d91Sopenharmony_ci    pub fn isupper(c: c_int) -> c_int;
3012add0d91Sopenharmony_ci    pub fn isxdigit(c: c_int) -> c_int;
3022add0d91Sopenharmony_ci    pub fn isblank(c: c_int) -> c_int;
3032add0d91Sopenharmony_ci    pub fn tolower(c: c_int) -> c_int;
3042add0d91Sopenharmony_ci    pub fn toupper(c: c_int) -> c_int;
3052add0d91Sopenharmony_ci    pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
3062add0d91Sopenharmony_ci    pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;
3072add0d91Sopenharmony_ci    pub fn fflush(file: *mut FILE) -> c_int;
3082add0d91Sopenharmony_ci    pub fn fclose(file: *mut FILE) -> c_int;
3092add0d91Sopenharmony_ci    pub fn remove(filename: *const c_char) -> c_int;
3102add0d91Sopenharmony_ci    pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
3112add0d91Sopenharmony_ci    pub fn tmpfile() -> *mut FILE;
3122add0d91Sopenharmony_ci    pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;
3132add0d91Sopenharmony_ci    pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
3142add0d91Sopenharmony_ci    pub fn getchar() -> c_int;
3152add0d91Sopenharmony_ci    pub fn putchar(c: c_int) -> c_int;
3162add0d91Sopenharmony_ci    pub fn fgetc(stream: *mut FILE) -> c_int;
3172add0d91Sopenharmony_ci    pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
3182add0d91Sopenharmony_ci    pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
3192add0d91Sopenharmony_ci    pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
3202add0d91Sopenharmony_ci    pub fn puts(s: *const c_char) -> c_int;
3212add0d91Sopenharmony_ci    pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
3222add0d91Sopenharmony_ci    pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
3232add0d91Sopenharmony_ci    pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
3242add0d91Sopenharmony_ci    pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
3252add0d91Sopenharmony_ci    pub fn ftell(stream: *mut FILE) -> c_long;
3262add0d91Sopenharmony_ci    pub fn rewind(stream: *mut FILE);
3272add0d91Sopenharmony_ci    pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
3282add0d91Sopenharmony_ci    pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
3292add0d91Sopenharmony_ci    pub fn feof(stream: *mut FILE) -> c_int;
3302add0d91Sopenharmony_ci    pub fn ferror(stream: *mut FILE) -> c_int;
3312add0d91Sopenharmony_ci    pub fn perror(s: *const c_char);
3322add0d91Sopenharmony_ci    pub fn atof(s: *const c_char) -> c_double;
3332add0d91Sopenharmony_ci    pub fn atoi(s: *const c_char) -> c_int;
3342add0d91Sopenharmony_ci    pub fn atol(s: *const c_char) -> c_long;
3352add0d91Sopenharmony_ci    pub fn atoll(s: *const c_char) -> c_longlong;
3362add0d91Sopenharmony_ci    pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
3372add0d91Sopenharmony_ci    pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;
3382add0d91Sopenharmony_ci    pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;
3392add0d91Sopenharmony_ci    pub fn strtoll(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_longlong;
3402add0d91Sopenharmony_ci    pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;
3412add0d91Sopenharmony_ci    pub fn strtoull(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulonglong;
3422add0d91Sopenharmony_ci    pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
3432add0d91Sopenharmony_ci    pub fn malloc(size: size_t) -> *mut c_void;
3442add0d91Sopenharmony_ci    pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
3452add0d91Sopenharmony_ci    pub fn free(p: *mut c_void);
3462add0d91Sopenharmony_ci    pub fn abort() -> !;
3472add0d91Sopenharmony_ci    pub fn exit(status: c_int) -> !;
3482add0d91Sopenharmony_ci    pub fn _exit(status: c_int) -> !;
3492add0d91Sopenharmony_ci    pub fn atexit(cb: extern "C" fn()) -> c_int;
3502add0d91Sopenharmony_ci    pub fn system(s: *const c_char) -> c_int;
3512add0d91Sopenharmony_ci    pub fn getenv(s: *const c_char) -> *mut c_char;
3522add0d91Sopenharmony_ci
3532add0d91Sopenharmony_ci    pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
3542add0d91Sopenharmony_ci    pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
3552add0d91Sopenharmony_ci    pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
3562add0d91Sopenharmony_ci    pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
3572add0d91Sopenharmony_ci    pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
3582add0d91Sopenharmony_ci    pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
3592add0d91Sopenharmony_ci    pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
3602add0d91Sopenharmony_ci    pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
3612add0d91Sopenharmony_ci    pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
3622add0d91Sopenharmony_ci    pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
3632add0d91Sopenharmony_ci    pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
3642add0d91Sopenharmony_ci    pub fn strdup(cs: *const c_char) -> *mut c_char;
3652add0d91Sopenharmony_ci    pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
3662add0d91Sopenharmony_ci    pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
3672add0d91Sopenharmony_ci    pub fn strlen(cs: *const c_char) -> size_t;
3682add0d91Sopenharmony_ci    pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
3692add0d91Sopenharmony_ci    pub fn strerror(n: c_int) -> *mut c_char;
3702add0d91Sopenharmony_ci    pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
3712add0d91Sopenharmony_ci    pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
3722add0d91Sopenharmony_ci    pub fn wcslen(buf: *const wchar_t) -> size_t;
3732add0d91Sopenharmony_ci    pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
3742add0d91Sopenharmony_ci
3752add0d91Sopenharmony_ci    pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
3762add0d91Sopenharmony_ci    pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
3772add0d91Sopenharmony_ci    pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
3782add0d91Sopenharmony_ci    pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
3792add0d91Sopenharmony_ci    pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
3802add0d91Sopenharmony_ci
3812add0d91Sopenharmony_ci    pub fn abs(i: c_int) -> c_int;
3822add0d91Sopenharmony_ci    pub fn labs(i: c_long) -> c_long;
3832add0d91Sopenharmony_ci    pub fn rand() -> c_int;
3842add0d91Sopenharmony_ci    pub fn srand(seed: c_uint);
3852add0d91Sopenharmony_ci
3862add0d91Sopenharmony_ci    pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;
3872add0d91Sopenharmony_ci    pub fn raise(signum: c_int) -> c_int;
3882add0d91Sopenharmony_ci
3892add0d91Sopenharmony_ci    #[link_name = "_gmtime64_s"]
3902add0d91Sopenharmony_ci    pub fn gmtime_s(destTime: *mut tm, srcTime: *const time_t) -> ::c_int;
3912add0d91Sopenharmony_ci    #[link_name = "_localtime64_s"]
3922add0d91Sopenharmony_ci    pub fn localtime_s(tmDest: *mut tm, sourceTime: *const time_t) -> ::errno_t;
3932add0d91Sopenharmony_ci    #[link_name = "_time64"]
3942add0d91Sopenharmony_ci    pub fn time(destTime: *mut time_t) -> time_t;
3952add0d91Sopenharmony_ci    #[link_name = "_chmod"]
3962add0d91Sopenharmony_ci    pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int;
3972add0d91Sopenharmony_ci    #[link_name = "_wchmod"]
3982add0d91Sopenharmony_ci    pub fn wchmod(path: *const wchar_t, mode: ::c_int) -> ::c_int;
3992add0d91Sopenharmony_ci    #[link_name = "_mkdir"]
4002add0d91Sopenharmony_ci    pub fn mkdir(path: *const c_char) -> ::c_int;
4012add0d91Sopenharmony_ci    #[link_name = "_wrmdir"]
4022add0d91Sopenharmony_ci    pub fn wrmdir(path: *const wchar_t) -> ::c_int;
4032add0d91Sopenharmony_ci    #[link_name = "_fstat64"]
4042add0d91Sopenharmony_ci    pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;
4052add0d91Sopenharmony_ci    #[link_name = "_stat64"]
4062add0d91Sopenharmony_ci    pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
4072add0d91Sopenharmony_ci    #[link_name = "_wstat64"]
4082add0d91Sopenharmony_ci    pub fn wstat(path: *const wchar_t, buf: *mut stat) -> ::c_int;
4092add0d91Sopenharmony_ci    #[link_name = "_wutime64"]
4102add0d91Sopenharmony_ci    pub fn wutime(file: *const wchar_t, buf: *mut utimbuf) -> ::c_int;
4112add0d91Sopenharmony_ci    #[link_name = "_popen"]
4122add0d91Sopenharmony_ci    pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;
4132add0d91Sopenharmony_ci    #[link_name = "_pclose"]
4142add0d91Sopenharmony_ci    pub fn pclose(stream: *mut ::FILE) -> ::c_int;
4152add0d91Sopenharmony_ci    #[link_name = "_fdopen"]
4162add0d91Sopenharmony_ci    pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;
4172add0d91Sopenharmony_ci    #[link_name = "_fileno"]
4182add0d91Sopenharmony_ci    pub fn fileno(stream: *mut ::FILE) -> ::c_int;
4192add0d91Sopenharmony_ci    #[link_name = "_open"]
4202add0d91Sopenharmony_ci    pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;
4212add0d91Sopenharmony_ci    #[link_name = "_wopen"]
4222add0d91Sopenharmony_ci    pub fn wopen(path: *const wchar_t, oflag: ::c_int, ...) -> ::c_int;
4232add0d91Sopenharmony_ci    #[link_name = "_creat"]
4242add0d91Sopenharmony_ci    pub fn creat(path: *const c_char, mode: ::c_int) -> ::c_int;
4252add0d91Sopenharmony_ci    #[link_name = "_access"]
4262add0d91Sopenharmony_ci    pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;
4272add0d91Sopenharmony_ci    #[link_name = "_chdir"]
4282add0d91Sopenharmony_ci    pub fn chdir(dir: *const c_char) -> ::c_int;
4292add0d91Sopenharmony_ci    #[link_name = "_close"]
4302add0d91Sopenharmony_ci    pub fn close(fd: ::c_int) -> ::c_int;
4312add0d91Sopenharmony_ci    #[link_name = "_dup"]
4322add0d91Sopenharmony_ci    pub fn dup(fd: ::c_int) -> ::c_int;
4332add0d91Sopenharmony_ci    #[link_name = "_dup2"]
4342add0d91Sopenharmony_ci    pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;
4352add0d91Sopenharmony_ci    #[link_name = "_execl"]
4362add0d91Sopenharmony_ci    pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;
4372add0d91Sopenharmony_ci    #[link_name = "_wexecl"]
4382add0d91Sopenharmony_ci    pub fn wexecl(path: *const wchar_t, arg0: *const wchar_t, ...) -> intptr_t;
4392add0d91Sopenharmony_ci    #[link_name = "_execle"]
4402add0d91Sopenharmony_ci    pub fn execle(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;
4412add0d91Sopenharmony_ci    #[link_name = "_wexecle"]
4422add0d91Sopenharmony_ci    pub fn wexecle(path: *const wchar_t, arg0: *const wchar_t, ...) -> intptr_t;
4432add0d91Sopenharmony_ci    #[link_name = "_execlp"]
4442add0d91Sopenharmony_ci    pub fn execlp(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;
4452add0d91Sopenharmony_ci    #[link_name = "_wexeclp"]
4462add0d91Sopenharmony_ci    pub fn wexeclp(path: *const wchar_t, arg0: *const wchar_t, ...) -> intptr_t;
4472add0d91Sopenharmony_ci    #[link_name = "_execlpe"]
4482add0d91Sopenharmony_ci    pub fn execlpe(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;
4492add0d91Sopenharmony_ci    #[link_name = "_wexeclpe"]
4502add0d91Sopenharmony_ci    pub fn wexeclpe(path: *const wchar_t, arg0: *const wchar_t, ...) -> intptr_t;
4512add0d91Sopenharmony_ci    #[link_name = "_execv"]
4522add0d91Sopenharmony_ci    pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::intptr_t;
4532add0d91Sopenharmony_ci    #[link_name = "_execve"]
4542add0d91Sopenharmony_ci    pub fn execve(
4552add0d91Sopenharmony_ci        prog: *const c_char,
4562add0d91Sopenharmony_ci        argv: *const *const c_char,
4572add0d91Sopenharmony_ci        envp: *const *const c_char,
4582add0d91Sopenharmony_ci    ) -> ::c_int;
4592add0d91Sopenharmony_ci    #[link_name = "_execvp"]
4602add0d91Sopenharmony_ci    pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int;
4612add0d91Sopenharmony_ci    #[link_name = "_execvpe"]
4622add0d91Sopenharmony_ci    pub fn execvpe(
4632add0d91Sopenharmony_ci        c: *const c_char,
4642add0d91Sopenharmony_ci        argv: *const *const c_char,
4652add0d91Sopenharmony_ci        envp: *const *const c_char,
4662add0d91Sopenharmony_ci    ) -> ::c_int;
4672add0d91Sopenharmony_ci    #[link_name = "_wexecv"]
4682add0d91Sopenharmony_ci    pub fn wexecv(prog: *const wchar_t, argv: *const *const wchar_t) -> ::intptr_t;
4692add0d91Sopenharmony_ci    #[link_name = "_wexecve"]
4702add0d91Sopenharmony_ci    pub fn wexecve(
4712add0d91Sopenharmony_ci        prog: *const wchar_t,
4722add0d91Sopenharmony_ci        argv: *const *const wchar_t,
4732add0d91Sopenharmony_ci        envp: *const *const wchar_t,
4742add0d91Sopenharmony_ci    ) -> ::intptr_t;
4752add0d91Sopenharmony_ci    #[link_name = "_wexecvp"]
4762add0d91Sopenharmony_ci    pub fn wexecvp(c: *const wchar_t, argv: *const *const wchar_t) -> ::intptr_t;
4772add0d91Sopenharmony_ci    #[link_name = "_wexecvpe"]
4782add0d91Sopenharmony_ci    pub fn wexecvpe(
4792add0d91Sopenharmony_ci        c: *const wchar_t,
4802add0d91Sopenharmony_ci        argv: *const *const wchar_t,
4812add0d91Sopenharmony_ci        envp: *const *const wchar_t,
4822add0d91Sopenharmony_ci    ) -> ::intptr_t;
4832add0d91Sopenharmony_ci    #[link_name = "_getcwd"]
4842add0d91Sopenharmony_ci    pub fn getcwd(buf: *mut c_char, size: ::c_int) -> *mut c_char;
4852add0d91Sopenharmony_ci    #[link_name = "_getpid"]
4862add0d91Sopenharmony_ci    pub fn getpid() -> ::c_int;
4872add0d91Sopenharmony_ci    #[link_name = "_isatty"]
4882add0d91Sopenharmony_ci    pub fn isatty(fd: ::c_int) -> ::c_int;
4892add0d91Sopenharmony_ci    #[link_name = "_lseek"]
4902add0d91Sopenharmony_ci    pub fn lseek(fd: ::c_int, offset: c_long, origin: ::c_int) -> c_long;
4912add0d91Sopenharmony_ci    #[link_name = "_lseeki64"]
4922add0d91Sopenharmony_ci    pub fn lseek64(fd: ::c_int, offset: c_longlong, origin: ::c_int) -> c_longlong;
4932add0d91Sopenharmony_ci    #[link_name = "_pipe"]
4942add0d91Sopenharmony_ci    pub fn pipe(fds: *mut ::c_int, psize: ::c_uint, textmode: ::c_int) -> ::c_int;
4952add0d91Sopenharmony_ci    #[link_name = "_read"]
4962add0d91Sopenharmony_ci    pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::c_uint) -> ::c_int;
4972add0d91Sopenharmony_ci    #[link_name = "_rmdir"]
4982add0d91Sopenharmony_ci    pub fn rmdir(path: *const c_char) -> ::c_int;
4992add0d91Sopenharmony_ci    #[link_name = "_unlink"]
5002add0d91Sopenharmony_ci    pub fn unlink(c: *const c_char) -> ::c_int;
5012add0d91Sopenharmony_ci    #[link_name = "_write"]
5022add0d91Sopenharmony_ci    pub fn write(fd: ::c_int, buf: *const ::c_void, count: ::c_uint) -> ::c_int;
5032add0d91Sopenharmony_ci    #[link_name = "_commit"]
5042add0d91Sopenharmony_ci    pub fn commit(fd: ::c_int) -> ::c_int;
5052add0d91Sopenharmony_ci    #[link_name = "_get_osfhandle"]
5062add0d91Sopenharmony_ci    pub fn get_osfhandle(fd: ::c_int) -> ::intptr_t;
5072add0d91Sopenharmony_ci    #[link_name = "_open_osfhandle"]
5082add0d91Sopenharmony_ci    pub fn open_osfhandle(osfhandle: ::intptr_t, flags: ::c_int) -> ::c_int;
5092add0d91Sopenharmony_ci    pub fn setlocale(category: ::c_int, locale: *const c_char) -> *mut c_char;
5102add0d91Sopenharmony_ci    #[link_name = "_wsetlocale"]
5112add0d91Sopenharmony_ci    pub fn wsetlocale(category: ::c_int, locale: *const wchar_t) -> *mut wchar_t;
5122add0d91Sopenharmony_ci    #[link_name = "_aligned_malloc"]
5132add0d91Sopenharmony_ci    pub fn aligned_malloc(size: size_t, alignment: size_t) -> *mut c_void;
5142add0d91Sopenharmony_ci    #[link_name = "_aligned_free"]
5152add0d91Sopenharmony_ci    pub fn aligned_free(ptr: *mut ::c_void);
5162add0d91Sopenharmony_ci    #[link_name = "_putenv"]
5172add0d91Sopenharmony_ci    pub fn putenv(envstring: *const ::c_char) -> ::c_int;
5182add0d91Sopenharmony_ci    #[link_name = "_wputenv"]
5192add0d91Sopenharmony_ci    pub fn wputenv(envstring: *const ::wchar_t) -> ::c_int;
5202add0d91Sopenharmony_ci    #[link_name = "_putenv_s"]
5212add0d91Sopenharmony_ci    pub fn putenv_s(envstring: *const ::c_char, value_string: *const ::c_char) -> ::errno_t;
5222add0d91Sopenharmony_ci    #[link_name = "_wputenv_s"]
5232add0d91Sopenharmony_ci    pub fn wputenv_s(envstring: *const ::wchar_t, value_string: *const ::wchar_t) -> ::errno_t;
5242add0d91Sopenharmony_ci}
5252add0d91Sopenharmony_ci
5262add0d91Sopenharmony_ciextern "system" {
5272add0d91Sopenharmony_ci    pub fn listen(s: SOCKET, backlog: ::c_int) -> ::c_int;
5282add0d91Sopenharmony_ci    pub fn accept(s: SOCKET, addr: *mut ::sockaddr, addrlen: *mut ::c_int) -> SOCKET;
5292add0d91Sopenharmony_ci    pub fn bind(s: SOCKET, name: *const ::sockaddr, namelen: ::c_int) -> ::c_int;
5302add0d91Sopenharmony_ci    pub fn connect(s: SOCKET, name: *const ::sockaddr, namelen: ::c_int) -> ::c_int;
5312add0d91Sopenharmony_ci    pub fn getpeername(s: SOCKET, name: *mut ::sockaddr, nameln: *mut ::c_int) -> ::c_int;
5322add0d91Sopenharmony_ci    pub fn getsockname(s: SOCKET, name: *mut ::sockaddr, nameln: *mut ::c_int) -> ::c_int;
5332add0d91Sopenharmony_ci    pub fn getsockopt(
5342add0d91Sopenharmony_ci        s: SOCKET,
5352add0d91Sopenharmony_ci        level: ::c_int,
5362add0d91Sopenharmony_ci        optname: ::c_int,
5372add0d91Sopenharmony_ci        optval: *mut ::c_char,
5382add0d91Sopenharmony_ci        optlen: *mut ::c_int,
5392add0d91Sopenharmony_ci    ) -> ::c_int;
5402add0d91Sopenharmony_ci    pub fn recvfrom(
5412add0d91Sopenharmony_ci        s: SOCKET,
5422add0d91Sopenharmony_ci        buf: *mut ::c_char,
5432add0d91Sopenharmony_ci        len: ::c_int,
5442add0d91Sopenharmony_ci        flags: ::c_int,
5452add0d91Sopenharmony_ci        from: *mut ::sockaddr,
5462add0d91Sopenharmony_ci        fromlen: *mut ::c_int,
5472add0d91Sopenharmony_ci    ) -> ::c_int;
5482add0d91Sopenharmony_ci    pub fn sendto(
5492add0d91Sopenharmony_ci        s: SOCKET,
5502add0d91Sopenharmony_ci        buf: *const ::c_char,
5512add0d91Sopenharmony_ci        len: ::c_int,
5522add0d91Sopenharmony_ci        flags: ::c_int,
5532add0d91Sopenharmony_ci        to: *const ::sockaddr,
5542add0d91Sopenharmony_ci        tolen: ::c_int,
5552add0d91Sopenharmony_ci    ) -> ::c_int;
5562add0d91Sopenharmony_ci    pub fn setsockopt(
5572add0d91Sopenharmony_ci        s: SOCKET,
5582add0d91Sopenharmony_ci        level: ::c_int,
5592add0d91Sopenharmony_ci        optname: ::c_int,
5602add0d91Sopenharmony_ci        optval: *const ::c_char,
5612add0d91Sopenharmony_ci        optlen: ::c_int,
5622add0d91Sopenharmony_ci    ) -> ::c_int;
5632add0d91Sopenharmony_ci    pub fn socket(af: ::c_int, socket_type: ::c_int, protocol: ::c_int) -> SOCKET;
5642add0d91Sopenharmony_ci}
5652add0d91Sopenharmony_ci
5662add0d91Sopenharmony_cicfg_if! {
5672add0d91Sopenharmony_ci    if #[cfg(libc_core_cvoid)] {
5682add0d91Sopenharmony_ci        pub use ::ffi::c_void;
5692add0d91Sopenharmony_ci    } else {
5702add0d91Sopenharmony_ci        // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
5712add0d91Sopenharmony_ci        // enable more optimization opportunities around it recognizing things
5722add0d91Sopenharmony_ci        // like malloc/free.
5732add0d91Sopenharmony_ci        #[repr(u8)]
5742add0d91Sopenharmony_ci        #[allow(missing_copy_implementations)]
5752add0d91Sopenharmony_ci        #[allow(missing_debug_implementations)]
5762add0d91Sopenharmony_ci        pub enum c_void {
5772add0d91Sopenharmony_ci            // Two dummy variants so the #[repr] attribute can be used.
5782add0d91Sopenharmony_ci            #[doc(hidden)]
5792add0d91Sopenharmony_ci            __variant1,
5802add0d91Sopenharmony_ci            #[doc(hidden)]
5812add0d91Sopenharmony_ci            __variant2,
5822add0d91Sopenharmony_ci        }
5832add0d91Sopenharmony_ci    }
5842add0d91Sopenharmony_ci}
5852add0d91Sopenharmony_ci
5862add0d91Sopenharmony_cicfg_if! {
5872add0d91Sopenharmony_ci    if #[cfg(all(target_env = "gnu"))] {
5882add0d91Sopenharmony_ci        mod gnu;
5892add0d91Sopenharmony_ci        pub use self::gnu::*;
5902add0d91Sopenharmony_ci    } else if #[cfg(all(target_env = "msvc"))] {
5912add0d91Sopenharmony_ci        mod msvc;
5922add0d91Sopenharmony_ci        pub use self::msvc::*;
5932add0d91Sopenharmony_ci    } else {
5942add0d91Sopenharmony_ci        // Unknown target_env
5952add0d91Sopenharmony_ci    }
5962add0d91Sopenharmony_ci}
597