1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:37:44 +00:00

LibCore: Add Core::System wrappers for getspent() and getspnam()

This commit is contained in:
Andreas Kling 2022-01-01 18:26:17 +01:00
parent 7008f74214
commit 431bd069f0
2 changed files with 34 additions and 0 deletions

View file

@ -107,6 +107,31 @@ ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data)
} }
#endif #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 #ifndef AK_OS_MACOS
ErrorOr<int> accept4(int sockfd, sockaddr* address, socklen_t* address_length, int flags) ErrorOr<int> accept4(int sockfd, sockaddr* address, socklen_t* address_length, int flags)
{ {

View file

@ -22,6 +22,10 @@
#include <time.h> #include <time.h>
#include <utime.h> #include <utime.h>
#ifndef AK_OS_BSD_GENERIC
# include <shadow.h>
#endif
namespace Core::System { namespace Core::System {
#ifdef __serenity__ #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); ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data);
#endif #endif
#ifndef AK_OS_BSD_GENERIC
ErrorOr<Optional<struct spwd>> getspent();
ErrorOr<Optional<struct spwd>> getspnam(StringView name);
#endif
#ifndef AK_OS_MACOS #ifndef AK_OS_MACOS
ErrorOr<int> accept4(int sockfd, struct sockaddr*, socklen_t*, int flags); ErrorOr<int> accept4(int sockfd, struct sockaddr*, socklen_t*, int flags);
#endif #endif