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