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