diff options
author | Lucas CHOLLET <lucas.chollet@free.fr> | 2022-03-01 23:43:55 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-03-02 18:08:05 +0100 |
commit | ddf9987c39a6fcbd948461417cbb73004f88a1b0 (patch) | |
tree | 4365bfa80ad986b42874cd47b666c7d4cc47d1e8 /Userland/Libraries/LibCore | |
parent | b1af1b399e5b6289e535b7ba64401a8c7590f11a (diff) | |
download | serenity-ddf9987c39a6fcbd948461417cbb73004f88a1b0.zip |
LibCore+LibC: Add wrapper for setenv
I also added a common interface with StringView compatible parameters:
int serenity_setenv(const char*, ssize_t, const char*, ssize_t, int)
This function is called by both C and C++ API for setenv().
Diffstat (limited to 'Userland/Libraries/LibCore')
-rw-r--r-- | Userland/Libraries/LibCore/System.cpp | 15 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/System.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Userland/Libraries/LibCore/System.cpp b/Userland/Libraries/LibCore/System.cpp index 484ed5b878..ff29dc69c6 100644 --- a/Userland/Libraries/LibCore/System.cpp +++ b/Userland/Libraries/LibCore/System.cpp @@ -14,6 +14,7 @@ #include <LibSystem/syscall.h> #include <limits.h> #include <stdarg.h> +#include <stdlib.h> #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/ptrace.h> @@ -1069,4 +1070,18 @@ ErrorOr<void> mkfifo(StringView pathname, mode_t mode) return mknod(pathname, mode | S_IFIFO, 0); } +ErrorOr<void> setenv(StringView name, StringView value, bool overwrite) +{ +#ifdef __serenity__ + auto const rc = ::serenity_setenv(name.characters_without_null_termination(), name.length(), value.characters_without_null_termination(), value.length(), overwrite); +#else + String name_string = name; + String value_string = value; + auto const rc = ::setenv(name_string.characters(), value_string.characters(), overwrite); +#endif + if (rc < 0) + return Error::from_syscall("setenv", -errno); + return {}; +} + } diff --git a/Userland/Libraries/LibCore/System.h b/Userland/Libraries/LibCore/System.h index b160462548..4312e50165 100644 --- a/Userland/Libraries/LibCore/System.h +++ b/Userland/Libraries/LibCore/System.h @@ -145,4 +145,6 @@ ErrorOr<void> socketpair(int domain, int type, int protocol, int sv[2]); ErrorOr<Vector<gid_t>> getgroups(); ErrorOr<void> mknod(StringView pathname, mode_t mode, dev_t dev); ErrorOr<void> mkfifo(StringView pathname, mode_t mode); +ErrorOr<void> setenv(StringView, StringView, bool); + } |