Lines Matching refs:libc
1 //! Safe wrappers around functions found in libc "unistd.h" header
26 use libc::{
264 /// write(libc::STDOUT_FILENO, "I'm a new child process\n".as_bytes()).ok();
265 /// unsafe { libc::_exit(0) };
294 let res = libc::fork();
309 Pid(unsafe { libc::getpid() })
319 Pid(unsafe { libc::getppid() }) // no error handling, according to man page: "These functions are always successful."
333 let res = unsafe { libc::setpgid(pid.into(), pgid.into()) };
338 let res = unsafe { libc::getpgid(pid.unwrap_or(Pid(0)).into()) };
346 Errno::result(unsafe { libc::setsid() }).map(Pid)
357 let res = unsafe { libc::getsid(pid.unwrap_or(Pid(0)).into()) };
371 let res = unsafe { libc::tcgetpgrp(fd) };
381 let res = unsafe { libc::tcsetpgrp(fd, pgrp.into()) };
395 Pid(unsafe { libc::getpgrp() })
411 Pid(unsafe { libc::syscall(libc::SYS_gettid) as pid_t })
429 let res = unsafe { libc::dup(oldfd) };
442 let res = unsafe { libc::dup2(oldfd, newfd) };
482 unsafe { libc::chdir(cstr.as_ptr()) }
497 let res = unsafe { libc::fchdir(dirfd) };
531 unsafe { libc::mkdir(cstr.as_ptr(), mode.bits() as mode_t) }
570 unsafe { libc::mkfifo(cstr.as_ptr(), mode.bits() as mode_t) }
592 libc::mkfifoat(at_rawfd(dirfd), cstr.as_ptr(), mode.bits() as mode_t)
604 /// directory. This is identical to `libc::symlink(path1, path2)`.
616 libc::symlinkat(
618 dirfd.unwrap_or(libc::AT_FDCWD),
672 if !libc::getcwd(ptr, buf.capacity()).is_null() {
698 fn chown_raw_ids(owner: Option<Uid>, group: Option<Gid>) -> (libc::uid_t, libc::gid_t) {
720 unsafe { libc::chown(cstr.as_ptr(), uid, gid) }
736 let res = unsafe { libc::fchown(fd, uid, gid) };
762 /// a call `libc::lchown(path, owner, group)`. That's why `lchown` is unimplemented in
783 libc::fchownat(at_rawfd(dirfd), cstr.as_ptr(), uid, gid,
784 atflag.bits() as libc::c_int)
812 libc::execv(path.as_ptr(), args_p.as_ptr())
837 libc::execve(path.as_ptr(), args_p.as_ptr(), env_p.as_ptr())
857 libc::execvp(filename.as_ptr(), args_p.as_ptr())
878 libc::execvpe(filename.as_ptr(), args_p.as_ptr(), env_p.as_ptr())
904 libc::fexecve(fd, args_p.as_ptr(), env_p.as_ptr())
928 libc::syscall(libc::SYS_execveat, dirfd, pathname.as_ptr(),
969 let res = unsafe { libc::daemon(nochdir as c_int, noclose as c_int) };
1002 let res = unsafe { libc::sethostname(ptr, len) };
1026 let res = unsafe { libc::gethostname(ptr, len) };
1064 let res = unsafe { libc::close(fd) };
1073 libc::read(fd, buf.as_mut_ptr() as *mut c_void, buf.len() as size_t)
1084 libc::write(fd, buf.as_ptr() as *const c_void, buf.len() as size_t)
1101 SeekSet = libc::SEEK_SET,
1103 SeekCur = libc::SEEK_CUR,
1105 SeekEnd = libc::SEEK_END,
1114 SeekData = libc::SEEK_DATA,
1125 SeekHole = libc::SEEK_HOLE
1132 let res = unsafe { libc::lseek(fd, offset, whence as i32) };
1138 pub fn lseek64(fd: RawFd, offset: libc::off64_t, whence: Whence) -> Result<libc::off64_t> {
1139 let res = unsafe { libc::lseek64(fd, offset, whence as i32) };
1141 Errno::result(res).map(|r| r as libc::off64_t)
1151 let res = unsafe { libc::pipe(fds.as_mut_ptr() as *mut c_int) };
1185 libc::pipe2(fds.as_mut_ptr() as *mut c_int, flags.bits())
1201 libc::truncate(cstr.as_ptr(), len)
1213 Errno::result(unsafe { libc::ftruncate(fd, len) }).map(drop)
1220 if libc::isatty(fd) == 1 {
1270 libc::linkat(
1275 atflag.bits() as libc::c_int
1290 libc::unlink(cstr.as_ptr())
1326 libc::unlinkat(at_rawfd(dirfd), cstr.as_ptr(), atflag.bits() as libc::c_int)
1337 unsafe { libc::chroot(cstr.as_ptr()) }
1354 unsafe { libc::sync() };
1363 let res = unsafe { libc::syncfs(fd) };
1373 let res = unsafe { libc::fsync(fd) };
1393 let res = unsafe { libc::fdatasync(fd) };
1409 Uid(unsafe { libc::getuid() })
1419 Uid(unsafe { libc::geteuid() })
1429 Gid(unsafe { libc::getgid() })
1439 Gid(unsafe { libc::getegid() })
1447 let res = unsafe { libc::seteuid(euid.into()) };
1457 let res = unsafe { libc::setegid(egid.into()) };
1467 let res = unsafe { libc::setuid(uid.into()) };
1477 let res = unsafe { libc::setgid(gid.into()) };
1492 let prev_fsuid = unsafe { libc::setfsuid(uid.into()) };
1503 let prev_fsgid = unsafe { libc::setfsgid(gid.into()) };
1529 let ngroups = unsafe { libc::getgroups(0, ptr::null_mut()) };
1548 libc::getgroups(groups.capacity() as c_int, groups.as_mut_ptr() as *mut gid_t)
1618 libc::setgroups(groups.len() as setgroups_ngroups_t, groups.as_ptr() as *const gid_t)
1666 libc::getgrouplist(user.as_ptr(),
1735 let res = unsafe { libc::initgroups(user.as_ptr(), gid as initgroups_group_t) };
1750 unsafe { libc::pause() };
1788 //! extern fn signal_handler(_: nix::libc::c_int) { }
1821 pub fn set(secs: libc::c_uint) -> Option<libc::c_uint> {
1829 pub fn cancel() -> Option<libc::c_uint> {
1833 fn alarm(secs: libc::c_uint) -> Option<libc::c_uint> {
1834 match unsafe { libc::alarm(secs) } {
1848 unsafe { libc::sleep(seconds) }
1865 unsafe { libc::acct(cstr.as_ptr()) }
1873 let res = unsafe { libc::acct(ptr::null()) };
1910 let fd = unsafe { libc::mkstemp(p) };
1947 FILESIZEBITS = libc::_PC_FILESIZEBITS,
1949 LINK_MAX = libc::_PC_LINK_MAX,
1951 MAX_CANON = libc::_PC_MAX_CANON,
1955 MAX_INPUT = libc::_PC_MAX_INPUT,
1958 NAME_MAX = libc::_PC_NAME_MAX,
1963 PATH_MAX = libc::_PC_PATH_MAX,
1966 PIPE_BUF = libc::_PC_PIPE_BUF,
1972 POSIX2_SYMLINKS = libc::_PC_2_SYMLINKS,
1978 POSIX_ALLOC_SIZE_MIN = libc::_PC_ALLOC_SIZE_MIN,
1984 POSIX_REC_INCR_XFER_SIZE = libc::_PC_REC_INCR_XFER_SIZE,
1989 POSIX_REC_MAX_XFER_SIZE = libc::_PC_REC_MAX_XFER_SIZE,
1994 POSIX_REC_MIN_XFER_SIZE = libc::_PC_REC_MIN_XFER_SIZE,
1999 POSIX_REC_XFER_ALIGN = libc::_PC_REC_XFER_ALIGN,
2005 SYMLINK_MAX = libc::_PC_SYMLINK_MAX,
2010 _POSIX_CHOWN_RESTRICTED = libc::_PC_CHOWN_RESTRICTED,
2012 _POSIX_NO_TRUNC = libc::_PC_NO_TRUNC,
2015 _POSIX_VDISABLE = libc::_PC_VDISABLE,
2022 _POSIX_ASYNC_IO = libc::_PC_ASYNC_IO,
2029 _POSIX_PRIO_IO = libc::_PC_PRIO_IO,
2036 _POSIX_SYNC_IO = libc::_PC_SYNC_IO,
2040 _POSIX_TIMESTAMP_RESOLUTION = libc::_PC_TIMESTAMP_RESOLUTION
2062 libc::fpathconf(fd, var as c_int)
2100 libc::pathconf(cstr.as_ptr(), var as c_int)
2142 AIO_LISTIO_MAX = libc::_SC_AIO_LISTIO_MAX,
2147 AIO_MAX = libc::_SC_AIO_MAX,
2154 AIO_PRIO_DELTA_MAX = libc::_SC_AIO_PRIO_DELTA_MAX,
2156 ARG_MAX = libc::_SC_ARG_MAX,
2160 ATEXIT_MAX = libc::_SC_ATEXIT_MAX,
2164 BC_BASE_MAX = libc::_SC_BC_BASE_MAX,
2168 BC_DIM_MAX = libc::_SC_BC_DIM_MAX,
2172 BC_SCALE_MAX = libc::_SC_BC_SCALE_MAX,
2176 BC_STRING_MAX = libc::_SC_BC_STRING_MAX,
2178 CHILD_MAX = libc::_SC_CHILD_MAX,
2180 CLK_TCK = libc::_SC_CLK_TCK,
2185 COLL_WEIGHTS_MAX = libc::_SC_COLL_WEIGHTS_MAX,
2189 DELAYTIMER_MAX = libc::_SC_DELAYTIMER_MAX,
2194 EXPR_NEST_MAX = libc::_SC_EXPR_NEST_MAX,
2201 HOST_NAME_MAX = libc::_SC_HOST_NAME_MAX,
2206 IOV_MAX = libc::_SC_IOV_MAX,
2213 LINE_MAX = libc::_SC_LINE_MAX,
2216 LOGIN_NAME_MAX = libc::_SC_LOGIN_NAME_MAX,
2218 NGROUPS_MAX = libc::_SC_NGROUPS_MAX,
2222 GETGR_R_SIZE_MAX = libc::_SC_GETGR_R_SIZE_MAX,
2226 GETPW_R_SIZE_MAX = libc::_SC_GETPW_R_SIZE_MAX,
2230 MQ_OPEN_MAX = libc::_SC_MQ_OPEN_MAX,
2234 MQ_PRIO_MAX = libc::_SC_MQ_PRIO_MAX,
2237 OPEN_MAX = libc::_SC_OPEN_MAX,
2242 _POSIX_ADVISORY_INFO = libc::_SC_ADVISORY_INFO,
2248 _POSIX_BARRIERS = libc::_SC_BARRIERS,
2252 _POSIX_ASYNCHRONOUS_IO = libc::_SC_ASYNCHRONOUS_IO,
2258 _POSIX_CLOCK_SELECTION = libc::_SC_CLOCK_SELECTION,
2264 _POSIX_CPUTIME = libc::_SC_CPUTIME,
2268 _POSIX_FSYNC = libc::_SC_FSYNC,
2274 _POSIX_IPV6 = libc::_SC_IPV6,
2278 _POSIX_JOB_CONTROL = libc::_SC_JOB_CONTROL,
2282 _POSIX_MAPPED_FILES = libc::_SC_MAPPED_FILES,
2286 _POSIX_MEMLOCK = libc::_SC_MEMLOCK,
2290 _POSIX_MEMLOCK_RANGE = libc::_SC_MEMLOCK_RANGE,
2294 _POSIX_MEMORY_PROTECTION = libc::_SC_MEMORY_PROTECTION,
2298 _POSIX_MESSAGE_PASSING = libc::_SC_MESSAGE_PASSING,
2302 _POSIX_MONOTONIC_CLOCK = libc::_SC_MONOTONIC_CLOCK,
2308 _POSIX_PRIORITIZED_IO = libc::_SC_PRIORITIZED_IO,
2312 _POSIX_PRIORITY_SCHEDULING = libc::_SC_PRIORITY_SCHEDULING,
2318 _POSIX_RAW_SOCKETS = libc::_SC_RAW_SOCKETS,
2324 _POSIX_READER_WRITER_LOCKS = libc::_SC_READER_WRITER_LOCKS,
2330 _POSIX_REALTIME_SIGNALS = libc::_SC_REALTIME_SIGNALS,
2336 _POSIX_REGEXP = libc::_SC_REGEXP,
2340 _POSIX_SAVED_IDS = libc::_SC_SAVED_IDS,
2344 _POSIX_SEMAPHORES = libc::_SC_SEMAPHORES,
2348 _POSIX_SHARED_MEMORY_OBJECTS = libc::_SC_SHARED_MEMORY_OBJECTS,
2354 _POSIX_SHELL = libc::_SC_SHELL,
2360 _POSIX_SPAWN = libc::_SC_SPAWN,
2366 _POSIX_SPIN_LOCKS = libc::_SC_SPIN_LOCKS,
2371 _POSIX_SPORADIC_SERVER = libc::_SC_SPORADIC_SERVER,
2375 _POSIX_SS_REPL_MAX = libc::_SC_SS_REPL_MAX,
2379 _POSIX_SYNCHRONIZED_IO = libc::_SC_SYNCHRONIZED_IO,
2383 _POSIX_THREAD_ATTR_STACKADDR = libc::_SC_THREAD_ATTR_STACKADDR,
2387 _POSIX_THREAD_ATTR_STACKSIZE = libc::_SC_THREAD_ATTR_STACKSIZE,
2392 _POSIX_THREAD_CPUTIME = libc::_SC_THREAD_CPUTIME,
2397 _POSIX_THREAD_PRIO_INHERIT = libc::_SC_THREAD_PRIO_INHERIT,
2401 _POSIX_THREAD_PRIO_PROTECT = libc::_SC_THREAD_PRIO_PROTECT,
2405 _POSIX_THREAD_PRIORITY_SCHEDULING = libc::_SC_THREAD_PRIORITY_SCHEDULING,
2412 _POSIX_THREAD_PROCESS_SHARED = libc::_SC_THREAD_PROCESS_SHARED,
2416 _POSIX_THREAD_ROBUST_PRIO_INHERIT = libc::_SC_THREAD_ROBUST_PRIO_INHERIT,
2420 _POSIX_THREAD_ROBUST_PRIO_PROTECT = libc::_SC_THREAD_ROBUST_PRIO_PROTECT,
2424 _POSIX_THREAD_SAFE_FUNCTIONS = libc::_SC_THREAD_SAFE_FUNCTIONS,
2429 _POSIX_THREAD_SPORADIC_SERVER = libc::_SC_THREAD_SPORADIC_SERVER,
2433 _POSIX_THREADS = libc::_SC_THREADS,
2438 _POSIX_TIMEOUTS = libc::_SC_TIMEOUTS,
2442 _POSIX_TIMERS = libc::_SC_TIMERS,
2447 _POSIX_TRACE = libc::_SC_TRACE,
2452 _POSIX_TRACE_EVENT_FILTER = libc::_SC_TRACE_EVENT_FILTER,
2456 _POSIX_TRACE_EVENT_NAME_MAX = libc::_SC_TRACE_EVENT_NAME_MAX,
2461 _POSIX_TRACE_INHERIT = libc::_SC_TRACE_INHERIT,
2466 _POSIX_TRACE_LOG = libc::_SC_TRACE_LOG,
2470 _POSIX_TRACE_NAME_MAX = libc::_SC_TRACE_NAME_MAX,
2474 _POSIX_TRACE_SYS_MAX = libc::_SC_TRACE_SYS_MAX,
2478 _POSIX_TRACE_USER_EVENT_MAX = libc::_SC_TRACE_USER_EVENT_MAX,
2483 _POSIX_TYPED_MEMORY_OBJECTS = libc::_SC_TYPED_MEMORY_OBJECTS,
2487 _POSIX_VERSION = libc::_SC_VERSION,
2494 _POSIX_V6_ILP32_OFF32 = libc::_SC_V6_ILP32_OFF32,
2502 _POSIX_V6_ILP32_OFFBIG = libc::_SC_V6_ILP32_OFFBIG,
2509 _POSIX_V6_LP64_OFF64 = libc::_SC_V6_LP64_OFF64,
2517 _POSIX_V6_LPBIG_OFFBIG = libc::_SC_V6_LPBIG_OFFBIG,
2521 _POSIX2_C_BIND = libc::_SC_2_C_BIND,
2525 _POSIX2_C_DEV = libc::_SC_2_C_DEV,
2529 _POSIX2_CHAR_TERM = libc::_SC_2_CHAR_TERM,
2533 _POSIX2_FORT_DEV = libc::_SC_2_FORT_DEV,
2537 _POSIX2_FORT_RUN = libc::_SC_2_FORT_RUN,
2542 _POSIX2_LOCALEDEF = libc::_SC_2_LOCALEDEF,
2549 _POSIX2_PBS = libc::_SC_2_PBS,
2555 _POSIX2_PBS_ACCOUNTING = libc::_SC_2_PBS_ACCOUNTING,
2561 _POSIX2_PBS_CHECKPOINT = libc::_SC_2_PBS_CHECKPOINT,
2567 _POSIX2_PBS_LOCATE = libc::_SC_2_PBS_LOCATE,
2573 _POSIX2_PBS_MESSAGE = libc::_SC_2_PBS_MESSAGE,
2579 _POSIX2_PBS_TRACK = libc::_SC_2_PBS_TRACK,
2583 _POSIX2_SW_DEV = libc::_SC_2_SW_DEV,
2587 _POSIX2_UPE = libc::_SC_2_UPE,
2592 _POSIX2_VERSION = libc::_SC_2_VERSION,
2597 PAGE_SIZE = libc::_SC_PAGE_SIZE,
2600 PTHREAD_DESTRUCTOR_ITERATIONS = libc::_SC_THREAD_DESTRUCTOR_ITERATIONS,
2603 PTHREAD_KEYS_MAX = libc::_SC_THREAD_KEYS_MAX,
2606 PTHREAD_STACK_MIN = libc::_SC_THREAD_STACK_MIN,
2609 PTHREAD_THREADS_MAX = libc::_SC_THREAD_THREADS_MAX,
2611 RE_DUP_MAX = libc::_SC_RE_DUP_MAX,
2616 RTSIG_MAX = libc::_SC_RTSIG_MAX,
2619 SEM_NSEMS_MAX = libc::_SC_SEM_NSEMS_MAX,
2624 SEM_VALUE_MAX = libc::_SC_SEM_VALUE_MAX,
2629 SIGQUEUE_MAX = libc::_SC_SIGQUEUE_MAX,
2630 STREAM_MAX = libc::_SC_STREAM_MAX,
2635 SYMLOOP_MAX = libc::_SC_SYMLOOP_MAX,
2638 TIMER_MAX = libc::_SC_TIMER_MAX,
2639 TTY_NAME_MAX = libc::_SC_TTY_NAME_MAX,
2640 TZNAME_MAX = libc::_SC_TZNAME_MAX,
2646 _XOPEN_CRYPT = libc::_SC_XOPEN_CRYPT,
2653 _XOPEN_ENH_I18N = libc::_SC_XOPEN_ENH_I18N,
2658 _XOPEN_LEGACY = libc::_SC_XOPEN_LEGACY,
2664 _XOPEN_REALTIME = libc::_SC_XOPEN_REALTIME,
2670 _XOPEN_REALTIME_THREADS = libc::_SC_XOPEN_REALTIME_THREADS,
2675 _XOPEN_SHM = libc::_SC_XOPEN_SHM,
2680 _XOPEN_STREAMS = libc::_SC_XOPEN_STREAMS,
2686 _XOPEN_UNIX = libc::_SC_XOPEN_UNIX,
2693 _XOPEN_VERSION = libc::_SC_XOPEN_VERSION,
2697 _PHYS_PAGES = libc::_SC_PHYS_PAGES,
2700 _AVPHYS_PAGES = libc::_SC_AVPHYS_PAGES,
2703 _NPROCESSORS_CONF = libc::_SC_NPROCESSORS_CONF,
2706 _NPROCESSORS_ONLN = libc::_SC_NPROCESSORS_ONLN,
2728 libc::sysconf(var as c_int)
2755 libc::syscall(libc::SYS_pivot_root, new_root.as_ptr(), put_old.as_ptr())
2786 /// * returns: Ok or libc error code.
2791 let res = unsafe { libc::setresuid(ruid.into(), euid.into(), suid.into()) };
2802 /// * returns: Ok or libc error code.
2807 let res = unsafe { libc::setresgid(rgid.into(), egid.into(), sgid.into()) };
2852 /// - `Err(x)`: libc error code on failure.
2856 let mut ruid = libc::uid_t::max_value();
2857 let mut euid = libc::uid_t::max_value();
2858 let mut suid = libc::uid_t::max_value();
2859 let res = unsafe { libc::getresuid(&mut ruid, &mut euid, &mut suid) };
2871 /// - `Err(x)`: libc error code on failure.
2875 let mut rgid = libc::gid_t::max_value();
2876 let mut egid = libc::gid_t::max_value();
2877 let mut sgid = libc::gid_t::max_value();
2878 let res = unsafe { libc::getresgid(&mut rgid, &mut egid, &mut sgid) };
2909 libc::access(cstr.as_ptr(), amode.bits)
2929 libc::faccessat(at_rawfd(dirfd), cstr.as_ptr(), mode.bits(), flags.bits())
2950 libc::eaccess(cstr.as_ptr(), mode.bits)
2960 /// Representation of a User, based on `libc::passwd`
3001 pub change: libc::time_t,
3010 pub expire: libc::time_t
3014 impl From<&libc::passwd> for User {
3015 fn from(pw: &libc::passwd) -> User {
3053 impl From<User> for libc::passwd {
3111 F: Fn(*mut libc::passwd,
3113 libc::size_t,
3114 *mut *mut libc::passwd) -> libc::c_int
3123 let mut pwd = mem::MaybeUninit::<libc::passwd>::uninit();
3159 unsafe { libc::getpwuid_r(uid.0, pwd, cbuf, cap, res) }
3182 unsafe { libc::getpwnam_r(name.as_ptr(), pwd, cbuf, cap, res) }
3187 /// Representation of a Group, based on `libc::group`
3202 impl From<&libc::group> for Group {
3203 fn from(gr: &libc::group) -> Group {
3235 F: Fn(*mut libc::group,
3237 libc::size_t,
3238 *mut *mut libc::group) -> libc::c_int
3247 let mut grp = mem::MaybeUninit::<libc::group>::uninit();
3285 unsafe { libc::getgrgid_r(gid.0, grp, cbuf, cap, res) }
3310 unsafe { libc::getgrnam_r(name.as_ptr(), grp, cbuf, cap, res) }
3323 const PATH_MAX: usize = libc::PATH_MAX as usize;
3325 let c_buf = buf.as_mut_ptr() as *mut libc::c_char;
3327 let ret = unsafe { libc::ttyname_r(fd, c_buf, buf.len()) };
3356 let ret = unsafe { libc::getpeereid(fd, &mut uid, &mut gid) };
3378 libc::chflags(cstr.as_ptr(), flags.bits())