1//! Interface to the [SOLID] C library 2//! 3//! [SOLID]: https://solid.kmckk.com/ 4 5pub type c_schar = i8; 6pub type c_uchar = u8; 7pub type c_short = i16; 8pub type c_ushort = u16; 9pub type c_int = i32; 10pub type c_uint = u32; 11pub type c_float = f32; 12pub type c_double = f64; 13pub type c_longlong = i64; 14pub type c_ulonglong = u64; 15pub type intmax_t = i64; 16pub type uintmax_t = u64; 17 18pub type uintptr_t = usize; 19pub type intptr_t = isize; 20pub type ptrdiff_t = isize; 21pub type size_t = ::uintptr_t; 22pub type ssize_t = ::intptr_t; 23 24pub type clock_t = c_uint; 25pub type time_t = i64; 26pub type clockid_t = c_int; 27pub type timer_t = c_int; 28pub type suseconds_t = c_int; 29pub type useconds_t = c_uint; 30 31pub type sighandler_t = size_t; 32 33// sys/ansi.h 34pub type __caddr_t = *mut c_char; 35pub type __gid_t = u32; 36pub type __in_addr_t = u32; 37pub type __in_port_t = u16; 38pub type __mode_t = u32; 39pub type __off_t = i64; 40pub type __pid_t = i32; 41pub type __sa_family_t = u8; 42pub type __socklen_t = c_uint; 43pub type __uid_t = u32; 44pub type __fsblkcnt_t = u64; 45pub type __fsfilcnt_t = u64; 46 47// locale.h 48pub type locale_t = usize; 49 50// nl_types.h 51pub type nl_item = c_long; 52 53// sys/types.h 54pub type __va_list = *mut c_char; 55pub type u_int8_t = u8; 56pub type u_int16_t = u16; 57pub type u_int32_t = u32; 58pub type u_int64_t = u64; 59pub type u_char = c_uchar; 60pub type u_short = c_ushort; 61pub type u_int = c_uint; 62pub type u_long = c_ulong; 63pub type unchar = c_uchar; 64pub type ushort = c_ushort; 65pub type uint = c_uint; 66pub type ulong = c_ulong; 67pub type u_quad_t = u64; 68pub type quad_t = i64; 69pub type qaddr_t = *mut quad_t; 70pub type longlong_t = i64; 71pub type u_longlong_t = u64; 72pub type blkcnt_t = i64; 73pub type blksize_t = i32; 74pub type fsblkcnt_t = __fsblkcnt_t; 75pub type fsfilcnt_t = __fsfilcnt_t; 76pub type caddr_t = __caddr_t; 77pub type daddr_t = i64; 78pub type dev_t = u64; 79pub type fixpt_t = u32; 80pub type gid_t = __gid_t; 81pub type idtype_t = c_int; 82pub type id_t = u32; 83pub type ino_t = u64; 84pub type key_t = c_long; 85pub type mode_t = __mode_t; 86pub type nlink_t = u32; 87pub type off_t = __off_t; 88pub type pid_t = __pid_t; 89pub type lwpid_t = i32; 90pub type rlim_t = u64; 91pub type segsz_t = i32; 92pub type swblk_t = i32; 93pub type mqd_t = c_int; 94pub type cpuid_t = c_ulong; 95pub type psetid_t = c_int; 96 97s! { 98 // stat.h 99 pub struct stat { 100 pub st_dev: dev_t, 101 pub st_ino: ino_t, 102 pub st_mode: c_short, 103 pub st_nlink: c_short, 104 pub st_uid: c_short, 105 pub st_gid: c_short, 106 pub st_rdev: dev_t, 107 pub st_size: off_t, 108 pub st_atime: time_t, 109 pub st_mtime: time_t, 110 pub st_ctime: time_t, 111 pub st_blksize: blksize_t, 112 } 113 114 // time.h 115 pub struct tm { 116 pub tm_sec: c_int, 117 pub tm_min: c_int, 118 pub tm_hour: c_int, 119 pub tm_mday: c_int, 120 pub tm_mon: c_int, 121 pub tm_year: c_int, 122 pub tm_wday: c_int, 123 pub tm_yday: c_int, 124 pub tm_isdst: c_int, 125 pub tm_gmtoff: c_long, 126 pub tm_zone: *mut c_char, 127 } 128 129 // stdlib.h 130 pub struct qdiv_t { 131 pub quot: quad_t, 132 pub rem: quad_t, 133 } 134 pub struct lldiv_t { 135 pub quot: c_longlong, 136 pub rem: c_longlong, 137 } 138 pub struct div_t { 139 pub quot: c_int, 140 pub rem: c_int, 141 } 142 pub struct ldiv_t { 143 pub quot: c_long, 144 pub rem: c_long, 145 } 146 147 // locale.h 148 pub struct lconv { 149 pub decimal_point: *mut c_char, 150 pub thousands_sep: *mut c_char, 151 pub grouping: *mut c_char, 152 pub int_curr_symbol: *mut c_char, 153 pub currency_symbol: *mut c_char, 154 pub mon_decimal_point: *mut c_char, 155 pub mon_thousands_sep: *mut c_char, 156 pub mon_grouping: *mut c_char, 157 pub positive_sign: *mut c_char, 158 pub negative_sign: *mut c_char, 159 pub int_frac_digits: c_char, 160 pub frac_digits: c_char, 161 pub p_cs_precedes: c_char, 162 pub p_sep_by_space: c_char, 163 pub n_cs_precedes: c_char, 164 pub n_sep_by_space: c_char, 165 pub p_sign_posn: c_char, 166 pub n_sign_posn: c_char, 167 pub int_p_cs_precedes: c_char, 168 pub int_n_cs_precedes: c_char, 169 pub int_p_sep_by_space: c_char, 170 pub int_n_sep_by_space: c_char, 171 pub int_p_sign_posn: c_char, 172 pub int_n_sign_posn: c_char, 173 } 174 175 pub struct iovec { 176 pub iov_base: *mut c_void, 177 pub iov_len: size_t, 178 } 179 180 pub struct timeval { 181 pub tv_sec: c_long, 182 pub tv_usec: c_long, 183 } 184} 185 186pub const INT_MIN: c_int = -2147483648; 187pub const INT_MAX: c_int = 2147483647; 188 189pub const EXIT_FAILURE: c_int = 1; 190pub const EXIT_SUCCESS: c_int = 0; 191pub const RAND_MAX: c_int = 0x7fffffff; 192pub const EOF: c_int = -1; 193pub const SEEK_SET: c_int = 0; 194pub const SEEK_CUR: c_int = 1; 195pub const SEEK_END: c_int = 2; 196pub const _IOFBF: c_int = 0; 197pub const _IONBF: c_int = 2; 198pub const _IOLBF: c_int = 1; 199pub const BUFSIZ: c_uint = 1024; 200pub const FOPEN_MAX: c_uint = 20; 201pub const FILENAME_MAX: c_uint = 1024; 202 203pub const O_RDONLY: c_int = 1; 204pub const O_WRONLY: c_int = 2; 205pub const O_RDWR: c_int = 4; 206pub const O_APPEND: c_int = 8; 207pub const O_CREAT: c_int = 0x10; 208pub const O_EXCL: c_int = 0x400; 209pub const O_TEXT: c_int = 0x100; 210pub const O_BINARY: c_int = 0x200; 211pub const O_TRUNC: c_int = 0x20; 212pub const S_IEXEC: c_short = 0x0040; 213pub const S_IWRITE: c_short = 0x0080; 214pub const S_IREAD: c_short = 0x0100; 215pub const S_IFCHR: c_short = 0x2000; 216pub const S_IFDIR: c_short = 0x4000; 217pub const S_IFMT: c_short = 0o160000; 218pub const S_IFIFO: c_short = 0o0010000; 219pub const S_IFBLK: c_short = 0o0060000; 220pub const S_IFREG: c_short = 0o0100000; 221 222pub const LC_ALL: c_int = 0; 223pub const LC_COLLATE: c_int = 1; 224pub const LC_CTYPE: c_int = 2; 225pub const LC_MONETARY: c_int = 3; 226pub const LC_NUMERIC: c_int = 4; 227pub const LC_TIME: c_int = 5; 228pub const LC_MESSAGES: c_int = 6; 229pub const _LC_LAST: c_int = 7; 230 231pub const EPERM: c_int = 1; 232pub const ENOENT: c_int = 2; 233pub const ESRCH: c_int = 3; 234pub const EINTR: c_int = 4; 235pub const EIO: c_int = 5; 236pub const ENXIO: c_int = 6; 237pub const E2BIG: c_int = 7; 238pub const ENOEXEC: c_int = 8; 239pub const EBADF: c_int = 9; 240pub const ECHILD: c_int = 10; 241pub const EAGAIN: c_int = 11; 242pub const ENOMEM: c_int = 12; 243pub const EACCES: c_int = 13; 244pub const EFAULT: c_int = 14; 245pub const ENOTBLK: c_int = 15; 246pub const EBUSY: c_int = 16; 247pub const EEXIST: c_int = 17; 248pub const EXDEV: c_int = 18; 249pub const ENODEV: c_int = 19; 250pub const ENOTDIR: c_int = 20; 251pub const EISDIR: c_int = 21; 252pub const EINVAL: c_int = 22; 253pub const ENFILE: c_int = 23; 254pub const EMFILE: c_int = 24; 255pub const ENOTTY: c_int = 25; 256pub const ETXTBSY: c_int = 26; 257pub const EFBIG: c_int = 27; 258pub const ENOSPC: c_int = 28; 259pub const ESPIPE: c_int = 29; 260pub const EROFS: c_int = 30; 261pub const EMLINK: c_int = 31; 262pub const EPIPE: c_int = 32; 263pub const EDOM: c_int = 33; 264pub const ERANGE: c_int = 34; 265 266pub const EDEADLK: c_int = 35; 267pub const ENAMETOOLONG: c_int = 36; 268pub const ENOLCK: c_int = 37; 269pub const ENOSYS: c_int = 38; 270pub const ENOTEMPTY: c_int = 39; 271pub const ELOOP: c_int = 40; 272pub const EWOULDBLOCK: c_int = EAGAIN; 273pub const ENOMSG: c_int = 42; 274pub const EIDRM: c_int = 43; 275pub const ECHRNG: c_int = 44; 276pub const EL2NSYNC: c_int = 45; 277pub const EL3HLT: c_int = 46; 278pub const EL3RST: c_int = 47; 279pub const ELNRNG: c_int = 48; 280pub const EUNATCH: c_int = 49; 281pub const ENOCSI: c_int = 50; 282pub const EL2HLT: c_int = 51; 283pub const EBADE: c_int = 52; 284pub const EBADR: c_int = 53; 285pub const EXFULL: c_int = 54; 286pub const ENOANO: c_int = 55; 287pub const EBADRQC: c_int = 56; 288pub const EBADSLT: c_int = 57; 289 290pub const EDEADLOCK: c_int = EDEADLK; 291 292pub const EBFONT: c_int = 59; 293pub const ENOSTR: c_int = 60; 294pub const ENODATA: c_int = 61; 295pub const ETIME: c_int = 62; 296pub const ENOSR: c_int = 63; 297pub const ENONET: c_int = 64; 298pub const ENOPKG: c_int = 65; 299pub const EREMOTE: c_int = 66; 300pub const ENOLINK: c_int = 67; 301pub const EADV: c_int = 68; 302pub const ESRMNT: c_int = 69; 303pub const ECOMM: c_int = 70; 304pub const EPROTO: c_int = 71; 305pub const EMULTIHOP: c_int = 72; 306pub const EDOTDOT: c_int = 73; 307pub const EBADMSG: c_int = 74; 308pub const EOVERFLOW: c_int = 75; 309pub const ENOTUNIQ: c_int = 76; 310pub const EBADFD: c_int = 77; 311pub const EREMCHG: c_int = 78; 312pub const ELIBACC: c_int = 79; 313pub const ELIBBAD: c_int = 80; 314pub const ELIBSCN: c_int = 81; 315pub const ELIBMAX: c_int = 82; 316pub const ELIBEXEC: c_int = 83; 317pub const EILSEQ: c_int = 84; 318pub const ERESTART: c_int = 85; 319pub const ESTRPIPE: c_int = 86; 320pub const EUSERS: c_int = 87; 321pub const ENOTSOCK: c_int = 88; 322pub const EDESTADDRREQ: c_int = 89; 323pub const EMSGSIZE: c_int = 90; 324pub const EPROTOTYPE: c_int = 91; 325pub const ENOPROTOOPT: c_int = 92; 326pub const EPROTONOSUPPORT: c_int = 93; 327pub const ESOCKTNOSUPPORT: c_int = 94; 328pub const EOPNOTSUPP: c_int = 95; 329pub const EPFNOSUPPORT: c_int = 96; 330pub const EAFNOSUPPORT: c_int = 97; 331pub const EADDRINUSE: c_int = 98; 332pub const EADDRNOTAVAIL: c_int = 99; 333pub const ENETDOWN: c_int = 100; 334pub const ENETUNREACH: c_int = 101; 335pub const ENETRESET: c_int = 102; 336pub const ECONNABORTED: c_int = 103; 337pub const ECONNRESET: c_int = 104; 338pub const ENOBUFS: c_int = 105; 339pub const EISCONN: c_int = 106; 340pub const ENOTCONN: c_int = 107; 341pub const ESHUTDOWN: c_int = 108; 342pub const ETOOMANYREFS: c_int = 109; 343pub const ETIMEDOUT: c_int = 110; 344pub const ECONNREFUSED: c_int = 111; 345pub const EHOSTDOWN: c_int = 112; 346pub const EHOSTUNREACH: c_int = 113; 347pub const EALREADY: c_int = 114; 348pub const EINPROGRESS: c_int = 115; 349pub const ESTALE: c_int = 116; 350pub const EUCLEAN: c_int = 117; 351pub const ENOTNAM: c_int = 118; 352pub const ENAVAIL: c_int = 119; 353pub const EISNAM: c_int = 120; 354pub const EREMOTEIO: c_int = 121; 355pub const EDQUOT: c_int = 122; 356 357pub const ENOMEDIUM: c_int = 123; 358pub const EMEDIUMTYPE: c_int = 124; 359pub const ECANCELED: c_int = 125; 360pub const ENOKEY: c_int = 126; 361pub const EKEYEXPIRED: c_int = 127; 362pub const EKEYREVOKED: c_int = 128; 363pub const EKEYREJECTED: c_int = 129; 364 365pub const EOWNERDEAD: c_int = 130; 366pub const ENOTRECOVERABLE: c_int = 131; 367 368pub const ENOTSUP: c_int = 132; 369pub const EFTYPE: c_int = 133; 370 371// signal codes 372pub const SIGHUP: c_int = 1; 373pub const SIGINT: c_int = 2; 374pub const SIGQUIT: c_int = 3; 375pub const SIGILL: c_int = 4; 376pub const SIGTRAP: c_int = 5; 377pub const SIGABRT: c_int = 6; 378pub const SIGIOT: c_int = SIGABRT; 379pub const SIGEMT: c_int = 7; 380pub const SIGFPE: c_int = 8; 381pub const SIGKILL: c_int = 9; 382pub const SIGBUS: c_int = 10; 383pub const SIGSEGV: c_int = 11; 384pub const SIGSYS: c_int = 12; 385pub const SIGPIPE: c_int = 13; 386pub const SIGALRM: c_int = 14; 387pub const SIGTERM: c_int = 15; 388pub const SIGURG: c_int = 16; 389pub const SIGSTOP: c_int = 17; 390pub const SIGTSTP: c_int = 18; 391pub const SIGCONT: c_int = 19; 392pub const SIGCHLD: c_int = 20; 393pub const SIGTTIN: c_int = 21; 394pub const SIGTTOU: c_int = 22; 395pub const SIGIO: c_int = 23; 396pub const SIGXCPU: c_int = 24; 397pub const SIGXFSZ: c_int = 25; 398pub const SIGVTALRM: c_int = 26; 399pub const SIGPROF: c_int = 27; 400pub const SIGWINCH: c_int = 28; 401pub const SIGINFO: c_int = 29; 402pub const SIGUSR1: c_int = 30; 403pub const SIGUSR2: c_int = 31; 404pub const SIGPWR: c_int = 32; 405 406#[cfg_attr(feature = "extra_traits", derive(Debug))] 407pub enum FILE {} 408impl ::Copy for FILE {} 409impl ::Clone for FILE { 410 fn clone(&self) -> FILE { 411 *self 412 } 413} 414#[cfg_attr(feature = "extra_traits", derive(Debug))] 415pub enum fpos_t {} 416impl ::Copy for fpos_t {} 417impl ::Clone for fpos_t { 418 fn clone(&self) -> fpos_t { 419 *self 420 } 421} 422 423extern "C" { 424 // ctype.h 425 pub fn isalnum(c: c_int) -> c_int; 426 pub fn isalpha(c: c_int) -> c_int; 427 pub fn iscntrl(c: c_int) -> c_int; 428 pub fn isdigit(c: c_int) -> c_int; 429 pub fn isgraph(c: c_int) -> c_int; 430 pub fn islower(c: c_int) -> c_int; 431 pub fn isprint(c: c_int) -> c_int; 432 pub fn ispunct(c: c_int) -> c_int; 433 pub fn isspace(c: c_int) -> c_int; 434 pub fn isupper(c: c_int) -> c_int; 435 pub fn isxdigit(c: c_int) -> c_int; 436 pub fn isblank(c: c_int) -> c_int; 437 pub fn tolower(c: c_int) -> c_int; 438 pub fn toupper(c: c_int) -> c_int; 439 440 // stdio.h 441 pub fn __get_stdio_file(fileno: c_int) -> *mut FILE; 442 pub fn clearerr(arg1: *mut FILE); 443 pub fn fclose(arg1: *mut FILE) -> c_int; 444 pub fn feof(arg1: *mut FILE) -> c_int; 445 pub fn ferror(arg1: *mut FILE) -> c_int; 446 pub fn fflush(arg1: *mut FILE) -> c_int; 447 pub fn fgetc(arg1: *mut FILE) -> c_int; 448 pub fn fgets(arg1: *mut c_char, arg2: c_int, arg3: *mut FILE) -> *mut c_char; 449 pub fn fopen(arg1: *const c_char, arg2: *const c_char) -> *mut FILE; 450 pub fn fprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int; 451 pub fn fputc(arg1: c_int, arg2: *mut FILE) -> c_int; 452 pub fn fputs(arg1: *const c_char, arg2: *mut FILE) -> c_int; 453 pub fn fread(arg1: *mut c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t; 454 pub fn freopen(arg1: *const c_char, arg2: *const c_char, arg3: *mut FILE) -> *mut FILE; 455 pub fn fscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int; 456 pub fn fseek(arg1: *mut FILE, arg2: c_long, arg3: c_int) -> c_int; 457 pub fn ftell(arg1: *mut FILE) -> c_long; 458 pub fn fwrite(arg1: *const c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t; 459 pub fn getc(arg1: *mut FILE) -> c_int; 460 pub fn getchar() -> c_int; 461 pub fn perror(arg1: *const c_char); 462 pub fn printf(arg1: *const c_char, ...) -> c_int; 463 pub fn putc(arg1: c_int, arg2: *mut FILE) -> c_int; 464 pub fn putchar(arg1: c_int) -> c_int; 465 pub fn puts(arg1: *const c_char) -> c_int; 466 pub fn remove(arg1: *const c_char) -> c_int; 467 pub fn rewind(arg1: *mut FILE); 468 pub fn scanf(arg1: *const c_char, ...) -> c_int; 469 pub fn setbuf(arg1: *mut FILE, arg2: *mut c_char); 470 pub fn setvbuf(arg1: *mut FILE, arg2: *mut c_char, arg3: c_int, arg4: size_t) -> c_int; 471 pub fn sscanf(arg1: *const c_char, arg2: *const c_char, ...) -> c_int; 472 pub fn tmpfile() -> *mut FILE; 473 pub fn ungetc(arg1: c_int, arg2: *mut FILE) -> c_int; 474 pub fn vfprintf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int; 475 pub fn vprintf(arg1: *const c_char, arg2: __va_list) -> c_int; 476 pub fn gets(arg1: *mut c_char) -> *mut c_char; 477 pub fn sprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int; 478 pub fn tmpnam(arg1: *const c_char) -> *mut c_char; 479 pub fn vsprintf(arg1: *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int; 480 pub fn rename(arg1: *const c_char, arg2: *const c_char) -> c_int; 481 pub fn asiprintf(arg1: *mut *mut c_char, arg2: *const c_char, ...) -> c_int; 482 pub fn fiprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int; 483 pub fn fiscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int; 484 pub fn iprintf(arg1: *const c_char, ...) -> c_int; 485 pub fn iscanf(arg1: *const c_char, ...) -> c_int; 486 pub fn siprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int; 487 pub fn siscanf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int; 488 pub fn sniprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int; 489 pub fn vasiprintf(arg1: *mut *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int; 490 pub fn vfiprintf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int; 491 pub fn vfiscanf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int; 492 pub fn viprintf(arg1: *const c_char, arg2: __va_list) -> c_int; 493 pub fn viscanf(arg1: *const c_char, arg2: __va_list) -> c_int; 494 pub fn vsiprintf(arg1: *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int; 495 pub fn vsiscanf(arg1: *const c_char, arg2: *const c_char, arg3: __va_list) -> c_int; 496 pub fn vsniprintf( 497 arg1: *mut c_char, 498 arg2: size_t, 499 arg3: *const c_char, 500 arg4: __va_list, 501 ) -> c_int; 502 pub fn vdiprintf(arg1: c_int, arg2: *const c_char, arg3: __va_list) -> c_int; 503 pub fn diprintf(arg1: c_int, arg2: *const c_char, ...) -> c_int; 504 pub fn fgetpos(arg1: *mut FILE, arg2: *mut fpos_t) -> c_int; 505 pub fn fsetpos(arg1: *mut FILE, arg2: *const fpos_t) -> c_int; 506 pub fn fdopen(arg1: c_int, arg2: *const c_char) -> *mut FILE; 507 pub fn fileno(arg1: *mut FILE) -> c_int; 508 pub fn flockfile(arg1: *mut FILE); 509 pub fn ftrylockfile(arg1: *mut FILE) -> c_int; 510 pub fn funlockfile(arg1: *mut FILE); 511 pub fn getc_unlocked(arg1: *mut FILE) -> c_int; 512 pub fn getchar_unlocked() -> c_int; 513 pub fn putc_unlocked(arg1: c_int, arg2: *mut FILE) -> c_int; 514 pub fn putchar_unlocked(arg1: c_int) -> c_int; 515 pub fn snprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int; 516 pub fn vsnprintf( 517 arg1: *mut c_char, 518 arg2: size_t, 519 arg3: *const c_char, 520 arg4: __va_list, 521 ) -> c_int; 522 pub fn getw(arg1: *mut FILE) -> c_int; 523 pub fn putw(arg1: c_int, arg2: *mut FILE) -> c_int; 524 pub fn tempnam(arg1: *const c_char, arg2: *const c_char) -> *mut c_char; 525 pub fn fseeko(stream: *mut FILE, offset: off_t, whence: c_int) -> c_int; 526 pub fn ftello(stream: *mut FILE) -> off_t; 527 528 // stdlib.h 529 pub fn atof(arg1: *const c_char) -> f64; 530 pub fn strtod(arg1: *const c_char, arg2: *mut *mut c_char) -> f64; 531 pub fn drand48() -> f64; 532 pub fn erand48(arg1: *mut c_ushort) -> f64; 533 pub fn strtof(arg1: *const c_char, arg2: *mut *mut c_char) -> f32; 534 pub fn strtold(arg1: *const c_char, arg2: *mut *mut c_char) -> f64; 535 pub fn strtod_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64; 536 pub fn strtof_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f32; 537 pub fn strtold_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64; 538 pub fn _Exit(arg1: c_int) -> !; 539 pub fn abort() -> !; 540 pub fn abs(arg1: c_int) -> c_int; 541 pub fn atexit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int; 542 pub fn atoi(arg1: *const c_char) -> c_int; 543 pub fn atol(arg1: *const c_char) -> c_long; 544 pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char; 545 pub fn ltoa(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> *mut c_char; 546 pub fn ultoa(arg1: c_ulong, arg2: *mut c_char, arg3: c_int) -> *mut c_char; 547 pub fn bsearch( 548 arg1: *const c_void, 549 arg2: *const c_void, 550 arg3: size_t, 551 arg4: size_t, 552 arg5: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, 553 ) -> *mut c_void; 554 pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void; 555 pub fn div(arg1: c_int, arg2: c_int) -> div_t; 556 pub fn exit(arg1: c_int) -> !; 557 pub fn free(arg1: *mut c_void); 558 pub fn getenv(arg1: *const c_char) -> *mut c_char; 559 pub fn labs(arg1: c_long) -> c_long; 560 pub fn ldiv(arg1: c_long, arg2: c_long) -> ldiv_t; 561 pub fn malloc(arg1: size_t) -> *mut c_void; 562 pub fn qsort( 563 arg1: *mut c_void, 564 arg2: size_t, 565 arg3: size_t, 566 arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, 567 ); 568 pub fn rand() -> c_int; 569 pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void; 570 pub fn srand(arg1: c_uint); 571 pub fn strtol(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_long; 572 pub fn strtoul(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulong; 573 pub fn mblen(arg1: *const c_char, arg2: size_t) -> c_int; 574 pub fn mbstowcs(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> size_t; 575 pub fn wctomb(arg1: *mut c_char, arg2: wchar_t) -> c_int; 576 pub fn mbtowc(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> c_int; 577 pub fn wcstombs(arg1: *mut c_char, arg2: *const wchar_t, arg3: size_t) -> size_t; 578 pub fn rand_r(arg1: *mut c_uint) -> c_int; 579 pub fn jrand48(arg1: *mut c_ushort) -> c_long; 580 pub fn lcong48(arg1: *mut c_ushort); 581 pub fn lrand48() -> c_long; 582 pub fn mrand48() -> c_long; 583 pub fn nrand48(arg1: *mut c_ushort) -> c_long; 584 pub fn seed48(arg1: *mut c_ushort) -> *mut c_ushort; 585 pub fn srand48(arg1: c_long); 586 pub fn putenv(arg1: *mut c_char) -> c_int; 587 pub fn a64l(arg1: *const c_char) -> c_long; 588 pub fn l64a(arg1: c_long) -> *mut c_char; 589 pub fn random() -> c_long; 590 pub fn setstate(arg1: *mut c_char) -> *mut c_char; 591 pub fn initstate(arg1: c_uint, arg2: *mut c_char, arg3: size_t) -> *mut c_char; 592 pub fn srandom(arg1: c_uint); 593 pub fn mkostemp(arg1: *mut c_char, arg2: c_int) -> c_int; 594 pub fn mkostemps(arg1: *mut c_char, arg2: c_int, arg3: c_int) -> c_int; 595 pub fn mkdtemp(arg1: *mut c_char) -> *mut c_char; 596 pub fn mkstemp(arg1: *mut c_char) -> c_int; 597 pub fn mktemp(arg1: *mut c_char) -> *mut c_char; 598 pub fn atoll(arg1: *const c_char) -> c_longlong; 599 pub fn llabs(arg1: c_longlong) -> c_longlong; 600 pub fn lldiv(arg1: c_longlong, arg2: c_longlong) -> lldiv_t; 601 pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong; 602 pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong; 603 pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void; 604 pub fn at_quick_exit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int; 605 pub fn quick_exit(arg1: c_int); 606 pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int; 607 pub fn unsetenv(arg1: *const c_char) -> c_int; 608 pub fn humanize_number( 609 arg1: *mut c_char, 610 arg2: size_t, 611 arg3: i64, 612 arg4: *const c_char, 613 arg5: c_int, 614 arg6: c_int, 615 ) -> c_int; 616 pub fn dehumanize_number(arg1: *const c_char, arg2: *mut i64) -> c_int; 617 pub fn getenv_r(arg1: *const c_char, arg2: *mut c_char, arg3: size_t) -> c_int; 618 pub fn heapsort( 619 arg1: *mut c_void, 620 arg2: size_t, 621 arg3: size_t, 622 arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, 623 ) -> c_int; 624 pub fn mergesort( 625 arg1: *mut c_void, 626 arg2: size_t, 627 arg3: size_t, 628 arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, 629 ) -> c_int; 630 pub fn radixsort( 631 arg1: *mut *const c_uchar, 632 arg2: c_int, 633 arg3: *const c_uchar, 634 arg4: c_uint, 635 ) -> c_int; 636 pub fn sradixsort( 637 arg1: *mut *const c_uchar, 638 arg2: c_int, 639 arg3: *const c_uchar, 640 arg4: c_uint, 641 ) -> c_int; 642 pub fn getprogname() -> *const c_char; 643 pub fn setprogname(arg1: *const c_char); 644 pub fn qabs(arg1: quad_t) -> quad_t; 645 pub fn strtoq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> quad_t; 646 pub fn strtouq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> u_quad_t; 647 pub fn strsuftoll( 648 arg1: *const c_char, 649 arg2: *const c_char, 650 arg3: c_longlong, 651 arg4: c_longlong, 652 ) -> c_longlong; 653 pub fn strsuftollx( 654 arg1: *const c_char, 655 arg2: *const c_char, 656 arg3: c_longlong, 657 arg4: c_longlong, 658 arg5: *mut c_char, 659 arg6: size_t, 660 ) -> c_longlong; 661 pub fn l64a_r(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> c_int; 662 pub fn qdiv(arg1: quad_t, arg2: quad_t) -> qdiv_t; 663 pub fn strtol_l( 664 arg1: *const c_char, 665 arg2: *mut *mut c_char, 666 arg3: c_int, 667 arg4: locale_t, 668 ) -> c_long; 669 pub fn strtoul_l( 670 arg1: *const c_char, 671 arg2: *mut *mut c_char, 672 arg3: c_int, 673 arg4: locale_t, 674 ) -> c_ulong; 675 pub fn strtoll_l( 676 arg1: *const c_char, 677 arg2: *mut *mut c_char, 678 arg3: c_int, 679 arg4: locale_t, 680 ) -> c_longlong; 681 pub fn strtoull_l( 682 arg1: *const c_char, 683 arg2: *mut *mut c_char, 684 arg3: c_int, 685 arg4: locale_t, 686 ) -> c_ulonglong; 687 pub fn strtoq_l( 688 arg1: *const c_char, 689 arg2: *mut *mut c_char, 690 arg3: c_int, 691 arg4: locale_t, 692 ) -> quad_t; 693 pub fn strtouq_l( 694 arg1: *const c_char, 695 arg2: *mut *mut c_char, 696 arg3: c_int, 697 arg4: locale_t, 698 ) -> u_quad_t; 699 pub fn _mb_cur_max_l(arg1: locale_t) -> size_t; 700 pub fn mblen_l(arg1: *const c_char, arg2: size_t, arg3: locale_t) -> c_int; 701 pub fn mbstowcs_l( 702 arg1: *mut wchar_t, 703 arg2: *const c_char, 704 arg3: size_t, 705 arg4: locale_t, 706 ) -> size_t; 707 pub fn wctomb_l(arg1: *mut c_char, arg2: wchar_t, arg3: locale_t) -> c_int; 708 pub fn mbtowc_l(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t, arg4: locale_t) 709 -> c_int; 710 pub fn wcstombs_l( 711 arg1: *mut c_char, 712 arg2: *const wchar_t, 713 arg3: size_t, 714 arg4: locale_t, 715 ) -> size_t; 716 717 // string.h 718 pub fn memchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void; 719 pub fn memcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int; 720 pub fn memcpy(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void; 721 pub fn memmove(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void; 722 pub fn memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void; 723 pub fn strcat(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char; 724 pub fn strchr(arg1: *const c_char, arg2: c_int) -> *mut c_char; 725 pub fn strcmp(arg1: *const c_char, arg2: *const c_char) -> c_int; 726 pub fn strcoll(arg1: *const c_char, arg2: *const c_char) -> c_int; 727 pub fn strcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char; 728 pub fn strcspn(arg1: *const c_char, arg2: *const c_char) -> size_t; 729 pub fn strerror(arg1: c_int) -> *mut c_char; 730 pub fn strlen(arg1: *const c_char) -> size_t; 731 pub fn strncat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char; 732 pub fn strncmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int; 733 pub fn strncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char; 734 pub fn strpbrk(arg1: *const c_char, arg2: *const c_char) -> *mut c_char; 735 pub fn strrchr(arg1: *const c_char, arg2: c_int) -> *mut c_char; 736 pub fn strspn(arg1: *const c_char, arg2: *const c_char) -> size_t; 737 pub fn strstr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char; 738 pub fn strtok(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char; 739 pub fn strtok_r(arg1: *mut c_char, arg2: *const c_char, arg3: *mut *mut c_char) -> *mut c_char; 740 pub fn strerror_r(arg1: c_int, arg2: *mut c_char, arg3: size_t) -> c_int; 741 pub fn strxfrm(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t; 742 pub fn memccpy( 743 arg1: *mut c_void, 744 arg2: *const c_void, 745 arg3: c_int, 746 arg4: size_t, 747 ) -> *mut c_void; 748 pub fn strdup(arg1: *const c_char) -> *mut c_char; 749 pub fn stpcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char; 750 pub fn stpncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char; 751 pub fn strnlen(arg1: *const c_char, arg2: size_t) -> size_t; 752 pub fn memmem( 753 arg1: *const c_void, 754 arg2: size_t, 755 arg3: *const c_void, 756 arg4: size_t, 757 ) -> *mut c_void; 758 pub fn strcasestr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char; 759 pub fn strlcat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t; 760 pub fn strlcpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t; 761 pub fn strsep(arg1: *mut *mut c_char, arg2: *const c_char) -> *mut c_char; 762 pub fn stresep(arg1: *mut *mut c_char, arg2: *const c_char, arg3: c_int) -> *mut c_char; 763 pub fn strndup(arg1: *const c_char, arg2: size_t) -> *mut c_char; 764 pub fn memrchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void; 765 pub fn explicit_memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void; 766 pub fn consttime_memequal(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int; 767 pub fn strcoll_l(arg1: *const c_char, arg2: *const c_char, arg3: locale_t) -> c_int; 768 pub fn strxfrm_l( 769 arg1: *mut c_char, 770 arg2: *const c_char, 771 arg3: size_t, 772 arg4: locale_t, 773 ) -> size_t; 774 pub fn strerror_l(arg1: c_int, arg2: locale_t) -> *mut c_char; 775 776 // strings.h 777 pub fn bcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int; 778 pub fn bcopy(arg1: *const c_void, arg2: *mut c_void, arg3: size_t); 779 pub fn bzero(arg1: *mut c_void, arg2: size_t); 780 pub fn ffs(arg1: c_int) -> c_int; 781 pub fn popcount(arg1: c_uint) -> c_uint; 782 pub fn popcountl(arg1: c_ulong) -> c_uint; 783 pub fn popcountll(arg1: c_ulonglong) -> c_uint; 784 pub fn popcount32(arg1: u32) -> c_uint; 785 pub fn popcount64(arg1: u64) -> c_uint; 786 pub fn rindex(arg1: *const c_char, arg2: c_int) -> *mut c_char; 787 pub fn strcasecmp(arg1: *const c_char, arg2: *const c_char) -> c_int; 788 pub fn strncasecmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int; 789 790 // signal.h 791 pub fn signal(arg1: c_int, arg2: sighandler_t) -> sighandler_t; 792 pub fn raise(arg1: c_int) -> c_int; 793 794 // time.h 795 pub fn asctime(arg1: *const tm) -> *mut c_char; 796 pub fn clock() -> clock_t; 797 pub fn ctime(arg1: *const time_t) -> *mut c_char; 798 pub fn difftime(arg1: time_t, arg2: time_t) -> f64; 799 pub fn gmtime(arg1: *const time_t) -> *mut tm; 800 pub fn localtime(arg1: *const time_t) -> *mut tm; 801 pub fn time(arg1: *mut time_t) -> time_t; 802 pub fn mktime(arg1: *mut tm) -> time_t; 803 pub fn strftime( 804 arg1: *mut c_char, 805 arg2: size_t, 806 arg3: *const c_char, 807 arg4: *const tm, 808 ) -> size_t; 809 pub fn utime(arg1: *const c_char, arg2: *mut time_t) -> c_int; 810 pub fn asctime_r(arg1: *const tm, arg2: *mut c_char) -> *mut c_char; 811 pub fn ctime_r(arg1: *const time_t, arg2: *mut c_char) -> *mut c_char; 812 pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; 813 pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; 814 815 // sys/stat.h 816 pub fn stat(arg1: *const c_char, arg2: *mut stat) -> c_int; 817 pub fn lstat(arg1: *const c_char, arg2: *mut stat) -> c_int; 818 pub fn fstat(arg1: c_int, arg2: *mut stat) -> c_int; 819 pub fn chmod(arg1: *const c_char, arg2: __mode_t) -> c_int; 820 pub fn mkdir(arg1: *const c_char, arg2: __mode_t) -> c_int; 821 822 // fcntl.h 823 pub fn open(arg1: *const c_char, arg2: c_int, ...) -> c_int; 824 pub fn creat(arg1: *const c_char, arg2: c_int) -> c_int; 825 pub fn close(arg1: c_int) -> c_int; 826 pub fn read(arg1: c_int, arg2: *mut c_void, arg3: c_int) -> c_int; 827 pub fn write(arg1: c_int, arg2: *const c_void, arg3: c_int) -> c_int; 828 pub fn unlink(arg1: *const c_char) -> c_int; 829 pub fn tell(arg1: c_int) -> c_long; 830 pub fn dup(arg1: c_int) -> c_int; 831 pub fn dup2(arg1: c_int, arg2: c_int) -> c_int; 832 pub fn access(arg1: *const c_char, arg2: c_int) -> c_int; 833 pub fn rmdir(arg1: *const c_char) -> c_int; 834 pub fn chdir(arg1: *const c_char) -> c_int; 835 pub fn _exit(arg1: c_int); 836 pub fn getwd(arg1: *mut c_char) -> *mut c_char; 837 pub fn getcwd(arg1: *mut c_char, arg2: size_t) -> *mut c_char; 838 pub static mut optarg: *mut c_char; 839 pub static mut opterr: c_int; 840 pub static mut optind: c_int; 841 pub static mut optopt: c_int; 842 pub static mut optreset: c_int; 843 pub fn getopt(arg1: c_int, arg2: *mut *mut c_char, arg3: *const c_char) -> c_int; 844 pub static mut suboptarg: *mut c_char; 845 pub fn getsubopt( 846 arg1: *mut *mut c_char, 847 arg2: *const *mut c_char, 848 arg3: *mut *mut c_char, 849 ) -> c_int; 850 pub fn fcntl(arg1: c_int, arg2: c_int, ...) -> c_int; 851 pub fn getpid() -> pid_t; 852 pub fn sleep(arg1: c_uint) -> c_uint; 853 pub fn usleep(arg1: useconds_t) -> c_int; 854 855 // locale.h 856 pub fn localeconv() -> *mut lconv; 857 pub fn setlocale(arg1: c_int, arg2: *const c_char) -> *mut c_char; 858 pub fn duplocale(arg1: locale_t) -> locale_t; 859 pub fn freelocale(arg1: locale_t); 860 pub fn localeconv_l(arg1: locale_t) -> *mut lconv; 861 pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t; 862 863 // langinfo.h 864 pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; 865 pub fn nl_langinfo_l(item: ::nl_item, locale: locale_t) -> *mut ::c_char; 866 867 // malloc.h 868 pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; 869 870 // sys/types.h 871 pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t; 872} 873 874cfg_if! { 875 if #[cfg(libc_core_cvoid)] { 876 pub use ::ffi::c_void; 877 } else { 878 // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help 879 // enable more optimization opportunities around it recognizing things 880 // like malloc/free. 881 #[repr(u8)] 882 #[allow(missing_copy_implementations)] 883 #[allow(missing_debug_implementations)] 884 pub enum c_void { 885 // Two dummy variants so the #[repr] attribute can be used. 886 #[doc(hidden)] 887 __variant1, 888 #[doc(hidden)] 889 __variant2, 890 } 891 } 892} 893 894cfg_if! { 895 if #[cfg(target_arch = "aarch64")] { 896 mod aarch64; 897 pub use self::aarch64::*; 898 } else if #[cfg(any(target_arch = "arm"))] { 899 mod arm; 900 pub use self::arm::*; 901 } else { 902 // Unknown target_arch 903 } 904} 905