//! Interface to the [SOLID] C library
//!
//! [SOLID]: https://solid.kmckk.com/

pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64;
pub type uintmax_t = u64;

pub type uintptr_t = usize;
pub type intptr_t = isize;
pub type ptrdiff_t = isize;
pub type size_t = ::uintptr_t;
pub type ssize_t = ::intptr_t;

pub type clock_t = c_uint;
pub type time_t = i64;
pub type clockid_t = c_int;
pub type timer_t = c_int;
pub type suseconds_t = c_int;
pub type useconds_t = c_uint;

pub type sighandler_t = size_t;

// sys/ansi.h
pub type __caddr_t = *mut c_char;
pub type __gid_t = u32;
pub type __in_addr_t = u32;
pub type __in_port_t = u16;
pub type __mode_t = u32;
pub type __off_t = i64;
pub type __pid_t = i32;
pub type __sa_family_t = u8;
pub type __socklen_t = c_uint;
pub type __uid_t = u32;
pub type __fsblkcnt_t = u64;
pub type __fsfilcnt_t = u64;

// locale.h
pub type locale_t = usize;

// nl_types.h
pub type nl_item = c_long;

// sys/types.h
pub type __va_list = *mut c_char;
pub type u_int8_t = u8;
pub type u_int16_t = u16;
pub type u_int32_t = u32;
pub type u_int64_t = u64;
pub type u_char = c_uchar;
pub type u_short = c_ushort;
pub type u_int = c_uint;
pub type u_long = c_ulong;
pub type unchar = c_uchar;
pub type ushort = c_ushort;
pub type uint = c_uint;
pub type ulong = c_ulong;
pub type u_quad_t = u64;
pub type quad_t = i64;
pub type qaddr_t = *mut quad_t;
pub type longlong_t = i64;
pub type u_longlong_t = u64;
pub type blkcnt_t = i64;
pub type blksize_t = i32;
pub type fsblkcnt_t = __fsblkcnt_t;
pub type fsfilcnt_t = __fsfilcnt_t;
pub type caddr_t = __caddr_t;
pub type daddr_t = i64;
pub type dev_t = u64;
pub type fixpt_t = u32;
pub type gid_t = __gid_t;
pub type idtype_t = c_int;
pub type id_t = u32;
pub type ino_t = u64;
pub type key_t = c_long;
pub type mode_t = __mode_t;
pub type nlink_t = u32;
pub type off_t = __off_t;
pub type pid_t = __pid_t;
pub type lwpid_t = i32;
pub type rlim_t = u64;
pub type segsz_t = i32;
pub type swblk_t = i32;
pub type mqd_t = c_int;
pub type cpuid_t = c_ulong;
pub type psetid_t = c_int;

s! {
    // stat.h
    pub struct stat {
        pub st_dev: dev_t,
        pub st_ino: ino_t,
        pub st_mode: c_short,
        pub st_nlink: c_short,
        pub st_uid: c_short,
        pub st_gid: c_short,
        pub st_rdev: dev_t,
        pub st_size: off_t,
        pub st_atime: time_t,
        pub st_mtime: time_t,
        pub st_ctime: time_t,
        pub st_blksize: blksize_t,
    }

    // time.h
    pub struct tm {
        pub tm_sec: c_int,
        pub tm_min: c_int,
        pub tm_hour: c_int,
        pub tm_mday: c_int,
        pub tm_mon: c_int,
        pub tm_year: c_int,
        pub tm_wday: c_int,
        pub tm_yday: c_int,
        pub tm_isdst: c_int,
        pub tm_gmtoff: c_long,
        pub tm_zone: *mut c_char,
    }

    // stdlib.h
    pub struct qdiv_t {
        pub quot: quad_t,
        pub rem: quad_t,
    }
    pub struct lldiv_t {
        pub quot: c_longlong,
        pub rem: c_longlong,
    }
    pub struct div_t {
        pub quot: c_int,
        pub rem: c_int,
    }
    pub struct ldiv_t {
        pub quot: c_long,
        pub rem: c_long,
    }

    // locale.h
    pub struct lconv {
        pub decimal_point: *mut c_char,
        pub thousands_sep: *mut c_char,
        pub grouping: *mut c_char,
        pub int_curr_symbol: *mut c_char,
        pub currency_symbol: *mut c_char,
        pub mon_decimal_point: *mut c_char,
        pub mon_thousands_sep: *mut c_char,
        pub mon_grouping: *mut c_char,
        pub positive_sign: *mut c_char,
        pub negative_sign: *mut c_char,
        pub int_frac_digits: c_char,
        pub frac_digits: c_char,
        pub p_cs_precedes: c_char,
        pub p_sep_by_space: c_char,
        pub n_cs_precedes: c_char,
        pub n_sep_by_space: c_char,
        pub p_sign_posn: c_char,
        pub n_sign_posn: c_char,
        pub int_p_cs_precedes: c_char,
        pub int_n_cs_precedes: c_char,
        pub int_p_sep_by_space: c_char,
        pub int_n_sep_by_space: c_char,
        pub int_p_sign_posn: c_char,
        pub int_n_sign_posn: c_char,
    }

    pub struct iovec {
        pub iov_base: *mut c_void,
        pub iov_len: size_t,
    }

    pub struct timeval {
        pub tv_sec: c_long,
        pub tv_usec: c_long,
    }
}

pub const INT_MIN: c_int = -2147483648;
pub const INT_MAX: c_int = 2147483647;

pub const EXIT_FAILURE: c_int = 1;
pub const EXIT_SUCCESS: c_int = 0;
pub const RAND_MAX: c_int = 0x7fffffff;
pub const EOF: c_int = -1;
pub const SEEK_SET: c_int = 0;
pub const SEEK_CUR: c_int = 1;
pub const SEEK_END: c_int = 2;
pub const _IOFBF: c_int = 0;
pub const _IONBF: c_int = 2;
pub const _IOLBF: c_int = 1;
pub const BUFSIZ: c_uint = 1024;
pub const FOPEN_MAX: c_uint = 20;
pub const FILENAME_MAX: c_uint = 1024;

pub const O_RDONLY: c_int = 1;
pub const O_WRONLY: c_int = 2;
pub const O_RDWR: c_int = 4;
pub const O_APPEND: c_int = 8;
pub const O_CREAT: c_int = 0x10;
pub const O_EXCL: c_int = 0x400;
pub const O_TEXT: c_int = 0x100;
pub const O_BINARY: c_int = 0x200;
pub const O_TRUNC: c_int = 0x20;
pub const S_IEXEC: c_short = 0x0040;
pub const S_IWRITE: c_short = 0x0080;
pub const S_IREAD: c_short = 0x0100;
pub const S_IFCHR: c_short = 0x2000;
pub const S_IFDIR: c_short = 0x4000;
pub const S_IFMT: c_short = 0o160000;
pub const S_IFIFO: c_short = 0o0010000;
pub const S_IFBLK: c_short = 0o0060000;
pub const S_IFREG: c_short = 0o0100000;

pub const LC_ALL: c_int = 0;
pub const LC_COLLATE: c_int = 1;
pub const LC_CTYPE: c_int = 2;
pub const LC_MONETARY: c_int = 3;
pub const LC_NUMERIC: c_int = 4;
pub const LC_TIME: c_int = 5;
pub const LC_MESSAGES: c_int = 6;
pub const _LC_LAST: c_int = 7;

pub const EPERM: c_int = 1;
pub const ENOENT: c_int = 2;
pub const ESRCH: c_int = 3;
pub const EINTR: c_int = 4;
pub const EIO: c_int = 5;
pub const ENXIO: c_int = 6;
pub const E2BIG: c_int = 7;
pub const ENOEXEC: c_int = 8;
pub const EBADF: c_int = 9;
pub const ECHILD: c_int = 10;
pub const EAGAIN: c_int = 11;
pub const ENOMEM: c_int = 12;
pub const EACCES: c_int = 13;
pub const EFAULT: c_int = 14;
pub const ENOTBLK: c_int = 15;
pub const EBUSY: c_int = 16;
pub const EEXIST: c_int = 17;
pub const EXDEV: c_int = 18;
pub const ENODEV: c_int = 19;
pub const ENOTDIR: c_int = 20;
pub const EISDIR: c_int = 21;
pub const EINVAL: c_int = 22;
pub const ENFILE: c_int = 23;
pub const EMFILE: c_int = 24;
pub const ENOTTY: c_int = 25;
pub const ETXTBSY: c_int = 26;
pub const EFBIG: c_int = 27;
pub const ENOSPC: c_int = 28;
pub const ESPIPE: c_int = 29;
pub const EROFS: c_int = 30;
pub const EMLINK: c_int = 31;
pub const EPIPE: c_int = 32;
pub const EDOM: c_int = 33;
pub const ERANGE: c_int = 34;

pub const EDEADLK: c_int = 35;
pub const ENAMETOOLONG: c_int = 36;
pub const ENOLCK: c_int = 37;
pub const ENOSYS: c_int = 38;
pub const ENOTEMPTY: c_int = 39;
pub const ELOOP: c_int = 40;
pub const EWOULDBLOCK: c_int = EAGAIN;
pub const ENOMSG: c_int = 42;
pub const EIDRM: c_int = 43;
pub const ECHRNG: c_int = 44;
pub const EL2NSYNC: c_int = 45;
pub const EL3HLT: c_int = 46;
pub const EL3RST: c_int = 47;
pub const ELNRNG: c_int = 48;
pub const EUNATCH: c_int = 49;
pub const ENOCSI: c_int = 50;
pub const EL2HLT: c_int = 51;
pub const EBADE: c_int = 52;
pub const EBADR: c_int = 53;
pub const EXFULL: c_int = 54;
pub const ENOANO: c_int = 55;
pub const EBADRQC: c_int = 56;
pub const EBADSLT: c_int = 57;

pub const EDEADLOCK: c_int = EDEADLK;

pub const EBFONT: c_int = 59;
pub const ENOSTR: c_int = 60;
pub const ENODATA: c_int = 61;
pub const ETIME: c_int = 62;
pub const ENOSR: c_int = 63;
pub const ENONET: c_int = 64;
pub const ENOPKG: c_int = 65;
pub const EREMOTE: c_int = 66;
pub const ENOLINK: c_int = 67;
pub const EADV: c_int = 68;
pub const ESRMNT: c_int = 69;
pub const ECOMM: c_int = 70;
pub const EPROTO: c_int = 71;
pub const EMULTIHOP: c_int = 72;
pub const EDOTDOT: c_int = 73;
pub const EBADMSG: c_int = 74;
pub const EOVERFLOW: c_int = 75;
pub const ENOTUNIQ: c_int = 76;
pub const EBADFD: c_int = 77;
pub const EREMCHG: c_int = 78;
pub const ELIBACC: c_int = 79;
pub const ELIBBAD: c_int = 80;
pub const ELIBSCN: c_int = 81;
pub const ELIBMAX: c_int = 82;
pub const ELIBEXEC: c_int = 83;
pub const EILSEQ: c_int = 84;
pub const ERESTART: c_int = 85;
pub const ESTRPIPE: c_int = 86;
pub const EUSERS: c_int = 87;
pub const ENOTSOCK: c_int = 88;
pub const EDESTADDRREQ: c_int = 89;
pub const EMSGSIZE: c_int = 90;
pub const EPROTOTYPE: c_int = 91;
pub const ENOPROTOOPT: c_int = 92;
pub const EPROTONOSUPPORT: c_int = 93;
pub const ESOCKTNOSUPPORT: c_int = 94;
pub const EOPNOTSUPP: c_int = 95;
pub const EPFNOSUPPORT: c_int = 96;
pub const EAFNOSUPPORT: c_int = 97;
pub const EADDRINUSE: c_int = 98;
pub const EADDRNOTAVAIL: c_int = 99;
pub const ENETDOWN: c_int = 100;
pub const ENETUNREACH: c_int = 101;
pub const ENETRESET: c_int = 102;
pub const ECONNABORTED: c_int = 103;
pub const ECONNRESET: c_int = 104;
pub const ENOBUFS: c_int = 105;
pub const EISCONN: c_int = 106;
pub const ENOTCONN: c_int = 107;
pub const ESHUTDOWN: c_int = 108;
pub const ETOOMANYREFS: c_int = 109;
pub const ETIMEDOUT: c_int = 110;
pub const ECONNREFUSED: c_int = 111;
pub const EHOSTDOWN: c_int = 112;
pub const EHOSTUNREACH: c_int = 113;
pub const EALREADY: c_int = 114;
pub const EINPROGRESS: c_int = 115;
pub const ESTALE: c_int = 116;
pub const EUCLEAN: c_int = 117;
pub const ENOTNAM: c_int = 118;
pub const ENAVAIL: c_int = 119;
pub const EISNAM: c_int = 120;
pub const EREMOTEIO: c_int = 121;
pub const EDQUOT: c_int = 122;

pub const ENOMEDIUM: c_int = 123;
pub const EMEDIUMTYPE: c_int = 124;
pub const ECANCELED: c_int = 125;
pub const ENOKEY: c_int = 126;
pub const EKEYEXPIRED: c_int = 127;
pub const EKEYREVOKED: c_int = 128;
pub const EKEYREJECTED: c_int = 129;

pub const EOWNERDEAD: c_int = 130;
pub const ENOTRECOVERABLE: c_int = 131;

pub const ENOTSUP: c_int = 132;
pub const EFTYPE: c_int = 133;

// signal codes
pub const SIGHUP: c_int = 1;
pub const SIGINT: c_int = 2;
pub const SIGQUIT: c_int = 3;
pub const SIGILL: c_int = 4;
pub const SIGTRAP: c_int = 5;
pub const SIGABRT: c_int = 6;
pub const SIGIOT: c_int = SIGABRT;
pub const SIGEMT: c_int = 7;
pub const SIGFPE: c_int = 8;
pub const SIGKILL: c_int = 9;
pub const SIGBUS: c_int = 10;
pub const SIGSEGV: c_int = 11;
pub const SIGSYS: c_int = 12;
pub const SIGPIPE: c_int = 13;
pub const SIGALRM: c_int = 14;
pub const SIGTERM: c_int = 15;
pub const SIGURG: c_int = 16;
pub const SIGSTOP: c_int = 17;
pub const SIGTSTP: c_int = 18;
pub const SIGCONT: c_int = 19;
pub const SIGCHLD: c_int = 20;
pub const SIGTTIN: c_int = 21;
pub const SIGTTOU: c_int = 22;
pub const SIGIO: c_int = 23;
pub const SIGXCPU: c_int = 24;
pub const SIGXFSZ: c_int = 25;
pub const SIGVTALRM: c_int = 26;
pub const SIGPROF: c_int = 27;
pub const SIGWINCH: c_int = 28;
pub const SIGINFO: c_int = 29;
pub const SIGUSR1: c_int = 30;
pub const SIGUSR2: c_int = 31;
pub const SIGPWR: c_int = 32;

#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum FILE {}
impl ::Copy for FILE {}
impl ::Clone for FILE {
    fn clone(&self) -> FILE {
        *self
    }
}
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos_t {}
impl ::Copy for fpos_t {}
impl ::Clone for fpos_t {
    fn clone(&self) -> fpos_t {
        *self
    }
}

extern "C" {
    // ctype.h
    pub fn isalnum(c: c_int) -> c_int;
    pub fn isalpha(c: c_int) -> c_int;
    pub fn iscntrl(c: c_int) -> c_int;
    pub fn isdigit(c: c_int) -> c_int;
    pub fn isgraph(c: c_int) -> c_int;
    pub fn islower(c: c_int) -> c_int;
    pub fn isprint(c: c_int) -> c_int;
    pub fn ispunct(c: c_int) -> c_int;
    pub fn isspace(c: c_int) -> c_int;
    pub fn isupper(c: c_int) -> c_int;
    pub fn isxdigit(c: c_int) -> c_int;
    pub fn isblank(c: c_int) -> c_int;
    pub fn tolower(c: c_int) -> c_int;
    pub fn toupper(c: c_int) -> c_int;

    // stdio.h
    pub fn __get_stdio_file(fileno: c_int) -> *mut FILE;
    pub fn clearerr(arg1: *mut FILE);
    pub fn fclose(arg1: *mut FILE) -> c_int;
    pub fn feof(arg1: *mut FILE) -> c_int;
    pub fn ferror(arg1: *mut FILE) -> c_int;
    pub fn fflush(arg1: *mut FILE) -> c_int;
    pub fn fgetc(arg1: *mut FILE) -> c_int;
    pub fn fgets(arg1: *mut c_char, arg2: c_int, arg3: *mut FILE) -> *mut c_char;
    pub fn fopen(arg1: *const c_char, arg2: *const c_char) -> *mut FILE;
    pub fn fprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;
    pub fn fputc(arg1: c_int, arg2: *mut FILE) -> c_int;
    pub fn fputs(arg1: *const c_char, arg2: *mut FILE) -> c_int;
    pub fn fread(arg1: *mut c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t;
    pub fn freopen(arg1: *const c_char, arg2: *const c_char, arg3: *mut FILE) -> *mut FILE;
    pub fn fscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;
    pub fn fseek(arg1: *mut FILE, arg2: c_long, arg3: c_int) -> c_int;
    pub fn ftell(arg1: *mut FILE) -> c_long;
    pub fn fwrite(arg1: *const c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t;
    pub fn getc(arg1: *mut FILE) -> c_int;
    pub fn getchar() -> c_int;
    pub fn perror(arg1: *const c_char);
    pub fn printf(arg1: *const c_char, ...) -> c_int;
    pub fn putc(arg1: c_int, arg2: *mut FILE) -> c_int;
    pub fn putchar(arg1: c_int) -> c_int;
    pub fn puts(arg1: *const c_char) -> c_int;
    pub fn remove(arg1: *const c_char) -> c_int;
    pub fn rewind(arg1: *mut FILE);
    pub fn scanf(arg1: *const c_char, ...) -> c_int;
    pub fn setbuf(arg1: *mut FILE, arg2: *mut c_char);
    pub fn setvbuf(arg1: *mut FILE, arg2: *mut c_char, arg3: c_int, arg4: size_t) -> c_int;
    pub fn sscanf(arg1: *const c_char, arg2: *const c_char, ...) -> c_int;
    pub fn tmpfile() -> *mut FILE;
    pub fn ungetc(arg1: c_int, arg2: *mut FILE) -> c_int;
    pub fn vfprintf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn vprintf(arg1: *const c_char, arg2: __va_list) -> c_int;
    pub fn gets(arg1: *mut c_char) -> *mut c_char;
    pub fn sprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;
    pub fn tmpnam(arg1: *const c_char) -> *mut c_char;
    pub fn vsprintf(arg1: *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn rename(arg1: *const c_char, arg2: *const c_char) -> c_int;
    pub fn asiprintf(arg1: *mut *mut c_char, arg2: *const c_char, ...) -> c_int;
    pub fn fiprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;
    pub fn fiscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;
    pub fn iprintf(arg1: *const c_char, ...) -> c_int;
    pub fn iscanf(arg1: *const c_char, ...) -> c_int;
    pub fn siprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;
    pub fn siscanf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;
    pub fn sniprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int;
    pub fn vasiprintf(arg1: *mut *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn vfiprintf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn vfiscanf(arg1: *mut FILE, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn viprintf(arg1: *const c_char, arg2: __va_list) -> c_int;
    pub fn viscanf(arg1: *const c_char, arg2: __va_list) -> c_int;
    pub fn vsiprintf(arg1: *mut c_char, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn vsiscanf(arg1: *const c_char, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn vsniprintf(
        arg1: *mut c_char,
        arg2: size_t,
        arg3: *const c_char,
        arg4: __va_list,
    ) -> c_int;
    pub fn vdiprintf(arg1: c_int, arg2: *const c_char, arg3: __va_list) -> c_int;
    pub fn diprintf(arg1: c_int, arg2: *const c_char, ...) -> c_int;
    pub fn fgetpos(arg1: *mut FILE, arg2: *mut fpos_t) -> c_int;
    pub fn fsetpos(arg1: *mut FILE, arg2: *const fpos_t) -> c_int;
    pub fn fdopen(arg1: c_int, arg2: *const c_char) -> *mut FILE;
    pub fn fileno(arg1: *mut FILE) -> c_int;
    pub fn flockfile(arg1: *mut FILE);
    pub fn ftrylockfile(arg1: *mut FILE) -> c_int;
    pub fn funlockfile(arg1: *mut FILE);
    pub fn getc_unlocked(arg1: *mut FILE) -> c_int;
    pub fn getchar_unlocked() -> c_int;
    pub fn putc_unlocked(arg1: c_int, arg2: *mut FILE) -> c_int;
    pub fn putchar_unlocked(arg1: c_int) -> c_int;
    pub fn snprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int;
    pub fn vsnprintf(
        arg1: *mut c_char,
        arg2: size_t,
        arg3: *const c_char,
        arg4: __va_list,
    ) -> c_int;
    pub fn getw(arg1: *mut FILE) -> c_int;
    pub fn putw(arg1: c_int, arg2: *mut FILE) -> c_int;
    pub fn tempnam(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;
    pub fn fseeko(stream: *mut FILE, offset: off_t, whence: c_int) -> c_int;
    pub fn ftello(stream: *mut FILE) -> off_t;

    // stdlib.h
    pub fn atof(arg1: *const c_char) -> f64;
    pub fn strtod(arg1: *const c_char, arg2: *mut *mut c_char) -> f64;
    pub fn drand48() -> f64;
    pub fn erand48(arg1: *mut c_ushort) -> f64;
    pub fn strtof(arg1: *const c_char, arg2: *mut *mut c_char) -> f32;
    pub fn strtold(arg1: *const c_char, arg2: *mut *mut c_char) -> f64;
    pub fn strtod_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64;
    pub fn strtof_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f32;
    pub fn strtold_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64;
    pub fn _Exit(arg1: c_int) -> !;
    pub fn abort() -> !;
    pub fn abs(arg1: c_int) -> c_int;
    pub fn atexit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int;
    pub fn atoi(arg1: *const c_char) -> c_int;
    pub fn atol(arg1: *const c_char) -> c_long;
    pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char;
    pub fn ltoa(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> *mut c_char;
    pub fn ultoa(arg1: c_ulong, arg2: *mut c_char, arg3: c_int) -> *mut c_char;
    pub fn bsearch(
        arg1: *const c_void,
        arg2: *const c_void,
        arg3: size_t,
        arg4: size_t,
        arg5: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
    ) -> *mut c_void;
    pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void;
    pub fn div(arg1: c_int, arg2: c_int) -> div_t;
    pub fn exit(arg1: c_int) -> !;
    pub fn free(arg1: *mut c_void);
    pub fn getenv(arg1: *const c_char) -> *mut c_char;
    pub fn labs(arg1: c_long) -> c_long;
    pub fn ldiv(arg1: c_long, arg2: c_long) -> ldiv_t;
    pub fn malloc(arg1: size_t) -> *mut c_void;
    pub fn qsort(
        arg1: *mut c_void,
        arg2: size_t,
        arg3: size_t,
        arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
    );
    pub fn rand() -> c_int;
    pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void;
    pub fn srand(arg1: c_uint);
    pub fn strtol(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_long;
    pub fn strtoul(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulong;
    pub fn mblen(arg1: *const c_char, arg2: size_t) -> c_int;
    pub fn mbstowcs(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> size_t;
    pub fn wctomb(arg1: *mut c_char, arg2: wchar_t) -> c_int;
    pub fn mbtowc(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> c_int;
    pub fn wcstombs(arg1: *mut c_char, arg2: *const wchar_t, arg3: size_t) -> size_t;
    pub fn rand_r(arg1: *mut c_uint) -> c_int;
    pub fn jrand48(arg1: *mut c_ushort) -> c_long;
    pub fn lcong48(arg1: *mut c_ushort);
    pub fn lrand48() -> c_long;
    pub fn mrand48() -> c_long;
    pub fn nrand48(arg1: *mut c_ushort) -> c_long;
    pub fn seed48(arg1: *mut c_ushort) -> *mut c_ushort;
    pub fn srand48(arg1: c_long);
    pub fn putenv(arg1: *mut c_char) -> c_int;
    pub fn a64l(arg1: *const c_char) -> c_long;
    pub fn l64a(arg1: c_long) -> *mut c_char;
    pub fn random() -> c_long;
    pub fn setstate(arg1: *mut c_char) -> *mut c_char;
    pub fn initstate(arg1: c_uint, arg2: *mut c_char, arg3: size_t) -> *mut c_char;
    pub fn srandom(arg1: c_uint);
    pub fn mkostemp(arg1: *mut c_char, arg2: c_int) -> c_int;
    pub fn mkostemps(arg1: *mut c_char, arg2: c_int, arg3: c_int) -> c_int;
    pub fn mkdtemp(arg1: *mut c_char) -> *mut c_char;
    pub fn mkstemp(arg1: *mut c_char) -> c_int;
    pub fn mktemp(arg1: *mut c_char) -> *mut c_char;
    pub fn atoll(arg1: *const c_char) -> c_longlong;
    pub fn llabs(arg1: c_longlong) -> c_longlong;
    pub fn lldiv(arg1: c_longlong, arg2: c_longlong) -> lldiv_t;
    pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong;
    pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong;
    pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void;
    pub fn at_quick_exit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int;
    pub fn quick_exit(arg1: c_int);
    pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int;
    pub fn unsetenv(arg1: *const c_char) -> c_int;
    pub fn humanize_number(
        arg1: *mut c_char,
        arg2: size_t,
        arg3: i64,
        arg4: *const c_char,
        arg5: c_int,
        arg6: c_int,
    ) -> c_int;
    pub fn dehumanize_number(arg1: *const c_char, arg2: *mut i64) -> c_int;
    pub fn getenv_r(arg1: *const c_char, arg2: *mut c_char, arg3: size_t) -> c_int;
    pub fn heapsort(
        arg1: *mut c_void,
        arg2: size_t,
        arg3: size_t,
        arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
    ) -> c_int;
    pub fn mergesort(
        arg1: *mut c_void,
        arg2: size_t,
        arg3: size_t,
        arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
    ) -> c_int;
    pub fn radixsort(
        arg1: *mut *const c_uchar,
        arg2: c_int,
        arg3: *const c_uchar,
        arg4: c_uint,
    ) -> c_int;
    pub fn sradixsort(
        arg1: *mut *const c_uchar,
        arg2: c_int,
        arg3: *const c_uchar,
        arg4: c_uint,
    ) -> c_int;
    pub fn getprogname() -> *const c_char;
    pub fn setprogname(arg1: *const c_char);
    pub fn qabs(arg1: quad_t) -> quad_t;
    pub fn strtoq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> quad_t;
    pub fn strtouq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> u_quad_t;
    pub fn strsuftoll(
        arg1: *const c_char,
        arg2: *const c_char,
        arg3: c_longlong,
        arg4: c_longlong,
    ) -> c_longlong;
    pub fn strsuftollx(
        arg1: *const c_char,
        arg2: *const c_char,
        arg3: c_longlong,
        arg4: c_longlong,
        arg5: *mut c_char,
        arg6: size_t,
    ) -> c_longlong;
    pub fn l64a_r(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> c_int;
    pub fn qdiv(arg1: quad_t, arg2: quad_t) -> qdiv_t;
    pub fn strtol_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> c_long;
    pub fn strtoul_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> c_ulong;
    pub fn strtoll_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> c_longlong;
    pub fn strtoull_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> c_ulonglong;
    pub fn strtoq_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> quad_t;
    pub fn strtouq_l(
        arg1: *const c_char,
        arg2: *mut *mut c_char,
        arg3: c_int,
        arg4: locale_t,
    ) -> u_quad_t;
    pub fn _mb_cur_max_l(arg1: locale_t) -> size_t;
    pub fn mblen_l(arg1: *const c_char, arg2: size_t, arg3: locale_t) -> c_int;
    pub fn mbstowcs_l(
        arg1: *mut wchar_t,
        arg2: *const c_char,
        arg3: size_t,
        arg4: locale_t,
    ) -> size_t;
    pub fn wctomb_l(arg1: *mut c_char, arg2: wchar_t, arg3: locale_t) -> c_int;
    pub fn mbtowc_l(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t, arg4: locale_t)
        -> c_int;
    pub fn wcstombs_l(
        arg1: *mut c_char,
        arg2: *const wchar_t,
        arg3: size_t,
        arg4: locale_t,
    ) -> size_t;

    // string.h
    pub fn memchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void;
    pub fn memcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;
    pub fn memcpy(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void;
    pub fn memmove(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void;
    pub fn memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void;
    pub fn strcat(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strchr(arg1: *const c_char, arg2: c_int) -> *mut c_char;
    pub fn strcmp(arg1: *const c_char, arg2: *const c_char) -> c_int;
    pub fn strcoll(arg1: *const c_char, arg2: *const c_char) -> c_int;
    pub fn strcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strcspn(arg1: *const c_char, arg2: *const c_char) -> size_t;
    pub fn strerror(arg1: c_int) -> *mut c_char;
    pub fn strlen(arg1: *const c_char) -> size_t;
    pub fn strncat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;
    pub fn strncmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int;
    pub fn strncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;
    pub fn strpbrk(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strrchr(arg1: *const c_char, arg2: c_int) -> *mut c_char;
    pub fn strspn(arg1: *const c_char, arg2: *const c_char) -> size_t;
    pub fn strstr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strtok(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strtok_r(arg1: *mut c_char, arg2: *const c_char, arg3: *mut *mut c_char) -> *mut c_char;
    pub fn strerror_r(arg1: c_int, arg2: *mut c_char, arg3: size_t) -> c_int;
    pub fn strxfrm(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;
    pub fn memccpy(
        arg1: *mut c_void,
        arg2: *const c_void,
        arg3: c_int,
        arg4: size_t,
    ) -> *mut c_void;
    pub fn strdup(arg1: *const c_char) -> *mut c_char;
    pub fn stpcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;
    pub fn stpncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;
    pub fn strnlen(arg1: *const c_char, arg2: size_t) -> size_t;
    pub fn memmem(
        arg1: *const c_void,
        arg2: size_t,
        arg3: *const c_void,
        arg4: size_t,
    ) -> *mut c_void;
    pub fn strcasestr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;
    pub fn strlcat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;
    pub fn strlcpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;
    pub fn strsep(arg1: *mut *mut c_char, arg2: *const c_char) -> *mut c_char;
    pub fn stresep(arg1: *mut *mut c_char, arg2: *const c_char, arg3: c_int) -> *mut c_char;
    pub fn strndup(arg1: *const c_char, arg2: size_t) -> *mut c_char;
    pub fn memrchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void;
    pub fn explicit_memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void;
    pub fn consttime_memequal(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;
    pub fn strcoll_l(arg1: *const c_char, arg2: *const c_char, arg3: locale_t) -> c_int;
    pub fn strxfrm_l(
        arg1: *mut c_char,
        arg2: *const c_char,
        arg3: size_t,
        arg4: locale_t,
    ) -> size_t;
    pub fn strerror_l(arg1: c_int, arg2: locale_t) -> *mut c_char;

    // strings.h
    pub fn bcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;
    pub fn bcopy(arg1: *const c_void, arg2: *mut c_void, arg3: size_t);
    pub fn bzero(arg1: *mut c_void, arg2: size_t);
    pub fn ffs(arg1: c_int) -> c_int;
    pub fn popcount(arg1: c_uint) -> c_uint;
    pub fn popcountl(arg1: c_ulong) -> c_uint;
    pub fn popcountll(arg1: c_ulonglong) -> c_uint;
    pub fn popcount32(arg1: u32) -> c_uint;
    pub fn popcount64(arg1: u64) -> c_uint;
    pub fn rindex(arg1: *const c_char, arg2: c_int) -> *mut c_char;
    pub fn strcasecmp(arg1: *const c_char, arg2: *const c_char) -> c_int;
    pub fn strncasecmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int;

    // signal.h
    pub fn signal(arg1: c_int, arg2: sighandler_t) -> sighandler_t;
    pub fn raise(arg1: c_int) -> c_int;

    // time.h
    pub fn asctime(arg1: *const tm) -> *mut c_char;
    pub fn clock() -> clock_t;
    pub fn ctime(arg1: *const time_t) -> *mut c_char;
    pub fn difftime(arg1: time_t, arg2: time_t) -> f64;
    pub fn gmtime(arg1: *const time_t) -> *mut tm;
    pub fn localtime(arg1: *const time_t) -> *mut tm;
    pub fn time(arg1: *mut time_t) -> time_t;
    pub fn mktime(arg1: *mut tm) -> time_t;
    pub fn strftime(
        arg1: *mut c_char,
        arg2: size_t,
        arg3: *const c_char,
        arg4: *const tm,
    ) -> size_t;
    pub fn utime(arg1: *const c_char, arg2: *mut time_t) -> c_int;
    pub fn asctime_r(arg1: *const tm, arg2: *mut c_char) -> *mut c_char;
    pub fn ctime_r(arg1: *const time_t, arg2: *mut c_char) -> *mut c_char;
    pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm;
    pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm;

    // sys/stat.h
    pub fn stat(arg1: *const c_char, arg2: *mut stat) -> c_int;
    pub fn lstat(arg1: *const c_char, arg2: *mut stat) -> c_int;
    pub fn fstat(arg1: c_int, arg2: *mut stat) -> c_int;
    pub fn chmod(arg1: *const c_char, arg2: __mode_t) -> c_int;
    pub fn mkdir(arg1: *const c_char, arg2: __mode_t) -> c_int;

    // fcntl.h
    pub fn open(arg1: *const c_char, arg2: c_int, ...) -> c_int;
    pub fn creat(arg1: *const c_char, arg2: c_int) -> c_int;
    pub fn close(arg1: c_int) -> c_int;
    pub fn read(arg1: c_int, arg2: *mut c_void, arg3: c_int) -> c_int;
    pub fn write(arg1: c_int, arg2: *const c_void, arg3: c_int) -> c_int;
    pub fn unlink(arg1: *const c_char) -> c_int;
    pub fn tell(arg1: c_int) -> c_long;
    pub fn dup(arg1: c_int) -> c_int;
    pub fn dup2(arg1: c_int, arg2: c_int) -> c_int;
    pub fn access(arg1: *const c_char, arg2: c_int) -> c_int;
    pub fn rmdir(arg1: *const c_char) -> c_int;
    pub fn chdir(arg1: *const c_char) -> c_int;
    pub fn _exit(arg1: c_int);
    pub fn getwd(arg1: *mut c_char) -> *mut c_char;
    pub fn getcwd(arg1: *mut c_char, arg2: size_t) -> *mut c_char;
    pub static mut optarg: *mut c_char;
    pub static mut opterr: c_int;
    pub static mut optind: c_int;
    pub static mut optopt: c_int;
    pub static mut optreset: c_int;
    pub fn getopt(arg1: c_int, arg2: *mut *mut c_char, arg3: *const c_char) -> c_int;
    pub static mut suboptarg: *mut c_char;
    pub fn getsubopt(
        arg1: *mut *mut c_char,
        arg2: *const *mut c_char,
        arg3: *mut *mut c_char,
    ) -> c_int;
    pub fn fcntl(arg1: c_int, arg2: c_int, ...) -> c_int;
    pub fn getpid() -> pid_t;
    pub fn sleep(arg1: c_uint) -> c_uint;
    pub fn usleep(arg1: useconds_t) -> c_int;

    // locale.h
    pub fn localeconv() -> *mut lconv;
    pub fn setlocale(arg1: c_int, arg2: *const c_char) -> *mut c_char;
    pub fn duplocale(arg1: locale_t) -> locale_t;
    pub fn freelocale(arg1: locale_t);
    pub fn localeconv_l(arg1: locale_t) -> *mut lconv;
    pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t;

    // langinfo.h
    pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
    pub fn nl_langinfo_l(item: ::nl_item, locale: locale_t) -> *mut ::c_char;

    // malloc.h
    pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;

    // sys/types.h
    pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t;
}

cfg_if! {
    if #[cfg(libc_core_cvoid)] {
        pub use ::ffi::c_void;
    } else {
        // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
        // enable more optimization opportunities around it recognizing things
        // like malloc/free.
        #[repr(u8)]
        #[allow(missing_copy_implementations)]
        #[allow(missing_debug_implementations)]
        pub enum c_void {
            // Two dummy variants so the #[repr] attribute can be used.
            #[doc(hidden)]
            __variant1,
            #[doc(hidden)]
            __variant2,
        }
    }
}

cfg_if! {
    if #[cfg(target_arch = "aarch64")] {
        mod aarch64;
        pub use self::aarch64::*;
    } else if #[cfg(any(target_arch = "arm"))] {
        mod arm;
        pub use self::arm::*;
    } else {
        // Unknown target_arch
    }
}
