1use crate::prelude::*;
7
8pub type intmax_t = i64;
9pub type uintmax_t = u64;
10
11pub type size_t = usize;
12pub type ptrdiff_t = isize;
13pub type intptr_t = isize;
14pub type uintptr_t = usize;
15pub type ssize_t = isize;
16
17pub type pid_t = i32;
18pub type in_addr_t = u32;
19pub type in_port_t = u16;
20pub type sighandler_t = size_t;
21pub type cc_t = c_uchar;
22
23cfg_if! {
24 if #[cfg(any(
25 target_os = "espidf",
26 target_os = "horizon",
27 target_os = "vita"
28 ))] {
29 pub type uid_t = c_ushort;
30 pub type gid_t = c_ushort;
31 } else if #[cfg(target_os = "nto")] {
32 pub type uid_t = i32;
33 pub type gid_t = i32;
34 } else {
35 pub type uid_t = u32;
36 pub type gid_t = u32;
37 }
38}
39
40extern_ty! {
41 pub enum DIR {}
42}
43
44#[cfg(not(target_os = "nuttx"))]
45pub type locale_t = *mut c_void;
46
47s! {
48 pub struct group {
49 pub gr_name: *mut c_char,
50 pub gr_passwd: *mut c_char,
51 pub gr_gid: crate::gid_t,
52 pub gr_mem: *mut *mut c_char,
53 }
54
55 pub struct utimbuf {
56 pub actime: time_t,
57 pub modtime: time_t,
58 }
59
60 #[derive(Default)]
61 pub struct timeval {
62 pub tv_sec: time_t,
63 #[cfg(not(gnu_time_bits64))]
64 pub tv_usec: crate::suseconds_t,
65 #[cfg(gnu_time_bits64)]
68 pub tv_usec: __suseconds64_t,
69 }
70
71 #[derive(Default)]
74 #[cfg(not(target_env = "gnu"))]
75 pub struct timespec {
76 pub tv_sec: time_t,
77 #[cfg(all(musl32_time64, target_endian = "big"))]
78 __pad0: Padding<u32>,
79 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
80 pub tv_nsec: i64,
81 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
82 pub tv_nsec: c_long,
83 #[cfg(all(musl32_time64, target_endian = "little"))]
84 __pad0: Padding<u32>,
85 }
86
87 pub struct rlimit {
88 pub rlim_cur: rlim_t,
89 pub rlim_max: rlim_t,
90 }
91
92 pub struct rusage {
93 pub ru_utime: timeval,
94 pub ru_stime: timeval,
95 pub ru_maxrss: c_long,
96 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
97 __pad1: Padding<u32>,
98 pub ru_ixrss: c_long,
99 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
100 __pad2: Padding<u32>,
101 pub ru_idrss: c_long,
102 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
103 __pad3: Padding<u32>,
104 pub ru_isrss: c_long,
105 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
106 __pad4: Padding<u32>,
107 pub ru_minflt: c_long,
108 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
109 __pad5: Padding<u32>,
110 pub ru_majflt: c_long,
111 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
112 __pad6: Padding<u32>,
113 pub ru_nswap: c_long,
114 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
115 __pad7: Padding<u32>,
116 pub ru_inblock: c_long,
117 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
118 __pad8: Padding<u32>,
119 pub ru_oublock: c_long,
120 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
121 __pad9: Padding<u32>,
122 pub ru_msgsnd: c_long,
123 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
124 __pad10: Padding<u32>,
125 pub ru_msgrcv: c_long,
126 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
127 __pad11: Padding<u32>,
128 pub ru_nsignals: c_long,
129 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
130 __pad12: Padding<u32>,
131 pub ru_nvcsw: c_long,
132 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
133 __pad13: Padding<u32>,
134 pub ru_nivcsw: c_long,
135 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
136 __pad14: Padding<u32>,
137
138 #[cfg(any(target_env = "musl", target_env = "ohos", target_os = "emscripten"))]
139 __reserved: Padding<[c_long; 16]>,
140 }
141
142 #[cfg(not(target_os = "nuttx"))]
143 pub struct ipv6_mreq {
144 pub ipv6mr_multiaddr: in6_addr,
145 #[cfg(target_os = "android")]
146 pub ipv6mr_interface: c_int,
147 #[cfg(not(target_os = "android"))]
148 pub ipv6mr_interface: c_uint,
149 }
150
151 #[cfg(all(not(target_os = "cygwin"), not(target_os = "horizon")))]
152 pub struct hostent {
153 pub h_name: *mut c_char,
154 pub h_aliases: *mut *mut c_char,
155 pub h_addrtype: c_int,
156 pub h_length: c_int,
157 pub h_addr_list: *mut *mut c_char,
158 }
159
160 pub struct iovec {
161 pub iov_base: *mut c_void,
162 pub iov_len: size_t,
163 }
164
165 #[cfg(not(target_os = "horizon"))]
166 pub struct pollfd {
167 pub fd: c_int,
168 pub events: c_short,
169 pub revents: c_short,
170 }
171
172 pub struct winsize {
173 pub ws_row: c_ushort,
174 pub ws_col: c_ushort,
175 pub ws_xpixel: c_ushort,
176 pub ws_ypixel: c_ushort,
177 }
178
179 #[cfg(not(target_os = "cygwin"))]
180 pub struct linger {
181 pub l_onoff: c_int,
182 pub l_linger: c_int,
183 }
184
185 pub struct sigval {
186 pub sival_ptr: *mut c_void,
188 }
189
190 pub struct itimerval {
192 pub it_interval: crate::timeval,
193 pub it_value: crate::timeval,
194 }
195
196 pub struct tms {
198 pub tms_utime: crate::clock_t,
199 pub tms_stime: crate::clock_t,
200 pub tms_cutime: crate::clock_t,
201 pub tms_cstime: crate::clock_t,
202 }
203
204 pub struct servent {
205 pub s_name: *mut c_char,
206 pub s_aliases: *mut *mut c_char,
207 #[cfg(target_os = "cygwin")]
208 pub s_port: c_short,
209 #[cfg(not(target_os = "cygwin"))]
210 pub s_port: c_int,
211 pub s_proto: *mut c_char,
212 }
213
214 pub struct protoent {
215 pub p_name: *mut c_char,
216 pub p_aliases: *mut *mut c_char,
217 #[cfg(not(target_os = "cygwin"))]
218 pub p_proto: c_int,
219 #[cfg(target_os = "cygwin")]
220 pub p_proto: c_short,
221 }
222
223 #[repr(align(4))]
224 pub struct in6_addr {
225 pub s6_addr: [u8; 16],
226 }
227}
228
229pub const INT_MIN: c_int = -2147483648;
230pub const INT_MAX: c_int = 2147483647;
231
232pub const SIG_DFL: sighandler_t = 0 as sighandler_t;
233pub const SIG_IGN: sighandler_t = 1 as sighandler_t;
234pub const SIG_ERR: sighandler_t = !0 as sighandler_t;
235
236cfg_if! {
237 if #[cfg(all(
238 not(target_os = "nto"),
239 not(target_os = "aix"),
240 not(target_os = "espidf")
241 ))] {
242 pub const DT_UNKNOWN: u8 = 0;
243 pub const DT_FIFO: u8 = 1;
244 pub const DT_CHR: u8 = 2;
245 pub const DT_DIR: u8 = 4;
246 pub const DT_BLK: u8 = 6;
247 pub const DT_REG: u8 = 8;
248 pub const DT_LNK: u8 = 10;
249 pub const DT_SOCK: u8 = 12;
250 }
251}
252cfg_if! {
253 if #[cfg(not(target_os = "redox"))] {
254 pub const FD_CLOEXEC: c_int = 0x1;
255 }
256}
257
258cfg_if! {
259 if #[cfg(not(any(target_os = "nto", target_os = "l4re")))] {
260 pub const USRQUOTA: c_int = 0;
261 pub const GRPQUOTA: c_int = 1;
262 }
263}
264pub const SIGIOT: c_int = 6;
265
266pub const S_ISUID: mode_t = 0o4000;
267pub const S_ISGID: mode_t = 0o2000;
268pub const S_ISVTX: mode_t = 0o1000;
269
270cfg_if! {
271 if #[cfg(not(any(
272 target_os = "haiku",
273 target_os = "illumos",
274 target_os = "solaris",
275 target_os = "cygwin"
276 )))] {
277 pub const IF_NAMESIZE: size_t = 16;
278 pub const IFNAMSIZ: size_t = IF_NAMESIZE;
279 }
280}
281
282pub const LOG_EMERG: c_int = 0;
283pub const LOG_ALERT: c_int = 1;
284pub const LOG_CRIT: c_int = 2;
285pub const LOG_ERR: c_int = 3;
286pub const LOG_WARNING: c_int = 4;
287pub const LOG_NOTICE: c_int = 5;
288pub const LOG_INFO: c_int = 6;
289pub const LOG_DEBUG: c_int = 7;
290
291pub const LOG_KERN: c_int = 0;
292pub const LOG_USER: c_int = 1 << 3;
293pub const LOG_MAIL: c_int = 2 << 3;
294pub const LOG_DAEMON: c_int = 3 << 3;
295pub const LOG_AUTH: c_int = 4 << 3;
296pub const LOG_SYSLOG: c_int = 5 << 3;
297pub const LOG_LPR: c_int = 6 << 3;
298pub const LOG_NEWS: c_int = 7 << 3;
299pub const LOG_UUCP: c_int = 8 << 3;
300pub const LOG_LOCAL0: c_int = 16 << 3;
301pub const LOG_LOCAL1: c_int = 17 << 3;
302pub const LOG_LOCAL2: c_int = 18 << 3;
303pub const LOG_LOCAL3: c_int = 19 << 3;
304pub const LOG_LOCAL4: c_int = 20 << 3;
305pub const LOG_LOCAL5: c_int = 21 << 3;
306pub const LOG_LOCAL6: c_int = 22 << 3;
307pub const LOG_LOCAL7: c_int = 23 << 3;
308
309cfg_if! {
310 if #[cfg(not(target_os = "haiku"))] {
311 pub const LOG_PID: c_int = 0x01;
312 pub const LOG_CONS: c_int = 0x02;
313 pub const LOG_ODELAY: c_int = 0x04;
314 pub const LOG_NDELAY: c_int = 0x08;
315 pub const LOG_NOWAIT: c_int = 0x10;
316 }
317}
318pub const LOG_PRIMASK: c_int = 7;
319pub const LOG_FACMASK: c_int = 0x3f8;
320
321cfg_if! {
322 if #[cfg(not(target_os = "nto"))] {
323 pub const PRIO_MIN: c_int = -20;
324 pub const PRIO_MAX: c_int = 20;
325 }
326}
327pub const IPPROTO_ICMP: c_int = 1;
328pub const IPPROTO_ICMPV6: c_int = 58;
329pub const IPPROTO_TCP: c_int = 6;
330pub const IPPROTO_UDP: c_int = 17;
331pub const IPPROTO_IP: c_int = 0;
332pub const IPPROTO_IPV6: c_int = 41;
333
334pub const INADDR_LOOPBACK: in_addr_t = 2130706433;
335pub const INADDR_ANY: in_addr_t = 0;
336pub const INADDR_BROADCAST: in_addr_t = 4294967295;
337pub const INADDR_NONE: in_addr_t = 4294967295;
338
339pub const IN6ADDR_LOOPBACK_INIT: in6_addr = in6_addr {
340 s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
341};
342
343pub const IN6ADDR_ANY_INIT: in6_addr = in6_addr {
344 s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
345};
346
347pub const ARPOP_REQUEST: u16 = 1;
348pub const ARPOP_REPLY: u16 = 2;
349
350pub const ATF_COM: c_int = 0x02;
351pub const ATF_PERM: c_int = 0x04;
352pub const ATF_PUBL: c_int = 0x08;
353pub const ATF_USETRAILERS: c_int = 0x10;
354
355cfg_if! {
356 if #[cfg(any(target_os = "nto", target_os = "aix"))] {
357 pub const FNM_PERIOD: c_int = 1 << 1;
358 } else {
359 pub const FNM_PERIOD: c_int = 1 << 2;
360 }
361}
362pub const FNM_NOMATCH: c_int = 1;
363
364cfg_if! {
365 if #[cfg(any(
366 target_os = "illumos",
367 target_os = "solaris",
368 target_os = "netbsd"
369 ))] {
370 pub const FNM_CASEFOLD: c_int = 1 << 3;
371 } else if #[cfg(not(target_os = "aix"))] {
372 pub const FNM_CASEFOLD: c_int = 1 << 4;
373 }
374}
375
376cfg_if! {
377 if #[cfg(any(
378 target_os = "macos",
379 target_os = "freebsd",
380 target_os = "android",
381 target_os = "openbsd",
382 target_os = "cygwin",
383 target_os = "netbsd",
384 ))] {
385 pub const FNM_PATHNAME: c_int = 1 << 1;
386 } else {
387 pub const FNM_PATHNAME: c_int = 1 << 0;
388 }
389}
390
391cfg_if! {
392 if #[cfg(any(
393 target_os = "macos",
394 target_os = "freebsd",
395 target_os = "android",
396 target_os = "openbsd",
397 target_os = "netbsd",
398 target_os = "cygwin",
399 ))] {
400 pub const FNM_NOESCAPE: c_int = 1 << 0;
401 } else if #[cfg(target_os = "nto")] {
402 pub const FNM_NOESCAPE: c_int = 1 << 2;
403 } else if #[cfg(target_os = "aix")] {
404 pub const FNM_NOESCAPE: c_int = 1 << 3;
405 } else {
406 pub const FNM_NOESCAPE: c_int = 1 << 1;
407 }
408}
409
410extern "C" {
411 pub static in6addr_loopback: in6_addr;
412 pub static in6addr_any: in6_addr;
413}
414
415cfg_if! {
416 if #[cfg(any(
417 target_os = "l4re",
418 target_os = "espidf",
419 target_os = "nuttx"
420 ))] {
421 } else if #[cfg(feature = "std")] {
426 } else if #[cfg(all(
429 any(
430 all(
431 target_os = "linux",
432 any(target_env = "gnu", target_env = "uclibc")
433 ),
434 target_os = "cygwin"
435 ),
436 feature = "rustc-dep-of-std"
437 ))] {
438 #[link(
439 name = "util",
440 kind = "static",
441 modifiers = "-bundle",
442 cfg(target_feature = "crt-static")
443 )]
444 #[link(
445 name = "rt",
446 kind = "static",
447 modifiers = "-bundle",
448 cfg(target_feature = "crt-static")
449 )]
450 #[link(
451 name = "pthread",
452 kind = "static",
453 modifiers = "-bundle",
454 cfg(target_feature = "crt-static")
455 )]
456 #[link(
457 name = "m",
458 kind = "static",
459 modifiers = "-bundle",
460 cfg(target_feature = "crt-static")
461 )]
462 #[link(
463 name = "dl",
464 kind = "static",
465 modifiers = "-bundle",
466 cfg(target_feature = "crt-static")
467 )]
468 #[link(
469 name = "c",
470 kind = "static",
471 modifiers = "-bundle",
472 cfg(target_feature = "crt-static")
473 )]
474 #[link(
475 name = "gcc_eh",
476 kind = "static",
477 modifiers = "-bundle",
478 cfg(target_feature = "crt-static")
479 )]
480 #[link(
481 name = "gcc",
482 kind = "static",
483 modifiers = "-bundle",
484 cfg(target_feature = "crt-static")
485 )]
486 #[link(
487 name = "c",
488 kind = "static",
489 modifiers = "-bundle",
490 cfg(target_feature = "crt-static")
491 )]
492 #[link(name = "util", cfg(not(target_feature = "crt-static")))]
493 #[link(name = "rt", cfg(not(target_feature = "crt-static")))]
494 #[link(name = "pthread", cfg(not(target_feature = "crt-static")))]
495 #[link(name = "m", cfg(not(target_feature = "crt-static")))]
496 #[link(name = "dl", cfg(not(target_feature = "crt-static")))]
497 #[link(name = "c", cfg(not(target_feature = "crt-static")))]
498 extern "C" {}
499 } else if #[cfg(any(target_env = "musl", target_env = "ohos"))] {
500 #[cfg_attr(
501 feature = "rustc-dep-of-std",
502 link(
503 name = "c",
504 kind = "static",
505 modifiers = "-bundle",
506 cfg(target_feature = "crt-static")
507 )
508 )]
509 #[cfg_attr(
510 feature = "rustc-dep-of-std",
511 link(name = "c", cfg(not(target_feature = "crt-static")))
512 )]
513 extern "C" {}
514 } else if #[cfg(target_os = "emscripten")] {
515 } else if #[cfg(all(target_os = "android", feature = "rustc-dep-of-std"))] {
518 #[link(
519 name = "c",
520 kind = "static",
521 modifiers = "-bundle",
522 cfg(target_feature = "crt-static")
523 )]
524 #[link(
525 name = "m",
526 kind = "static",
527 modifiers = "-bundle",
528 cfg(target_feature = "crt-static")
529 )]
530 #[link(name = "m", cfg(not(target_feature = "crt-static")))]
531 #[link(name = "c", cfg(not(target_feature = "crt-static")))]
532 extern "C" {}
533 } else if #[cfg(any(
534 target_os = "macos",
535 target_os = "ios",
536 target_os = "tvos",
537 target_os = "watchos",
538 target_os = "visionos",
539 target_os = "android",
540 target_os = "openbsd",
541 target_os = "nto",
542 ))] {
543 #[link(name = "c")]
544 #[link(name = "m")]
545 extern "C" {}
546 } else if #[cfg(target_os = "haiku")] {
547 #[link(name = "root")]
548 #[link(name = "network")]
549 extern "C" {}
550 } else if #[cfg(target_env = "newlib")] {
551 #[link(name = "c")]
552 #[link(name = "m")]
553 extern "C" {}
554 } else if #[cfg(target_env = "illumos")] {
555 #[link(name = "c")]
556 #[link(name = "m")]
557 extern "C" {}
558 } else if #[cfg(target_os = "redox")] {
559 #[cfg_attr(
560 feature = "rustc-dep-of-std",
561 link(
562 name = "c",
563 kind = "static",
564 modifiers = "-bundle",
565 cfg(target_feature = "crt-static")
566 )
567 )]
568 #[cfg_attr(
569 feature = "rustc-dep-of-std",
570 link(name = "c", cfg(not(target_feature = "crt-static")))
571 )]
572 extern "C" {}
573 } else if #[cfg(target_os = "aix")] {
574 #[link(name = "c")]
575 #[link(name = "m")]
576 #[link(name = "bsd")]
577 #[link(name = "pthread")]
578 extern "C" {}
579 } else {
580 #[link(name = "c")]
581 #[link(name = "m")]
582 #[link(name = "rt")]
583 #[link(name = "pthread")]
584 extern "C" {}
585 }
586}
587
588cfg_if! {
589 if #[cfg(not(all(target_os = "linux", target_env = "gnu")))] {
590 extern_ty! {
591 pub enum fpos_t {} }
593 }
594}
595
596extern_ty! {
597 pub enum FILE {}
598}
599
600extern "C" {
601 pub fn isalnum(c: c_int) -> c_int;
602 pub fn isalpha(c: c_int) -> c_int;
603 pub fn iscntrl(c: c_int) -> c_int;
604 pub fn isdigit(c: c_int) -> c_int;
605 pub fn isgraph(c: c_int) -> c_int;
606 pub fn islower(c: c_int) -> c_int;
607 pub fn isprint(c: c_int) -> c_int;
608 pub fn ispunct(c: c_int) -> c_int;
609 pub fn isspace(c: c_int) -> c_int;
610 pub fn isupper(c: c_int) -> c_int;
611 pub fn isxdigit(c: c_int) -> c_int;
612 pub fn isblank(c: c_int) -> c_int;
613 pub fn tolower(c: c_int) -> c_int;
614 pub fn toupper(c: c_int) -> c_int;
615 pub fn qsort(
616 base: *mut c_void,
617 num: size_t,
618 size: size_t,
619 compar: Option<unsafe extern "C" fn(*const c_void, *const c_void) -> c_int>,
620 );
621 pub fn bsearch(
622 key: *const c_void,
623 base: *const c_void,
624 num: size_t,
625 size: size_t,
626 compar: Option<unsafe extern "C" fn(*const c_void, *const c_void) -> c_int>,
627 ) -> *mut c_void;
628 #[cfg_attr(
629 all(target_os = "macos", target_arch = "x86"),
630 link_name = "fopen$UNIX2003"
631 )]
632 #[cfg_attr(gnu_file_offset_bits64, link_name = "fopen64")]
633 pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
634 #[cfg_attr(
635 all(target_os = "macos", target_arch = "x86"),
636 link_name = "freopen$UNIX2003"
637 )]
638 #[cfg_attr(gnu_file_offset_bits64, link_name = "freopen64")]
639 pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;
640
641 pub fn fflush(file: *mut FILE) -> c_int;
642 pub fn fclose(file: *mut FILE) -> c_int;
643 pub fn remove(filename: *const c_char) -> c_int;
644 pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
645 #[cfg_attr(gnu_file_offset_bits64, link_name = "tmpfile64")]
646 pub fn tmpfile() -> *mut FILE;
647 pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;
648 pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
649 pub fn getchar() -> c_int;
650 pub fn putchar(c: c_int) -> c_int;
651 pub fn fgetc(stream: *mut FILE) -> c_int;
652 pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
653 pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
654 #[cfg_attr(
655 all(target_os = "macos", target_arch = "x86"),
656 link_name = "fputs$UNIX2003"
657 )]
658 pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
659 pub fn puts(s: *const c_char) -> c_int;
660 pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
661 pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
662 #[cfg_attr(
663 all(target_os = "macos", target_arch = "x86"),
664 link_name = "fwrite$UNIX2003"
665 )]
666 pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
667 pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
668 pub fn ftell(stream: *mut FILE) -> c_long;
669 pub fn rewind(stream: *mut FILE);
670 #[cfg_attr(target_os = "netbsd", link_name = "__fgetpos50")]
671 #[cfg_attr(gnu_file_offset_bits64, link_name = "fgetpos64")]
672 pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
673 #[cfg_attr(target_os = "netbsd", link_name = "__fsetpos50")]
674 #[cfg_attr(gnu_file_offset_bits64, link_name = "fsetpos64")]
675 pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
676 pub fn feof(stream: *mut FILE) -> c_int;
677 pub fn ferror(stream: *mut FILE) -> c_int;
678 pub fn clearerr(stream: *mut FILE);
679 pub fn perror(s: *const c_char);
680 pub fn atof(s: *const c_char) -> c_double;
681 pub fn atoi(s: *const c_char) -> c_int;
682 pub fn atol(s: *const c_char) -> c_long;
683 pub fn atoll(s: *const c_char) -> c_longlong;
684 #[cfg_attr(
685 all(target_os = "macos", target_arch = "x86"),
686 link_name = "strtod$UNIX2003"
687 )]
688 pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
689 pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;
690 pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;
691 pub fn strtoll(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_longlong;
692 pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;
693 pub fn strtoull(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulonglong;
694 #[cfg_attr(target_os = "aix", link_name = "vec_calloc")]
695 pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
696 #[cfg_attr(target_os = "aix", link_name = "vec_malloc")]
697 pub fn malloc(size: size_t) -> *mut c_void;
698 pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
699 pub fn free(p: *mut c_void);
700 pub fn abort() -> !;
701 pub fn exit(status: c_int) -> !;
702 pub fn _exit(status: c_int) -> !;
703 #[cfg_attr(
704 all(target_os = "macos", target_arch = "x86"),
705 link_name = "system$UNIX2003"
706 )]
707 pub fn system(s: *const c_char) -> c_int;
708 pub fn getenv(s: *const c_char) -> *mut c_char;
709
710 pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
711 pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
712 pub fn stpcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
713 pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
714 pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
715 pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
716 pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
717 pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
718 pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
719 pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
720 pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
721 pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
722 pub fn strdup(cs: *const c_char) -> *mut c_char;
723 pub fn strndup(cs: *const c_char, n: size_t) -> *mut c_char;
724 pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
725 pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
726 pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;
727 pub fn strncasecmp(s1: *const c_char, s2: *const c_char, n: size_t) -> c_int;
728 pub fn strlen(cs: *const c_char) -> size_t;
729 pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
730 #[cfg_attr(
731 all(target_os = "macos", target_arch = "x86"),
732 link_name = "strerror$UNIX2003"
733 )]
734 pub fn strerror(n: c_int) -> *mut c_char;
735 pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
736 pub fn strtok_r(s: *mut c_char, t: *const c_char, p: *mut *mut c_char) -> *mut c_char;
737 pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
738 pub fn strsignal(sig: c_int) -> *mut c_char;
739 pub fn wcslen(buf: *const wchar_t) -> size_t;
740 pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> size_t;
741
742 pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
743 pub fn wmemchr(cx: *const wchar_t, c: wchar_t, n: size_t) -> *mut wchar_t;
744 pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
745 pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
746 pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
747 pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
748 pub fn memccpy(dest: *mut c_void, src: *const c_void, c: c_int, n: size_t) -> *mut c_void;
749}
750
751extern "C" {
752 #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam50")]
753 pub fn getpwnam(name: *const c_char) -> *mut passwd;
754 #[cfg_attr(target_os = "netbsd", link_name = "__getpwuid50")]
755 pub fn getpwuid(uid: crate::uid_t) -> *mut passwd;
756
757 pub fn fprintf(stream: *mut crate::FILE, format: *const c_char, ...) -> c_int;
758 pub fn printf(format: *const c_char, ...) -> c_int;
759 pub fn snprintf(s: *mut c_char, n: size_t, format: *const c_char, ...) -> c_int;
760 pub fn sprintf(s: *mut c_char, format: *const c_char, ...) -> c_int;
761 #[cfg_attr(
762 all(target_os = "linux", not(target_env = "uclibc")),
763 link_name = "__isoc99_fscanf"
764 )]
765 pub fn fscanf(stream: *mut crate::FILE, format: *const c_char, ...) -> c_int;
766 #[cfg_attr(
767 all(target_os = "linux", not(target_env = "uclibc")),
768 link_name = "__isoc99_scanf"
769 )]
770 pub fn scanf(format: *const c_char, ...) -> c_int;
771 #[cfg_attr(
772 all(target_os = "linux", not(target_env = "uclibc")),
773 link_name = "__isoc99_sscanf"
774 )]
775 pub fn sscanf(s: *const c_char, format: *const c_char, ...) -> c_int;
776 pub fn getchar_unlocked() -> c_int;
777 pub fn putchar_unlocked(c: c_int) -> c_int;
778
779 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
780 #[cfg_attr(target_os = "netbsd", link_name = "__socket30")]
781 #[cfg_attr(target_os = "illumos", link_name = "__xnet_socket")]
782 #[cfg_attr(target_os = "solaris", link_name = "__xnet7_socket")]
783 #[cfg_attr(target_os = "espidf", link_name = "lwip_socket")]
784 pub fn socket(domain: c_int, ty: c_int, protocol: c_int) -> c_int;
785 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
786 #[cfg_attr(
787 all(target_os = "macos", target_arch = "x86"),
788 link_name = "connect$UNIX2003"
789 )]
790 #[cfg_attr(
791 any(target_os = "illumos", target_os = "solaris"),
792 link_name = "__xnet_connect"
793 )]
794 #[cfg_attr(target_os = "espidf", link_name = "lwip_connect")]
795 pub fn connect(socket: c_int, address: *const sockaddr, len: socklen_t) -> c_int;
796 #[cfg_attr(
797 all(target_os = "macos", target_arch = "x86"),
798 link_name = "listen$UNIX2003"
799 )]
800 #[cfg_attr(target_os = "espidf", link_name = "lwip_listen")]
801 pub fn listen(socket: c_int, backlog: c_int) -> c_int;
802 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
803 #[cfg_attr(
804 all(target_os = "macos", target_arch = "x86"),
805 link_name = "accept$UNIX2003"
806 )]
807 #[cfg_attr(target_os = "espidf", link_name = "lwip_accept")]
808 #[cfg_attr(target_os = "aix", link_name = "naccept")]
809 pub fn accept(socket: c_int, address: *mut sockaddr, address_len: *mut socklen_t) -> c_int;
810 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
811 #[cfg_attr(
812 all(target_os = "macos", target_arch = "x86"),
813 link_name = "getpeername$UNIX2003"
814 )]
815 #[cfg_attr(target_os = "espidf", link_name = "lwip_getpeername")]
816 #[cfg_attr(target_os = "aix", link_name = "ngetpeername")]
817 pub fn getpeername(socket: c_int, address: *mut sockaddr, address_len: *mut socklen_t)
818 -> c_int;
819 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
820 #[cfg_attr(
821 all(target_os = "macos", target_arch = "x86"),
822 link_name = "getsockname$UNIX2003"
823 )]
824 #[cfg_attr(target_os = "espidf", link_name = "lwip_getsockname")]
825 #[cfg_attr(target_os = "aix", link_name = "ngetsockname")]
826 pub fn getsockname(socket: c_int, address: *mut sockaddr, address_len: *mut socklen_t)
827 -> c_int;
828 #[cfg_attr(target_os = "espidf", link_name = "lwip_setsockopt")]
829 #[cfg_attr(gnu_time_bits64, link_name = "__setsockopt64")]
830 pub fn setsockopt(
831 socket: c_int,
832 level: c_int,
833 name: c_int,
834 value: *const c_void,
835 option_len: socklen_t,
836 ) -> c_int;
837 #[cfg_attr(
838 all(target_os = "macos", target_arch = "x86"),
839 link_name = "socketpair$UNIX2003"
840 )]
841 #[cfg_attr(
842 any(target_os = "illumos", target_os = "solaris"),
843 link_name = "__xnet_socketpair"
844 )]
845 pub fn socketpair(
846 domain: c_int,
847 type_: c_int,
848 protocol: c_int,
849 socket_vector: *mut c_int,
850 ) -> c_int;
851 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
852 #[cfg_attr(
853 all(target_os = "macos", target_arch = "x86"),
854 link_name = "sendto$UNIX2003"
855 )]
856 #[cfg_attr(
857 any(target_os = "illumos", target_os = "solaris"),
858 link_name = "__xnet_sendto"
859 )]
860 #[cfg_attr(target_os = "espidf", link_name = "lwip_sendto")]
861 pub fn sendto(
862 socket: c_int,
863 buf: *const c_void,
864 len: size_t,
865 flags: c_int,
866 addr: *const sockaddr,
867 addrlen: socklen_t,
868 ) -> ssize_t;
869 #[cfg_attr(target_os = "espidf", link_name = "lwip_shutdown")]
870 pub fn shutdown(socket: c_int, how: c_int) -> c_int;
871
872 #[cfg_attr(
873 all(target_os = "macos", target_arch = "x86"),
874 link_name = "chmod$UNIX2003"
875 )]
876 pub fn chmod(path: *const c_char, mode: mode_t) -> c_int;
877 #[cfg_attr(
878 all(target_os = "macos", target_arch = "x86"),
879 link_name = "fchmod$UNIX2003"
880 )]
881 pub fn fchmod(fd: c_int, mode: mode_t) -> c_int;
882
883 #[cfg_attr(
884 all(target_os = "macos", not(target_arch = "aarch64")),
885 link_name = "fstat$INODE64"
886 )]
887 #[cfg_attr(target_os = "netbsd", link_name = "__fstat50")]
888 #[cfg_attr(
889 all(target_os = "freebsd", any(freebsd11, freebsd10)),
890 link_name = "fstat@FBSD_1.0"
891 )]
892 #[cfg_attr(gnu_time_bits64, link_name = "__fstat64_time64")]
893 #[cfg_attr(
894 all(not(gnu_time_bits64), gnu_file_offset_bits64),
895 link_name = "fstat64"
896 )]
897 #[cfg_attr(musl32_time64, link_name = "__fstat_time64")]
898 pub fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
899
900 pub fn mkdir(path: *const c_char, mode: mode_t) -> c_int;
901
902 #[cfg_attr(
903 all(target_os = "macos", not(target_arch = "aarch64")),
904 link_name = "stat$INODE64"
905 )]
906 #[cfg_attr(target_os = "netbsd", link_name = "__stat50")]
907 #[cfg_attr(
908 all(target_os = "freebsd", any(freebsd11, freebsd10)),
909 link_name = "stat@FBSD_1.0"
910 )]
911 #[cfg_attr(gnu_time_bits64, link_name = "__stat64_time64")]
912 #[cfg_attr(
913 all(not(gnu_time_bits64), gnu_file_offset_bits64),
914 link_name = "stat64"
915 )]
916 #[cfg_attr(musl32_time64, link_name = "__stat_time64")]
917 pub fn stat(path: *const c_char, buf: *mut stat) -> c_int;
918
919 pub fn pclose(stream: *mut crate::FILE) -> c_int;
920 #[cfg_attr(
921 all(target_os = "macos", target_arch = "x86"),
922 link_name = "fdopen$UNIX2003"
923 )]
924 pub fn fdopen(fd: c_int, mode: *const c_char) -> *mut crate::FILE;
925 pub fn fileno(stream: *mut crate::FILE) -> c_int;
926
927 #[cfg_attr(
928 all(target_os = "macos", target_arch = "x86"),
929 link_name = "open$UNIX2003"
930 )]
931 #[cfg_attr(gnu_file_offset_bits64, link_name = "open64")]
932 pub fn open(path: *const c_char, oflag: c_int, ...) -> c_int;
933 #[cfg_attr(
934 all(target_os = "macos", target_arch = "x86"),
935 link_name = "creat$UNIX2003"
936 )]
937 #[cfg_attr(gnu_file_offset_bits64, link_name = "creat64")]
938 pub fn creat(path: *const c_char, mode: mode_t) -> c_int;
939 #[cfg_attr(
940 all(target_os = "macos", target_arch = "x86"),
941 link_name = "fcntl$UNIX2003"
942 )]
943 #[cfg_attr(gnu_time_bits64, link_name = "__fcntl_time64")]
944 #[cfg_attr(
945 all(not(gnu_time_bits64), gnu_file_offset_bits64),
946 link_name = "__fcntl_time64"
947 )]
948 pub fn fcntl(fd: c_int, cmd: c_int, ...) -> c_int;
949
950 #[cfg_attr(
951 all(target_os = "macos", target_arch = "x86_64"),
952 link_name = "opendir$INODE64"
953 )]
954 #[cfg_attr(
955 all(target_os = "macos", target_arch = "x86"),
956 link_name = "opendir$INODE64$UNIX2003"
957 )]
958 #[cfg_attr(target_os = "netbsd", link_name = "__opendir30")]
959 pub fn opendir(dirname: *const c_char) -> *mut crate::DIR;
960
961 #[cfg_attr(
962 all(target_os = "macos", not(target_arch = "aarch64")),
963 link_name = "readdir$INODE64"
964 )]
965 #[cfg_attr(target_os = "netbsd", link_name = "__readdir30")]
966 #[cfg_attr(
967 all(target_os = "freebsd", any(freebsd11, freebsd10)),
968 link_name = "readdir@FBSD_1.0"
969 )]
970 #[cfg_attr(gnu_file_offset_bits64, link_name = "readdir64")]
971 pub fn readdir(dirp: *mut crate::DIR) -> *mut crate::dirent;
972 #[cfg_attr(
973 all(target_os = "macos", target_arch = "x86"),
974 link_name = "closedir$UNIX2003"
975 )]
976 pub fn closedir(dirp: *mut crate::DIR) -> c_int;
977 #[cfg_attr(
978 all(target_os = "macos", target_arch = "x86_64"),
979 link_name = "rewinddir$INODE64"
980 )]
981 #[cfg_attr(
982 all(target_os = "macos", target_arch = "x86"),
983 link_name = "rewinddir$INODE64$UNIX2003"
984 )]
985 pub fn rewinddir(dirp: *mut crate::DIR);
986
987 pub fn fchmodat(dirfd: c_int, pathname: *const c_char, mode: mode_t, flags: c_int) -> c_int;
988 pub fn fchown(fd: c_int, owner: crate::uid_t, group: crate::gid_t) -> c_int;
989 #[cfg(not(target_os = "l4re"))]
990 pub fn fchownat(
991 dirfd: c_int,
992 pathname: *const c_char,
993 owner: crate::uid_t,
994 group: crate::gid_t,
995 flags: c_int,
996 ) -> c_int;
997 #[cfg_attr(
998 all(target_os = "macos", not(target_arch = "aarch64")),
999 link_name = "fstatat$INODE64"
1000 )]
1001 #[cfg_attr(
1002 all(target_os = "freebsd", any(freebsd11, freebsd10)),
1003 link_name = "fstatat@FBSD_1.1"
1004 )]
1005 #[cfg_attr(gnu_time_bits64, link_name = "__fstatat64_time64")]
1006 #[cfg_attr(
1007 all(not(gnu_time_bits64), gnu_file_offset_bits64),
1008 link_name = "fstatat64"
1009 )]
1010 #[cfg(not(target_os = "l4re"))]
1011 #[cfg_attr(musl32_time64, link_name = "__fstatat_time64")]
1012 pub fn fstatat(dirfd: c_int, pathname: *const c_char, buf: *mut stat, flags: c_int) -> c_int;
1013 #[cfg(not(target_os = "l4re"))]
1014 pub fn linkat(
1015 olddirfd: c_int,
1016 oldpath: *const c_char,
1017 newdirfd: c_int,
1018 newpath: *const c_char,
1019 flags: c_int,
1020 ) -> c_int;
1021 #[cfg(not(target_os = "l4re"))]
1022 pub fn renameat(
1023 olddirfd: c_int,
1024 oldpath: *const c_char,
1025 newdirfd: c_int,
1026 newpath: *const c_char,
1027 ) -> c_int;
1028 #[cfg(not(target_os = "l4re"))]
1029 pub fn symlinkat(target: *const c_char, newdirfd: c_int, linkpath: *const c_char) -> c_int;
1030 #[cfg(not(target_os = "l4re"))]
1031 pub fn unlinkat(dirfd: c_int, pathname: *const c_char, flags: c_int) -> c_int;
1032
1033 pub fn access(path: *const c_char, amode: c_int) -> c_int;
1034 pub fn alarm(seconds: c_uint) -> c_uint;
1035 pub fn chdir(dir: *const c_char) -> c_int;
1036 pub fn fchdir(dirfd: c_int) -> c_int;
1037 pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> c_int;
1038 #[cfg_attr(
1039 all(target_os = "macos", target_arch = "x86"),
1040 link_name = "lchown$UNIX2003"
1041 )]
1042 pub fn lchown(path: *const c_char, uid: uid_t, gid: gid_t) -> c_int;
1043 #[cfg_attr(
1044 all(target_os = "macos", target_arch = "x86"),
1045 link_name = "close$NOCANCEL$UNIX2003"
1046 )]
1047 #[cfg_attr(
1048 all(target_os = "macos", target_arch = "x86_64"),
1049 link_name = "close$NOCANCEL"
1050 )]
1051 pub fn close(fd: c_int) -> c_int;
1052 pub fn dup(fd: c_int) -> c_int;
1053 pub fn dup2(src: c_int, dst: c_int) -> c_int;
1054
1055 pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> c_int;
1056 pub fn execle(path: *const c_char, arg0: *const c_char, ...) -> c_int;
1057 pub fn execlp(file: *const c_char, arg0: *const c_char, ...) -> c_int;
1058
1059 pub fn execv(prog: *const c_char, argv: *const *const c_char) -> c_int;
1061 pub fn execve(
1062 prog: *const c_char,
1063 argv: *const *const c_char,
1064 envp: *const *const c_char,
1065 ) -> c_int;
1066 pub fn execvp(c: *const c_char, argv: *const *const c_char) -> c_int;
1067
1068 pub fn fork() -> pid_t;
1069 pub fn fpathconf(filedes: c_int, name: c_int) -> c_long;
1070 pub fn getcwd(buf: *mut c_char, size: size_t) -> *mut c_char;
1071 pub fn getegid() -> gid_t;
1072 pub fn geteuid() -> uid_t;
1073 pub fn getgid() -> gid_t;
1074 pub fn getgroups(ngroups_max: c_int, groups: *mut gid_t) -> c_int;
1075 #[cfg_attr(target_os = "illumos", link_name = "getloginx")]
1076 pub fn getlogin() -> *mut c_char;
1077 #[cfg_attr(
1078 all(target_os = "macos", target_arch = "x86"),
1079 link_name = "getopt$UNIX2003"
1080 )]
1081 pub fn getopt(argc: c_int, argv: *const *mut c_char, optstr: *const c_char) -> c_int;
1082 pub fn getpgid(pid: pid_t) -> pid_t;
1083 pub fn getpgrp() -> pid_t;
1084 pub fn getpid() -> pid_t;
1085 pub fn getppid() -> pid_t;
1086 pub fn getuid() -> uid_t;
1087 pub fn isatty(fd: c_int) -> c_int;
1088 #[cfg_attr(target_os = "solaris", link_name = "__link_xpg4")]
1089 pub fn link(src: *const c_char, dst: *const c_char) -> c_int;
1090 #[cfg_attr(gnu_file_offset_bits64, link_name = "lseek64")]
1091 pub fn lseek(fd: c_int, offset: off_t, whence: c_int) -> off_t;
1092 pub fn pathconf(path: *const c_char, name: c_int) -> c_long;
1093 pub fn pipe(fds: *mut c_int) -> c_int;
1094 pub fn posix_memalign(memptr: *mut *mut c_void, align: size_t, size: size_t) -> c_int;
1095 pub fn aligned_alloc(alignment: size_t, size: size_t) -> *mut c_void;
1096 #[cfg_attr(
1097 all(target_os = "macos", target_arch = "x86"),
1098 link_name = "read$UNIX2003"
1099 )]
1100 pub fn read(fd: c_int, buf: *mut c_void, count: size_t) -> ssize_t;
1101 pub fn rmdir(path: *const c_char) -> c_int;
1102 pub fn seteuid(uid: uid_t) -> c_int;
1103 pub fn setegid(gid: gid_t) -> c_int;
1104 pub fn setgid(gid: gid_t) -> c_int;
1105 pub fn setpgid(pid: pid_t, pgid: pid_t) -> c_int;
1106 pub fn setsid() -> pid_t;
1107 pub fn setuid(uid: uid_t) -> c_int;
1108 pub fn setreuid(ruid: uid_t, euid: uid_t) -> c_int;
1109 pub fn setregid(rgid: gid_t, egid: gid_t) -> c_int;
1110 #[cfg_attr(
1111 all(target_os = "macos", target_arch = "x86"),
1112 link_name = "sleep$UNIX2003"
1113 )]
1114 pub fn sleep(secs: c_uint) -> c_uint;
1115 #[cfg_attr(
1116 all(target_os = "macos", target_arch = "x86"),
1117 link_name = "nanosleep$UNIX2003"
1118 )]
1119 #[cfg_attr(target_os = "netbsd", link_name = "__nanosleep50")]
1120 #[cfg_attr(gnu_time_bits64, link_name = "__nanosleep64")]
1121 #[cfg_attr(musl32_time64, link_name = "__nanosleep_time64")]
1122 pub fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> c_int;
1123 pub fn tcgetpgrp(fd: c_int) -> pid_t;
1124 pub fn tcsetpgrp(fd: c_int, pgrp: crate::pid_t) -> c_int;
1125 pub fn ttyname(fd: c_int) -> *mut c_char;
1126 #[cfg_attr(
1127 all(target_os = "macos", target_arch = "x86"),
1128 link_name = "ttyname_r$UNIX2003"
1129 )]
1130 #[cfg_attr(
1131 any(target_os = "illumos", target_os = "solaris"),
1132 link_name = "__posix_ttyname_r"
1133 )]
1134 pub fn ttyname_r(fd: c_int, buf: *mut c_char, buflen: size_t) -> c_int;
1135 pub fn unlink(c: *const c_char) -> c_int;
1136 #[cfg_attr(
1137 all(target_os = "macos", target_arch = "x86"),
1138 link_name = "wait$UNIX2003"
1139 )]
1140 pub fn wait(status: *mut c_int) -> pid_t;
1141 #[cfg_attr(
1142 all(target_os = "macos", target_arch = "x86"),
1143 link_name = "waitpid$UNIX2003"
1144 )]
1145 pub fn waitpid(pid: pid_t, status: *mut c_int, options: c_int) -> pid_t;
1146 #[cfg_attr(
1147 all(target_os = "macos", target_arch = "x86"),
1148 link_name = "write$UNIX2003"
1149 )]
1150 pub fn write(fd: c_int, buf: *const c_void, count: size_t) -> ssize_t;
1151 #[cfg_attr(
1152 all(target_os = "macos", target_arch = "x86"),
1153 link_name = "pread$UNIX2003"
1154 )]
1155 #[cfg_attr(gnu_file_offset_bits64, link_name = "pread64")]
1156 pub fn pread(fd: c_int, buf: *mut c_void, count: size_t, offset: off_t) -> ssize_t;
1157 #[cfg_attr(
1158 all(target_os = "macos", target_arch = "x86"),
1159 link_name = "pwrite$UNIX2003"
1160 )]
1161 #[cfg_attr(gnu_file_offset_bits64, link_name = "pwrite64")]
1162 pub fn pwrite(fd: c_int, buf: *const c_void, count: size_t, offset: off_t) -> ssize_t;
1163 pub fn umask(mask: mode_t) -> mode_t;
1164
1165 #[cfg_attr(target_os = "netbsd", link_name = "__utime50")]
1166 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__utime64")]
1167 pub fn utime(file: *const c_char, buf: *const utimbuf) -> c_int;
1168
1169 #[cfg_attr(
1170 all(target_os = "macos", target_arch = "x86"),
1171 link_name = "kill$UNIX2003"
1172 )]
1173 pub fn kill(pid: pid_t, sig: c_int) -> c_int;
1174 #[cfg_attr(
1175 all(target_os = "macos", target_arch = "x86"),
1176 link_name = "killpg$UNIX2003"
1177 )]
1178 pub fn killpg(pgrp: pid_t, sig: c_int) -> c_int;
1179
1180 pub fn mlock(addr: *const c_void, len: size_t) -> c_int;
1181 pub fn munlock(addr: *const c_void, len: size_t) -> c_int;
1182 pub fn mlockall(flags: c_int) -> c_int;
1183 pub fn munlockall() -> c_int;
1184
1185 #[cfg_attr(
1186 all(target_os = "macos", target_arch = "x86"),
1187 link_name = "mmap$UNIX2003"
1188 )]
1189 #[cfg_attr(gnu_file_offset_bits64, link_name = "mmap64")]
1190 pub fn mmap(
1191 addr: *mut c_void,
1192 len: size_t,
1193 prot: c_int,
1194 flags: c_int,
1195 fd: c_int,
1196 offset: off_t,
1197 ) -> *mut c_void;
1198 #[cfg_attr(
1199 all(target_os = "macos", target_arch = "x86"),
1200 link_name = "munmap$UNIX2003"
1201 )]
1202 pub fn munmap(addr: *mut c_void, len: size_t) -> c_int;
1203
1204 pub fn if_nametoindex(ifname: *const c_char) -> c_uint;
1205 pub fn if_indextoname(ifindex: c_uint, ifname: *mut c_char) -> *mut c_char;
1206
1207 #[cfg_attr(
1208 all(target_os = "macos", not(target_arch = "aarch64")),
1209 link_name = "lstat$INODE64"
1210 )]
1211 #[cfg_attr(target_os = "netbsd", link_name = "__lstat50")]
1212 #[cfg_attr(
1213 all(target_os = "freebsd", any(freebsd11, freebsd10)),
1214 link_name = "lstat@FBSD_1.0"
1215 )]
1216 #[cfg_attr(gnu_time_bits64, link_name = "__lstat64_time64")]
1217 #[cfg_attr(
1218 all(not(gnu_time_bits64), gnu_file_offset_bits64),
1219 link_name = "lstat64"
1220 )]
1221 #[cfg_attr(musl32_time64, link_name = "__lstat_time64")]
1222 pub fn lstat(path: *const c_char, buf: *mut stat) -> c_int;
1223
1224 #[cfg_attr(
1225 all(target_os = "macos", target_arch = "x86"),
1226 link_name = "fsync$UNIX2003"
1227 )]
1228 pub fn fsync(fd: c_int) -> c_int;
1229
1230 #[cfg_attr(
1231 all(target_os = "macos", target_arch = "x86"),
1232 link_name = "setenv$UNIX2003"
1233 )]
1234 pub fn setenv(name: *const c_char, val: *const c_char, overwrite: c_int) -> c_int;
1235 #[cfg_attr(
1236 all(target_os = "macos", target_arch = "x86"),
1237 link_name = "unsetenv$UNIX2003"
1238 )]
1239 #[cfg_attr(target_os = "netbsd", link_name = "__unsetenv13")]
1240 pub fn unsetenv(name: *const c_char) -> c_int;
1241
1242 pub fn symlink(path1: *const c_char, path2: *const c_char) -> c_int;
1243
1244 #[cfg_attr(gnu_file_offset_bits64, link_name = "truncate64")]
1245 pub fn truncate(path: *const c_char, length: off_t) -> c_int;
1246 #[cfg_attr(gnu_file_offset_bits64, link_name = "ftruncate64")]
1247 pub fn ftruncate(fd: c_int, length: off_t) -> c_int;
1248
1249 pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;
1250
1251 #[cfg_attr(target_os = "netbsd", link_name = "__getrusage50")]
1252 #[cfg_attr(gnu_time_bits64, link_name = "__getrusage64")]
1253 #[cfg_attr(musl32_time64, link_name = "__getrusage_time64")]
1254 pub fn getrusage(resource: c_int, usage: *mut rusage) -> c_int;
1255
1256 #[cfg_attr(
1257 any(
1258 target_os = "macos",
1259 target_os = "ios",
1260 target_os = "tvos",
1261 target_os = "watchos",
1262 target_os = "visionos"
1263 ),
1264 link_name = "realpath$DARWIN_EXTSN"
1265 )]
1266 pub fn realpath(pathname: *const c_char, resolved: *mut c_char) -> *mut c_char;
1267
1268 #[cfg_attr(target_os = "netbsd", link_name = "__times13")]
1269 pub fn times(buf: *mut crate::tms) -> crate::clock_t;
1270
1271 pub fn pthread_self() -> crate::pthread_t;
1272 pub fn pthread_equal(t1: crate::pthread_t, t2: crate::pthread_t) -> c_int;
1273 #[cfg_attr(
1274 all(target_os = "macos", target_arch = "x86"),
1275 link_name = "pthread_join$UNIX2003"
1276 )]
1277 pub fn pthread_join(native: crate::pthread_t, value: *mut *mut c_void) -> c_int;
1278 pub fn pthread_exit(value: *mut c_void) -> !;
1279 pub fn pthread_attr_init(attr: *mut crate::pthread_attr_t) -> c_int;
1280 pub fn pthread_attr_destroy(attr: *mut crate::pthread_attr_t) -> c_int;
1281 pub fn pthread_attr_getstacksize(
1282 attr: *const crate::pthread_attr_t,
1283 stacksize: *mut size_t,
1284 ) -> c_int;
1285 pub fn pthread_attr_setstacksize(attr: *mut crate::pthread_attr_t, stack_size: size_t)
1286 -> c_int;
1287 pub fn pthread_attr_setdetachstate(attr: *mut crate::pthread_attr_t, state: c_int) -> c_int;
1288 pub fn pthread_detach(thread: crate::pthread_t) -> c_int;
1289 #[cfg_attr(target_os = "netbsd", link_name = "__libc_thr_yield")]
1290 pub fn sched_yield() -> c_int;
1291 pub fn pthread_key_create(
1292 key: *mut crate::pthread_key_t,
1293 dtor: Option<unsafe extern "C" fn(*mut c_void)>,
1294 ) -> c_int;
1295 pub fn pthread_key_delete(key: crate::pthread_key_t) -> c_int;
1296 pub fn pthread_getspecific(key: crate::pthread_key_t) -> *mut c_void;
1297 pub fn pthread_setspecific(key: crate::pthread_key_t, value: *const c_void) -> c_int;
1298 pub fn pthread_mutex_init(
1299 lock: *mut crate::pthread_mutex_t,
1300 attr: *const crate::pthread_mutexattr_t,
1301 ) -> c_int;
1302 pub fn pthread_mutex_destroy(lock: *mut crate::pthread_mutex_t) -> c_int;
1303 pub fn pthread_mutex_lock(lock: *mut crate::pthread_mutex_t) -> c_int;
1304 pub fn pthread_mutex_trylock(lock: *mut crate::pthread_mutex_t) -> c_int;
1305 pub fn pthread_mutex_unlock(lock: *mut crate::pthread_mutex_t) -> c_int;
1306
1307 pub fn pthread_mutexattr_init(attr: *mut crate::pthread_mutexattr_t) -> c_int;
1308 #[cfg_attr(
1309 all(target_os = "macos", target_arch = "x86"),
1310 link_name = "pthread_mutexattr_destroy$UNIX2003"
1311 )]
1312 pub fn pthread_mutexattr_destroy(attr: *mut crate::pthread_mutexattr_t) -> c_int;
1313 pub fn pthread_mutexattr_settype(attr: *mut crate::pthread_mutexattr_t, _type: c_int) -> c_int;
1314
1315 #[cfg_attr(
1316 all(target_os = "macos", target_arch = "x86"),
1317 link_name = "pthread_cond_init$UNIX2003"
1318 )]
1319 pub fn pthread_cond_init(
1320 cond: *mut crate::pthread_cond_t,
1321 attr: *const crate::pthread_condattr_t,
1322 ) -> c_int;
1323 #[cfg_attr(
1324 all(target_os = "macos", target_arch = "x86"),
1325 link_name = "pthread_cond_wait$UNIX2003"
1326 )]
1327 pub fn pthread_cond_wait(
1328 cond: *mut crate::pthread_cond_t,
1329 lock: *mut crate::pthread_mutex_t,
1330 ) -> c_int;
1331 #[cfg_attr(
1332 all(target_os = "macos", target_arch = "x86"),
1333 link_name = "pthread_cond_timedwait$UNIX2003"
1334 )]
1335 #[cfg_attr(gnu_time_bits64, link_name = "__pthread_cond_timedwait64")]
1336 #[cfg_attr(musl32_time64, link_name = "__pthread_cond_timedwait_time64")]
1337 pub fn pthread_cond_timedwait(
1338 cond: *mut crate::pthread_cond_t,
1339 lock: *mut crate::pthread_mutex_t,
1340 abstime: *const crate::timespec,
1341 ) -> c_int;
1342 pub fn pthread_cond_signal(cond: *mut crate::pthread_cond_t) -> c_int;
1343 pub fn pthread_cond_broadcast(cond: *mut crate::pthread_cond_t) -> c_int;
1344 pub fn pthread_cond_destroy(cond: *mut crate::pthread_cond_t) -> c_int;
1345 pub fn pthread_condattr_init(attr: *mut crate::pthread_condattr_t) -> c_int;
1346 pub fn pthread_condattr_destroy(attr: *mut crate::pthread_condattr_t) -> c_int;
1347 #[cfg_attr(
1348 all(target_os = "macos", target_arch = "x86"),
1349 link_name = "pthread_rwlock_init$UNIX2003"
1350 )]
1351 pub fn pthread_rwlock_init(
1352 lock: *mut crate::pthread_rwlock_t,
1353 attr: *const crate::pthread_rwlockattr_t,
1354 ) -> c_int;
1355 #[cfg_attr(
1356 all(target_os = "macos", target_arch = "x86"),
1357 link_name = "pthread_rwlock_destroy$UNIX2003"
1358 )]
1359 pub fn pthread_rwlock_destroy(lock: *mut crate::pthread_rwlock_t) -> c_int;
1360 #[cfg_attr(
1361 all(target_os = "macos", target_arch = "x86"),
1362 link_name = "pthread_rwlock_rdlock$UNIX2003"
1363 )]
1364 pub fn pthread_rwlock_rdlock(lock: *mut crate::pthread_rwlock_t) -> c_int;
1365 #[cfg_attr(
1366 all(target_os = "macos", target_arch = "x86"),
1367 link_name = "pthread_rwlock_tryrdlock$UNIX2003"
1368 )]
1369 pub fn pthread_rwlock_tryrdlock(lock: *mut crate::pthread_rwlock_t) -> c_int;
1370 #[cfg_attr(
1371 all(target_os = "macos", target_arch = "x86"),
1372 link_name = "pthread_rwlock_wrlock$UNIX2003"
1373 )]
1374 pub fn pthread_rwlock_wrlock(lock: *mut crate::pthread_rwlock_t) -> c_int;
1375 #[cfg_attr(
1376 all(target_os = "macos", target_arch = "x86"),
1377 link_name = "pthread_rwlock_trywrlock$UNIX2003"
1378 )]
1379 pub fn pthread_rwlock_trywrlock(lock: *mut crate::pthread_rwlock_t) -> c_int;
1380 #[cfg_attr(
1381 all(target_os = "macos", target_arch = "x86"),
1382 link_name = "pthread_rwlock_unlock$UNIX2003"
1383 )]
1384 pub fn pthread_rwlock_unlock(lock: *mut crate::pthread_rwlock_t) -> c_int;
1385 pub fn pthread_rwlockattr_init(attr: *mut crate::pthread_rwlockattr_t) -> c_int;
1386 pub fn pthread_rwlockattr_destroy(attr: *mut crate::pthread_rwlockattr_t) -> c_int;
1387
1388 #[cfg_attr(
1389 any(target_os = "illumos", target_os = "solaris"),
1390 link_name = "__xnet_getsockopt"
1391 )]
1392 #[cfg_attr(target_os = "espidf", link_name = "lwip_getsockopt")]
1393 #[cfg_attr(gnu_time_bits64, link_name = "__getsockopt64")]
1394 pub fn getsockopt(
1395 sockfd: c_int,
1396 level: c_int,
1397 optname: c_int,
1398 optval: *mut c_void,
1399 optlen: *mut crate::socklen_t,
1400 ) -> c_int;
1401 pub fn raise(signum: c_int) -> c_int;
1402
1403 #[cfg_attr(target_os = "netbsd", link_name = "__utimes50")]
1404 #[cfg_attr(gnu_time_bits64, link_name = "__utimes64")]
1405 #[cfg_attr(musl32_time64, link_name = "__utimes_time64")]
1406 pub fn utimes(filename: *const c_char, times: *const crate::timeval) -> c_int;
1407 pub fn dlopen(filename: *const c_char, flag: c_int) -> *mut c_void;
1408 pub fn dlerror() -> *mut c_char;
1409 #[cfg_attr(musl32_time64, link_name = "__dlsym_time64")]
1410 pub fn dlsym(handle: *mut c_void, symbol: *const c_char) -> *mut c_void;
1411 pub fn dlclose(handle: *mut c_void) -> c_int;
1412
1413 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
1414 #[cfg_attr(
1415 any(target_os = "illumos", target_os = "solaris"),
1416 link_name = "__xnet_getaddrinfo"
1417 )]
1418 #[cfg_attr(target_os = "espidf", link_name = "lwip_getaddrinfo")]
1419 pub fn getaddrinfo(
1420 node: *const c_char,
1421 service: *const c_char,
1422 hints: *const addrinfo,
1423 res: *mut *mut addrinfo,
1424 ) -> c_int;
1425 #[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
1426 #[cfg_attr(target_os = "espidf", link_name = "lwip_freeaddrinfo")]
1427 pub fn freeaddrinfo(res: *mut addrinfo);
1428 pub fn hstrerror(errcode: c_int) -> *const c_char;
1429 pub fn gai_strerror(errcode: c_int) -> *const c_char;
1430 #[cfg_attr(
1431 any(
1432 all(
1433 target_os = "linux",
1434 not(any(target_env = "musl", target_env = "ohos"))
1435 ),
1436 target_os = "freebsd",
1437 target_os = "cygwin",
1438 target_os = "dragonfly",
1439 target_os = "haiku"
1440 ),
1441 link_name = "__res_init"
1442 )]
1443 #[cfg_attr(
1444 any(
1445 target_os = "macos",
1446 target_os = "ios",
1447 target_os = "tvos",
1448 target_os = "watchos",
1449 target_os = "visionos"
1450 ),
1451 link_name = "res_9_init"
1452 )]
1453 #[cfg_attr(target_os = "aix", link_name = "_res_init")]
1454 #[cfg(not(target_os = "l4re"))]
1455 pub fn res_init() -> c_int;
1456
1457 #[cfg_attr(target_os = "netbsd", link_name = "__gmtime_r50")]
1458 #[cfg_attr(gnu_time_bits64, link_name = "__gmtime64_r")]
1459 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1460 #[cfg_attr(musl32_time64, link_name = "__gmtime64_r")]
1461 pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
1462 #[cfg_attr(target_os = "netbsd", link_name = "__localtime_r50")]
1463 #[cfg_attr(gnu_time_bits64, link_name = "__localtime64_r")]
1464 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1465 #[cfg_attr(musl32_time64, link_name = "__localtime64_r")]
1466 pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
1467 #[cfg_attr(
1468 all(target_os = "macos", target_arch = "x86"),
1469 link_name = "mktime$UNIX2003"
1470 )]
1471 #[cfg_attr(target_os = "netbsd", link_name = "__mktime50")]
1472 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__mktime64")]
1473 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1474 pub fn mktime(tm: *mut tm) -> time_t;
1475 #[cfg_attr(target_os = "netbsd", link_name = "__time50")]
1476 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__time64")]
1477 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1478 pub fn time(time: *mut time_t) -> time_t;
1479 #[cfg_attr(target_os = "netbsd", link_name = "__gmtime50")]
1480 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__gmtime64")]
1481 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1482 pub fn gmtime(time_p: *const time_t) -> *mut tm;
1483 #[cfg_attr(target_os = "netbsd", link_name = "__locatime50")]
1484 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__localtime64")]
1485 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1486 pub fn localtime(time_p: *const time_t) -> *mut tm;
1487 #[cfg_attr(target_os = "netbsd", link_name = "__difftime50")]
1488 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__difftime64")]
1489 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1490 pub fn difftime(time1: time_t, time0: time_t) -> c_double;
1491 #[cfg(not(target_os = "aix"))]
1492 #[cfg_attr(target_os = "netbsd", link_name = "__timegm50")]
1493 #[cfg_attr(gnu_time_bits64, link_name = "__timegm64")]
1494 #[cfg_attr(not(musl32_time64), allow(deprecated))]
1495 #[cfg_attr(musl32_time64, link_name = "__timegm_time64")]
1496 pub fn timegm(tm: *mut crate::tm) -> time_t;
1497
1498 #[cfg_attr(target_os = "netbsd", link_name = "__mknod50")]
1499 #[cfg_attr(
1500 all(target_os = "freebsd", any(freebsd11, freebsd10)),
1501 link_name = "mknod@FBSD_1.0"
1502 )]
1503 pub fn mknod(pathname: *const c_char, mode: mode_t, dev: crate::dev_t) -> c_int;
1504 #[cfg(not(target_os = "espidf"))]
1505 pub fn gethostname(name: *mut c_char, len: size_t) -> c_int;
1506 pub fn endservent();
1507 pub fn getservbyname(name: *const c_char, proto: *const c_char) -> *mut servent;
1508 pub fn getservbyport(port: c_int, proto: *const c_char) -> *mut servent;
1509 pub fn getservent() -> *mut servent;
1510 pub fn setservent(stayopen: c_int);
1511 pub fn getprotobyname(name: *const c_char) -> *mut protoent;
1512 pub fn getprotobynumber(proto: c_int) -> *mut protoent;
1513 pub fn chroot(name: *const c_char) -> c_int;
1514 #[cfg(target_os = "cygwin")]
1515 pub fn usleep(secs: useconds_t) -> c_int;
1516 #[cfg_attr(
1517 all(target_os = "macos", target_arch = "x86"),
1518 link_name = "usleep$UNIX2003"
1519 )]
1520 #[cfg(not(target_os = "cygwin"))]
1521 pub fn usleep(secs: c_uint) -> c_int;
1522 #[cfg_attr(
1523 all(target_os = "macos", target_arch = "x86"),
1524 link_name = "send$UNIX2003"
1525 )]
1526 #[cfg_attr(target_os = "espidf", link_name = "lwip_send")]
1527 pub fn send(socket: c_int, buf: *const c_void, len: size_t, flags: c_int) -> ssize_t;
1528 #[cfg_attr(
1529 all(target_os = "macos", target_arch = "x86"),
1530 link_name = "recv$UNIX2003"
1531 )]
1532 #[cfg_attr(target_os = "espidf", link_name = "lwip_recv")]
1533 pub fn recv(socket: c_int, buf: *mut c_void, len: size_t, flags: c_int) -> ssize_t;
1534 #[cfg_attr(
1535 all(target_os = "macos", target_arch = "x86"),
1536 link_name = "putenv$UNIX2003"
1537 )]
1538 #[cfg_attr(target_os = "netbsd", link_name = "__putenv50")]
1539 pub fn putenv(string: *mut c_char) -> c_int;
1540 #[cfg_attr(
1541 all(target_os = "macos", target_arch = "x86"),
1542 link_name = "poll$UNIX2003"
1543 )]
1544 pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: c_int) -> c_int;
1545 #[cfg_attr(
1546 all(target_os = "macos", target_arch = "x86_64"),
1547 link_name = "select$1050"
1548 )]
1549 #[cfg_attr(
1550 all(target_os = "macos", target_arch = "x86"),
1551 link_name = "select$UNIX2003"
1552 )]
1553 #[cfg_attr(target_os = "netbsd", link_name = "__select50")]
1554 #[cfg_attr(target_os = "aix", link_name = "__fd_select")]
1555 #[cfg_attr(gnu_time_bits64, link_name = "__select64")]
1556 #[cfg_attr(musl32_time64, link_name = "__select_time64")]
1557 pub fn select(
1558 nfds: c_int,
1559 readfds: *mut fd_set,
1560 writefds: *mut fd_set,
1561 errorfds: *mut fd_set,
1562 timeout: *mut timeval,
1563 ) -> c_int;
1564 #[cfg_attr(target_os = "netbsd", link_name = "__setlocale50")]
1565 pub fn setlocale(category: c_int, locale: *const c_char) -> *mut c_char;
1566 pub fn localeconv() -> *mut lconv;
1567
1568 #[cfg_attr(
1569 all(target_os = "macos", target_arch = "x86"),
1570 link_name = "sem_wait$UNIX2003"
1571 )]
1572 pub fn sem_wait(sem: *mut sem_t) -> c_int;
1573 pub fn sem_trywait(sem: *mut sem_t) -> c_int;
1574 pub fn sem_post(sem: *mut sem_t) -> c_int;
1575 #[cfg_attr(gnu_file_offset_bits64, link_name = "statvfs64")]
1576 pub fn statvfs(path: *const c_char, buf: *mut crate::statvfs) -> c_int;
1577 #[cfg_attr(gnu_file_offset_bits64, link_name = "fstatvfs64")]
1578 pub fn fstatvfs(fd: c_int, buf: *mut crate::statvfs) -> c_int;
1579
1580 #[cfg_attr(target_os = "netbsd", link_name = "__sigemptyset14")]
1581 pub fn sigemptyset(set: *mut sigset_t) -> c_int;
1582 #[cfg_attr(target_os = "netbsd", link_name = "__sigaddset14")]
1583 pub fn sigaddset(set: *mut sigset_t, signum: c_int) -> c_int;
1584 #[cfg_attr(target_os = "netbsd", link_name = "__sigfillset14")]
1585 pub fn sigfillset(set: *mut sigset_t) -> c_int;
1586 #[cfg_attr(target_os = "netbsd", link_name = "__sigdelset14")]
1587 pub fn sigdelset(set: *mut sigset_t, signum: c_int) -> c_int;
1588 #[cfg_attr(target_os = "netbsd", link_name = "__sigismember14")]
1589 pub fn sigismember(set: *const sigset_t, signum: c_int) -> c_int;
1590
1591 #[cfg_attr(target_os = "netbsd", link_name = "__sigprocmask14")]
1592 pub fn sigprocmask(how: c_int, set: *const sigset_t, oldset: *mut sigset_t) -> c_int;
1593 #[cfg_attr(target_os = "netbsd", link_name = "__sigpending14")]
1594 pub fn sigpending(set: *mut sigset_t) -> c_int;
1595
1596 #[cfg_attr(target_os = "solaris", link_name = "__sysconf_xpg7")]
1597 pub fn sysconf(name: c_int) -> c_long;
1598
1599 pub fn mkfifo(path: *const c_char, mode: mode_t) -> c_int;
1600
1601 #[cfg_attr(gnu_file_offset_bits64, link_name = "fseeko64")]
1602 pub fn fseeko(stream: *mut crate::FILE, offset: off_t, whence: c_int) -> c_int;
1603 #[cfg_attr(gnu_file_offset_bits64, link_name = "ftello64")]
1604 pub fn ftello(stream: *mut crate::FILE) -> off_t;
1605 #[cfg_attr(
1606 all(target_os = "macos", target_arch = "x86"),
1607 link_name = "tcdrain$UNIX2003"
1608 )]
1609 pub fn tcdrain(fd: c_int) -> c_int;
1610 #[cfg_attr(
1611 all(target_os = "linux", target_env = "gnu", target_arch = "arm"),
1612 link_name = "cfgetispeed@GLIBC_2.4"
1613 )]
1614 #[cfg_attr(
1615 all(target_os = "linux", target_env = "gnu", target_arch = "csky"),
1616 link_name = "cfgetispeed@GLIBC_2.29"
1617 )]
1618 #[cfg_attr(
1619 all(target_os = "linux", target_env = "gnu", target_arch = "m68k"),
1620 link_name = "cfgetispeed@GLIBC_2.0"
1621 )]
1622 #[cfg_attr(
1623 all(
1624 target_os = "linux",
1625 target_env = "gnu",
1626 any(target_arch = "mips", target_arch = "mips32r6")
1627 ),
1628 link_name = "cfgetispeed@GLIBC_2.0"
1629 )]
1630 #[cfg_attr(
1631 all(target_os = "linux", target_env = "gnu", target_arch = "powerpc"),
1632 link_name = "cfgetispeed@GLIBC_2.0"
1633 )]
1634 #[cfg_attr(
1635 all(target_os = "linux", target_env = "gnu", target_arch = "riscv32"),
1636 link_name = "cfgetispeed@GLIBC_2.33"
1637 )]
1638 #[cfg_attr(
1639 all(target_os = "linux", target_env = "gnu", target_arch = "sparc"),
1640 link_name = "cfgetispeed@GLIBC_2.0"
1641 )]
1642 #[cfg_attr(
1643 all(target_os = "linux", target_env = "gnu", target_arch = "x86"),
1644 link_name = "cfgetispeed@GLIBC_2.0"
1645 )]
1646 #[cfg_attr(
1647 all(target_os = "linux", target_env = "gnu", target_arch = "aarch64"),
1648 link_name = "cfgetispeed@GLIBC_2.17"
1649 )]
1650 #[cfg_attr(
1651 all(target_os = "linux", target_env = "gnu", target_arch = "loongarch64"),
1652 link_name = "cfgetispeed@GLIBC_2.36"
1653 )]
1654 #[cfg_attr(
1655 all(
1656 target_os = "linux",
1657 target_env = "gnu",
1658 any(target_arch = "mips64", target_arch = "mips64r6")
1659 ),
1660 link_name = "cfgetispeed@GLIBC_2.0"
1661 )]
1662 #[cfg_attr(
1663 all(
1664 target_os = "linux",
1665 target_env = "gnu",
1666 target_arch = "powerpc64",
1667 target_endian = "big"
1668 ),
1669 link_name = "cfgetispeed@GLIBC_2.3"
1670 )]
1671 #[cfg_attr(
1672 all(
1673 target_os = "linux",
1674 target_env = "gnu",
1675 target_arch = "powerpc64",
1676 target_endian = "little"
1677 ),
1678 link_name = "cfgetispeed@GLIBC_2.17"
1679 )]
1680 #[cfg_attr(
1681 all(target_os = "linux", target_env = "gnu", target_arch = "riscv64"),
1682 link_name = "cfgetispeed@GLIBC_2.27"
1683 )]
1684 #[cfg_attr(
1685 all(target_os = "linux", target_env = "gnu", target_arch = "s390x"),
1686 link_name = "cfgetispeed@GLIBC_2.2"
1687 )]
1688 #[cfg_attr(
1689 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
1690 link_name = "cfgetispeed@GLIBC_2.2"
1691 )]
1692 #[cfg_attr(
1693 all(
1694 target_os = "linux",
1695 target_env = "gnu",
1696 target_arch = "x86_64",
1697 target_pointer_width = "64"
1698 ),
1699 link_name = "cfgetispeed@GLIBC_2.2.5"
1700 )]
1701 #[cfg_attr(
1702 all(
1703 target_os = "linux",
1704 target_env = "gnu",
1705 target_arch = "x86_64",
1706 target_pointer_width = "32"
1707 ),
1708 link_name = "cfgetispeed@GLIBC_2.16"
1709 )]
1710 pub fn cfgetispeed(termios: *const crate::termios) -> crate::speed_t;
1711 #[cfg_attr(
1712 all(target_os = "linux", target_env = "gnu", target_arch = "arm"),
1713 link_name = "cfgetospeed@GLIBC_2.4"
1714 )]
1715 #[cfg_attr(
1716 all(target_os = "linux", target_env = "gnu", target_arch = "csky"),
1717 link_name = "cfgetospeed@GLIBC_2.29"
1718 )]
1719 #[cfg_attr(
1720 all(target_os = "linux", target_env = "gnu", target_arch = "m68k"),
1721 link_name = "cfgetospeed@GLIBC_2.0"
1722 )]
1723 #[cfg_attr(
1724 all(
1725 target_os = "linux",
1726 target_env = "gnu",
1727 any(target_arch = "mips", target_arch = "mips32r6")
1728 ),
1729 link_name = "cfgetospeed@GLIBC_2.0"
1730 )]
1731 #[cfg_attr(
1732 all(target_os = "linux", target_env = "gnu", target_arch = "powerpc"),
1733 link_name = "cfgetospeed@GLIBC_2.0"
1734 )]
1735 #[cfg_attr(
1736 all(target_os = "linux", target_env = "gnu", target_arch = "riscv32"),
1737 link_name = "cfgetospeed@GLIBC_2.33"
1738 )]
1739 #[cfg_attr(
1740 all(target_os = "linux", target_env = "gnu", target_arch = "sparc"),
1741 link_name = "cfgetospeed@GLIBC_2.0"
1742 )]
1743 #[cfg_attr(
1744 all(target_os = "linux", target_env = "gnu", target_arch = "x86"),
1745 link_name = "cfgetospeed@GLIBC_2.0"
1746 )]
1747 #[cfg_attr(
1748 all(target_os = "linux", target_env = "gnu", target_arch = "aarch64"),
1749 link_name = "cfgetospeed@GLIBC_2.17"
1750 )]
1751 #[cfg_attr(
1752 all(target_os = "linux", target_env = "gnu", target_arch = "loongarch64"),
1753 link_name = "cfgetospeed@GLIBC_2.36"
1754 )]
1755 #[cfg_attr(
1756 all(
1757 target_os = "linux",
1758 target_env = "gnu",
1759 any(target_arch = "mips64", target_arch = "mips64r6")
1760 ),
1761 link_name = "cfgetospeed@GLIBC_2.0"
1762 )]
1763 #[cfg_attr(
1764 all(
1765 target_os = "linux",
1766 target_env = "gnu",
1767 target_arch = "powerpc64",
1768 target_endian = "big"
1769 ),
1770 link_name = "cfgetospeed@GLIBC_2.3"
1771 )]
1772 #[cfg_attr(
1773 all(
1774 target_os = "linux",
1775 target_env = "gnu",
1776 target_arch = "powerpc64",
1777 target_endian = "little"
1778 ),
1779 link_name = "cfgetospeed@GLIBC_2.17"
1780 )]
1781 #[cfg_attr(
1782 all(target_os = "linux", target_env = "gnu", target_arch = "riscv64"),
1783 link_name = "cfgetospeed@GLIBC_2.27"
1784 )]
1785 #[cfg_attr(
1786 all(target_os = "linux", target_env = "gnu", target_arch = "s390x"),
1787 link_name = "cfgetospeed@GLIBC_2.2"
1788 )]
1789 #[cfg_attr(
1790 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
1791 link_name = "cfgetospeed@GLIBC_2.2"
1792 )]
1793 #[cfg_attr(
1794 all(
1795 target_os = "linux",
1796 target_env = "gnu",
1797 target_arch = "x86_64",
1798 target_pointer_width = "64"
1799 ),
1800 link_name = "cfgetospeed@GLIBC_2.2.5"
1801 )]
1802 #[cfg_attr(
1803 all(
1804 target_os = "linux",
1805 target_env = "gnu",
1806 target_arch = "x86_64",
1807 target_pointer_width = "32"
1808 ),
1809 link_name = "cfgetospeed@GLIBC_2.16"
1810 )]
1811 pub fn cfgetospeed(termios: *const crate::termios) -> crate::speed_t;
1812 #[cfg_attr(
1813 all(target_os = "linux", target_env = "gnu", target_arch = "arm"),
1814 link_name = "cfsetispeed@GLIBC_2.4"
1815 )]
1816 #[cfg_attr(
1817 all(target_os = "linux", target_env = "gnu", target_arch = "csky"),
1818 link_name = "cfsetispeed@GLIBC_2.29"
1819 )]
1820 #[cfg_attr(
1821 all(target_os = "linux", target_env = "gnu", target_arch = "m68k"),
1822 link_name = "cfsetispeed@GLIBC_2.0"
1823 )]
1824 #[cfg_attr(
1825 all(
1826 target_os = "linux",
1827 target_env = "gnu",
1828 any(target_arch = "mips", target_arch = "mips32r6")
1829 ),
1830 link_name = "cfsetispeed@GLIBC_2.0"
1831 )]
1832 #[cfg_attr(
1833 all(target_os = "linux", target_env = "gnu", target_arch = "powerpc"),
1834 link_name = "cfsetispeed@GLIBC_2.0"
1835 )]
1836 #[cfg_attr(
1837 all(target_os = "linux", target_env = "gnu", target_arch = "riscv32"),
1838 link_name = "cfsetispeed@GLIBC_2.33"
1839 )]
1840 #[cfg_attr(
1841 all(target_os = "linux", target_env = "gnu", target_arch = "sparc"),
1842 link_name = "cfsetispeed@GLIBC_2.0"
1843 )]
1844 #[cfg_attr(
1845 all(target_os = "linux", target_env = "gnu", target_arch = "x86"),
1846 link_name = "cfsetispeed@GLIBC_2.0"
1847 )]
1848 #[cfg_attr(
1849 all(target_os = "linux", target_env = "gnu", target_arch = "aarch64"),
1850 link_name = "cfsetispeed@GLIBC_2.17"
1851 )]
1852 #[cfg_attr(
1853 all(target_os = "linux", target_env = "gnu", target_arch = "loongarch64"),
1854 link_name = "cfsetispeed@GLIBC_2.36"
1855 )]
1856 #[cfg_attr(
1857 all(
1858 target_os = "linux",
1859 target_env = "gnu",
1860 any(target_arch = "mips64", target_arch = "mips64r6")
1861 ),
1862 link_name = "cfsetispeed@GLIBC_2.0"
1863 )]
1864 #[cfg_attr(
1865 all(
1866 target_os = "linux",
1867 target_env = "gnu",
1868 target_arch = "powerpc64",
1869 target_endian = "big"
1870 ),
1871 link_name = "cfsetispeed@GLIBC_2.3"
1872 )]
1873 #[cfg_attr(
1874 all(
1875 target_os = "linux",
1876 target_env = "gnu",
1877 target_arch = "powerpc64",
1878 target_endian = "little"
1879 ),
1880 link_name = "cfsetispeed@GLIBC_2.17"
1881 )]
1882 #[cfg_attr(
1883 all(target_os = "linux", target_env = "gnu", target_arch = "riscv64"),
1884 link_name = "cfsetispeed@GLIBC_2.27"
1885 )]
1886 #[cfg_attr(
1887 all(target_os = "linux", target_env = "gnu", target_arch = "s390x"),
1888 link_name = "cfsetispeed@GLIBC_2.2"
1889 )]
1890 #[cfg_attr(
1891 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
1892 link_name = "cfsetispeed@GLIBC_2.2"
1893 )]
1894 #[cfg_attr(
1895 all(
1896 target_os = "linux",
1897 target_env = "gnu",
1898 target_arch = "x86_64",
1899 target_pointer_width = "64"
1900 ),
1901 link_name = "cfsetispeed@GLIBC_2.2.5"
1902 )]
1903 #[cfg_attr(
1904 all(
1905 target_os = "linux",
1906 target_env = "gnu",
1907 target_arch = "x86_64",
1908 target_pointer_width = "32"
1909 ),
1910 link_name = "cfsetispeed@GLIBC_2.16"
1911 )]
1912 pub fn cfsetispeed(termios: *mut crate::termios, speed: crate::speed_t) -> c_int;
1913 #[cfg_attr(
1914 all(target_os = "linux", target_env = "gnu", target_arch = "arm"),
1915 link_name = "cfsetospeed@GLIBC_2.4"
1916 )]
1917 #[cfg_attr(
1918 all(target_os = "linux", target_env = "gnu", target_arch = "csky"),
1919 link_name = "cfsetospeed@GLIBC_2.29"
1920 )]
1921 #[cfg_attr(
1922 all(target_os = "linux", target_env = "gnu", target_arch = "m68k"),
1923 link_name = "cfsetospeed@GLIBC_2.0"
1924 )]
1925 #[cfg_attr(
1926 all(
1927 target_os = "linux",
1928 target_env = "gnu",
1929 any(target_arch = "mips", target_arch = "mips32r6")
1930 ),
1931 link_name = "cfsetospeed@GLIBC_2.0"
1932 )]
1933 #[cfg_attr(
1934 all(target_os = "linux", target_env = "gnu", target_arch = "powerpc"),
1935 link_name = "cfsetospeed@GLIBC_2.0"
1936 )]
1937 #[cfg_attr(
1938 all(target_os = "linux", target_env = "gnu", target_arch = "riscv32"),
1939 link_name = "cfsetospeed@GLIBC_2.33"
1940 )]
1941 #[cfg_attr(
1942 all(target_os = "linux", target_env = "gnu", target_arch = "sparc"),
1943 link_name = "cfsetospeed@GLIBC_2.0"
1944 )]
1945 #[cfg_attr(
1946 all(target_os = "linux", target_env = "gnu", target_arch = "x86"),
1947 link_name = "cfsetospeed@GLIBC_2.0"
1948 )]
1949 #[cfg_attr(
1950 all(target_os = "linux", target_env = "gnu", target_arch = "aarch64"),
1951 link_name = "cfsetospeed@GLIBC_2.17"
1952 )]
1953 #[cfg_attr(
1954 all(target_os = "linux", target_env = "gnu", target_arch = "loongarch64"),
1955 link_name = "cfsetospeed@GLIBC_2.36"
1956 )]
1957 #[cfg_attr(
1958 all(
1959 target_os = "linux",
1960 target_env = "gnu",
1961 any(target_arch = "mips64", target_arch = "mips64r6")
1962 ),
1963 link_name = "cfsetospeed@GLIBC_2.0"
1964 )]
1965 #[cfg_attr(
1966 all(
1967 target_os = "linux",
1968 target_env = "gnu",
1969 target_arch = "powerpc64",
1970 target_endian = "big"
1971 ),
1972 link_name = "cfsetospeed@GLIBC_2.3"
1973 )]
1974 #[cfg_attr(
1975 all(
1976 target_os = "linux",
1977 target_env = "gnu",
1978 target_arch = "powerpc64",
1979 target_endian = "little"
1980 ),
1981 link_name = "cfsetospeed@GLIBC_2.17"
1982 )]
1983 #[cfg_attr(
1984 all(target_os = "linux", target_env = "gnu", target_arch = "riscv64"),
1985 link_name = "cfsetospeed@GLIBC_2.27"
1986 )]
1987 #[cfg_attr(
1988 all(target_os = "linux", target_env = "gnu", target_arch = "s390x"),
1989 link_name = "cfsetospeed@GLIBC_2.2"
1990 )]
1991 #[cfg_attr(
1992 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
1993 link_name = "cfsetospeed@GLIBC_2.2"
1994 )]
1995 #[cfg_attr(
1996 all(
1997 target_os = "linux",
1998 target_env = "gnu",
1999 target_arch = "x86_64",
2000 target_pointer_width = "64"
2001 ),
2002 link_name = "cfsetospeed@GLIBC_2.2.5"
2003 )]
2004 #[cfg_attr(
2005 all(
2006 target_os = "linux",
2007 target_env = "gnu",
2008 target_arch = "x86_64",
2009 target_pointer_width = "32"
2010 ),
2011 link_name = "cfsetospeed@GLIBC_2.16"
2012 )]
2013 pub fn cfsetospeed(termios: *mut crate::termios, speed: crate::speed_t) -> c_int;
2014 #[cfg_attr(
2015 all(
2016 target_os = "linux",
2017 target_env = "gnu",
2018 any(
2019 target_arch = "mips",
2020 target_arch = "mips32r6",
2021 target_arch = "mips64",
2022 target_arch = "mips64r6",
2023 target_arch = "sparc"
2024 ),
2025 ),
2026 link_name = "tcgetattr@GLIBC_2.0"
2027 )]
2028 #[cfg_attr(
2029 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
2030 link_name = "tcgetattr@GLIBC_2.2"
2031 )]
2032 pub fn tcgetattr(fd: c_int, termios: *mut crate::termios) -> c_int;
2033 #[cfg_attr(
2034 all(
2035 target_os = "linux",
2036 target_env = "gnu",
2037 any(
2038 target_arch = "mips",
2039 target_arch = "mips32r6",
2040 target_arch = "mips64",
2041 target_arch = "mips64r6",
2042 target_arch = "sparc"
2043 ),
2044 ),
2045 link_name = "tcsetattr@GLIBC_2.0"
2046 )]
2047 #[cfg_attr(
2048 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
2049 link_name = "tcsetattr@GLIBC_2.2"
2050 )]
2051 pub fn tcsetattr(fd: c_int, optional_actions: c_int, termios: *const crate::termios) -> c_int;
2052 pub fn tcflow(fd: c_int, action: c_int) -> c_int;
2053 pub fn tcflush(fd: c_int, action: c_int) -> c_int;
2054 pub fn tcgetsid(fd: c_int) -> crate::pid_t;
2055 pub fn tcsendbreak(fd: c_int, duration: c_int) -> c_int;
2056 #[cfg_attr(gnu_file_offset_bits64, link_name = "mkstemp64")]
2057 pub fn mkstemp(template: *mut c_char) -> c_int;
2058 pub fn mkdtemp(template: *mut c_char) -> *mut c_char;
2059
2060 pub fn tmpnam(ptr: *mut c_char) -> *mut c_char;
2061
2062 pub fn openlog(ident: *const c_char, logopt: c_int, facility: c_int);
2063 pub fn closelog();
2064 pub fn setlogmask(maskpri: c_int) -> c_int;
2065 #[cfg_attr(target_os = "macos", link_name = "syslog$DARWIN_EXTSN")]
2066 pub fn syslog(priority: c_int, message: *const c_char, ...);
2067 #[cfg_attr(
2068 all(target_os = "macos", target_arch = "x86"),
2069 link_name = "nice$UNIX2003"
2070 )]
2071 pub fn nice(incr: c_int) -> c_int;
2072
2073 #[cfg(not(target_os = "l4re"))]
2074 pub fn grantpt(fd: c_int) -> c_int;
2075 #[cfg(not(target_os = "l4re"))]
2076 pub fn posix_openpt(flags: c_int) -> c_int;
2077 #[cfg(not(target_os = "l4re"))]
2078 pub fn ptsname(fd: c_int) -> *mut c_char;
2079 #[cfg(not(target_os = "l4re"))]
2080 pub fn unlockpt(fd: c_int) -> c_int;
2081
2082 #[cfg(not(target_os = "aix"))]
2083 pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
2084 pub fn getline(lineptr: *mut *mut c_char, n: *mut size_t, stream: *mut FILE) -> ssize_t;
2085
2086 #[cfg_attr(gnu_file_offset_bits64, link_name = "lockf64")]
2087 pub fn lockf(fd: c_int, cmd: c_int, len: off_t) -> c_int;
2088
2089}
2090
2091safe_f! {
2092 pub const fn htonl(hostlong: u32) -> u32 {
2095 u32::to_be(hostlong)
2096 }
2097 pub const fn htons(hostshort: u16) -> u16 {
2098 u16::to_be(hostshort)
2099 }
2100 pub const fn ntohl(netlong: u32) -> u32 {
2101 u32::from_be(netlong)
2102 }
2103 pub const fn ntohs(netshort: u16) -> u16 {
2104 u16::from_be(netshort)
2105 }
2106}
2107
2108cfg_if! {
2109 if #[cfg(not(any(
2110 target_os = "emscripten",
2111 target_os = "android",
2112 target_os = "haiku",
2113 target_os = "nto",
2114 target_os = "solaris",
2115 target_os = "cygwin",
2116 target_os = "aix",
2117 target_os = "l4re",
2118 )))] {
2119 extern "C" {
2120 #[cfg_attr(target_os = "netbsd", link_name = "__adjtime50")]
2121 #[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__adjtime64")]
2122 pub fn adjtime(delta: *const timeval, olddelta: *mut timeval) -> c_int;
2123 }
2124 } else if #[cfg(target_os = "solaris")] {
2125 extern "C" {
2126 pub fn adjtime(delta: *mut timeval, olddelta: *mut timeval) -> c_int;
2127 }
2128 }
2129}
2130
2131cfg_if! {
2132 if #[cfg(not(any(
2133 target_os = "emscripten",
2134 target_os = "android",
2135 target_os = "nto"
2136 )))] {
2137 extern "C" {
2138 pub fn stpncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
2139 }
2140 }
2141}
2142
2143cfg_if! {
2144 if #[cfg(not(any(
2145 target_os = "dragonfly",
2146 target_os = "emscripten",
2147 target_os = "hurd",
2148 target_os = "macos",
2149 target_os = "openbsd",
2150 target_os = "l4re",
2151 )))] {
2152 extern "C" {
2153 pub fn sigqueue(pid: pid_t, sig: c_int, value: crate::sigval) -> c_int;
2154 }
2155 }
2156}
2157
2158cfg_if! {
2159 if #[cfg(not(target_os = "android"))] {
2160 extern "C" {
2161 #[cfg_attr(
2162 all(target_os = "macos", target_arch = "x86"),
2163 link_name = "confstr$UNIX2003"
2164 )]
2165 #[cfg_attr(target_os = "solaris", link_name = "__confstr_xpg7")]
2166 pub fn confstr(name: c_int, buf: *mut c_char, len: size_t) -> size_t;
2167 }
2168 }
2169}
2170
2171cfg_if! {
2172 if #[cfg(not(target_os = "aix"))] {
2173 extern "C" {
2174 pub fn dladdr(addr: *const c_void, info: *mut Dl_info) -> c_int;
2175 }
2176 }
2177}
2178
2179cfg_if! {
2180 if #[cfg(not(target_os = "solaris"))] {
2181 extern "C" {
2182 pub fn flock(fd: c_int, operation: c_int) -> c_int;
2183 }
2184 }
2185}
2186
2187cfg_if! {
2188 if #[cfg(not(any(target_env = "uclibc", target_os = "nto")))] {
2189 extern "C" {
2190 pub fn open_wmemstream(ptr: *mut *mut wchar_t, sizeloc: *mut size_t) -> *mut FILE;
2191 }
2192 }
2193}
2194
2195cfg_if! {
2196 if #[cfg(not(target_os = "redox"))] {
2197 extern "C" {
2198 pub fn getsid(pid: pid_t) -> pid_t;
2199 #[cfg_attr(
2200 all(target_os = "macos", target_arch = "x86"),
2201 link_name = "pause$UNIX2003"
2202 )]
2203 pub fn pause() -> c_int;
2204
2205 #[cfg(not(target_os = "l4re"))]
2206 pub fn mkdirat(dirfd: c_int, pathname: *const c_char, mode: mode_t) -> c_int;
2207 #[cfg_attr(gnu_file_offset_bits64, link_name = "openat64")]
2208 pub fn openat(dirfd: c_int, pathname: *const c_char, flags: c_int, ...) -> c_int;
2209
2210 #[cfg_attr(
2211 all(target_os = "macos", target_arch = "x86_64"),
2212 link_name = "fdopendir$INODE64"
2213 )]
2214 #[cfg_attr(
2215 all(target_os = "macos", target_arch = "x86"),
2216 link_name = "fdopendir$INODE64$UNIX2003"
2217 )]
2218 pub fn fdopendir(fd: c_int) -> *mut crate::DIR;
2219
2220 #[cfg_attr(
2221 all(target_os = "macos", not(target_arch = "aarch64")),
2222 link_name = "readdir_r$INODE64"
2223 )]
2224 #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
2225 #[cfg_attr(
2226 all(target_os = "freebsd", any(freebsd11, freebsd10)),
2227 link_name = "readdir_r@FBSD_1.0"
2228 )]
2229 #[cfg_attr(
2230 all(target_os = "freebsd", not(any(freebsd11, freebsd10))),
2231 link_name = "readdir_r@FBSD_1.5"
2232 )]
2233 #[allow(non_autolinks)] #[cfg_attr(gnu_file_offset_bits64, link_name = "readdir64_r")]
2241 pub fn readdir_r(
2242 dirp: *mut crate::DIR,
2243 entry: *mut crate::dirent,
2244 result: *mut *mut crate::dirent,
2245 ) -> c_int;
2246 }
2247 }
2248}
2249
2250cfg_if! {
2251 if #[cfg(target_os = "nto")] {
2252 extern "C" {
2253 pub fn readlinkat(
2254 dirfd: c_int,
2255 pathname: *const c_char,
2256 buf: *mut c_char,
2257 bufsiz: size_t,
2258 ) -> c_int;
2259 pub fn readlink(path: *const c_char, buf: *mut c_char, bufsz: size_t) -> c_int;
2260 pub fn pselect(
2261 nfds: c_int,
2262 readfds: *mut fd_set,
2263 writefds: *mut fd_set,
2264 errorfds: *mut fd_set,
2265 timeout: *mut timespec,
2266 sigmask: *const sigset_t,
2267 ) -> c_int;
2268 pub fn sigaction(signum: c_int, act: *const sigaction, oldact: *mut sigaction)
2269 -> c_int;
2270 }
2271 } else {
2272 extern "C" {
2273 #[cfg(not(target_os = "l4re"))]
2274 pub fn readlinkat(
2275 dirfd: c_int,
2276 pathname: *const c_char,
2277 buf: *mut c_char,
2278 bufsiz: size_t,
2279 ) -> ssize_t;
2280 #[cfg(not(target_os = "l4re"))]
2281 pub fn fmemopen(buf: *mut c_void, size: size_t, mode: *const c_char) -> *mut FILE;
2282 #[cfg(not(target_os = "l4re"))]
2283 pub fn open_memstream(ptr: *mut *mut c_char, sizeloc: *mut size_t) -> *mut FILE;
2284 pub fn atexit(cb: extern "C" fn()) -> c_int;
2285 #[cfg_attr(target_os = "netbsd", link_name = "__sigaction14")]
2286 pub fn sigaction(signum: c_int, act: *const sigaction, oldact: *mut sigaction)
2287 -> c_int;
2288 pub fn readlink(path: *const c_char, buf: *mut c_char, bufsz: size_t) -> ssize_t;
2289 #[cfg_attr(
2290 all(target_os = "macos", target_arch = "x86_64"),
2291 link_name = "pselect$1050"
2292 )]
2293 #[cfg_attr(
2294 all(target_os = "macos", target_arch = "x86"),
2295 link_name = "pselect$UNIX2003"
2296 )]
2297 #[cfg_attr(target_os = "netbsd", link_name = "__pselect50")]
2298 #[cfg_attr(gnu_time_bits64, link_name = "__pselect64")]
2299 #[cfg_attr(musl32_time64, link_name = "__pselect_time64")]
2300 pub fn pselect(
2301 nfds: c_int,
2302 readfds: *mut fd_set,
2303 writefds: *mut fd_set,
2304 errorfds: *mut fd_set,
2305 timeout: *const timespec,
2306 sigmask: *const sigset_t,
2307 ) -> c_int;
2308 }
2309 }
2310}
2311
2312cfg_if! {
2313 if #[cfg(any(target_os = "aix", target_os = "nto"))] {
2314 extern "C" {
2315 pub fn cfmakeraw(termios: *mut crate::termios) -> c_int;
2316 }
2317 } else if #[cfg(not(any(target_os = "solaris", target_os = "illumos",)))] {
2318 extern "C" {
2319 pub fn cfmakeraw(termios: *mut crate::termios);
2320 }
2321 }
2322}
2323
2324cfg_if! {
2325 if #[cfg(any(
2326 target_os = "aix",
2327 all(target_os = "nto", target_env = "nto80")
2328 ))] {
2329 extern "C" {
2330 pub fn cfsetspeed(termios: *mut crate::termios, speed: crate::speed_t) -> c_int;
2331 }
2332 } else if #[cfg(not(any(
2333 target_os = "solaris",
2334 target_os = "illumos",
2335 target_os = "nto"
2336 )))] {
2337 extern "C" {
2338 #[cfg(not(target_os = "l4re"))]
2339 #[cfg_attr(
2340 all(target_os = "linux", target_env = "gnu", target_arch = "arm"),
2341 link_name = "cfsetspeed@GLIBC_2.4"
2342 )]
2343 #[cfg_attr(
2344 all(target_os = "linux", target_env = "gnu", target_arch = "csky"),
2345 link_name = "cfsetspeed@GLIBC_2.29"
2346 )]
2347 #[cfg_attr(
2348 all(target_os = "linux", target_env = "gnu", target_arch = "m68k"),
2349 link_name = "cfsetspeed@GLIBC_2.0"
2350 )]
2351 #[cfg_attr(
2352 all(
2353 target_os = "linux",
2354 target_env = "gnu",
2355 any(target_arch = "mips", target_arch = "mips32r6")
2356 ),
2357 link_name = "cfsetspeed@GLIBC_2.0"
2358 )]
2359 #[cfg_attr(
2360 all(target_os = "linux", target_env = "gnu", target_arch = "powerpc"),
2361 link_name = "cfsetspeed@GLIBC_2.0"
2362 )]
2363 #[cfg_attr(
2364 all(target_os = "linux", target_env = "gnu", target_arch = "riscv32"),
2365 link_name = "cfsetspeed@GLIBC_2.33"
2366 )]
2367 #[cfg_attr(
2368 all(target_os = "linux", target_env = "gnu", target_arch = "sparc"),
2369 link_name = "cfsetspeed@GLIBC_2.0"
2370 )]
2371 #[cfg_attr(
2372 all(target_os = "linux", target_env = "gnu", target_arch = "x86"),
2373 link_name = "cfsetspeed@GLIBC_2.0"
2374 )]
2375 #[cfg_attr(
2376 all(target_os = "linux", target_env = "gnu", target_arch = "aarch64"),
2377 link_name = "cfsetspeed@GLIBC_2.17"
2378 )]
2379 #[cfg_attr(
2380 all(target_os = "linux", target_env = "gnu", target_arch = "loongarch64"),
2381 link_name = "cfsetspeed@GLIBC_2.36"
2382 )]
2383 #[cfg_attr(
2384 all(
2385 target_os = "linux",
2386 target_env = "gnu",
2387 any(target_arch = "mips64", target_arch = "mips64r6")
2388 ),
2389 link_name = "cfsetspeed@GLIBC_2.0"
2390 )]
2391 #[cfg_attr(
2392 all(
2393 target_os = "linux",
2394 target_env = "gnu",
2395 target_arch = "powerpc64",
2396 target_endian = "big"
2397 ),
2398 link_name = "cfsetspeed@GLIBC_2.3"
2399 )]
2400 #[cfg_attr(
2401 all(
2402 target_os = "linux",
2403 target_env = "gnu",
2404 target_arch = "powerpc64",
2405 target_endian = "little"
2406 ),
2407 link_name = "cfsetspeed@GLIBC_2.17"
2408 )]
2409 #[cfg_attr(
2410 all(target_os = "linux", target_env = "gnu", target_arch = "riscv64"),
2411 link_name = "cfsetspeed@GLIBC_2.27"
2412 )]
2413 #[cfg_attr(
2414 all(target_os = "linux", target_env = "gnu", target_arch = "s390x"),
2415 link_name = "cfsetspeed@GLIBC_2.2"
2416 )]
2417 #[cfg_attr(
2418 all(target_os = "linux", target_env = "gnu", target_arch = "sparc64"),
2419 link_name = "cfsetspeed@GLIBC_2.2"
2420 )]
2421 #[cfg_attr(
2422 all(
2423 target_os = "linux",
2424 target_env = "gnu",
2425 target_arch = "x86_64",
2426 target_pointer_width = "64"
2427 ),
2428 link_name = "cfsetspeed@GLIBC_2.2.5"
2429 )]
2430 #[cfg_attr(
2431 all(
2432 target_os = "linux",
2433 target_env = "gnu",
2434 target_arch = "x86_64",
2435 target_pointer_width = "32"
2436 ),
2437 link_name = "cfsetspeed@GLIBC_2.16"
2438 )]
2439 pub fn cfsetspeed(termios: *mut crate::termios, speed: crate::speed_t) -> c_int;
2440 }
2441 }
2442}
2443
2444extern "C" {
2445 pub fn fnmatch(pattern: *const c_char, name: *const c_char, flags: c_int) -> c_int;
2446}
2447
2448cfg_if! {
2449 if #[cfg(target_env = "newlib")] {
2450 mod newlib;
2451 pub use self::newlib::*;
2452 } else if #[cfg(any(
2453 target_os = "linux",
2454 target_os = "l4re",
2455 target_os = "android",
2456 target_os = "emscripten"
2457 ))] {
2458 mod linux_like;
2459 pub use self::linux_like::*;
2460 } else if #[cfg(any(
2461 target_os = "macos",
2462 target_os = "ios",
2463 target_os = "tvos",
2464 target_os = "watchos",
2465 target_os = "visionos",
2466 target_os = "freebsd",
2467 target_os = "dragonfly",
2468 target_os = "openbsd",
2469 target_os = "netbsd"
2470 ))] {
2471 mod bsd;
2472 pub use self::bsd::*;
2473 } else if #[cfg(any(target_os = "solaris", target_os = "illumos"))] {
2474 mod solarish;
2475 pub use self::solarish::*;
2476 } else if #[cfg(target_os = "haiku")] {
2477 mod haiku;
2478 pub use self::haiku::*;
2479 } else if #[cfg(target_os = "redox")] {
2480 mod redox;
2481 pub use self::redox::*;
2482 } else if #[cfg(target_os = "cygwin")] {
2483 mod cygwin;
2484 pub use self::cygwin::*;
2485 } else if #[cfg(target_os = "nto")] {
2486 mod nto;
2487 pub use self::nto::*;
2488 } else if #[cfg(target_os = "aix")] {
2489 mod aix;
2490 pub use self::aix::*;
2491 } else if #[cfg(target_os = "hurd")] {
2492 mod hurd;
2493 pub use self::hurd::*;
2494 } else if #[cfg(target_os = "nuttx")] {
2495 mod nuttx;
2496 pub use self::nuttx::*;
2497 } else {
2498 }
2500}