1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 14:57:35 +00:00

LibCore+Everywhere: Return ErrorOr from ConfigFile factory methods

I've attempted to handle the errors gracefully where it was clear how to
do so, and simple, but a lot of this was just adding
`release_value_but_fixme_should_propagate_errors()` in places.
This commit is contained in:
Sam Atkins 2022-02-06 13:33:42 +00:00 committed by Tim Flynn
parent 1a4dd47d5f
commit 8260135d4d
31 changed files with 77 additions and 51 deletions

View file

@ -14,35 +14,35 @@
namespace Core {
NonnullRefPtr<ConfigFile> ConfigFile::open_for_lib(String const& lib_name, AllowWriting allow_altering)
ErrorOr<NonnullRefPtr<ConfigFile>> ConfigFile::open_for_lib(String const& lib_name, AllowWriting allow_altering)
{
String directory = StandardPaths::config_directory();
auto path = String::formatted("{}/lib/{}.ini", directory, lib_name);
return adopt_ref(*new ConfigFile(path, allow_altering));
return adopt_nonnull_ref_or_enomem(new (nothrow) ConfigFile(path, allow_altering));
}
NonnullRefPtr<ConfigFile> ConfigFile::open_for_app(String const& app_name, AllowWriting allow_altering)
ErrorOr<NonnullRefPtr<ConfigFile>> ConfigFile::open_for_app(String const& app_name, AllowWriting allow_altering)
{
String directory = StandardPaths::config_directory();
auto path = String::formatted("{}/{}.ini", directory, app_name);
return adopt_ref(*new ConfigFile(path, allow_altering));
return adopt_nonnull_ref_or_enomem(new (nothrow) ConfigFile(path, allow_altering));
}
NonnullRefPtr<ConfigFile> ConfigFile::open_for_system(String const& app_name, AllowWriting allow_altering)
ErrorOr<NonnullRefPtr<ConfigFile>> ConfigFile::open_for_system(String const& app_name, AllowWriting allow_altering)
{
auto path = String::formatted("/etc/{}.ini", app_name);
return adopt_ref(*new ConfigFile(path, allow_altering));
return adopt_nonnull_ref_or_enomem(new (nothrow) ConfigFile(path, allow_altering));
}
NonnullRefPtr<ConfigFile> ConfigFile::open(String const& filename, AllowWriting allow_altering)
ErrorOr<NonnullRefPtr<ConfigFile>> ConfigFile::open(String const& filename, AllowWriting allow_altering)
{
return adopt_ref(*new ConfigFile(filename, allow_altering));
return adopt_nonnull_ref_or_enomem(new (nothrow) ConfigFile(filename, allow_altering));
}
NonnullRefPtr<ConfigFile> ConfigFile::open(String const& filename, int fd)
ErrorOr<NonnullRefPtr<ConfigFile>> ConfigFile::open(String const& filename, int fd)
{
return adopt_ref(*new ConfigFile(filename, fd));
return adopt_nonnull_ref_or_enomem(new (nothrow) ConfigFile(filename, fd));
}
ConfigFile::ConfigFile(String const& filename, AllowWriting allow_altering)

View file

@ -24,11 +24,11 @@ public:
No,
};
static NonnullRefPtr<ConfigFile> open_for_lib(String const& lib_name, AllowWriting = AllowWriting::No);
static NonnullRefPtr<ConfigFile> open_for_app(String const& app_name, AllowWriting = AllowWriting::No);
static NonnullRefPtr<ConfigFile> open_for_system(String const& app_name, AllowWriting = AllowWriting::No);
static NonnullRefPtr<ConfigFile> open(String const& filename, AllowWriting = AllowWriting::No);
static NonnullRefPtr<ConfigFile> open(String const& filename, int fd);
static ErrorOr<NonnullRefPtr<ConfigFile>> open_for_lib(String const& lib_name, AllowWriting = AllowWriting::No);
static ErrorOr<NonnullRefPtr<ConfigFile>> open_for_app(String const& app_name, AllowWriting = AllowWriting::No);
static ErrorOr<NonnullRefPtr<ConfigFile>> open_for_system(String const& app_name, AllowWriting = AllowWriting::No);
static ErrorOr<NonnullRefPtr<ConfigFile>> open(String const& filename, AllowWriting = AllowWriting::No);
static ErrorOr<NonnullRefPtr<ConfigFile>> open(String const& filename, int fd);
~ConfigFile();
bool has_group(String const&) const;

View file

@ -11,7 +11,7 @@ namespace Core::Version {
String read_long_version_string()
{
auto version_config = Core::ConfigFile::open("/res/version.ini");
auto version_config = Core::ConfigFile::open("/res/version.ini").release_value_but_fixme_should_propagate_errors();
auto major_version = version_config->read_entry("Version", "Major", "0");
auto minor_version = version_config->read_entry("Version", "Minor", "0");