mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 22:57:44 +00:00
LibCore: Add Core::System wrappers for getspent() and getspnam()
This commit is contained in:
parent
7008f74214
commit
431bd069f0
2 changed files with 34 additions and 0 deletions
|
@ -107,6 +107,31 @@ ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef AK_OS_BSD_GENERIC
|
||||
ErrorOr<Optional<struct spwd>> getspent()
|
||||
{
|
||||
errno = 0;
|
||||
if (auto* spwd = ::getspent())
|
||||
return *spwd;
|
||||
if (errno)
|
||||
return Error::from_syscall("getspent"sv, -errno);
|
||||
return Optional<struct spwd> {};
|
||||
}
|
||||
|
||||
ErrorOr<Optional<struct spwd>> getspnam(StringView name)
|
||||
{
|
||||
errno = 0;
|
||||
::setspent();
|
||||
while (auto* spwd = ::getspent()) {
|
||||
if (spwd->sp_namp == name)
|
||||
return *spwd;
|
||||
}
|
||||
if (errno)
|
||||
return Error::from_syscall("getspnam"sv, -errno);
|
||||
return Optional<struct spwd> {};
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef AK_OS_MACOS
|
||||
ErrorOr<int> accept4(int sockfd, sockaddr* address, socklen_t* address_length, int flags)
|
||||
{
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
#include <time.h>
|
||||
#include <utime.h>
|
||||
|
||||
#ifndef AK_OS_BSD_GENERIC
|
||||
# include <shadow.h>
|
||||
#endif
|
||||
|
||||
namespace Core::System {
|
||||
|
||||
#ifdef __serenity__
|
||||
|
@ -35,6 +39,11 @@ ErrorOr<void> mount(int source_fd, StringView target, StringView fs_type, int fl
|
|||
ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data);
|
||||
#endif
|
||||
|
||||
#ifndef AK_OS_BSD_GENERIC
|
||||
ErrorOr<Optional<struct spwd>> getspent();
|
||||
ErrorOr<Optional<struct spwd>> getspnam(StringView name);
|
||||
#endif
|
||||
|
||||
#ifndef AK_OS_MACOS
|
||||
ErrorOr<int> accept4(int sockfd, struct sockaddr*, socklen_t*, int flags);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue