aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.posix/nihil.posix.ccm
blob: 9baecf872651c1c9ad8e6a2e8633358a2027b458 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
 * This source code is released into the public domain.
 */

module;

#include <expected>
#include <filesystem>
#include <optional>
#include <string>

export module nihil.posix;

import nihil.error;

export import :argv;
export import :ensure_dir;
export import :exec;
export import :fd;
export import :open;
export import :process;
export import :read_file;
export import :rename;
export import :spawn;
export import :write_file;

export namespace nihil {

/*
 * Find a variable by the given name in the environment by calling getenv_r().
 */

[[nodiscard]] auto getenv(std::string_view varname)
	-> std::expected<std::string, error>;


/*
 * Find an executable in $PATH, open it with O_EXEC and return the fd.
 * If $PATH is not set, uses _PATH_DEFPATH.  If the file can't be found
 * or opened, returns std::nullopt.
 */
[[nodiscard]] auto find_in_path(std::filesystem::path const &file)
	-> std::optional<fd>;

} // namespace nihil