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